双变量与多变量分析
散点图、成对关系图、相关性热图和分组统计
双变量与多变量分析 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
从一个变量到多个变量
双变量分析研究两个变量之间的关系;多变量分析则同时研究多个变量。
目标是找出哪些特征会共同变化、发现交互作用,并确定哪些变量能够预测您的目标。
使用 plt.scatter 绘制散点图
散点图将两个数值变量相互绘制,每个点代表一行数据。它可以揭示趋势、聚类和异常值。
import matplotlib.pyplot as plt
import seaborn as sns
plt.scatter(df["height"], df["weight"], alpha=0.4)
plt.xlabel("Height")
plt.ylabel("Weight")
plt.show()解读散点图
请观察方向(向上表示正相关,向下表示负相关)、强度(紧密的带状分布还是分散的点云)以及形状(线性还是弯曲)。
在 sns.scatterplot 中添加 hue,可以按类别为点着色,从而揭示群组结构。
sns.scatterplot(x="height", y="weight", hue="gender", data=df, alpha=0.5)
plt.show()使用 df.corr() 计算相关性
df.corr() 会计算数值列之间的成对皮尔逊相关系数,取值范围为 -1 到 +1。
- +1 → 完全正线性关系
- 0 → 不存在线性关系
- -1 → 完全负线性关系
corr = df.corr(numeric_only=True)
print(corr["price"].sort_values(ascending=False))相关性 heatmap
将相关矩阵显示为heatmap后更容易阅读。传入 annot=True,可以在每个单元格内打印数值。
请使用发散色图(例如 coolwarm),让正相关和负相关显示为不同的颜色。
corr = df.corr(numeric_only=True)
sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm", center=0)
plt.show()发现多重共线性
当两个特征的相关性非常高(例如 > 0.9)时,它们携带了重复信息。这就是多重共线性,可能导致线性模型不稳定。
heatmap 可以清楚地突出显示冗余特征对,便于您删除其中一个。
corr = df.corr(numeric_only=True).abs()
high = corr[(corr > 0.9) & (corr < 1.0)]
print(high.dropna(how="all"))相关性不等于因果关系
强相关并不意味着一个变量会导致另一个变量发生变化。两者可能都受到某个隐藏的第三变量影响,也可能只是偶然相关。
请使用相关性提出假设,然后结合领域知识和受控分析进行验证。
使用 sns.pairplot 绘制配对图
sns.pairplot 会为每一对数值列绘制散点图网格,并在对角线上显示直方图或 KDE 图。
这是同时快速浏览所有双变量关系的最快方法。对于大型数据集,请限制列的数量——其规模会随列数的平方增长。
sns.pairplot(df[["height", "weight", "age", "income"]], hue="gender")
plt.show()分组箱线图
要研究一个数值变量与一个分类变量之间的关系,可以将类别放在箱线图的横轴上。这样就能立即比较不同组之间的分布。
sns.boxplot(x="city", y="income", data=df)
plt.xticks(rotation=45)
plt.show()分组聚合
数值统计可以补充图表。使用 groupby 和 agg 可以汇总不同类别中的数值列。
这就是表格形式的多变量分析——可以并排比较均值、中位数和计数。
summary = df.groupby("city")["income"].agg(["mean", "median", "count"])
print(summary.sort_values("mean", ascending=False))使用编码绘制多变量图
使用视觉编码,可以将三个或更多变量放入一张图表中:横轴、纵轴、颜色(hue)和大小。
这样无需分别绘制多张图表,就能展示变量关系如何随第三个维度发生变化。
sns.scatterplot(x="height", y="weight", hue="age", size="income", data=df)
plt.show()快速检查:相关性范围
您运行 df.corr(),发现两个特征之间的值为 -0.85。
回顾:双变量和多变量分析
现在,您已经可以探索变量之间的关系:
- 使用
plt.scatter/sns.scatterplot研究两个数值变量 - 使用
df.corr()+sns.heatmap(annot=True)查看相关矩阵 - 高相关性提示存在多重共线性(删除冗余特征)
- 使用
sns.pairplot总览所有成对关系 - 使用分组箱线图和
groupby().agg()研究数值变量与分类变量的关系
接下来,我们将把特征直接与预测目标联系起来。
常见问题解答
「双变量与多变量分析」课时是免费的吗?
是的 — 「双变量与多变量分析」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「双变量与多变量分析」这节课中我会学到什么?
散点图、成对关系图、相关性热图和分组统计 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「双变量与多变量分析」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- EDA 工作流与数据概况分析
- 单变量分析
- 双变量与多变量分析
- 特征分布与目标分析