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

时间:2019-01-13 12:20:06

标签: python machine-learning scikit-learn

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

对代码或其他任何内容的任何其他反馈都将受到赞赏和欢迎!

The Jupyter Notebook

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

  • features_train
  • features_test
  • target_train
  • target_test

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

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

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

这意味着要证明模型的准确性,我们可以简单地比较 pred target_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数据框并在后台进行了检查?

1 个答案:

答案 0 :(得分:1)

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

  

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

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

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

  

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

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

尽管如此,您应该始终在盲目地信任估计器附带的score方法之前检查文档。例如,在linear regressiondesision tree regressor中,score返回确定系数R ^ 2,而构建预测模型的ML从业人员几乎从未使用过确定系数R ^ 2(它统计人员经常使用它们来构建解释性模型,但这是另一回事了。

顺便说一句,我简要介绍了链接到的代码,并看到您计算的指标是MSE,MAE和RMSE,请记住,这些指标是回归指标,而并非在分类设置(例如您在此处遇到的分类)中有意​​义(反过来,在回归设置中,准确性没有意义)...