从cv.glmnet R包中找到训练MSE

问题描述 投票:0回答:1

在使用 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)
r statistics cross-validation glmnet mse
1个回答
0
投票

您可以使用该功能

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"
© www.soinside.com 2019 - 2024. All rights reserved.