You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scikit-Learn中accuracy_score与model.score的差异及哪个更实用?

Scikit-Learn中accuracy_score(y_test,y_pred)与model.score(X_test,y_test)的区别

为什么你测试时结果一致?

大部分分类模型(比如逻辑回归、随机森林分类器这些)的model.score(X_test, y_test),内部其实就是先调用model.predict(X_test)得到预测值y_pred,再用accuracy_score(y_test, y_pred)计算准确率,所以结果完全一致是正常情况。

两者的具体差异

  • 适用范围不一样
    • accuracy_score是通用的准确率计算函数,只要你有真实标签和预测结果——不管这个预测结果是哪个模型输出的,甚至是你手动算出来的——都能用来算准确率。
    • model.score是模型自带的方法,必须绑定当前模型使用,它会自动帮你完成“预测+算指标”的步骤,但只能用该模型默认的评估指标。
  • 灵活性有区别
    • accuracy_score可以玩出更多花样:比如设置normalize=False,直接得到正确分类的样本数量,而不是比例;还能通过sample_weight参数给不同样本加权,计算加权准确率。
    • model.score的逻辑是固定死的,而且不同模型的score默认指标不一样:比如回归模型(像线性回归)的score返回的是R²分数,根本不是准确率;聚类模型的score指标更是和准确率没关系。
  • 使用步骤不同
    • 用accuracy_score得先跑一遍model.predict(X_test)拿到y_pred,再把两个参数传进去计算。
    • 用model.score更省事,直接传测试集特征和真实标签,一步出结果。

哪个更实用?

  • 如果是分类任务,且只需要默认的准确率,选哪个都行,model.score更简洁。
  • 如果需要自定义计算逻辑(比如看具体对了多少样本、算加权准确率),或者你的预测结果不是当前模型生成的,那accuracy_score更灵活。
  • 要是做回归、聚类这类非分类任务,别搞混:model.score返回的不是准确率,这时候得用对应任务的专门指标函数(比如回归用r2_score)。

内容的提问来源于stack exchange,提问作者Kutluk Atalay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:15:43