朴素贝叶斯分类器:在鸢尾花数据集上只能获得 30-40% 的准确率
Naive Bayes Classifier: Only get 30-40% accuracy on iris data set
过去几天,我正在尝试使用来自 UCI (http://archive.ics.uci.edu/ml/datasets/Iris). When trying to classify 100 random samples i get only 30-40% accuracy. I think my probability function is right because I tested it with the example from wikipedia (https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Examples)
的鸢尾花数据集在 python 中实施朴素贝叶斯分类器
现在我是这样做的:
- 我加载数据
- 我把数据分成3份classes
- 我计算每个 class
的均值和方差
然后对于 100 个随机样本 I:
- 计算每个特征属于class
的概率
通过将 class
的每个概率相乘来计算后验分子
将值存储在列表中并获取最高值的索引
将最高价值指数与真实指数进行比较(检查预测是否正确)
不知何故我只得到 30-40%,我是不是做错了什么?
如果您想查看代码,请在此处:http://pastebin.com/sUYm97qi
类构建部分有错误
class1 = X[0:50]
class2 = X[51:100]
class3 = X[101:150]
应该是
class1 = X[0:50]
class2 = X[50:100]
class3 = X[100:150]
不重叠。不要有多少关系。
无论如何 - 尝试提供一些反馈,然后你会得到什么数字。
大声笑 -- 你写了非常 concise/clean 的代码所以我很困惑,直到我看到最后。
您正在比较 classes[max_index]
,预测的 class 名称与 y[max_index]
,最大索引实例标签值。
尝试将您的代码更改为
if(classes[max_index] == y[q]):
corr += 1
你应该达到 96% 左右
过去几天,我正在尝试使用来自 UCI (http://archive.ics.uci.edu/ml/datasets/Iris). When trying to classify 100 random samples i get only 30-40% accuracy. I think my probability function is right because I tested it with the example from wikipedia (https://en.wikipedia.org/wiki/Naive_Bayes_classifier#Examples)
的鸢尾花数据集在 python 中实施朴素贝叶斯分类器现在我是这样做的:
- 我加载数据
- 我把数据分成3份classes
- 我计算每个 class 的均值和方差
然后对于 100 个随机样本 I:
- 计算每个特征属于class 的概率
通过将 class
的每个概率相乘来计算后验分子
将值存储在列表中并获取最高值的索引
将最高价值指数与真实指数进行比较(检查预测是否正确)
不知何故我只得到 30-40%,我是不是做错了什么?
如果您想查看代码,请在此处:http://pastebin.com/sUYm97qi
类构建部分有错误
class1 = X[0:50]
class2 = X[51:100]
class3 = X[101:150]
应该是
class1 = X[0:50]
class2 = X[50:100]
class3 = X[100:150]
不重叠。不要有多少关系。 无论如何 - 尝试提供一些反馈,然后你会得到什么数字。
大声笑 -- 你写了非常 concise/clean 的代码所以我很困惑,直到我看到最后。
您正在比较 classes[max_index]
,预测的 class 名称与 y[max_index]
,最大索引实例标签值。
尝试将您的代码更改为
if(classes[max_index] == y[q]):
corr += 1
你应该达到 96% 左右