Python分类模型评估
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Python分類模型評(píng)估
1 聲明
本文的數(shù)據(jù)來(lái)自網(wǎng)絡(luò),部分代碼也有所參照,這里做了注釋和延伸,旨在技術(shù)交流,如有冒犯之處請(qǐng)聯(lián)系博主及時(shí)處理。
2 分類模型評(píng)估簡(jiǎn)介
對(duì)給給定的分類模型進(jìn)行質(zhì)量評(píng)估,常見(jiàn)概念見(jiàn)下:
其中TP是true positive(真正的)、TN是true negative (真負(fù)的)、FP是false positive,(假負(fù)的)、positive(正的)、negative(負(fù)的)個(gè)數(shù)。
混淆矩陣見(jiàn)下:
這里的positive指的是買(mǎi)了電腦的那一類(數(shù)據(jù)集參考《數(shù)據(jù)挖掘概念與技術(shù)》一書(shū)里的購(gòu)買(mǎi)電腦的數(shù)據(jù)集),則TP是實(shí)際是買(mǎi)了電腦的預(yù)測(cè)是買(mǎi)了的數(shù)量,對(duì)應(yīng)TP,而FP則是實(shí)際沒(méi)買(mǎi)電腦,但預(yù)測(cè)買(mǎi)了的數(shù)量。FN則實(shí)際買(mǎi)了電腦但是預(yù)測(cè)值確實(shí)沒(méi)買(mǎi)的個(gè)數(shù),TN則是實(shí)際沒(méi)買(mǎi),預(yù)測(cè)的也是沒(méi)買(mǎi)的個(gè)數(shù)。
Receiver operating characteristic curves 簡(jiǎn)稱ROC曲線是比較模型的性能評(píng)價(jià)方法。它主要是反應(yīng)true positive rate (TPR)真正率與false positive rate(FPR)假負(fù)率的權(quán)衡。
ROC曲線越接近左上角,說(shuō)明該分類器的性能越好,這表明這個(gè)分類器在假負(fù)率很低的同時(shí)真正率也很高。
Area Under Curve簡(jiǎn)稱為AUC 被定義為ROC曲線下的面積。ROC曲線一般都處于y=x這條直線的上方,所以它的取值范圍為[0.5,1],有了AUC這個(gè)數(shù)值指標(biāo),判別分類器的效果就很直觀,它越大越好。
注:準(zhǔn)確率accuracy不適用于分類不平衡問(wèn)題。
3 分類模型評(píng)估代碼示例
# Step1 加載相關(guān)包 import matplotlib.pyplot as plt from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression from sklearn.metrics import roc_curve, roc_auc_score from sklearn.model_selection import train_test_split # Step2 加創(chuàng)建特征矩陣和目標(biāo)向量(y) features, target = make_classification(n_samples=10000,n_features=10,n_classes=2,n_informative=3,random_state=3)# Step3 加利用train_test_split拆分測(cè)試集、訓(xùn)練集(測(cè)試占比10%) features_train, features_test, target_train, target_test = train_test_split( features, target, test_size=0.1, random_state=1) # Step4 創(chuàng)建Logistic分類器 logit = LogisticRegression() # Step5 訓(xùn)練模型 logit.fit(features_train, target_train) # Step6 獲得預(yù)測(cè)的概率值 target_probabilities = logit.predict_proba(features_test)[:,1] # Step7 通過(guò)roc_curve獲得FPR和TPR false_positive_rate, true_positive_rate, threshold = roc_curve(target_test, target_probabilities) # Step8 畫(huà)ROC曲線 plt.title("Receiver Operating Characteristic") plt.plot(false_positive_rate, true_positive_rate) plt.plot([0, 1], ls="--") plt.plot([0, 0], [1, 0] , c=".7"), plt.plot([1, 1] , c=".7") plt.ylabel("True Positive Rate") plt.xlabel("False Positive Rate") plt.show() # Step9 計(jì)算AUC的值 roc_auc_score(target_test, target_probabilities)4 總結(jié)
無(wú)
總結(jié)
以上是生活随笔為你收集整理的Python分类模型评估的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 下面咖啡上面奶茶的鸳鸯怎么调?
- 下一篇: Python回归模型评估