gpt4 book ai didi

python - python pandas 中的等效 R "findcorrelation(corr,cutoff = 0.75)"

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:24 25 4
gpt4 key购买 nike

我有一个名为“数据”的数据框。我计算了数据的相关性:

corr = data.corr()

我想从“数据”文件中删除相关性大于 0.75 的列。这可以在 R 中使用以下命令非常容易地完成:

hc=findCorrelation(corr,cutoff = 0.75)
data <- data[,-c(hc)]

我正在寻找 python 中的类似命令。 pandas 或 scikit-learn 中是否有任何命令可以完成类似的工作?

最佳答案

第 1 步. 准备一些数据

from scipy.stats import multivariate_normal

covs = np.eye(10)
for i in range(10):
for j in range(10):
if i!=j:
covs[i,j] = (i*j)/100

mvn = multivariate_normal(cov=covs)
data = mvn.rvs(size = 100)
data.shape
(100, 10)

第 2 步。可视化相关性。

在这里,您有一个二维相关的 ndarray。数据被组织成列,案例在行中。为了对列数据运行关联,您需要先转置数组(提示:numpy 按行运行关联):

r = np.corrcoef(data.T)
plt.imshow(r, cmap = "coolwarm")
plt.colorbar();

enter image description here

如您所见,某些列(特征,正如他们在统计学或 ML 中所说的那样)高度相关。

第 3 步。删除相关列

让我们找出哪些元素的相关性超过了 .5 阈值,不包括显然完全自相关的对角线元素:

idx = np.abs(np.tril(r, k= -1)) < .5
idx_drop = np.all(idx, axis=1)
data_uncorr = data[:, idx_drop]
data_uncorr.shape
(100, 8)

这意味着我们去掉了 2 个共线列。

第 4 步。健全性检查

让我们从视觉上和数学上做一些检查:

plt.imshow(np.corrcoef(data_uncorr.T), cmap = "coolwarm")
plt.colorbar();

enter image description here

np.sum(np.abs(np.tril(np.corrcoef(data_uncorr.T), k=-1)) >.5)
0

关于python - python pandas 中的等效 R "findcorrelation(corr,cutoff = 0.75)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44994791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com