如何从管道获取功能重要性并更改类型?

2024-04-26 18:08:25 发布

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

我试图比较xgboost和light gradient boosting功能的重要性,但两者都有不同的评估标准。因此,我正在尝试更改功能重要性类型,并看看如何做到这一点

例如

pipeline = make_pipeline(XGBClassifier())
param_grid =    { 
                  'xgbclassifier__learning_rate': [0.01,0.005,0.001],
                 
                  }

gini_scorer = make_scorer(normalized_gini, greater_is_better = True)

# Initialize Grid Search Modelg
model = GridSearchCV(pipeline,param_grid = param_grid,scoring = gini_scorer,
                                 verbose= 1,iid= True,
                                     refit = True,cv  = 3)

model.fit(x, y)
print("Best score: %0.3f" % model.best_score_)
print("Best parameters set:")
model = model.best_estimator_

然后,要获取特征重要性i:

feature_importances = model.steps[-1][1].feature_importances_
pd.DataFrame(feature_importances, index=feature_names,
                     columns=['Importance']).sort_values('Importance') \
            .plot(kind='barh', figsize=(15, 25)) 

但是,我不确定如何编辑我的代码,以允许功能重要性发生变化,例如,如果我想通过增益等进行更改,该怎么办


Tags: 功能truemakemodelpipelineparam重要性feature