繁体   English   中英

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

[英]What's the difference between the score method on a fitted model, vs accuracy_score from scikit-learn?

我通常只是将其发布到Stack Overflow,但我对此进行了思考,并意识到这实际上不是编码问题-这是ML问题。

对于代码或其他任何其他反馈,我们将不胜感激!

Jupyter笔记本

所以我正在对Kaggle进行泰坦尼克号问题。 我已经准备好四个数据集:

  • features_train
  • features_test
  • target_train
  • target_test

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

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

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

这意味着,以证明该模型的准确性,我们可以简单地比较PREDtarget_test,这是accuracy_score功能从Sklearn做什么的结果。

问题2:使用模型的评分方法与precision_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 Dataframe并在后台对其进行了检查?

对于此类问题,可以说您最好的朋友是文档 引用scikit-learn文档中的模型评估

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

  • 估计器评分方法 :估计器具有一种score方法,为他们要解决的问题提供默认的评估标准。 此页面上没有讨论,但是每个估算器的文档中都对此进行了讨论。
  • 评分参数 :使用交叉验证的模型评估工具(例如model_selection.cross_val_scoremodel_selection.GridSearchCV )依赖于内部评分策略。 这在“评分参数:定义模型评估规则”部分中进行了讨论。
  • 度量标准功能metrics模块实现了针对特定目的评估预测误差的功能。 这些度量在“分类”度量,“多标签排名”度量,“回归”度量和“聚类”度量的各节中详细介绍。

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

得分X,y,sample_weight = None
返回给定测试数据和标签上的平均准确度。

回答您使用的特定模型的第二个问题。

尽管如此,在盲目相信估计器附带的score方法之前,您应该始终检查文档。 例如, 在线性回归决策树回归器中score返回确定系数R ^ 2,而ML从业人员几乎从来没有使用它来建立预测模型(统计学家经常使用它来建立解释模型,但这是另一回事了)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM