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

如何从50列数据集中筛选相关性<0.7的低关联变量名称

解决低关联变量筛选问题

嘿,我来帮你把这个任务收尾!你已经完成了数据生成和相关性计算的核心步骤,接下来我们把剩下的逻辑补全,精准找出那些相关性低于0.7的变量对。

完整代码实现

import numpy as np
import pandas as pd

# 生成模拟数据(和你的代码一致)
data = np.random.randint(1,99,size=(100, 50))
dataframe = pd.DataFrame(data)
codes = np.arange(50).astype(str)
dataframe.columns = codes

# 计算变量间的相关矩阵
corr_matrix = dataframe.corr()

# 将相关矩阵转换为长格式的Series,方便排序和筛选
corr_series = corr_matrix.unstack().sort_values()

# 第一步:排除变量与自身的相关性(因为自己和自己的相关系数恒为1,肯定不符合要求)
corr_series = corr_series[corr_series.index.get_level_values(0) != corr_series.index.get_level_values(1)]

# 第二步:筛选出相关性小于0.7的条目
# 如果你想筛选的是**绝对值小于0.7**(即弱相关,不管正负),可以把下面的条件改成abs(value) < 0.7
low_corr_pairs = corr_series[corr_series < 0.7]

# 可选:去除重复的配对(比如(0,1)和(1,0)是同一个相关性,只保留一次)
low_corr_pairs = low_corr_pairs[low_corr_pairs.index.get_level_values(0) < low_corr_pairs.index.get_level_values(1)]

# 查看结果
print("相关性小于0.7的变量对:")
print(low_corr_pairs)

# 如果需要提取所有低关联的变量名称(去重)
low_corr_vars = list(set([var for pair in low_corr_pairs.index for var in pair]))
print("\n所有参与低关联配对的变量名称:")
print(low_corr_vars)

代码解释

  • 我们先把相关矩阵unstack()转换成了一个Series,这样每一行都是一个变量对的相关性值,索引是(变量A, 变量B)的元组,方便后续筛选。
  • 首先过滤掉变量自身的配对(比如(0,0)),因为这些的相关系数是1,完全不符合“小于0.7”的要求。
  • 然后根据需求筛选出相关性小于0.7的条目,这里加了个备注:如果你的需求是弱相关(不管正负),可以用abs(value) < 0.7来筛选,这样正负相关只要绝对值小都算。
  • 最后可选的一步是去除重复配对,因为相关性矩阵是对称的,(A,B)和(B,A)的相关性完全一样,去掉重复后结果更清爽。
  • 如果你需要单独提取所有涉及低关联的变量名称,最后一行代码把所有配对里的变量去重后整理成了列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:25:53