You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按≥0.8阈值筛选correlation matrix子集(排除对角线干扰)

实现方法

通过Python+pandas即可快速完成该相关矩阵的筛选,核心逻辑是先排除对角线值的干扰,再判断每个变量是否满足非对角线相关系数全部≥0.8的要求,最后切片得到目标子集。

  • 第一步:导入依赖库,构建原始相关矩阵
  • 第二步:将矩阵对角线值临时替换为NaN,避免固定为1的对角线值干扰阈值判断
  • 第三步:逐列计算非对角线值的最小值,若最小值≥0.8则该变量符合保留条件
  • 第四步:用符合条件的变量对原始矩阵做行列切片,得到最终结果

完整可运行代码如下:

import pandas as pd
import numpy as np

# 构建原始相关矩阵
corr = pd.DataFrame(
    [
        [1, 0.7, 0.9, 0.5, 0.83, 0.88],
        [0.7, 1, 0.8, 0.5, 0.95, 0.96],
        [0.9, 0.8, 1, 0.8, 0.97, 0.9],
        [0.5, 0.5, 0.97, 1, 0.87, 0.91],
        [0.83, 0.95, 0.97, 0.87, 1, 0.81],
        [0.88, 0.96, 0.9, 0.91, 0.81, 1]
    ],
    index=['A', 'B', 'C', 'D', 'E', 'F'],
    columns=['A', 'B', 'C', 'D', 'E', 'F']
)

# 临时替换对角线值排除干扰
temp_corr = corr.copy()
np.fill_diagonal(temp_corr.values, np.nan)

# 筛选符合条件的变量
keep_vars = temp_corr.columns[temp_corr.min(axis=0) >= 0.8]

# 切片得到最终结果
res = corr.loc[keep_vars, keep_vars]
print(res)

运行代码后输出结果和预期完全一致:

C     E     F
C  1.00  0.97  0.90
E  0.97  1.00  0.81
F  0.90  0.81  1.00

内容的提问来源于stack exchange,提问作者Reda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 08:25:31