0Pricing
Learn AI with Python · 课时

相关性与协方差

学习 Pearson/Spearman 相关性和协方差矩阵,并在机器学习语境下解读相关性。

相关性与协方差 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

衡量变量之间的关系

协方差和相关性量化两个变量如何共同变化。它们是特征选择、投资组合理论和探索性分析的基础。

协方差

当变量共同上升时,协方差为正;当一个变量上升而另一个下降时,协方差为负。其大小取决于单位,因此原始协方差很难解释。

import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 6])
print(np.cov(x, y, ddof=1))   # 2x2 covariance matrix

协方差矩阵

np.cov 返回一个矩阵:对角线上的元素是方差,非对角线上的元素是变量对之间的协方差。它可以推广到多个变量,并且是 PCA 的基础。

data = np.array([[1, 2, 3], [2, 4, 5], [3, 6, 7]], dtype=float)
print(np.cov(data.T))   # 3x3 covariance matrix of the columns

相关性:缩放后的协方差

皮尔逊相关系数通过除以标准差的乘积,将协方差缩放到 -1 到 1 的范围内,因此与单位无关且可以进行比较。

print(np.corrcoef(x, y))   # 2x2 correlation matrix, diagonal is 1

解读相关性

+1 表示完美的正线性关系,-1 表示完美的负线性关系,0 表示没有 LINEAR 关系。接近 0 的值仍可能隐藏很强的非线性模式。

在 pandas 中计算相关性

df.corr() 一次性计算所有数值列之间的两两相关性,是快速扫描数据集关系的最便捷方法。

import pandas as pd
df = pd.DataFrame({"a": [1,2,3,4,5], "b": [2,4,5,4,6], "c": [9,7,6,5,3]})
print(df.corr())   # Pearson by default

皮尔逊与斯皮尔曼的比较

皮尔逊测量原始值之间的 LINEAR 关联。斯皮尔曼基于 RANKS,因此能够捕捉任意单调关系,并且不易受异常值影响。

from scipy import stats
x = np.array([1, 2, 3, 4, 100])
y = np.array([1, 2, 3, 4, 5])
print(stats.pearsonr(x, y).statistic)    # distorted by outlier
print(stats.spearmanr(x, y).statistic)   # 1.0 (perfectly monotonic)

选择方法

df.corr(method="spearman")可将数据分析库切换为基于秩的相关性计算。存在异常值或非线性但单调的关系时,优先使用斯皮尔曼;数据干净且呈线性时,使用皮尔逊。

print(df.corr(method="spearman"))

相关性不代表 NOT 因果关系

强相关并不意味着一个变量会导致另一个变量。隐藏的混杂因素可能同时驱动二者。请始终思考,还有什么因素可以解释这种关联。

虚假相关

变量足够多时,有些变量会纯粹因为偶然而产生相关性。冰淇淋销量与溺水事件存在相关性,二者都是由夏季高温驱动的,并不是彼此导致的。请对意料之外的相关性保持怀疑。

使用热力图进行可视化

相关性热力图可以直观地呈现模式。高度相关的特征对可能存在冗余,在建模前可以考虑将其移除。

# import seaborn as sns
# sns.heatmap(df.corr(), annot=True, cmap="coolwarm")

快速检查

请测试您对相关性的理解。

回顾

相关性工具箱:

  • 协方差可以显示方向,但取决于单位;np.cov可以生成协方差矩阵
  • 相关性会重新缩放到 -1..1:np.corrcoef、df.corr()
  • 皮尔逊(线性)与斯皮尔曼(基于秩、稳健、单调)
  • 相关性不等于因果关系;请警惕混杂因素和虚假关联

常见问题解答

「相关性与协方差」课时是免费的吗?

是的 — 「相关性与协方差」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「相关性与协方差」这节课中我会学到什么?

学习 Pearson/Spearman 相关性和协方差矩阵,并在机器学习语境下解读相关性。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「相关性与协方差」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 描述性统计与分布
  2. 概率与贝叶斯定理
  3. 假设检验
  4. 相关性与协方差
← 返回 Learn AI with Python