這篇文章介紹的內容是詳解分類評價指標和回歸評價指標以及Python代碼實現,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下。
效能衡量(評估)指標,主分為兩大類:
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)。
假設只有兩類-正類(positive)和負類(negative),通常以關注的類為正類,其他類為負類(故多類問題亦可歸納為兩類)
混淆矩陣(Confusion matrix)如下
實際類別 | 預測類別 | |||
負 | 總結 | |||
#TP | FN | P(實際上為正) | ||
##FP | TN | N(實際為負數) |
2、評估指標(效能衡量)
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))
1)P-R曲線
步驟:
1、從高到低將」score」值排序並依序作為閾值threshold;
2、對於每個閾值,」score」值大於或等於這個threshold的測試樣本被認為正例,其他為負例。從而形成一組預測數。
eg.
以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=
在閾值以下的部分,當作負例,則預測為負例的取值情況是正確預測值,即如果本身是正例,則取TP;如果本身是負例,則取TN,其都為預測分值。
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()
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中文網其他相關文章!