我希望能够自动删除高度相关的特征。我正在使用一组 20-30 个特征执行分类问题,其中一些可能是相关的。
多个特征也可以同时关联,我担心这可能会给我的 Logit 模型重要性和特征系数带来问题。删除这些功能后,我计划将这个减少的功能集也用于 Xgboost 模型。
另一方面,多重共线性更难检测,因为当模型中包含三个或更多高度相关的变量时,它就会出现。(参考这里)
以这种方式删除相关变量是否正确?:
X=data[feature_set]
vif = pd.DataFrame()
vif['vif_factor'] = [variance_inflation_factor(X.values,i) for i in range(X.shape[1])]
vif['features'] = X.columns
vif.sort_values('vif_factor',axis=0,inplace=True, ascending=False)
features_to_remove = vif.loc[vif['vif_factor'] > 10,'features'].values
features_to_remove = list(features_to_remove)
print(features_to_remove)
输出:
vif_factor | feature
21 | age
9.7 | income
7 | gender ....and so on
因此,在这种情况下,年龄将作为模型中的一个特征被删除。
