朴素贝叶斯分类器:仅在 iris 数据集上获得 30-40% 的准确率
Posted
技术标签:
【中文标题】朴素贝叶斯分类器:仅在 iris 数据集上获得 30-40% 的准确率【英文标题】:Naive Bayes Classifier: Only get 30-40% accuracy on iris data set 【发布时间】:2016-07-14 20:44:30 【问题描述】:最近几天,我正在尝试使用来自 UCI (http://archive.ics.uci.edu/ml/datasets/Iris) 的 iris 数据集在 python 中实现朴素贝叶斯分类器。当试图对 100 个随机样本进行分类时,我只能得到 30-40% 的准确率。我认为我的概率函数是正确的,因为我用***(https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Examples)中的示例对其进行了测试
现在我要做的就是:
我加载数据 我将数据分为3类 我计算每个类的均值和方差那么对于 100 个随机样本 I:
计算每个特征属于一个类的概率通过乘以该类的每个概率来计算后验分子
将值存储在列表中并获取最大值的索引
将最高值索引与真实索引进行比较(检查预测是否正确)
不知何故,我只得到 30-40%,我做错了吗?
如果你想看代码,在这里:http://pastebin.com/sUYm97qi
【问题讨论】:
【参考方案1】:哈哈——你写的代码非常简洁/干净,所以我很困惑,直到我看到最后。
您正在将预测的类名称 classes[max_index]
与最大索引实例标签值 y[max_index]
进行比较。
尝试将您的代码更改为
if(classes[max_index] == y[q]):
corr += 1
你应该得到大约 96%
【讨论】:
@Lagastic 但如果我在测试集中只选择 50 个值,它仍然会给出 47% 左右? @Tejendra 你是对的,那是由于我在报告结果时犯了一个错误,因为我把 100 个作为测试样本,corr 变量将是每 100 个正确答案的数量。除法 corr根据测试样本的数量,你应该得到大约 96-98% 的准确率。【参考方案2】:类构建部分出错
class1 = X[0:50]
class2 = X[51:100]
class3 = X[101:150]
应该是
class1 = X[0:50]
class2 = X[50:100]
class3 = X[100:150]
不重叠。不要有多么重要。 无论如何 - 尝试给出一些反馈,然后你得到什么数字。
【讨论】:
改了,准确率范围还是在30%到40%之间。 还有什么我可以尝试改变的,看看它是否有所改善?我可能在我的实施中做错了什么吗?以上是关于朴素贝叶斯分类器:仅在 iris 数据集上获得 30-40% 的准确率的主要内容,如果未能解决你的问题,请参考以下文章