欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)兩種多分類混淆矩陣

 更新時間:2022年06月07日 11:14:41   作者:胖大海pyh  
這篇文章主要為大家介紹了Python實(shí)現(xiàn)兩種多分類混淆矩陣,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1、什么是混淆矩陣

深度學(xué)習(xí)中,混淆矩陣是ROC曲線繪制的基礎(chǔ),同時它也是衡量分類型模型準(zhǔn)確度中最基本,最直觀,計算最簡單的方法。它可以直觀地了解分類模型在每一類樣本里面表現(xiàn),常作為模型評估的一部分。它可以非常容易的表明多個類別是否有混淆(也就是一個class被預(yù)測成另一個class)。

首先要明確幾個概念: 

T或者F:該樣本 是否被正確分類。 

P或者N:該樣本 原本是正樣本還是負(fù)樣本。 

  • 真正例(True Positive,TP):預(yù)測正確;模型預(yù)測也是正例,樣本的真實(shí)類別是正例, 
  • 真負(fù)例(True Negative,TN):預(yù)測正確:模型預(yù)測為負(fù)例,樣本的真實(shí)類別是負(fù)例, 
  • 偽正例(False Positive,F(xiàn)P):預(yù)測錯誤:模型預(yù)測為正例,樣本的真實(shí)類別是負(fù)例, 
  • 偽負(fù)例(False Negative,F(xiàn)N):預(yù)測錯誤;模型預(yù)測為負(fù)例,樣本的真實(shí)類別是正例,

將這四個指標(biāo)一起呈現(xiàn)在表格中,就能得到如下這樣一個矩陣,我們稱它為混淆矩陣(Confusion Matrix),這里從其他文章偷了張圖:

在混線矩陣中,以對角線為分界線。以上圖為例子:對角線的位置表示預(yù)測正確,對角線以外的位置表示把樣本錯誤的預(yù)測為其他樣本。

2、分類模型評價指標(biāo)

從混淆矩陣可以直觀地看出各個參數(shù)的數(shù)值大小。查準(zhǔn)率是在模型預(yù)測為正的所有樣本中,模型預(yù)測對的比重,即:“分類器認(rèn)為是正類并且確實(shí)是正類的部分占所有分類器認(rèn)為是正類的比例”。計算公式如下式所示:

F1-Score指標(biāo)綜合了Precision與Recall的產(chǎn)出的結(jié)果。F1-Score的取值范圍從0到1的,1代表模型的輸出最好,0代表模型的輸出結(jié)果最差,計算公式如下式所示:

(4)

除了F1分?jǐn)?shù)之外,F(xiàn)2分?jǐn)?shù)和F0.5分?jǐn)?shù)在統(tǒng)計學(xué)中也得到大量的應(yīng)用。其中,F(xiàn)2分?jǐn)?shù)中,召回率的權(quán)重高于精準(zhǔn)率,而F0.5分?jǐn)?shù)中,精準(zhǔn)率的權(quán)重高于召回率。

3、兩種多分類混淆矩陣

多分類混淆矩陣根據(jù)不同需求可以繪制不同的矩陣: 

1、直接打印出每一個類別的分類準(zhǔn)確率。 

2、打印具體的分類結(jié)果的數(shù)值,方便數(shù)據(jù)的分析和各類指標(biāo)的計算

在介紹具體代碼之前,首先來介紹confusion_matrix()函數(shù),它是Python中的sklearn庫提供的輸出矩陣數(shù)據(jù)的方法:

def confusion_matrix(y_true, y_pred, labels=None, sample_weight=None):

參數(shù)意義:

  • y_true: 是樣本真實(shí)分類結(jié)果,y_pred: 是樣本預(yù)測分類結(jié)果
  • y_pred:預(yù)測結(jié)果
  • labels:是所給出的類別,通過這個可對類別進(jìn)行選擇
  • sample_weight : 樣本權(quán)重

3.1直接打印出每一個類別的分類準(zhǔn)確率。

# 顯示混淆矩陣
def plot_confuse(model, x_val, y_val):
   # 獲得預(yù)測結(jié)果
    predictions = predict(model,x_val)
    #獲得真實(shí)標(biāo)簽
    truelabel = y_val.argmax(axis=-1)   # 將one-hot轉(zhuǎn)化為label
    cm = confusion_matrix(y_true=truelabel, y_pred=predictions)
    plt.figure()
    # 指定分類類別
    classes = range(np.max(truelabel)+1)
    title='Confusion matrix'
   #混淆矩陣顏色風(fēng)格
    cmap=plt.cm.jet
    cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(classes))
    plt.xticks(tick_marks, classes, rotation=45)
    plt.yticks(tick_marks, classes)
    thresh = cm.max() / 2.
   # 按照行和列填寫百分比數(shù)據(jù)
    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
        plt.text(j, i, '{:.2f}'.format(cm[i, j]), horizontalalignment="center",
                 color="white" if cm[i, j] > thresh else "black")
    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')
    plt.show()

3.2打印具體的分類結(jié)果的數(shù)值

# 顯示混淆矩陣
def plot_confuse_data(model, x_val, y_val):
    classes = range(0,6)
    predictions = predict(model,x_val)
    truelabel = y_val.argmax(axis=-1)   # 將one-hot轉(zhuǎn)化為label
    confusion = confusion_matrix(y_true=truelabel, y_pred=predictions)
    #顏色風(fēng)格為綠。。。。
    plt.imshow(confusion, cmap=plt.cm.Greens)
# ticks 坐標(biāo)軸的坐標(biāo)點(diǎn)
# label 坐標(biāo)軸標(biāo)簽說明
    indices = range(len(confusion))
# 第一個是迭代對象,表示坐標(biāo)的顯示順序,第二個參數(shù)是坐標(biāo)軸顯示列表
    plt.xticks(indices, classes)
    plt.yticks(indices, classes)
    plt.colorbar()
    plt.xlabel('Predicted label')
    plt.ylabel('True label')
    plt.title('Confusion matrix')

# plt.rcParams兩行是用于解決標(biāo)簽不能顯示漢字的問題
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False

# 顯示數(shù)據(jù)
    for first_index in range(len(confusion)):    #第幾行
        for second_index in range(len(confusion[first_index])):    #第幾列
            plt.text(first_index, second_index, confusion[first_index][second_index])
# 顯示
    plt.show()

4、總結(jié)

1、混淆矩陣是深度學(xué)習(xí)中分類模型最常用的評估指標(biāo)。網(wǎng)上大部分都是顯示各類的分類正確率,不夠靈活。顯示具體數(shù)值靈活性大,可以計算自己想要的指標(biāo)。

2、多分類的混淆矩陣中 查準(zhǔn)率為主對角線上的值除以該值所在列的和;召回率等于主對角線上的值除以該值所在行的和。

以上就是Python實(shí)現(xiàn)兩種多分類混淆矩陣的詳細(xì)內(nèi)容,更多關(guān)于Python多分類混淆矩陣的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論