[英]Nltk classify based on single parameter
我正在嘗試使用NaiveBayesClassifier對在智能家居某些區域中花費的時間進行分類。
我的訓練數據如下:
[[{'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'], ... ]
這是我的代碼:
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'
。 有人可以看到我的分類器有問題嗎?
正如MedAli所建議的那樣,問題出在我的數據集中僅占IN
11%,所以我不得不根據以下內容調整我的數據集: http : //machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-機器學習數據集/
我更改了數據集,因此它現在僅具有基於小時的數據(如果傳感器在一小時內被激活,則將其添加為IN
)。
這不是完美的解決方案,但是對於我的情況來說已經足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.