我想实现一个计算每对特征之间的相关性的函数。当找到高相关性时,我想放弃与目标变量相关性最低的功能,而不在循环中再次对其进行求值。
我尝试使用鸢尾花数据库作为示例和以下代码,但它并未从集合中删除高度相关的变量。
我还认为遍历两列是无效的。感谢您的帮助!
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)