1

在过去的几天里,我正在尝试使用来自 UCI 的 iris 数据集(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

4

2 回答 2

4

大声笑——你写了非常简洁/干净的代码,所以我很困惑,直到我看到最后。

您正在将classes[max_index]预测的类名 与y[max_index]最大索引实例标签值进行比较。

尝试将您的代码更改为

if(classes[max_index] == y[q]):
    corr += 1

你应该得到大约 96%

于 2016-03-27T15:15:03.857 回答
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]

不重叠。不要有多么重要。无论如何 - 尝试给出一些反馈,然后你得到什么数字。

于 2016-03-27T14:04:21.437 回答