簡體   English   中英

Nltk基於單個參數進行分類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM