我尝试在最近几天使用UCI(http://archive.ics.uci.edu/ml/datasets/Iris)的虹膜数据集在python中实现朴素贝叶斯分类器。当尝试对100个随机样本进行分类时,我的准确率仅为30-40%。我认为我的概率函数是正确的,因为我使用维基百科(https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Examples)
中的示例进行了测试现在我在做什么:
然后对于100个随机样本我:
通过将该类的每个概率相乘来计算后验分子
将值存储在列表中并获取最高值的索引
将最高价值指数与实际指数进行比较(检查预测是否正确)
不知怎的,我只得到30-40%,我做错了什么?
如果您想查看代码,请点击此处:http://pastebin.com/sUYm97qi
答案 0 :(得分:4)
LOL - 你写的非常简洁/干净的代码让我很困惑,直到我看到最后。
您正在比较classes[max_index]
,预测的类名称与y[max_index]
,最大索引实例标签值。
尝试将代码更改为
if(classes[max_index] == y[q]):
corr += 1
你应该得到96%左右
答案 1 :(得分:0)
课堂建设部分有错误
class1 = X[0:50]
class2 = X[51:100]
class3 = X[101:150]
应该是
class1 = X[0:50]
class2 = X[50:100]
class3 = X[100:150]
不重叠。不要重要多少。 无论如何 - 尝试并提供一些反馈,然后你得到什么数字。