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
相关产品推荐
相关产品推荐

