2017-08-20 10 views
1

NaiveBayesClassifierを使用して、スマートホームの一部の領域で費やされた時間を分類しようとしています。Nltkは単一のパラメータに基づいて分類します

私のトレーニングデータは、次のようになります。

classifier = nltk.NaiveBayesClassifier.train(training_data) 

start_date = datetime.strptime('2010-11-19 00:00', '%Y-%m-%d %H:%M') 
end_date = datetime.strptime('2010-11-19 23:59', '%Y-%m-%d %H:%M') 

test_data = [] 
while start_date < end_date: 
    test_data.append(dict(time=start_date.strftime('%H:%M'))) 
    start_date += timedelta(0, 60) 

test = classifier.classify_many(test_data) 
print(test) 

結果は次のようになります:

['OUT', 'OUT', 'OUT', 'OUT', 'OUT', 'OUT', 'OUT', 'OUT', 'OUT',....] 

私は結果として'IN'を取得することはありません

[[{'time': '00:00'}, 'IN'], [{'time': '00:01'}, 'IN'], [{'time': '00:02'}, 'OUT'], [{'time': '00:03'}, 'OUT'], [{'time': '00:04'}, 'OUT'], [{'time': '00:05'}, 'OUT'], [{'time': '00:06'}, 'OUT'], ......, [{'time': '08:06'}, 'IN'], [{'time': '08:07'}, 'IN'], [{'time': '08:08'}, 'IN'], ... ] 

これは私のコードです。誰かが私の分級機に間違ったことを見ることができますか?

+0

訓練セットにはいくつの観察がありますか、INの割合はどれくらいですか? – MedAli

+0

@MedAli 11.6%はINです。 21626の合計で2269件が見つかりました – bla0009

+1

あなたは不均衡なデータセットでクラシファイアを作成しようとしていますが、NaiveBayesClassifierはそれに最適ではありません。まずこのチュートリアルをチェックしてください:http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/ – MedAli

答えて

0

MedAliが示唆したように、問題はINの唯一の11%を持っている私のデータセット内にあるので、私はに従って私のデータセットを調整しなければならなかった。それは今ベースのみ時給持っているので、私は、私のデータセットを変更しhttp://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/

データ(センサが1時間で起動された場合は、INとして追加されます)。

これは完璧な解決策ではありませんが、私の場合は十分です。

関連する問題