【问题标题】:Plotting cross validation of ridge regression's MSE绘制岭回归 MSE 的交叉验证
【发布时间】:2021-03-28 11:50:57
【问题描述】:

首先,我必须为我糟糕的英语道歉。其次,这篇文章的目的是我想用 ggplot2 而不是 R 中包含的函数plot 重现岭回归的 MSE 的图。

cv.out 的对象由下一个表达式定义: cv.out <- cv.glmnet(x_var[train,], y_var[train], alpha = 0)。当我打印该对象时,这些是 cv.out

的元素
Lambda Measure SE Nonzero
min 439.8 32554969 1044541 5
lse 1343.1 33586547 1068662 5

这是plot(cv.out)的情节:

我想做同样的情节但用ggplot 更详细的东西我不知道在函数中加入了哪些美学。当我这样调用对象时,这些是 cv.out 的元素:cv.out$

  • λ
  • cmv
  • cvsd
  • 简历
  • cvlo
  • nzero
  • 打电话
  • 姓名
  • lambda.min
  • lambda.lse

最后,感谢您的帮助。对此,我真的非常感激。 :)

【问题讨论】:

    标签: r ggplot2 plot regression glmnet


    【解决方案1】:

    使用示例数据集:

    X = as.matrix(mtcars[,-1])
    y = as.matrix(mtcars[,1])
    cv.out = cv.glmnet(X,y,alpha=0)
    plot(cv.out)
    

    您只需提取值并放入 data.frame,并使用 geom_point()geom_errorbar() 进行绘图:

    df = with(cv.out,
         data.frame(lambda = lambda,MSE = cvm,MSEhi=cvup,MSElow=cvlo))
    
    ggplot(df,aes(x=lambda,y=MSE)) + 
    geom_point(col="#f05454") + 
    scale_x_log10("log(lambda)") + 
    geom_errorbar(aes(ymin = MSElow,ymax=MSEhi),col="#30475e") + 
    geom_vline(xintercept=c(cv.out$lambda.1se,cv.out$lambda.min),
    linetype="dashed")+
    theme_bw()
    

    【讨论】:

      猜你喜欢
      • 2016-09-10
      • 2021-11-24
      • 2016-09-30
      • 2016-06-27
      • 2017-11-12
      • 1970-01-01
      • 2020-04-29
      • 2020-05-13
      • 2018-09-06
      相关资源
      最近更新 更多