我一直坚持这个,希望有人能帮助我!我有一个包含54列的数据集,我想在使用岭回归的测试集上进行预测。
nn <-nrow(longley)
index <- 1:nrow(longley)
testindex <- sample(index, trunc(length(index)/3))
testset <- longley[testindex,]
trainset <-longley[-testindex,]
trainset1 <- trainset[,-7]
# Fit the ridge regression model:
mod <- lm.ridge(y ~., data = trainset, lambda = 0.661)
# Predict and evaluate it by using MAE function:
mae <- function(model) {
y = trainset$Employed
y.pred <- predict(model, trainset)
return(mean(abs(y-y.pred)))
}
当我这样做时,我收到以下错误消息:
Error in UseMethod("predict") :
no applicable method for 'predict' applied to an object of class "ridgelm"
使用岭回归进行预测的另一种方法是什么(也可以使用rsquared和MAE等评估指标)?
答案 0 :(得分:2)
predict
对象确实没有ridgelm
方法:你必须手工完成。顺便说一句,你可以看到summary
:
> methods(class = 'ridgelm')
[1] coef plot print select
这是线性模型,因此拟合只是一个基本计算的问题:
y.pred <- as.matrix(cbind(const=1,trainset)) %*% coef(model)
我们需要添加常数1以与线性模式的常系数相关联。
重要提示:要使用岭回归,通常会缩放解释变量,以便减去均值。最佳实践应该是从训练中学习缩放定义,然后使用训练集方法来中心来自新数据的变量。您可能对这个相关的交叉验证帖子感兴趣: