sklearn.metrics學習

sklearn.metrics

上篇文章本小白學習了混淆矩陣、ROC曲線和AUC面積,就迫不及待想看看sklearn實現的方法,sklearn官網打開,來幾個比較常用的方法小試身手。

accuracy_score

分類準確率分數是指分類正確的樣本數佔總樣本總數的比例

sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)

normalize:默認爲true,返回正確分類的比例,如果是false,返回正確分類的數目

>>> import numpy as np
>>> from sklearn.metrics import accuracy_score
>>> y_pred = [0, 2, 1, 3]
>>> y_true = [0, 1, 2, 3]
>>> accuracy_score(y_true, y_pred)
0.5
>>> accuracy_score(y_true, y_pred, normalize=False)
2

confusion_matrix

先看個混淆矩陣的例子
在這裏插入圖片描述
(1)貓預測成貓的有92個,貓預測正狗的有7個,貓預測成豬的有1個
(2)狗預測成貓的有10個,狗預測正狗的有88個,狗預測成豬的有2個
(3)豬預測成貓的有1個,豬預測正狗的有9個,豬預測成豬的有90個

可以看出來對角線上的都是預測正確的樣本,其餘爲分類錯誤的樣本

sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)

看個官網的例子

>>> from sklearn.metrics import confusion_matrix
>>> y_true = [2, 0, 2, 2, 0, 1]
>>> y_pred = [0, 0, 2, 2, 0, 2]
>>> confusion_matrix(y_true, y_pred)
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])

把這個例子做到表格裏看下(標籤按sklearn中,數據一般是按大小排序,字母按時字母順序排序)
在這裏插入圖片描述

classification_report

這個方法經常會用到,可以一次性獲得好幾個指標的值

sklearn.metrics.classification_report(y_true, y_pred, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False)

官網例子

>>> from sklearn.metrics import classification_report
>>> y_true = [0, 1, 2, 2, 2]
>>> y_pred = [0, 0, 2, 2, 1]
>>> target_names = ['class 0', 'class 1', 'class 2']
>>> print(classification_report(y_true, y_pred, target_names=target_names))
              precision    recall  f1-score   support

     class 0       0.50      1.00      0.67         1
     class 1       0.00      0.00      0.00         1
     class 2       1.00      0.67      0.80         3

    accuracy                           0.60         5
   macro avg       0.50      0.56      0.49         5
weighted avg       0.70      0.60      0.61         5

precision 精度 TP / (TP+FP)
recall 召回率 TP / (TP+FN)
f1-score F1 2* P*R/(P+R)
support: 樣本數
accuracy:準確率 TP +TN/ (TP+FP+TN+FN)

roc_auc_score

sklearn.metrics.roc_auc_score(y_true, y_score, average=’macro’, sample_weight=None, max_fpr=None)

計算roc曲線下的面積,

>>> import numpy as np
>>> from sklearn.metrics import roc_auc_score
>>> y_true = np.array([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> roc_auc_score(y_true, y_scores)
0.75
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章