資料處理包:Numpy,pandas,matplotlib,sklearn等記錄
阿新 • • 發佈:2018-12-19
Numpy
1.想實現用matplotlib對confusion matrix畫color map時,能夠根據每個元素佔每一行樣本總量而非總體樣本總量顯示color map顏色。可以使用兩個confusion matrix來作圖,第一個實際的confusion matrix為原始,用來顯示資料,另一個confusion matrix對每一行進行歸一化到[0,1](具體方法每個元素除以每一行的樣本總數,pps:每一行的樣本總量為True Label),然後對這張圖作color map.其中用到一個numpy函式:np.apply_along_axis(func,axis,data),對data按axis軸方向的每一個元素作func操作,實現對一行的每個元素除以這行的總數,雖然有更簡單的方法,但是此方法可以用在列上,通用性強.
confusionMatrix = np.array([.....]) # 原始混淆矩陣 def my_func(a): #每行操作 return a/np.sum(a) confusionMatrixColor = np.apply_along_axis(my_func,axis=1,arr=confusionMatrix) # 用來製作color map的混淆矩陣 plt.imshow(confusionMatrixColor, interpolation='nearest',cmap=plt.cm.Blues) #製作color map fmt = 'd' thresh = 0.5 for i, j in itertools.product(range(confusionMatrix.shape[0]), range(confusionMatrix.shape[1])): plt.text(j, i, format(confusionMatrix[i, j], fmt), horizontalalignment="center", color="white" if confusionMatrixColor[i, j] > thresh else "black") #填充原始混淆矩陣
對比:
Matplotlib
1.調整x軸刻度標籤並右對齊,在刻度標籤字串長度很長時很有用:
plt.xticks(tick_marks, Xticks, rotation=45)
fig = plt.gcf()
fig.autofmt_xdate()
效果對比: