python - 如何找到相关矩阵的相关性低于给定值的最大子集?

标签 python pandas algorithm

我使用以下代码来获取相关矩阵。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(20,4))
df = df.corr()

说 df 如下

    0         1         2         3
0  1.000000 -0.156813  0.294344 -0.034569
1 -0.156813  1.000000 -0.238828  0.222677
2  0.294344 -0.238828  1.000000  0.071389
3 -0.034569  0.222677  0.071389  1.000000

上述相关矩阵的相关性低于0.23的最大子集是[0,1,3]和[1,2,3],因为[0,1,3]和[1,2,3]内的所有相关性] 低于 0.23,其他子集如 [0,3]、[1,2] 仅包含两个元素。

如果 df 是 200 * 200 矩阵,找到此类子集的最快方法是什么?检查所有 2^200 种可能性会太慢。

最佳答案

看起来您想要创建一个图表并找到它的派系。

您可以通过networkx来实现这一点的find_clique转换后from_pandas_adjacency :

import networkx as nx

G = nx.from_pandas_adjacency(df.lt(0.23))

cliques = list(nx.find_cliques(G))

输出:

[[1, 3, 0], [1, 3, 2]]

你的图表:

enter image description here

关于python - 如何找到相关矩阵的相关性低于给定值的最大子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77257474/

相关文章:

python - 当 SelectField 添加到模板时,Flask WTF 表单终止

python - 将列表列表转换为数据框

python - 根据条件用真实值填充数据框

c++ - 如何比较两个 vector 的相等性?

python - 在 matplotlib 中的刻度线之间居中 x-tick 标签

python - 如何将 python 静态库与我的 C++ 程序链接

Python:合并嵌套列表

python - 数据错误 : No numeric types using mean aggregate function but not sum?

Java:找出对象的所有数字字段是否为 0

java - 如何以给定的概率传播随机值?