Python分类模型评估
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Python分類模型評估
1 聲明
本文的數據來自網絡,部分代碼也有所參照,這里做了注釋和延伸,旨在技術交流,如有冒犯之處請聯系博主及時處理。
2 分類模型評估簡介
對給給定的分類模型進行質量評估,常見概念見下:
其中TP是true positive(真正的)、TN是true negative (真負的)、FP是false positive,(假負的)、positive(正的)、negative(負的)個數。
混淆矩陣見下:
這里的positive指的是買了電腦的那一類(數據集參考《數據挖掘概念與技術》一書里的購買電腦的數據集),則TP是實際是買了電腦的預測是買了的數量,對應TP,而FP則是實際沒買電腦,但預測買了的數量。FN則實際買了電腦但是預測值確實沒買的個數,TN則是實際沒買,預測的也是沒買的個數。
Receiver operating characteristic curves 簡稱ROC曲線是比較模型的性能評價方法。它主要是反應true positive rate (TPR)真正率與false positive rate(FPR)假負率的權衡。
ROC曲線越接近左上角,說明該分類器的性能越好,這表明這個分類器在假負率很低的同時真正率也很高。
Area Under Curve簡稱為AUC 被定義為ROC曲線下的面積。ROC曲線一般都處于y=x這條直線的上方,所以它的取值范圍為[0.5,1],有了AUC這個數值指標,判別分類器的效果就很直觀,它越大越好。
注:準確率accuracy不適用于分類不平衡問題。
3 分類模型評估代碼示例
# Step1 加載相關包 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 加創建特征矩陣和目標向量(y) features, target = make_classification(n_samples=10000,n_features=10,n_classes=2,n_informative=3,random_state=3)# Step3 加利用train_test_split拆分測試集、訓練集(測試占比10%) features_train, features_test, target_train, target_test = train_test_split( features, target, test_size=0.1, random_state=1) # Step4 創建Logistic分類器 logit = LogisticRegression() # Step5 訓練模型 logit.fit(features_train, target_train) # Step6 獲得預測的概率值 target_probabilities = logit.predict_proba(features_test)[:,1] # Step7 通過roc_curve獲得FPR和TPR false_positive_rate, true_positive_rate, threshold = roc_curve(target_test, target_probabilities) # Step8 畫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 計算AUC的值 roc_auc_score(target_test, target_probabilities)4 總結
無
總結
以上是生活随笔為你收集整理的Python分类模型评估的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 下面咖啡上面奶茶的鸳鸯怎么调?
- 下一篇: 蓝狮超干啤酒是工业啤酒吗