首页 > 解决方案 > 相关循环丢弃变量

问题描述

我想实现一个计算每对特征之间相关性的函数。当发现高相关性时,我想丢弃与目标变量相关性最低的特征,并且不要在循环中再次对其进行评估。

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

我还认为遍历两次列效率低下。谢谢你的帮助!

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)

标签: pythonpandasloopsmachine-learningcorrelation

解决方案


推荐阅读