我正在尝试使用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'
。有人可以看到我的分类器有问题吗?
答案 0 :(得分:0)
正如MedAli所建议的那样,我的数据集中的问题仅占IN
的11%,因此我必须根据以下内容调整数据集:http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/
我更改了数据集,因此它现在只有基于小时的数据(如果传感器在一小时内被激活,则会被添加为IN
)。
这不是一个完美的解决方案,但对我的情况来说已经足够了。