首页 > 解决方案 > 朴素贝叶斯分类器的 scikit-learn 文档中的示例代码错误?

问题描述

我是一个新的 Python 用户,并且一直在使用 scikit-learn 模块运行一个朴素贝叶斯分类器模型。scikit learn Naïve Bayes 文档页面上的以下示例代码是否正确?

from sklearn import datasets
iris = datasets.load_iris()
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)
print("Number of mislabeled points out of a total %d points : %d"

该函数不应该gnb.fit()改为:

y_pred = gnb.fit(iris.data.drop(columns=['target']), iris.target).predict(iris.data)

也就是说,需要从预测数据集中手动删除响应变量。当一位同事指出我从 scikit-learn 文档页面抄录的代码是错误的时,我的模型获得了不合理的高精度指标。

标签: pythonscikit-learn

解决方案


iris.data不是数据框,它只是具有 4 个功能的 (150,4) numpy 数组。

iris.target是另一个只有目标类的 numpy 数组。

不知道如何调用drop数组(我刚刚检查了我有一个数组而不是 pd df,这是有道理的,sklearn 不依赖于 pandas)。


推荐阅读