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

如何在R的glmnet多分类模型中提取单幅系数路径图

解决glmnet多分类场景下选取单幅系数路径图的方法

方法1:直接利用plot.glmnet的which参数

glmnet的绘图函数原生支持指定绘制特定类别的系数路径,只需要添加which参数,传入对应类别的索引(从1开始计数)即可。比如你的响应变量有3个类别,要单独绘制第1类的系数路径,代码修改如下:

fit <- glmnet(X, y, alpha = alpha, lambda = lambda, standardize = TRUE, family = "multinomial")
# 绘制第1类的系数路径图,修改which的值为2/3可切换其他类别
plot(fit, xvar = "lambda", which = 1)

方法2:提取系数后自定义绘图

如果需要更灵活的样式控制(比如调整配色、标签、添加辅助元素),可以从模型对象中提取对应类别的系数,再用基础绘图或ggplot2手动绘制:

基础绘图示例

# 提取第2类的系数矩阵(排除截距项)
coef_mat <- as.matrix(coef(fit)[[2]])
coef_values <- t(coef_mat[-1, ]) # 转置后让lambda作为行维度

# 绘制系数路径
matplot(log(fit$lambda), coef_values, type = "l", lty = 1, col = 1:ncol(coef_values),
        xlab = "Log(Lambda)", ylab = "系数值", main = "第2类特征系数路径")
legend("topright", legend = rownames(coef_mat[-1, ]), col = 1:ncol(coef_values), lty = 1, cex = 0.7)

ggplot2绘图示例

library(ggplot2)
library(tidyr)

# 提取第3类系数并整理为长格式数据框
coef_mat <- as.matrix(coef(fit)[[3]])
coef_df <- data.frame(lambda = log(fit$lambda), t(coef_mat[-1, ]))
coef_long <- pivot_longer(coef_df, cols = -lambda, names_to = "特征", values_to = "系数值")

# 生成ggplot图
ggplot(coef_long, aes(x = lambda, y = 系数值, color = 特征)) +
  geom_line() +
  labs(x = "Log(Lambda)", y = "系数值", title = "第3类特征系数路径") +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:40:24