在使用 R 中 glmnet 包中的 cv.glmnet 函数时,我一直试图找到训练数据集的 MSE。
如有任何帮助,我们将不胜感激。
谢谢
我想出的最好的方法如下,但我不确定它是否正确
set.seed(34064064)
library(ISLR2)
Library(glmnet)
x<- matrix.model(Salary~.,data=Hitters)[,-1]
y<- Hitters$Salary
cv<-cv.glmnet(x,y,lambda=exp(seq(-2, 4, length.out = 30)),k=10,alpha=1,standardize = TRUE,type.measure = "mse")
best.lambda <- cv$lambda.min
fit <- glmnet(x, y, lambda=best.lambda, alpha=0, standardize=TRUE)
y.pred <- predict(fit, newx=x)
training.mse <- mean((y - y.pred)^2)
print(training.mse)
您可以使用该功能
glmnet::assess.glmnet
。
library(ISLR2)
library(glmnet)
x <- as.matrix(Hitters[,-19])
y <- Hitters$Salary
cv <- cv.glmnet(x,y, lambda=exp(seq(-2, 4, length.out = 30)), k=10,
alpha=1, standardize = TRUE, type.measure = "mse")
best.lambda <- cv$lambda.min
fit <- glmnet(x, y, lambda=best.lambda, alpha=1, standardize=TRUE)
y.pred <- predict(fit, newx=x)
training.mse <- mean((y - y.pred)^2)
print(training.mse)
[1] 98110.67
perf <- assess.glmnet(fit, newx=x, newy=y)
print(perf$mse)
s0
98110.67
attr(,"measure")
[1] "Mean-Squared Error"