天天看點

相關性分析熱力圖(Python&Matlab代碼實作)資料可視化之熱力圖&相關系數圖(原理+Python代碼)

目錄

​​1 熱力圖​​

​​1.1 簡介​​

​​1.2 文法​​

​​ 2 算例1(Python代碼實作)​​

​​2.1 算例​​

​​2.2 Python代碼​​

​​2.3 運作結果​​

​​ 3 算例2(Python代碼實作)​​

​​4 算例3(Python代碼實作)​​

​​4.1 算例​​

​​4.2 Python代碼​​

​​4.3 運作結果​​

​​5 相關性分析(皮爾遜,肯德爾,斯皮爾曼) (Matlab代碼實作)​​

1 熱力圖

1.1 簡介

利用熱力圖可以看資料表裡多個特征兩兩的相似度。

seaborn.heatmap()​​熱力圖​​,常用于展示一組變量的相關系數矩陣,列聯表的資料分布,通過熱力圖我們可以直覺地看到所給數值大小的差異狀況。

​​熱力圖​​,又名相關系數圖。根據熱力圖中不同方塊顔色對應的相關系數的大小,可以判斷出變量之間相關性的大小。兩個變量之間相關系數的計算公式為:

相關性分析熱力圖(Python&Matlab代碼實作)資料可視化之熱力圖&相關系數圖(原理+Python代碼)

 公式中,ρ 表示相關系數,Cov表示協方差,E表示數學期望/均值

值得注意的是,該相關系數隻能度量出變量之間的線性相關關系;也就是說,相關系數越高,則變量間的線性相關程度越高。對于相關系數小的兩個變量,隻能說明變量間的線性相關程度弱,但不能說明變量之間不存在其它的相關關系,如曲線關系等。

1.2 文法

seaborn.heatmap(data, *, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)      

========(1)熱力圖輸入資料參數=======

data:指定繪制熱力圖的資料集,根據data傳入的值畫出熱力圖,一般是二維矩陣

========(2)熱力圖矩陣塊顔色參數=======

vmin,vmax:用于指定圖例中最小值與最大值的顯示值

cmap:指定一個colormap對象,用于熱力圖的填充色

center:指定顔色中心值,通過該參數可以調整熱力圖的顔色深淺

robust:預設取值False;如果是False,且沒設定vmin和vmax的值,熱力圖的顔色映射範圍根據具有魯棒性的分位數設定,而不是用極值設定

========(3)熱力圖矩陣塊注釋參數============

annot:指定一個bool類型的值或與data參數形狀一樣的數組,如果為True,就在熱力圖的每個單元上顯示數值

fmt:指定單元格中資料的顯示格式

annot_kws:有關單元格中數值标簽的其他屬性描述,如顔色、大小等

=========(4)熱力圖矩陣塊之間間隔及間隔線參數==============

linewidths :指定每個單元格的邊框寬度

linecolor:指定每個單元格的邊框顔色

=========(5)熱力圖顔色刻度條參數==============

cbar:bool類型參數,是否用顔色條作為圖例,預設為True

square:bool類型參數,是否使熱力圖的每個單元格為正方形,預設為False

cbar_kws:有關顔色條的其他屬性描述

========(6)坐标軸=============

xticklabels,yticklabels:指定熱力圖x軸和y軸的刻度标簽,如果為True,則分别以資料框的變量名和行名稱作為刻度标簽

mask:用于突出顯示某些資料

ax:用于指定子圖的位置

 2 算例1(Python代碼實作)

2.1 算例

本算例來源于2022華夏杯大學生就業分析。

2.2 Python代碼

'''=========導入相關庫============='''
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']  #圖檔顯示中文
plt.rcParams['axes.unicode_minus'] =False #減号unicode編碼

#=====讀取資料和資料預處理=============
shuju=pd.read_csv('資料.csv')
print(shuju)
shuju.isnull().sum()   #看下有沒有缺失值:
print(shuju)
shuju.describe()  #檢視資料描述

#=======繪制熱圖===============
plt.figure(figsize=(25,20))
sns.heatmap(shuju.corr() , annot=True)  #shuju.corr() :計算各變量之間的相關系數
# 設定刻度字型大小
plt.xticks(fontsize=9)
plt.yticks(fontsize=9)
plt.show()      

2.3 運作結果

相關性分析熱力圖(Python&Matlab代碼實作)資料可視化之熱力圖&相關系數圖(原理+Python代碼)

相關性分析熱力圖(Python&Matlab代碼實作)

 3 算例2(Python代碼實作)

下面這篇文章寫得很棒,值得學習:

​​資料可視化之熱力圖&相關系數圖(原理+Python代碼)​​

4 算例3(Python代碼實作)

4.1 算例

本題算例來源于2022華數杯比賽。

4.2 Python代碼

'''======導入第三方庫========'''
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定預設字型
plt.rcParams['axes.unicode_minus'] = False  # 解決儲存圖像是負号'-'顯示為方塊的問題,負号正常顯示

'''=======讀取資料==========='''
data=pd.read_csv('熱圖分析.csv', encoding='gbk')
data.head()

corr = data.corr()     # shuju.corr() :計算各變量之間的相關系數,corr(method='pearson')預設方法選擇person相關性,'spearman'秩相關。如果你想選擇其它方法,請修改meathod參數。這裡我們就用皮爾遜進行示範。
'''=====熱圖可視化============'''
plt.subplots(figsize=(9, 9))  # 設定畫面大小
# annot=True,是顯式熱力圖上的數值;vmax是顯示最大值;xticklabels、yticklabels軸标簽顯示;square=True,将圖變成一個正方形,預設是一個矩形;cmap="Blues"是一種模式,就是圖顔色配置。
# mask:控制某個矩陣塊是否顯示出來,預設值是None,如果是布爾型的DataFrame,則将DataFrame裡True的位置用白色覆寫掉
sns.heatmap(corr, annot=True, vmax=1, vmin=0, xticklabels=True, yticklabels=True, square=True, cmap="YlGnBu",
            linewidths=0.05, linecolor='y')  # mask=t < 0.8等價于mask=(t < 0.8)
plt.title('變量相關系數 - 熱圖\n', fontsize=18)  # 添加圖表标題“變量相關系數 - 熱圖”,fontsize=18 字型大小 可省略
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.show()      

4.3 運作結果

相關性分析熱力圖(Python&amp;Matlab代碼實作)資料可視化之熱力圖&amp;相關系數圖(原理+Python代碼)

5 相關性分析(皮爾遜,肯德爾,斯皮爾曼) (Matlab代碼實作)