首頁  >  文章  >  後端開發  >  詳解分類評估指標與迴歸評估指標以及Python程式碼實現

詳解分類評估指標與迴歸評估指標以及Python程式碼實現

零到壹度
零到壹度原創
2018-04-16 11:11:1711418瀏覽

這篇文章介紹的內容是詳解分類評價指標和回歸評價指標以及Python代碼實現,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下。

1、概念

效能衡量(評估)指標,主分為兩大類:
 1)分類評估指標(classification),主要分析,離散的,整數的。其具體指標包括accuracy(準確率),precision(精確率),recall(召回率),F值,P-R曲線,ROC曲線和AUC。
 2)回歸評估指標(regression),主要分析整數和實數之間的關係。其特定指標包括可釋方差分數(explianed_variance_score),平均絕對誤差MAE(mean_absolute_error),均方誤差MSE(mean-squared_error),均方根差RMSE,交叉熵lloss(Log loss,cross-entropy loss),R方值(確定係數,r2_score)。

1.1、前提

假設只有兩類-正類(positive)和負類(negative),通常以關注的類為正類,其他類為負類(故多類問題亦可歸納為兩類)
混淆矩陣(Confusion matrix)如下

##正負總結正#TP FNP(實際上為正)#為負
實際類別 預測類別



##FP TN N(實際為負數)
#表中AB模式:第一個表示預測結果的對錯,第二個表示預測的類別。如TP表示,True Positive,即正確的預測為正類;FN表示,False Negative,即錯誤的預測為了負類。

2、評估指標(效能衡量)

2.1、分類評估指標

2.1.1 值指標-Accuracy、Precision、Recall、F值
度量定義表示
Accuracy(準確率) #Precision(精確率) Recall(召回率) F值
正確分類的樣本數與總樣本數之比(預測為垃圾簡訊中真正的垃圾簡訊的比例) 判定為正例中真正正例數與判定為正例數之比(所有真的垃圾簡訊被分類求正確找出來的比例) 被正確判定為正例數與總正例數之比 準確率與召回率的調和平均F -score
accuracy=

#precision=

#recall=

#F - score =

#

1.precision也常稱為查準率,recall稱為查全率
2.比較常用的是F1,

#python3.6程式碼實作:

#调用sklearn库中的指标求解from sklearn import metricsfrom sklearn.metrics import precision_recall_curvefrom sklearn.metrics import average_precision_scorefrom sklearn.metrics import accuracy_score#给出分类结果y_pred = [0, 1, 0, 0]
y_true = [0, 1, 1, 1]
print("accuracy_score:", accuracy_score(y_true, y_pred))
print("precision_score:", metrics.precision_score(y_true, y_pred))
print("recall_score:", metrics.recall_score(y_true, y_pred))
print("f1_score:", metrics.f1_score(y_true, y_pred))
print("f0.5_score:", metrics.fbeta_score(y_true, y_pred, beta=0.5))
print("f2_score:", metrics.fbeta_score(y_true, y_pred, beta=2.0))
2.1.2 相關曲線-P-R曲線、ROC曲線及AUC值

1)P-R曲線
步驟:
   1、從高到低將」score」值排序並依序作為閾值threshold;
   2、對於每個閾值,」score」值大於或等於這個threshold的測試樣本被認為正例,其他為負例。從而形成一組預測數。
eg.
詳解分類評估指標與迴歸評估指標以及Python程式碼實現
以0.9為閾值,則第1個測試樣本為正例,2、3、4、5為負例
得到


預測為正例 預測為負例 總計
##正例(score大於閾值) 0.9 0.1 1
負例(score小於閾值)0.2 0.3 0.3 0.35 = 1.15

0.8 0.7 0.7 0.65 = 2.85#4

#4##precision=


recall=


詳解分類評估指標與迴歸評估指標以及Python程式碼實現







詳解分類評估指標與迴歸評估指標以及Python程式碼實現


詳解分類評估指標與迴歸評估指標以及Python程式碼實現在閾值以下的部分,當作負例,則預測為負例的取值情況是正確預測值,即如果本身是正例,則取TP;如果本身是負例,則取TN,其都為預測分值。
python實作偽代碼
詳解分類評估指標與迴歸評估指標以及Python程式碼實現

#precision和recall的求法如上
#主要介绍一下python画图的库
import matplotlib.pyplot ad plt
#主要用于矩阵运算的库
import numpy as np#导入iris数据及训练见前一博文
...
#加入800个噪声特征,增加图像的复杂度
#将150*800的噪声特征矩阵与150*4的鸢尾花数据集列合并
X = np.c_[X, np.random.RandomState(0).randn(n_samples, 200*n_features)]
#计算precision,recall得到数组
for i in range(n_classes):
    #计算三类鸢尾花的评价指标, _作为临时的名称使用
    precision[i], recall[i], _ = precision_recall_curve(y_test[:, i], y_score[:,i])#plot作图plt.clf()
for i in range(n_classes):
    plt.plot(recall[i], precision[i])
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel("Recall")
plt.ylabel("Precision")
plt.show()

將上述程式碼補充完整後得到鳶尾花資料集的P-R曲線
詳解分類評估指標與迴歸評估指標以及Python程式碼實現
2)ROC曲線詳解分類評估指標與迴歸評估指標以及Python程式碼實現橫軸:假正例率fp rate = FP / N
縱軸:真正例率tp rate = TP / N
步驟: 詳解分類評估指標與迴歸評估指標以及Python程式碼實現   1、從高到低將」score」值排序並依序作為閾值threshold;
   2、對於每個閾值,」score」值大於或等於這個threshold的測試樣本被認為是正例,其他為負例。從而形成一組預測數。
詳解分類評估指標與迴歸評估指標以及Python程式碼實現
同P-R曲線計算類似,不再贅述

 鳶尾花資料集的ROC圖像為 ##########  AUC(Area Under Curve)定義為ROC曲線下的面積 ###  AUC值提供了分類器的一個整體數值。通常AUC越大,分類器更好,取值為[0, 1]#########2.2、回歸評價指標######1)可釋方差分數###### ###2)平均絕對誤差MAE (Mean absolute error) #########3)均方差MSE(Mean squared error) ################4) logistics回歸損失#########5)一致性評估- pearson相關係數法##########python程式碼實作###
from sklearn.metrics import log_loss
log_loss(y_true, y_pred)from scipy.stats import pearsonr
pearsonr(rater1, rater2)from sklearn.metrics import cohen_kappa_score
cohen_kappa_score(rater1, rater2)

以上是詳解分類評估指標與迴歸評估指標以及Python程式碼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn