什麼是混淆矩陣:
混淆矩陣是機器學習中總結分類模型**結果的情形分析表,以矩陣形式將資料集中的記錄按照真實的類別與分類模型作出的分類判斷兩個標準進行彙總。
這個名字**於它可以非常容易的表明多個類別是否有混淆(也就是乙個class被**成另乙個class)
如圖:
混淆矩陣是監督學習中的一種視覺化工具,主要用於比較分類結果和例項的真實資訊。矩陣中的每一行代表例項的 **類別,每一列代表例項的真實類別。
**詳解:
列印混淆矩陣
#鳶尾花跑混淆矩陣
from sklearn.datasets import load_iris
import pydotplus
from ipython.display import image #直接繪圖在jupyter
import graphviz
from sklearn import tree
from sklearn.model_selection import train_test_split
#訓練模型 提取鳶尾花資料
iris = load_iris()
# print(iris)
dataset_x = iris.data
dataset_y = iris.target
train_x,test_x,train_y,test_y = train_test_split(dataset_x,dataset_y,test_size=0.2)
clf = tree.decisiontreeclassifier()
clf = clf.fit(train_x,train_y)
# print(train_y)
predict_test_y=clf.predict(test_x)
press = predict_test_y.reshape(-1,3)
# print(predict_test_y)
將列印的混淆矩陣視覺化以及繪圖
from matplotlib import pyplot as plt
%matplotlib inline
import numpy as np
import itertools
from sklearn.metrics import confusion_matrix
con_matrix = confusion_matrix(y_pred=predict_test_y,y_true=test_y)
# print(y_pre.shape)
# print(dataset_y.shape)
print(con_matrix) #檢視混淆矩陣
# 視覺化混淆矩陣
計算混淆矩陣的準確率,精確率,召回率,f1
from sklearn.model_selection import cross_val_score
print('準確率:{}'.format(cross_val_score(clf,test_x,test_y,scoring='accuracy',cv=6).mean()))
print('精確率:{}'.format(cross_val_score(clf,test_x,test_y,scoring='precision_weighted',cv=6).mean()))
print('召回率:{}'.format(cross_val_score(clf,test_x,test_y,scoring='recall_weighted',cv=6).mean()))
print('f1:{}'.format(cross_val_score(clf,test_x,test_y,scoring='f1_weighted',cv=6).mean()))
實現結果
檢視分型別報告
from sklearn.metrics import classification_report
print(classification_report(y_pred=predict_test_y,y_true=test_y))
#support:原資料類別個數
顯示效果:
機器學習之混淆矩陣
再分類任務下,結果和真實情況之間存在四種不同的組合,這四種組合構成了混淆矩陣。舉個例子,看下圖。當真實情況是貓,結果也是貓的時候,這個時候定義為真正例 當真實情況是貓,而 結果不是貓的時候定義為偽反例子 當真實情況不是貓,而 結果是貓時定義為偽正例 當真實情況不是貓 結果也不是貓時定義為真反例。這個...
機器學習知識總結 模型評估標準之混淆矩陣
混淆矩陣 值 1 值 0 真實值 1 tpfn 真實值 0 fptn tp true postive 真陽性 fp false positive 假陽性 tn true negative 假陰性 fn false negative 假陰性 什麼是查準率 精確率 p re cisi on t ptp ...
機器學習之混淆矩陣的兩種畫法(實戰)
混淆矩陣主要用於表示分類精度,利用橫軸為 結果,縱軸為標準結果的 圖,視覺化地展示演算法的分類效能。import seaborn as sns sns.set c2 confusion matrix y test,y predict,labels 0,1,2 方法一 f,ax plt.subplot...