【筆記】關於多分類問題中的混淆矩陣,精准率


關於多分類問題中的混淆矩陣,精准率

具體操作

(在notebook中)

使用手寫識別數據集,使用全部的樣本數據,不做限制,對數據進行分割,使用邏輯回歸算法,求解出准確度

  import numpy as np
  import matplotlib.pyplot as plt
  from sklearn import datasets

  digits = datasets.load_digits()
  X = digits.data
  y = digits.target

  from sklearn.model_selection import train_test_split
  X_train,X_test,y_train,y_test =  train_test_split(X,y,test_size=0.8,random_state=666)

  from sklearn.linear_model import LogisticRegression

  log_reg = LogisticRegression()
  log_reg.fit(X_train,y_train)
  log_reg.score(X_test,y_test)

結果如下

進行預測

  y_predict = log_reg.predict(X_test)

計算精准率,需要將average設置為micro

  from sklearn.metrics import precision_score

  precision_score(y_test,y_predict,average="micro")

結果如下

計算混淆矩陣(不用修改,其本身就可以計算多分類)

  from sklearn.metrics import confusion_matrix

  confusion_matrix(y_test,y_predict)

結果如下(10*10的矩陣)

繪制圖像,使用matshow來繪制一個矩陣,傳入參數為矩陣以及顏色的映射(設置為plt的灰度值)

  cfm = confusion_matrix(y_test,y_predict)
  plt.matshow(cfm,cmap=plt.cm.gray)

圖像如下(越亮越大,越小越黑)

對矩陣的處理,設置一個記錄行的樣本,按照列方向求和,設置一個的矩陣,使矩陣除以這行的數字和,將對角線的數字填充為0,然后輸出

  row_sums = np.sum(cfm,axis=1)
  err_matrix = cfm / row_sums
  np.fill_diagonal(err_matrix,0)
  err_matrix

結果如下(部分內容)

繪制矩陣

  plt.matshow(err_matrix,cmap=plt.cm.gray)

圖像如下

這個結果反應的就是對於多分類問題來説,越亮代表犯錯越多,這樣就可以看到犯錯的情況,然后改進算法,修改域值來微調算法或是別的操作來優化,有可能不是算法的問題,可能是因為樣本問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM