【问题标题】:Error in example code from the scikit-learn documentation for the Naive Bayes classifier?朴素贝叶斯分类器的 scikit-learn 文档中的示例代码错误?
【发布时间】:2019-04-13 05:40:57
【问题描述】:

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

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 文档页面抄录的代码有误时,我的模型获得了不合理的高准确度指标。

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

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

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

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

    【讨论】:

    • 太好了,感谢您的检查 - 我知道 drop 不起作用。但是即使文档中的代码语法是正确的,也似乎有点误导,不是吗?代码中没有迹象表明响应变量已从输入数据集中删除。
    • 它没有。它是 4 个特征,而不是目标。
    • 对于来自其他语言(如 R)的用户,在文档中包含该语言会很有帮助,您可以使用 y ~ ., data=analysis_dataset 等简写指定模型,并且算法知道从右手中减去 y公式的一面。
    猜你喜欢
    • 2017-06-21
    • 2013-12-24
    • 2015-09-16
    • 2018-06-19
    • 2012-11-10
    • 2021-02-09
    • 2019-03-01
    • 2013-04-19
    • 2013-06-23
    相关资源
    最近更新 更多