趋近智
如前一节所述,计算相关系数为我们提供了数值变量对之间线性关联的精确数值。然而,当处理包含大量数值特征的数据集时,仅仅查看相关值表格可能会让人难以招架。很难快速了解关联的整体结构或找出最强的关联。这就是图形表示变得特别有用的地方。
热力图是一种出色的工具,用于可视化数字矩阵,其中单个值由颜色表示。在双变量分析中,我们经常使用热力图来可视化数值变量的相关矩阵。这能同时提供多变量之间关系的即时、直观概览。
假设您有10个数值变量。计算每对变量之间的相关性会产生 10×10=100 个相关值(尽管它是对称的,所以包含对角线在内共有 10+(9×10/2)=55 个唯一值)。手动比较这55个值效率低下。热力图通过以下方式解决了这个问题:
在能够可视化之前,我们需要相关矩阵本身。Pandas DataFrame为此提供了一个便捷的.corr()方法。假设您有一个包含数值数据的DataFrame df:
# 如有必要,只选择数值列
numerical_df = df.select_dtypes(include=['int64', 'float64'])
# 计算相关矩阵
correlation_matrix = numerical_df.corr()
# 显示矩阵(可选,但有助于验证)
print(correlation_matrix)
这个correlation_matrix是一个DataFrame,其索引和列都是来自numerical_df的数值变量名称,单元格中的值是这些变量之间的皮尔逊相关系数。
Seaborn库,它构建在Matplotlib之上,提供了一个专为此目的设计的简单函数heatmap()。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np # 样本数据常用
# --- 样本数据生成 ---
# 在实际情况中,您将使用已加载的DataFrame 'df'
np.random.seed(42)
data = np.random.rand(100, 5)
columns = ['Feature_A', 'Feature_B', 'Feature_C', 'Feature_D', 'Feature_E']
df = pd.DataFrame(data, columns=columns)
# 为演示引入一些相关性
df['Feature_B'] = df['Feature_B'] + df['Feature_A'] * 0.6 + np.random.rand(100) * 0.2
df['Feature_D'] = df['Feature_D'] - df['Feature_C'] * 0.7 + np.random.rand(100) * 0.15
df['Feature_E'] = df['Feature_E'] + df['Feature_A'] * 0.4 - df['Feature_C'] * 0.3 + np.random.rand(100)*0.1
# --- 样本数据结束 ---
# 选择数值列(如果尚未完成)
numerical_df = df.select_dtypes(include=['float64', 'int64'])
# 计算相关矩阵
correlation_matrix = numerical_df.corr()
# 设置图表大小以提高可读性
plt.figure(figsize=(8, 6))
# 生成热力图
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f")
# 添加标题
plt.title('数值特征的相关矩阵')
# 显示图表
plt.show()
我们来分析一下sns.heatmap()中使用的重要参数:
correlation_matrix:这是主要输入,一个包含相关值的Pandas DataFrame。annot=True:这会在热力图单元格上直接显示相关系数值。强烈推荐此项,以便进行精确理解。cmap='coolwarm':这设置了颜色映射。'coolwarm'是相关性分析的好选择,因为它是一种发散型配色:它使用冷色(如蓝色)表示负相关,暖色(如红色)表示正相关,以及中性色(白色/浅灰色)表示接近零的相关性。还有许多其他颜色映射可用(例如,'viridis'、'plasma'、'RdBu_r')。fmt=".2f":这会格式化注释文本(如果annot=True则显示的数字),使其显示两位小数。生成的热力图提供了视觉概览:
annot=True,每个单元格中的数值会给出精确的相关系数。这是一个使用Plotly进行交互式模拟的例子,模拟类似输出:
一个可视化五种特征相关矩阵的热力图。红色表示正相关,蓝色表示负相关,较浅的色调表示较弱的相关。标注显示了具体的关联系数。注意特征C和特征D之间存在强负相关(-0.72),以及特征A和特征B之间存在强正相关(0.65)。
热力图提供了一种有效的方法,可以快速评估数值数据中的相关结构。它们是数据分析的常见组成部分,有助于指导特征选择,识别建模中潜在的多重共线性,并有助于更好地了解变量之间如何关联。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造