一、定义
皮尔逊系数是用来度量两个变量之间线性相关程度的统计量。它的取值在-1到1之间,表示变量间的线性相关程度强度和相关方向。具体地,如果取值为1,则表示两个变量呈完全正相关;如果取值为-1,则表示两个变量呈完全负相关。如果取值为0,则表示两个变量不呈线性相关。
二、计算公式
皮尔逊系数的计算公式如下:
ρ = cov(X,Y) / (σ(X) * σ(Y))
其中,cov(X,Y)表示变量X和Y的协方差;σ(X)和σ(Y)分别表示变量X和Y的标准差。
三、应用场景
1. 数据探索
在数据探索阶段,我们可以使用皮尔逊系数来确定数据中各个变量之间的关系。例如,当我们想知道销售额与广告支出之间的关系时,可以使用皮尔逊系数来度量二者之间的线性相关程度,从而观察它们之间的关系。
import numpy as np
# 示例数据
sales = [1000, 2000, 3000, 4000, 5000]
ads = [1, 2, 3, 4, 5]
# 计算皮尔逊系数
pearson_coef = np.corrcoef(sales, ads)[0, 1]
print("Pearson Correlation Coefficient:", pearson_coef)
2. 特征选择
在特征选择阶段,我们通常会使用皮尔逊系数来选择与目标变量相关度高的特征。具体地,我们可以将每个特征与目标变量之间的皮尔逊系数计算出来,然后选取相关度高的特征作为模型的入参。
import pandas as pd
# 示例数据
data = pd.read_csv("data.csv")
target = data["target"]
# 计算各个特征与目标变量之间的皮尔逊系数
corr_dict = {}
for feature in data.columns:
if feature != "target":
corr = target.corr(data[feature])
corr_dict[feature] = corr
# 选取相关度高的特征
selected_features = sorted(corr_dict, key=lambda x: abs(corr_dict[x]), reverse=True)[:10]
print("Selected Features:", selected_features)
3. 数据清洗
在数据清洗阶段,我们可以使用皮尔逊系数来判断数据中是否存在异常值。具体地,我们可以将每个特征与目标变量之间的皮尔逊系数计算出来,然后观察相关系数异常值的分布情况。一般来说,如果有一个特征的相关系数异常地高或异常地低,就可能表示该特征存在异常值。
import pandas as pd
# 示例数据
data = pd.read_csv("data.csv")
# 计算各个特征与目标变量之间的皮尔逊系数
corr_dict = {}
for feature in data.columns:
if feature != "target":
corr = data["target"].corr(data[feature])
corr_dict[feature] = corr
# 观察相关系数的分布情况
corr_series = pd.Series(corr_dict)
corr_series.plot(kind="bar")
四、局限性
皮尔逊系数有一些局限性,例如:
1. 无法处理非线性关系
皮尔逊系数仅适用于线性关系,对于非线性关系则无法准确反映其相关程度。
2. 对异常值比较敏感
皮尔逊系数对异常值非常敏感,如果存在异常值,会影响到相关系数的计算结果。
3. 不能用来衡量因果关系
皮尔逊系数只能用来度量变量之间的相关程度,不能用来判断变量之间的因果关系。
