绘制特征重要性时如何在X轴显示对应列名?
替换特征重要性柱状图X轴序号为列名的解决方案
当前代码中make_classification生成的X是无列名的numpy数组,要把X轴的序号换成列名,只需两步:给特征定义列名,再修改打印和绘图逻辑。
修改后的完整代码
from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression from matplotlib import pyplot # 生成数据 X, y = make_classification(n_samples=2700, n_features=60, n_informative=5, n_redundant=5, random_state=1) # 1. 定义特征列名,可自定义命名规则 feature_names = [f"Feature_{col}" for col in range(X.shape[1])] model = LogisticRegression() model.fit(X, y) importance = model.coef_[0] # 2. 打印时用列名代替序号 for i,v in enumerate(importance): print(f'Feature: {feature_names[i]}, Score: %.5f' % v) # 3. 绘图时传入列名作为X轴标签,并旋转避免重叠 pyplot.bar(feature_names, importance) pyplot.xticks(rotation=90) # 旋转X轴标签,防止60个特征名重叠 pyplot.tight_layout() # 自动调整布局,避免标签被截断 pyplot.show()
关键改动说明
- 定义列名:用列表推导式生成和特征数量匹配的列名,也可以根据业务需求自定义命名(比如
["f1", "f2", ...])。 - 打印逻辑:把原代码中的序号替换为
feature_names[i],直接输出列名。 - 绘图调整:
pyplot.bar()的第一个参数传入列名列表,同时添加旋转和布局调整,解决多特征名重叠、截断的问题。
内容的提问来源于stack exchange,提问作者prof31
相关产品推荐
相关产品推荐

