一、主要函数
sklearn.metrics.accuracy_score() 是 scikit-learn 中用于计算分类模型准确率的函数,适用于评估分类任务的整体性能。
1、核心功能
- 作用:计算模型预测的准确率,即正确分类的样本数占总样本数的比例。
- 公式:Accuracy=TP + TN/TP + TN + FP + FNTP + TN
- 其中,TP(True Positive)、TN(True Negative)为正确分类的正负样本,FP(False Positive)、FN(False Negative)为错误分类的样本。
2、参数解析
accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)
y_true
:真实标签数组(必填)。y_pred
:模型预测的标签数组(必填)。normalize
(默认True
):True
:返回正确分类的比例(如 0.8)。False
:返回正确分类的样本数(如 4)。
sample_weight
:样本权重数组,用于对不同样本赋予不同重要性(如处理类别不平衡问题)
3、应用场景与局限性
- 适用场景:
- 类别分布均衡时,能较好反映模型整体性能。
- 快速评估模型基线效果(如对比不同算法的初步结果)。
- 局限性:
- 类别不平衡时误导性高:例如 99% 的样本为负类,模型全预测负类时准确率仍为 99%,但实际性能差。
- 需结合其他指标:推荐同时使用召回率(
recall_score
)、精确率(precision_score
)或 F1 值(f1_score
)综合评估。
4、扩展说明
- 与
model.score()
的关系:model.score(X_test, y_test)
默认调用accuracy_score
,两者等价。 - 多标签任务:若需处理多标签分类,需结合
average
参数(如micro
、macro
)调整计算方式
二、筛选超参数
import numpy as np
from sklearn.datasets import load_iris#加载鸢尾花数据集
iris=load_iris()
x=iris.data #数据集
y=iris.target #标签集#划分数据集
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x,y,train_size=0.8,random_state=666)#预测数据集
from sklearn.neighbors import KNeighborsClassifier #KNN均值分类函数
knn_classifier = KNeighborsClassifier(n_neighbors=5)#数据适配
knn_classifier.fit(x_train, y_train)#结果预测
y_predict = knn_classifier.predict(x_test)
print(y_predict)#结果:array([1, 2, 1, 2, 0, 1, 1, 2, 1, 1, 1, 0, 0, 0, 2, 1, 0, 2, 2, 2, 1, 0,2, 0, 1, 1, 0, 1, 2, 2])#模型评价(手动算)
accutacy = np.sum(y_predict == y_test) / len(y_test)
print(accutacy ) #结果:1.0#模型评价(使用sklearn.metrics.accuracy_score函数)
from sklearn.metrics import accuracy_score
accuracy_score(y_test,y_predict) #结果:1.0