gpt4 book ai didi

r - 预测()glmnet函数: not-yet-implemented method中的错误

转载 作者:行者123 更新时间:2023-12-04 14:25:32 25 4
gpt4 key购买 nike

当我使用预测glmnet函数时,出现代码下面提到的错误。

mydata <- read.csv("data.csv")
x <- mydata[,1:4]
y <- mydata[,5]
data <- cbind(x,y)
model <- model.matrix(y~., data=data)
ridgedata <- model[,-1]
train <- sample(1:dim(ridgedata)[1], round(0.8*dim(ridgedata)[1]))
test <- setdiff(1:dim(ridgedata)[1],train)
x_train <- data[train, ]
y_train <- data$y[train]
x_test <- data[test, ]
y_test <- data$y[test]
k=5
grid =10^seq(10,-2, length =100)
fit <- cv.glmnet(model,y,k=k,lambda = grid)
lambda_min <- fit$lambda.min
fit_test <- predict(fit, newx=x_test,s=lambda_min)
错误如下:

Error in as.matrix(cbind2(1, newx) %*% nbeta) : error in evaluatingthe argument 'x' in selecting a method for function 'as.matrix': Errorin cbind2(1, newx) %*% nbeta : not-yet-implemented method for<data.frame> %*% <dgCMatrix>


我尝试调试,但是我不确定在哪里

as.matrix(cbind2(1, newx) %*% nbeta)


代码正在使用中,以及导致此错误的原因。

最佳答案

您的原始数据帧在预测变量中具有一个因子(类别)变量。当您使用model.matrix时,它会对这个变量做出明智的选择。如果仅将其直接传递给predict,它将不知道该怎么办。

newX <- model.matrix(~.-y,data=x_test)
fit_test<-predict(fit, newx=newX,s=lambda_min)

顺便说一句,您可以使用仅几行数据的简单示例来复制此示例,例如,此设置会产生相同的错误(我将数据称为 dd而不是“data”,因为后者是R中的内置函数):
set.seed(101)
dd <- data.frame(y=rnorm(5),
a=1:5,b=2:6,c=3:7,d=letters[1:5])
model <- model.matrix(y~., data=dd)
n <- nrow(dd)
train <- sample(1:n, size=round(0.8*n))
test <- setdiff(1:n,train)

关于r - 预测()glmnet函数: not-yet-implemented method中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35437411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com