我正在努力从具有 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具有完全相同的结果。