特征选择进阶:嵌入法/递归消除/SHAP选择 📅 2026/7/8 14:01:59 特征选择进阶嵌入法/递归消除/SHAP选择1. Boruta 特征选择fromborutaimportBorutaPyfromsklearn.ensembleimportRandomForestClassifier rfRandomForestClassifier(n_estimators100,random_state42,n_jobs-1)borutaBorutaPy(rf,n_estimatorsauto,random_state42)boruta.fit(X_train.values,y_train.values)selectedboruta.support_print(f选中特征:{np.array(feature_names)[selected]})2. SHAP 特征选择importshap modelRandomForestClassifier(n_estimators100).fit(X_train,y_train)explainershap.TreeExplainer(model)shap_valuesexplainer.shap_values(X_train)mean_shapnp.abs(shap_values[1]).mean(axis0)top_featuresnp.argsort(mean_shap)[::-1][:20]print(fTop 20 特征:{np.array(feature_names)[top_features]})3. 递归特征消除RFEfromsklearn.feature_selectionimportRFE,RFECV# 基础 RFErfeRFE(estimatorRandomForestClassifier(),n_features_to_select10)rfe.fit(X_train,y_train)# 自动选择最佳特征数rfecvRFECV(estimatorRandomForestClassifier(),step1,cv5,scoringaccuracy)rfecv.fit(X_train,y_train)print(f最佳特征数:{rfecv.n_features_})4. Permutation Importancefromsklearn.inspectionimportpermutation_importance resultpermutation_importance(model,X_test,y_test,n_repeats10,random_state42)importance_dfpd.DataFrame({feature:feature_names,importance_mean:result.importances_mean,importance_std:result.importances_std,}).sort_values(importance_mean,ascendingFalse)总结方法类型优势Boruta包裹法自动确定特征数SHAP嵌入法可解释性强RFE包裹法逐步消除Permutation模型无关通用性强