基于分类特征的特征选择

2024-06-16 17:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 数据分类类别数值名义序数onehotencoderrfecv
1条回答
网友
1楼 · 发布于 2024-06-16 17:30:15

下面是一个函数,它实现了一种基于树的特征重要性分析方法。它将实际返回原始数据帧,其中按重要性顺序只包含前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的每一列都包含数值,或使用标签编码器对其进行转换

相关问题 更多 >