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