R 用套索回归预测函数
我正在尝试为我的销售预测问题实现套索回归。我正在使用R 用套索回归预测函数,r,regression,R,Regression,我正在尝试为我的销售预测问题实现套索回归。我正在使用glmnet软件包和cv.glmnet函数来训练模型 library(glmnet) set.seed(123) model = cv.glmnet(as.matrix(x = train[, -which(names(train) %in% "Sales")]), y = train$Sales, alpha = 1, lambda =
glmnet
软件包和cv.glmnet
函数来训练模型
library(glmnet)
set.seed(123)
model = cv.glmnet(as.matrix(x = train[, -which(names(train) %in% "Sales")]),
y = train$Sales,
alpha = 1,
lambda = 10^seq(4,-1,-0.1))
best_lambda = model$lambda.min
lasso_predictions_valid <- predict(model,s = best_lambda,type = "coefficients")
库(glmnet)
种子集(123)
model=cv.glmnet(如.matrix(x=train[,-which(名称(train)%in%“Sales”))),
y=列车$销售额,
α=1,
λ=10^序列(4,-1,-0.1))
最佳λ=型号$lambda.min
套索预测有效我认为你的套索预测有效
中有一个错误,你不应该把有效的$sales
作为你的newx,因为我相信这是实际的销售数字
一旦您使用火车集创建了模型,那么对于newx
,您需要传递要进行预测的x的矩阵值,我猜在这种情况下,它将是您的验证集
看看上面的示例代码,我认为您的predict
行应该是这样的:
lasso_predictions_valid <- predict(model, s = best_lambda,
newx = as.matrix(valid[, -which(names(valid) %in% "Sales")]),
type = "coefficients")
newx
参数的工作原理类似于newdata
。从帮助页面:“newx
-要进行预测的x的新值矩阵。必须是矩阵[…]”好的,我已经使用了此代码,它工作了lasso\u predictions\u有效谢谢。但是当我运行RMSE行时,我在eval(call,parent.frame())中得到了这个错误:dims[product 44]与对象[856]的长度不匹配。
您应该检查RMSE
行中两个参数的长度。听起来你有不同数量的预测和观察。这是正确的,我对其他预测模型使用了相同的语法,它可以工作。我认为这里的问题可能与as.matrix有关?我建议您包括数据集的样本,以便其他人重现错误。如果您认为as.matrix存在问题,那么我猜这可能是由于因子变量造成的。您的数据中有任何分类变量吗?如果您这样做,那么model.matrix
应该这样做,例如model.matrix(~-1,数据)
RMSE(lasso_predictions_valid, valid$Sales)