1. 程式人生 > >資料處理包:Numpy,pandas,matplotlib,sklearn等記錄

資料處理包:Numpy,pandas,matplotlib,sklearn等記錄

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()

效果對比:

在這裡插入圖片描述