Nltk基于单个参数进行分类

时间:2017-08-20 15:03:56

标签: python nltk

我正在尝试使用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'。有人可以看到我的分类器有问题吗?

1 个答案:

答案 0 :(得分:0)

正如MedAli所建议的那样,我的数据集中的问题仅占IN的11%,因此我必须根据以下内容调整数据集:http://machinelearningmastery.com/tactics-to-combat-imbalanced-classes-in-your-machine-learning-dataset/

我更改了数据集,因此它现在只有基于小时的数据(如果传感器在一小时内被激活,则会被添加为IN)。

这不是一个完美的解决方案,但对我的情况来说已经足够了。