我通常将其发布到Stack Overflow,但我对此进行了思考,并意识到它实际上不是编码问题-这是ML问题。
对代码或其他任何内容的任何其他反馈都将受到赞赏和欢迎!
所以我正在对Kaggle进行泰坦尼克号问题。我已经准备好四个数据集:
考虑到这一点,我有两个问题,尽管第二个问题很重要。
问题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
数据框并在后台进行了检查?
答案 0 :(得分:1)
对于此类问题,可以说您最好的朋友是文档;引用model evaluation上的scikit-learn文档:
共有3种不同的API,用于评估模型的质量 预测:
- 估计器评分方法:估计器具有
score
方法,可为他们设计的问题提供默认的评估标准 解决。此页未对此进行讨论,但每个估算器的 文档。- 评分参数:使用交叉验证的模型评估工具(例如
model_selection.cross_val_score
和model_selection.GridSearchCV
)依靠内部评分策略。 评分参数:定义模型一节中对此进行了讨论 评估规则。- 度量功能:
metrics
模块实现了针对特定目的评估预测误差的功能。这些指标是 有关分类指标,多标签排名的部分中有详细说明 指标,回归指标和聚类指标。
在您的代码中使用的所有3个分类器(logistic regression,random forest和decision tree)的文档中,都有相同的描述:
得分( X,y,sample_weight = None )
返回平均精度 给定测试数据和标签。
它回答了您使用的特定模型的第二个问题。
尽管如此,您应该始终在盲目地信任估计器附带的score
方法之前检查文档。例如,在linear regression和desision tree regressor中,score
返回确定系数R ^ 2,而构建预测模型的ML从业人员几乎从未使用过确定系数R ^ 2(它统计人员经常使用它们来构建解释性模型,但这是另一回事了。
顺便说一句,我简要介绍了链接到的代码,并看到您计算的指标是MSE,MAE和RMSE,请记住,这些指标是回归指标,而并非在分类设置(例如您在此处遇到的分类)中有意义(反过来,在回归设置中,准确性没有意义)...