Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用套索回归预测函数_R_Regression - Fatal编程技术网

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)