集成学习 特征重要性 可视化 SHAP
【代码】集成学习 特征重要性 可视化 SHAP。
·
# # RF获取特征重要性
feature_importances = model.feature_importances_
print(feature_importances)
# 将特征重要性转换成数组
sorted_idx = np.argsort(feature_importances)
pos = np.arange(sorted_idx.shape[0]) + .5
# 绘制特征重要性
plt.figure(figsize=(12, 6))
plt.barh(pos, feature_importances[sorted_idx], align='center')
plt.xticks(fontsize=12)
plt.yticks(pos, X.columns[sorted_idx],fontsize=16)
plt.title('feature importance')
plt.xlabel('feature importance',fontsize=16)
plt.show()
##使用eli5,BP计算特征重要性
perm = PermutationImportance(model, random_state=42).fit(X_train, y_train)
eli5.show_weights(perm)
##可视化特征重要性
weights = perm.feature_importances_
indices = np.argsort(weights)[::-1]
feature_names = ['ω','sinθ','σ','β','t1','t0']
# 调整特征名称和权重的顺序
sorted_feature_names = [feature_names[i] for i in indices]
sorted_weights = weights[indices]
# 绘图
plt.figure(figsize=(6, 4))
plt.barh(range(len(sorted_feature_names)), sorted_weights, align='center')
plt.yticks(range(len(sorted_feature_names)), sorted_feature_names)
plt.xlabel('Feature Importance')
plt.title('Permutation Importance of Features')
plt.gca().invert_yaxis() # 可选,反转y轴,使最重要的特征在顶部
plt.show()
更多推荐
所有评论(0)