如何在Pandas中对相关变量排序并提取前10个高相关变量
获取相关矩阵中前10个最相关变量对的实现方案
你已经完成了指定列的皮尔逊相关系数计算,代码如下:
var_0_to_var_9 = train_df.loc[:, 'var_0':'var_9'] correlation = var_0_to_var_9.corr(method = 'pearson') print(correlation)
得到的相关矩阵为:
var_0 var_1 var_2 var_3 var_4 var_5 var_6 var_0 1.000000 -0.000544 0.006573 0.003801 0.001326 0.003046 0.006983 var_1 -0.000544 1.000000 0.003980 0.000010 0.000303 -0.000902 0.003258 var_2 0.006573 0.003980 1.000000 0.001001 0.000723 0.001569 0.000883 var_3 0.003801 0.000010 0.001001 1.000000 -0.000322 0.003253 -0.000774 var_4 0.001326 0.000303 0.000723 -0.000322 1.000000 -0.001368 0.000049 var_5 0.003046 -0.000902 0.001569 0.003253 -0.001368 1.000000 0.002588 var_6 0.006983 0.003258 0.000883 -0.000774 0.000049 0.002588 1.000000 var_7 0.002429 0.001511 -0.000991 0.002500 0.004549 -0.000995 -0.002548 var_8 0.004962 0.004098 0.002648 0.003553 0.001194 0.000147 -0.001188 var_9 -0.002613 -0.000832 -0.001932 -0.000826 -0.000918 -0.005279 -0.005697 var_7 var_8 var_9 var_0 0.002429 0.004962 -0.002613 var_1 0.001511 0.004098 -0.000832 var_2 -0.000991 0.002648 -0.001932 var_3 0.002500 0.003553 -0.000826 var_4 0.004549 0.001194 -0.000918 var_5 -0.000995 0.000147 -0.005279 var_6 -0.002548 -0.001188 -0.005697 var_7 1.000000 0.000814 0.002885 var_8 0.000814 1.000000 -0.001073 var_9 0.002885 -0.001073 1.000000
提取前10个最相关变量对的代码实现
要获取前10个最相关的变量对,需处理相关矩阵中的自相关和重复对,具体步骤如下:
- 导入numpy库(若未导入)
- 剔除对角线的自相关值(变量与自身的相关系数为1,无参考意义)
- 将矩阵转换为变量对-相关系数的结构化形式
- 按相关系数绝对值降序排序(正负仅代表相关方向,不影响相关性强度)
- 提取前10个结果
完整代码:
import numpy as np # 保留上三角矩阵,剔除对角线和重复的变量对 corr_no_diag = correlation.where(np.triu(np.ones(correlation.shape), k=1).astype(bool)) # 将相关矩阵堆叠为Series,转换为表格形式 corr_stacked = corr_no_diag.stack().reset_index() # 重命名列,方便阅读 corr_stacked.columns = ['变量A', '变量B', '皮尔逊相关系数'] # 计算相关系数的绝对值,用于排序 corr_stacked['相关系数绝对值'] = corr_stacked['皮尔逊相关系数'].abs() # 按绝对值降序排序 corr_sorted = corr_stacked.sort_values(by='相关系数绝对值', ascending=False) # 获取前10个最相关的变量对 top_10_correlated_pairs = corr_sorted.head(10) print(top_10_correlated_pairs)
结果说明
运行上述代码后,你会得到一个包含变量对、相关系数及绝对值的表格,前10行即为相关性最强的变量组合。注意这里的"最相关"包含正相关和负相关,仅依据相关性的强度(绝对值)排序。
内容的提问来源于stack exchange,提问作者Nihad Huseynov
相关产品推荐
相关产品推荐

