小編給大家分享一下實現(xiàn)python繪制混淆矩陣的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設、域名、虛擬空間、網(wǎng)站運營、企業(yè)網(wǎng)站設計、山東網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。介紹:
混淆矩陣通過表示正確/不正確標簽的計數(shù)來表示模型在表格格式中的準確性。
計算/繪制混淆矩陣:
以下是計算混淆矩陣的過程。
您需要一個包含預期結果值的測試數(shù)據(jù)集或驗證數(shù)據(jù)集。
對測試數(shù)據(jù)集中的每一行進行預測。
從預期的結果和預測計數(shù):
每個類的正確預測數(shù)量。
每個類的錯誤預測數(shù)量,由預測的類組織。
然后將這些數(shù)字組織成表格或矩陣,如下所示:
Expected down the side:矩陣的每一行都對應一個預測的類。
Predicted across the top:矩陣的每一列對應于一個實際的類。
然后將正確和不正確分類的計數(shù)填入表格中。
Reading混淆矩陣:
一個類的正確預測的總數(shù)進入該類值的預期行,以及該類值的預測列。
以同樣的方式,一個類別的不正確預測總數(shù)進入該類別值的預期行,以及該類別值的預測列。
對角元素表示預測標簽等于真實標簽的點的數(shù)量,而非對角線元素是分類器錯誤標記的元素?;煜仃嚨膶蔷€值越高越好,表明許多正確的預測。
用Python繪制混淆矩陣 :
import itertools import numpy as np import matplotlib.pyplot as plt from sklearn import svm, datasets from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix # import some data to play with iris = datasets.load_iris() X = iris.data y = iris.target class_names = iris.target_names # Split the data into a training set and a test set X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) # Run classifier, using a model that is too regularized (C too low) to see # the impact on the results classifier = svm.SVC(kernel='linear', C=0.01) y_pred = classifier.fit(X_train, y_train).predict(X_test) def plot_confusion_matrix(cm, classes, normalize=False, title='Confusion matrix', cmap=plt.cm.Blues): """ This function prints and plots the confusion matrix. Normalization can be applied by setting `normalize=True`. """ if normalize: cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] print("Normalized confusion matrix") else: print('Confusion matrix, without normalization') print(cm) 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) fmt = '.2f' if normalize else 'd' thresh = cm.max() / 2. for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])): plt.text(j, i, format(cm[i, j], fmt), horizontalalignment="center", color="white" if cm[i, j] > thresh else "black") color="white" if cm[i, j] > thresh else "black") plt.tight_layout() plt.ylabel('True label') plt.xlabel('Predicted label') # Compute confusion matrix cnf_matrix = confusion_matrix(y_test, y_pred) np.set_printoptions(precision=2) # Plot non-normalized confusion matrix plt.figure() plot_confusion_matrix(cnf_matrix, classes=class_names, title='Confusion matrix, without normalization') # Plot normalized confusion matrix plt.figure() plot_confusion_matrix(cnf_matrix, classes=class_names, normalize=True, title='Normalized confusion matrix') plt.show()
Confusion matrix, without normalization [[13 0 0] [ 0 10 6] [ 0 0 9]] Normalized confusion matrix [[ 1. 0. 0. ] [ 0. 0.62 0.38] [ 0. 0. 1. ]]
看完了這篇文章,相信你對實現(xiàn)python繪制混淆矩陣的方法有了一定的了解,想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!