已拟合模型的score方法与scikit-learn中的accuracy_score有什么区别?

我通常会将这个问题发布到Stack Overflow,但经过思考,我意识到这实际上不是一个编程问题,而是一个机器学习问题。

对于代码或其他任何方面的反馈,我都非常欢迎和感激!

Jupyter Notebook

我在Kaggle上做泰坦尼克号的问题。我已经准备好了四个数据集:

  • features_train
  • features_test
  • target_train
  • target_test

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

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

我们使用训练数据来拟合模型,然后创建一个预测(pred),它尝试基于我们的features_test数据进行预测。这意味着我们的predtarget_test数据集理论上应该是相同的(如果模型完美工作的话)。

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

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

这让我感到困惑。你可以在第97个单元格看到,第一个在“模型1”标题下的单元格,我使用了:

clf.score(features_test, target_test)

结果是

0.8609865470852018

然而,后来我还使用了:

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

结果也是

0.8609865470852018

为什么这两个分数相同?我做错了什么吗?还是这两个步骤基本上做的是同样的事情?怎么会这样呢?score()方法是否在后台有效地创建了一个pred数据框并对其进行检查?


回答:

对于这样的问题,毫无疑问,你最好的朋友是文档;引用scikit-learn关于模型评估的文档:

有三种不同的API用于评估模型预测的质量:

  • 估计器的score方法:估计器有一个score方法,提供了一个默认的评估标准,用于解决它们设计的问题。这不在本页讨论,而是在每个估计器的文档中讨论。
  • 评分参数:使用交叉验证的模型评估工具(如model_selection.cross_val_scoremodel_selection.GridSearchCV)依赖于内部评分策略。这在“评分参数:定义模型评估规则”部分讨论。
  • 度量函数metrics模块实现了用于特定目的评估预测误差的函数。这些度量在分类度量、多标签排名度量、回归度量和聚类度量部分中有详细说明。

在你代码中使用的三个分类器(逻辑回归随机森林决策树)的文档中,有相同的描述:

score(X, y, sample_weight=None)
返回给定测试数据和标签的平均准确率。

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

尽管如此,在盲目信任估计器自带的score方法之前,你应该始终查看文档;例如,在线性回归决策树回归器中,score返回的是判定系数R^2,这几乎从未被构建预测模型的机器学习从业者使用(它常被构建解释性模型的统计学家使用,但那是另一个故事了)。

顺便说一下,我简要地浏览了你链接的代码,我看到你计算了像MSE、MAE和RMSE这样的度量——请记住,这些是回归度量,在分类设置中(如你在这里面对的)它们是没有意义的(反过来,准确率在回归设置中也是没有意义的)…

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注