相关循环丢弃变量

我想实现一个函数,用于计算每对特征之间的相关性。当找到高相关性时,我想放弃与目标变量相关性最低的功能,并且不要在循环中再次对其求值。

我尝试使用鸢尾花数据库作为示例和以下代码,但它并未从集合中删除高度相关的变量。

我还认为遍历两列是无效的。谢谢你的帮助!

from sklearn import datasets
import pandas as pd 
from sklearn.datasets import load_iris  
iris = load_iris()
data1 = pd.DataFrame(data= np.c_[iris['data'], iris['target']],
                     columns= iris['feature_names'] + ['target'])

X = data1.drop('target', 1)
y = pd.DataFrame(data1['target'])

#Code to later implement function
threshold = 0.5
final_vars = set()
all_vars = X.columns.values.tolist()
for var in all_vars:
    for var2 in all_vars:
        if var != var2:
            if abs(X[var].corr(X[var2])) <= threshold:
                final_vars.add(var)
                final_vars.add(var2)
            else:
                if abs(X[var].corr(y)) <= abs(X[var2].corr(y)):
                    all_vars.remove(var)
                    final_vars.add(var2)
                else: 
                    all_vars.remove(var2)
                    final_vars.add(var)