# Python入門需要掌握繪制熱圖展示的相關系數
在數據分析和機器學習領域,理解變量之間的相關性是至關重要的。相關系數矩陣的熱圖(Heatmap)是一種直觀展示數據關系的可視化工具。本文將介紹如何使用Python中的`pandas`、`numpy`和`seaborn`庫計算并繪制相關系數熱圖。
## 一、相關系數簡介
相關系數(Correlation Coefficient)用于衡量兩個變量之間的線性關系強度,取值范圍在-1到1之間:
- **1** 表示完全正相關
- **-1** 表示完全負相關
- **0** 表示無線性相關
常用的皮爾遜相關系數公式為:
$$
r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}}
$$
## 二、準備工作
### 安裝必要庫
```bash
pip install pandas numpy seaborn matplotlib
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
我們創建一個包含4個特征的DataFrame:
np.random.seed(42)
data = pd.DataFrame({
'A': np.random.normal(0, 1, 100),
'B': np.random.normal(0, 1, 100) * 0.5 + 0.3,
'C': np.random.rand(100) * 2 - 1,
'D': np.linspace(0, 10, 100) + np.random.normal(0, 0.5, 100)
})
使用pandas的corr()
方法:
corr_matrix = data.corr()
print(corr_matrix)
輸出示例:
A B C D
A 1.000000 0.287432 -0.029591 -0.008834
B 0.287432 1.000000 -0.010402 0.028693
C -0.029591 -0.010402 1.000000 -0.006512
D -0.008834 0.028693 -0.006512 1.000000
使用seaborn的heatmap()
函數:
plt.figure(figsize=(8, 6))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.title("Correlation Heatmap")
plt.show()
參數說明:
- annot=True
:顯示數值
- cmap
:顏色映射
- vmin/vmax
:顏色范圍(默認-1到1)
sns.heatmap(
corr_matrix,
annot=True,
fmt=".2f", # 數值格式
cmap="RdYlGn",
center=0,
linewidths=0.5,
cbar_kws={"shrink": 0.8}
)
mask = np.triu(np.ones_like(corr_matrix, dtype=bool))
sns.heatmap(corr_matrix, mask=mask, annot=True)
sns.clustermap(corr_matrix, method="ward", cmap="viridis")
以經典的鳶尾花數據集為例:
iris = sns.load_dataset('iris')
corr = iris.corr()
sns.heatmap(corr, annot=True, cmap='Spectral')
plt.title("Iris Feature Correlation")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
data.corr(method='pearson', min_periods=10)
sns.heatmap(..., annot=False) # 關閉數值標注
掌握相關系數熱圖的繪制能幫助你: - 快速發現數據中的關鍵關系 - 識別潛在的多重共線性問題 - 為特征選擇提供可視化依據
進階學習建議: - 嘗試不同相關系數(斯皮爾曼、肯德爾) - 結合pairplot等其他可視化方法 - 學習Plotly制作交互式熱圖
完整代碼示例可參考:
# 完整示例
import seaborn as sns
iris = sns.load_dataset('iris')
sns.heatmap(iris.corr(), annot=True, cmap='coolwarm')
plt.show()
通過本文的學習,你應該已經掌握了用Python繪制相關系數熱圖的核心方法。在實際項目中靈活運用這一技能,將使你的數據分析工作更加高效專業。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。