在给定阈值内提取高度相关变量的最佳方法是什么
what is the best method to extract highly correlated vaiables within the given threshold
我有一个数据框并计算了成对相关性
>>> df1 = pd.read_csv("/home/zebrafish/Desktop/stack.csv")
>>> df1.corr()
GA PN PC MBP GR AP
GA 1.000000 0.070541 0.259937 -0.452661 0.115722 0.268014
PN 0.070541 1.000000 0.512536 0.447831 -0.042238 0.263601
PC 0.259937 0.512536 1.000000 0.331354 -0.254312 0.958877
MBP -0.452661 0.447831 0.331354 1.000000 -0.467683 0.229870
GR 0.115722 -0.042238 -0.254312 -0.467683 1.000000 -0.248777
AP 0.268014 0.263601 0.958877 0.229870 -0.248777 1.000000
>>>
现在如何从这个相关矩阵中列出或提取上述情况中的高度相关变量数据框很小所以很容易 select 高度相关的变量但是当数据集很大时说 4000 X 2000 比我们如何使用 python 或 pandas 或 numpy 来做到这一点。
已更新
按照建议的方法我能够得到这个非常漂亮的东西,但我的困惑仍然存在,它与编程部分无关它与理论相关
level_0 level_1 0
0 GA GA 1.000000
1 GA PN 0.070541
2 GA PC 0.259937
4 GA GR 0.115722
5 GA AP 0.268014
6 PN GA 0.070541
7 PN PN 1.000000
8 PN PC 0.512536
9 PN MBP 0.447831
11 PN AP 0.263601
12 PC GA 0.259937
13 PC PN 0.512536
14 PC PC 1.000000
15 PC MBP 0.331354
17 PC AP 0.958877
19 MBP PN 0.447831
20 MBP PC 0.331354
21 MBP MBP 1.000000
23 MBP AP 0.229870
24 GR GA 0.115722
28 GR GR 1.000000
30 AP GA 0.268014
31 AP PN 0.263601
32 AP PC 0.958877
33 AP MBP 0.229870
35 AP AP 1.000000
例如在给定的和平结果波纹管中因为我想删除显示相关性大于 0.2 的变量,我们可以看到 AP 与给定阈值内的其余三个相关,而其余三个也与 AP 相关(虽然,0.2 并不代表高度相关的集合,而只是为了一个例子而选择)所以在什么基础上我可以认为变量高度相关或仅在四个 AP、GA、PN 和 PC 之间相关。
30 AP GA 0.268014
31 AP PN 0.263601
32 AP PC 0.958877
谢谢
你可以试试这个
corr_val=0.01
df2 = df1.corr().unstack().reset_index()
df2[df2[0]>corr_val]
我有一个数据框并计算了成对相关性
>>> df1 = pd.read_csv("/home/zebrafish/Desktop/stack.csv")
>>> df1.corr()
GA PN PC MBP GR AP
GA 1.000000 0.070541 0.259937 -0.452661 0.115722 0.268014
PN 0.070541 1.000000 0.512536 0.447831 -0.042238 0.263601
PC 0.259937 0.512536 1.000000 0.331354 -0.254312 0.958877
MBP -0.452661 0.447831 0.331354 1.000000 -0.467683 0.229870
GR 0.115722 -0.042238 -0.254312 -0.467683 1.000000 -0.248777
AP 0.268014 0.263601 0.958877 0.229870 -0.248777 1.000000
>>>
现在如何从这个相关矩阵中列出或提取上述情况中的高度相关变量数据框很小所以很容易 select 高度相关的变量但是当数据集很大时说 4000 X 2000 比我们如何使用 python 或 pandas 或 numpy 来做到这一点。
已更新
按照建议的方法我能够得到这个非常漂亮的东西,但我的困惑仍然存在,它与编程部分无关它与理论相关
level_0 level_1 0
0 GA GA 1.000000
1 GA PN 0.070541
2 GA PC 0.259937
4 GA GR 0.115722
5 GA AP 0.268014
6 PN GA 0.070541
7 PN PN 1.000000
8 PN PC 0.512536
9 PN MBP 0.447831
11 PN AP 0.263601
12 PC GA 0.259937
13 PC PN 0.512536
14 PC PC 1.000000
15 PC MBP 0.331354
17 PC AP 0.958877
19 MBP PN 0.447831
20 MBP PC 0.331354
21 MBP MBP 1.000000
23 MBP AP 0.229870
24 GR GA 0.115722
28 GR GR 1.000000
30 AP GA 0.268014
31 AP PN 0.263601
32 AP PC 0.958877
33 AP MBP 0.229870
35 AP AP 1.000000
例如在给定的和平结果波纹管中因为我想删除显示相关性大于 0.2 的变量,我们可以看到 AP 与给定阈值内的其余三个相关,而其余三个也与 AP 相关(虽然,0.2 并不代表高度相关的集合,而只是为了一个例子而选择)所以在什么基础上我可以认为变量高度相关或仅在四个 AP、GA、PN 和 PC 之间相关。
30 AP GA 0.268014
31 AP PN 0.263601
32 AP PC 0.958877
谢谢
你可以试试这个
corr_val=0.01
df2 = df1.corr().unstack().reset_index()
df2[df2[0]>corr_val]