[英]How can I make a colored Confusion Matrix (heatmap)? Or, show the full matrix?
我正在繪制一個混淆矩陣,顯示總共 26 個類(26 個字母)的預測與實際。
我的代碼如下:
y_pred = np.argmax(predictions, axis=1) # Transform predictions into 1-D array with label number
pd.DataFrame(confusion_matrix(y_test, y_pred),
columns=["pA", "pB", "pC", "pD", "pE", "pF", "pG", "pH", "pI", "pJ", "pK", "pL", "pM", "pN", "pO", "pP", "pQ", "pR", "pS", "pT", "pU", "pV", "pW", "pX", "pY", "pZ"],
index=["aA", "aB", "aC", "aD", "aE", "aF", "aG", "aH", "aI", "aJ", "aK", "aL", "aM", "aN", "aO", "aP", "aQ", "aR", "aS", "aT", "aU", "aV", "aW", "aX", "aY", "aZ"])
我的 Output 看起來像這樣:
問題是,我怎樣才能顯示整個行/列(沒有...)或者使它在視覺上更令人愉悅和易於查看,我怎樣才能將它更改為彩色版本,即使它我也可以不顯示數字。
感謝您抽出時間來 go 並幫助我解決這個問題,干杯!
您可以將 dataframe 視為圖像:
import matplotlib.pyplot as plt
df = pd.DataFrame(confusion_matrix(y_test, y_pred),
columns=["pA", "pB", "pC", "pD", "pE", "pF", "pG", "pH", "pI", "pJ", "pK", "pL", "pM", "pN", "pO", "pP", "pQ", "pR", "pS", "pT", "pU", "pV", "pW", "pX", "pY", "pZ"],
index=["aA", "aB", "aC", "aD", "aE", "aF", "aG", "aH", "aI", "aJ", "aK", "aL", "aM", "aN", "aO", "aP", "aQ", "aR", "aS", "aT", "aU", "aV", "aW", "aX", "aY", "aZ"])
plt.imshow(df[:])
您可以使用 plt.annotate 添加值:
cols = ["pA", "pB", "pC", "pD", "pE", "pF", "pG", "pH", "pI", "pJ", "pK", "pL", "pM", "pN", "pO", "pP", "pQ", "pR", "pS", "pT", "pU", "pV", "pW", "pX", "pY", "pZ"]
ix=["aA", "aB", "aC", "aD", "aE", "aF", "aG", "aH", "aI", "aJ", "aK", "aL", "aM", "aN", "aO", "aP", "aQ", "aR", "aS", "aT", "aU", "aV", "aW", "aX", "aY", "aZ"]
data = np.random.randint(0,10,(len(cols), len(ix)))
df = pd.DataFrame(data=data,
columns=cols,
index=ix)
plt.figure(figsize=(10,10))
plt.imshow(df[:])
for r, (i, row) in enumerate(df.iterrows()):
for c, entry in enumerate(row):
plt.annotate(entry, xy=(c-0.3,r+.1), fontsize=8) # using annotate with offset for xy, to allow better positioning
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.