朴素贝叶斯分类器:虹膜数据集只能获得30-40%的准确度

时间:2016-03-27 13:39:20

标签: python python-2.7 machine-learning naivebayes data-science

我尝试在最近几天使用UCI(http://archive.ics.uci.edu/ml/datasets/Iris)的虹膜数据集在python中实现朴素贝叶斯分类器。当尝试对100个随机样本进行分类时,我的准确率仅为30-40%。我认为我的概率函数是正确的,因为我使用维基百科(https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Examples

中的示例进行了测试

现在我在做什么:

  • 我加载数据
  • 我将数据分为3类
  • 我计算每个班级的均值和方差

然后对于100个随机样本我:

  • 计算每个要素属于某个类的概率
  • 通过将该类的每个概率相乘来计算后验分子

  • 将值存储在列表中并获取最高值的索引

  • 将最高价值指数与实际指数进行比较(检查预测是否正确)

不知怎的,我只得到30-40%,我做错了什么?

如果您想查看代码,请点击此处:http://pastebin.com/sUYm97qi

2 个答案:

答案 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]

不重叠。不要重要多少。 无论如何 - 尝试并提供一些反馈,然后你得到什么数字。