You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于线性模型系数绝对值的特征重要性条形图可视化

线性模型特征重要性可视化:系数绝对值条形图

需求说明

我正在开展一个机器学习项目,希望通过绘制训练完成的线性模型(如线性回归、逻辑回归等)的系数绝对值,实现特征重要性的可视化。

实现代码

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# 从各模型中提取系数
coefs_model1 = model1.coef_[0]
coefs_model2 = model2.coef_[0]
coefs_model3 = model3.coef_[0]

# 创建存储系数绝对值的DataFrame
abs_coefs = pd.DataFrame({
    '特征': feature_names,
    '模型A(C=1e6,无正则化)': np.abs(coefs_model1),
    '模型B(L2正则化,C=0.01)': np.abs(coefs_model2),
    '模型C(L1正则化,C=0.01)': np.abs(coefs_model3)
})

# 设置matplotlib画布和子图坐标轴
fig, axes = plt.subplots(3, 1, figsize=(18, 20), sharex=True)
fig.suptitle('3个模型下30个特征的系数绝对值对比', fontsize=16)

# 绘制模型A的条形图
sns.barplot(x='特征', y='模型A(C=1e6,无正则化)', data=abs_coefs, ax=axes[0], color='skyblue')
axes[0].set_title('模型A(无正则化,C=1e6)')
axes[0].set_ylabel('系数绝对值')

# 绘制模型B的条形图
sns.barplot(x='特征', y='模型B(L2正则化,C=0.01)', data=abs_coefs, ax=axes[1], color='lightcoral')
axes[1].set_title('模型B(L2正则化,C=0.01)')
axes[1].set_ylabel('系数绝对值')

# 绘制模型C的条形图
sns.barplot(x='特征', y='模型C(L1正则化,C=0.01)', data=abs_coefs, ax=axes[2], color='lightgreen')
axes[2].set_title('模型C(L1正则化,C=0.01)')
axes[2].set_ylabel('系数绝对值')

# 旋转x轴标签提升可读性并设置公共x轴标签
plt.xticks(rotation=90)
plt.xlabel('特征名称')

plt.tight_layout(rect=[0, 0.03, 1, 0.95]) # 调整布局避免总标题重叠
plt.show()

代码说明

  • 从训练完成的三个模型中提取系数(针对单类别逻辑回归等模型,coef_为二维数组,取第一维度即可得到特征对应系数)
  • 将特征名称与各模型的系数绝对值存入DataFrame,统一管理可视化所需数据
  • 创建3行1列的子图布局并共享x轴,便于横向对比不同模型的特征系数分布
  • 用Seaborn绘制条形图,通过不同颜色区分三个模型,直观展示每个特征的系数绝对值大小
  • 旋转x轴标签避免文本重叠,调整画布布局防止总标题被子图遮挡

内容的提问来源于stack exchange,提问作者Saiking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:13:09