SelectKBest 和 Correlation 返回我完全相同的特征选择。如何?

数据挖掘 机器学习 Python 特征选择 相关性
2022-02-22 23:59:22

我正在努力从具有 2000 多个特征的数据集中选择最有效的特征。我为此使用了不同的算法(selectKBest with chi-square、Extra Trees、Correlation 等)但是当我查看特征排名时,我看到 selectKBest with chi-square 生成的结果与 Correlation 完全相同。有可能还是我做错了什么?

我的所有功能都包含 64 位浮点连续数字,介于 [-8,11] 和我的目标列是二进制,只能是 0 或 1。

更新于 05.09.19:我仍在寻找这怎么可能?我的意思是我可以猜测这两种方法都基于相同的公式并由同一个人开发,但我需要一个证据才能清楚地理解这一点。

相关函数:

cor = data.corr()
# Class is my target column
cor_target = abs(cor["Class"])
# Want to get correlation values for every feature without target column
relevant_features = cor_target[cor_target > 0].drop(labels=["Class"])
#Top 1000 features
relevant_features = pd.Series(relevant_features, index=data.columns).nlargest(1000).index.values

选择K最佳函数:

bestfeatures = SelectKBest(score_func=chi2, k="all")
fit = bestfeatures.fit(dataValues, dataTargetEncoded)
feat_importances_chi = pd.Series(fit.scores_, index=dataValues.columns).nlargest(1000).index.values

并且结果相关特征和feat_importances_chi具有完全相同的结果。

1个回答

您可能看到的是,那些彼此高度相关的特征对结果的权重过大,因此,如果其中一个特征很好地描述了目标,那么其他高度相关(或不相关)的特征也与目标相匹配.