皮尔逊系数计算特征权重
时间: 2025-03-27 20:30:21 浏览: 29
### 使用皮尔逊系数进行特征权重计算
在机器学习和数据挖掘领域,皮尔逊相关系数常用于衡量两个变量之间的线性关系强度。对于特征选择而言,可以通过计算目标变量与其他各个特征间的皮尔逊相关系数来评估这些特征的重要性。
具体来说,在给定的数据集中,如果存在多个输入特征 \(X_i\) 和一个输出标签 Y,则可以分别求解每一对 (Xi, Y) 的皮尔逊相关系数 r(Xi,Y),以此作为该特征相对于预测目标的重要程度度量[^1]。
#### 计算方法
为了得到更稳定的估计值,通常会对整个训练集上的样本对应用上述公式:
\[r_{XY}=\frac{\sum{(X-\bar{X})(Y-\bar{Y})}}{\sqrt{\sum{(X-\bar{X})^{2}\cdot\sum(Y-\bar{Y})^{2}}}}} \]
其中 X 表示某个特定的特征向量;而 Y 则代表响应变量或类别标记列向量;\( \bar{X},\bar{Y} \) 分别指代各自均值;分子部分即为协方差 Cov(X,Y)[^2]。
通过这种方式获得的相关系数范围介于 [-1,+1] 之间,绝对值越大说明两者间联系越紧密。正值意味着随着其中一个增加另一个也倾向于增大;反之亦然。接近零则表明几乎不存在明显的关联性。
#### Python 实现案例
下面给出一段简单的Python代码片段展示如何利用 `pandas` 库读取CSV文件并计算各字段同指定的目标属性之间的皮尔森相似度得分:
```python
import pandas as pd
from scipy.stats import pearsonr
def calculate_feature_weights(dataframe, target_column):
weights = {}
for column in dataframe.columns:
if column != target_column and not isinstance(dataframe[column].iloc[0], str):
corr_coef, _ = pearsonr(dataframe[target_column], dataframe[column])
weights[column] = abs(corr_coef)
sorted_weights = dict(sorted(weights.items(), key=lambda item: item[1], reverse=True))
return sorted_weights
# 假设有一个名为 'data.csv' 的 CSV 文件,最后一列为待预测的目标变量
df = pd.read_csv('data.csv')
feature_importance_scores = calculate_feature_weights(df, df.columns[-1])
for feature, score in feature_importance_scores.items():
print(f"{feature}: {score}")
```
此脚本会遍历除最后外的所有列,并忽略掉任何字符串类型的非数值型特征,最终返回按重要性降序排列的结果列表。
阅读全文
相关推荐


















