繁体   English   中英

使用 scikit-learn 对分类特征进行特征选择

[英]Feature selection using scikit-learn on categorical features

我目前正在使用具有 5 列数字变量和 23 列分类变量的数据集。 这些变量大多是名义的(不是有序的),可以包含 4 到 15 个不同的类别。 我知道 OneHotEncoder 但我担心应用 rfecv 之类的东西会导致给定变量中的各个类别从分析中删除,而不是删除整个变量。 谢谢!

这是一个 function,它实现了基于树的特征重要性分析方法。 它实际上会返回给你原始的 dataframe,只有前 n 个特征按重要性排序。

from sklearn.ensemble import ExtraTreesClassifier

def select_best_Tree_features(df,target_var,top_n):
"""
:param df: pandas dataframe
:param target_var: string containing the target value column name 
:param top_n: integer indicating the number of columns to consider
:return:
"""
Y = df[target_var]
X = df.drop([target_var], axis=1)
model = ExtraTreesClassifier()
model.fit(X, Y)
f = pd.Series(model.feature_importances_, index=X.columns)
f.nlargest(top_n).plot(kind='barh')
plt.show()
print('\nFeatures Scores\n',f.sort_values(ascending=False))
top_list=f.nlargest(top_n).index.tolist()
X_fi = df[top_list]
return X_fi,Y,top_list

确保 dataframe 的每一列都包含数值或使用 label 编码器进行转换

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM