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