python - 拟合模型上的评分方法与 scikit-learn 中的 precision_score 之间有什么区别?

标签 python machine-learning scikit-learn

我通常只是将其发布到 Stack Overflow,但我思考了一下并意识到这实际上不是一个编码问题 - 这是一个机器学习问题。

对代码或其他任何内容的任何其他反馈都非常感谢和欢迎!

The Jupyter Notebook

所以我正在 Kaggle 上解决这个巨大的问题。我已准备好四个数据集:

  • features_train
  • 功能测试
  • 目标列车
  • 目标测试

考虑到这一点,我有两个问题,尽管第二个问题是重要的。

问题1:我对下一步的理解正确吗?

我们将模型拟合到训练数据上,然后创建一个预测 (pred),尝试根据我们的 features_test 数据进行预测。这意味着我们的 predtarget_test 数据集理论上应该是相同的(如果模型运行良好)。

这意味着,为了证明模型的准确性,我们可以简单地比较 predtarget_test 之间的结果,这就是 accuracy_score em> 函数来自 Sklearn。

问题2:使用模型的score方法与accuracy_score函数有什么区别?

这就是让我困惑的地方。您可以在单元格 97 中看到我使用的“模型 1”标题下的第一个单元格:

clf.score(features_test, target_test)

结果是

0.8609865470852018

但是,后来我也使用:

from sklearn.metrics import accuracy_score
print(accuracy_score(target_test, pred))

这也会导致

0.8609865470852018

这两个分数怎么一样?我做错了什么吗?或者这两个步骤基本上都在做同样的事情?如何..? score() 属性是否有效地创建了 pred 数据帧并在后台对其进行检查?

最佳答案

对于此类问题,可以说您最好的 friend 是文档;引用自 scikit-learn 文档 model evaluation :

There are 3 different APIs for evaluating the quality of a model’s predictions:

  • Estimator score method: Estimators have a score method providing a default evaluation criterion for the problem they are designed to solve. This is not discussed on this page, but in each estimator’s documentation.
  • Scoring parameter: Model-evaluation tools using cross-validation (such as model_selection.cross_val_score and model_selection.GridSearchCV) rely on an internal scoring strategy. This is discussed in the section The scoring parameter: defining model evaluation rules.
  • Metric functions: The metrics module implements functions assessing prediction error for specific purposes. These metrics are detailed in sections on Classification metrics, Multilabel ranking metrics, Regression metrics and Clustering metrics.

在您的代码中使用的所有 3 个分类器( logistic regressionrandom forestdecision tree )的文档中,有相同的描述:

score(X, y, sample_weight=None)
Returns the mean accuracy on the given test data and labels.

这回答了您关于所使用的特定型号的第二个问题。

尽管如此,在盲目信任估算器附带的 score 方法之前,您应该始终检查文档;在 linear regressiondesision tree regressor ,例如,score 返回决定系数 R^2,ML 从业者在构建预测模型时实际上从未使用过它(统计学家经常使用它来构建解释模型,但那是另一个故事)。

顺便说一句,我简要地浏览了您链接到的代码,我看到您计算了 MSE、MAE 和 RMSE 等指标 - 请记住,这些是回归指标,而它们不是在分类设置中有意义,例如您在这里面临的分类设置(反过来,准确性在回归设置中毫无意义)...

关于python - 拟合模型上的评分方法与 scikit-learn 中的 precision_score 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54168780/

相关文章:

python - 我应该如何更改 "urlpatterns"中的路径?

python - 如何将具有字符串和大量(数字)的列分成两列

python - 如何避免 for 循环并正确迭代 pandas 数据框?

python - 如何将嵌套未知层数的新 JSON 节点添加到现有 JSON 文件中?

python - 如何在不使用 Python 中的外部库的情况下解析 arff 文件

python - Sklearn DecisionTreeClassifier 每次运行的 F 分数不同结果

python - 堆叠两个不同维度的稀疏矩阵

python - 如何获取 javascript 存储的 cookie?

python - 如何在字符串中查找模式

python - fit() 什么时候停止在 scikit 中运行?