一、主要函數
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