在 R 中使用 glmnet 进行预测

机器算法验证 r 网络
2022-01-28 22:53:56

我正在尝试使用glmnetR 中的包对一些数据进行建模。假设我有以下数据

training_x <- data.frame(variable1 = c(1, 2, 3, 2, 3),
                         variable2 = c(1, 2, 3, 4, 5))
y <- c(1, 2, 3, 4, 5)

(这是一种简化;我的数据要复杂得多。)然后我使用以下代码创建 glmnet 模型。

x <- as.matrix(training_x)
library(glmnet)
GLMnet_model_1 <- glmnet(x, y, family="gaussian", alpha=0.755,
                         nlambda=1000, standardize=FALSE, maxit=100000)

我正在使用standardize=FALSE,因为我的现实生活数据已经标准化。然后我想对一组新数据进行预测。假设我的新数据是:

newdata <- as.matrix(data.frame(variable1 = c(2, 2, 1, 3), 
                                variable2 = c(6, 2, 1, 3)))
results <- predict(object=GLMnet_model_1, newx, type="response")

我希望结果包含 4 个元素(的预测newdata),但它给了我一个 4x398 矩阵。我究竟做错了什么?

1个回答

您需要指定要预测响应的 lambda 值。您需要做的就是像这样调用:

results <-predict(GLMnet_model_1, s=0.01, newx, type="response")