绘制岭回归 MSE 的交叉验证
Plotting cross validation of ridge regression's MSE
首先,我必须为我糟糕的英语道歉。其次,这个post的objective是我想用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
- cvup
- cvlo
- nzero
- 通话
- 名字
- lambda.min
- lambda.lse
最后,感谢您的帮助。我真的很感激。 :)
使用示例数据集:
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()
首先,我必须为我糟糕的英语道歉。其次,这个post的objective是我想用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
- cvup
- cvlo
- nzero
- 通话
- 名字
- lambda.min
- lambda.lse
最后,感谢您的帮助。我真的很感激。 :)
使用示例数据集:
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()