决策树类的算法一般都能用来计算特征重要性,通过决策树分类器的特征重要性进行评估。
常用的决策树分类器有:DecisionTreeClassifier,RandomForestClassifier,ExtraTreesClassifier,GradientBoostingClassifier,XGBClassifier等。
但每个分类器下的参数可能略有不同,为了有更好的效果,尽量优化下参数取值。
本文以gbdt为例展示:
class TreeModelSelect(): def __init__(self): pass # 选取树模型的分类器 def TreeModelFunc(self, x, y, list_name): clf = GradientBoostingClassifier(n_estimators=100, max_depth=None, min_samples_split=10, random_state=0) clf.fit(x, y) var_importance = pd.Series(clf.feature_importances_,index=list_name).sort_values(ascending=False) print('var_importance : n',var_importance) return var_importance # 可视化importance降序展示 def plot_result(self,df): plt.figure() ax = df.plot(kind='bar',rot=0,ylim=[0,0.5]) ax.set_ylabel('importance') ax.set_xlabel('features') ax.set_title('sample features importance') plt.show() # 加载及调用 def load_transform(self): path = r'E:programGaocsdnProgram' data = pd.read_excel(path + '/dataset.xlsx', 'all') y = np.array(data['flag']) x = np.array(data.iloc[:,2:]) list_name = list(data.iloc[:,2:].columns) var_importance = self.TreeModelFunc(x, y, list_name) self.plot_result(var_importance) 结果展示: