python - 朴素贝叶斯分类器的 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 文档页面抄录的代码是错误的时,我的模型获得了不合理的高精度指标。
解决方案
iris.data
不是数据框,它只是具有 4 个功能的 (150,4) numpy 数组。
iris.target
是另一个只有目标类的 numpy 数组。
不知道如何调用drop
数组(我刚刚检查了我有一个数组而不是 pd df,这是有道理的,sklearn 不依赖于 pandas)。
推荐阅读
- c# - DataGrid 行详细信息中的嵌套 Datagrid
- scala - 如何仅找出数据在scala中具有特定值的那些列名
- arrays - 重新格式化谷歌表中的大量数据
- svg - 无需图形工具包即可生成图像
- c++11 - 模板错误的演员表对象
- apache-spark - 将特定列下的行重命名为通用名称 - pyspark
- azure-devops - Azure DevOps Armtemplate Yaml 通过变量组禁用/启用作业
- c - 为什么我无法检测到我的文件在 C 中是空的还是不在?
- python - Tkinter GIF 动画步履蹒跚并且像素化
- javascript - 在 React 中添加搜索功能