皮尔逊系数(如何理解皮尔逊相关系数)

一、定义

皮尔逊系数是用来度量两个变量之间线性相关程度的统计量。它的取值在-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. 不能用来衡量因果关系

皮尔逊系数只能用来度量变量之间的相关程度,不能用来判断变量之间的因果关系。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平