熱線電話:13121318867

登錄
首頁精彩閱讀簡單5步了解相關矩陣的注釋熱圖
簡單5步了解相關矩陣的注釋熱圖
2019-09-29
收藏
簡單5步了解相關矩陣的注釋熱圖

作者 | Julia Kho

編譯 | CDA數據分析師

Annotated Heatmaps of a Correlation Matrix in 5 Simple Steps

熱圖是數據的圖形表示,也就是說,它使用顏色來向讀者傳達價值。當您擁有大量數據時,這是一個很好的工具,可以幫助觀眾了解最重要的區域。

簡單5步了解相關矩陣的注釋熱圖

在本文中,我將指導您通過5個簡單步驟創建自己的相關矩陣注釋熱圖。

  1. 導入數據
  2. 創建關聯矩陣
  3. 設置mask隱藏上三角
  4. 在Seaborn中創建熱圖
  5. 導出熱圖

1)導入數據

df = pd.read_csv("Highway1.csv",index_col = 0)

簡單5步了解相關矩陣的注釋熱圖

該公路事故數據集包含汽車事故率,每百萬車輛英里的事故以及若干設計變量。

2)創建相關矩陣

corr_matrix = df.corr()

簡單5步了解相關矩陣的注釋熱圖

我們使用的是.corr 創建相關矩陣 。請注意,此矩陣中不存在htype列,因為它不是數字。我們需要使用htype來計算相關性。

df_dummy = pd.get_dummies(df.htype)

df = pd.concat([df,df_dummy],axis = 1)

簡單5步了解相關矩陣的注釋熱圖

另外,請注意,相關矩陣的上三角部分與下三角對稱。因此,我們的熱圖不需要顯示整個矩陣。我們將在下一步隱藏上三角形。

3)設置mask隱藏上三角

mask = np.zeros_like(corr_matrix,dtype = np.bool)

mask[np.triu_indices_from(mask)] =True

讓我們打破上面的代碼吧。 np.zeros_like() 返回一個零數組,其形狀和類型與給定的數組相同。通過傳遞相關矩陣,我們得到如下的零數組。

簡單5步了解相關矩陣的注釋熱圖

該 dtype=np.bool 參數會覆蓋數據類型,因此我們的數組是一個布爾數組。

簡單5步了解相關矩陣的注釋熱圖

np.triu_indices_from(mask) 返回數組上三角形的索引。

簡單5步了解相關矩陣的注釋熱圖

現在,我們將上三角形設置為True。 mask[np.triu_indices_from(mask)]= True

簡單5步了解相關矩陣的注釋熱圖

現在,我們有一個掩碼可以用來生成熱圖。

4)在Seaborn中創建熱圖

f,ax = plt.subplots(figsize =(11,15))

heatmap=sns.heatmap(corr_matrix,

mask = mask,

square = True,

linewidths = .5,

cmap ='coolwarm',

cbar_kws = {'shrink':.4,

'ticks':[-1,-.5,0,0.5,1]},

vmin = -1,

vmax = 1,

annot = True,

annot_kws = {"size":12})

#增加列名做為標簽

ax.set_yticklabels(corr_matrix.columns,rotation = 0)

ax.set_xticklabels(corr_matrix.columns)

sns.set_style({'xtick.bottom':True},{'ytick.left':True})

簡單5步了解相關矩陣的注釋熱圖

為了創建我們的熱圖,我們傳遞步驟3中的相關矩陣和我們在步驟4中創建的蒙版以及自定義參數,以使我們的熱圖看起來更好。如果您有興趣了解每條線的作用,請參考以下參數說明。

#使每個單元格成方形

square = True,

#設置將每個單元格劃分為.5的行的寬度

linewidths = .5,

#Map數據值到coolwarm顏色空間

cmap ='coolwarm',

#Shrink在[-1,-.5,0,0.5,1]處的圖例大小和標簽刻度線

cbar_kws = {'shrink':.4,'ticks':[-1,-.5,0,0.5,1]},

#設置顏色條的最小值

vmin = -1,

#設置顏色條的最大值

vmax = 1,

#轉到相關值的注釋

annot = True,

#將注釋設置為12

annot_kws = {"size":12}

#將列名添加到x標簽

ax.set_xticklabels(corr_matrix.columns)

#將列名添加到y標簽并將文本旋轉到0度

ax.set_yticklabels(corr_matrix.columns,rotation = 0)

#在熱圖的底部和左側顯示標記

sns.set_style({'xtick.bottom':True},{'ytick.left':True})

簡單5步了解相關矩陣的注釋熱圖

5)導出熱圖 現在你有熱圖,讓我們把它導出。

heatmap.get_figure().savefig('heatmap.png', bbox_inches='tight')

如果您發現有一個非常大的熱圖不能正確導出,請使用bbox_inches = 'tight' 以防止圖像被切斷。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢