繁体   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