glmnet
来预测数据集中的概率。我的代码如下:bank <- read.table("http://www.stat.columbia.edu/~madigan/W2025/data/BankSortedMissing.TXT",header=TRUE)
bank$rich<-sample(c(0:1), 233, replace=TRUE)
train=bank[1:200,];
test=bank[201:233,]
x=model.matrix(rich~., bank)[,-1]
cv.out=cv.glmnet(x, train$rich, alpha=0, family="binomial")
ridge.mod=glmnet(x, train$rich, alpha=0, family="binomial")
bank$rich <- NULL
newx = data.matrix(test$rich)
ridge.pred=predict(ridge.mod,newx=newx)
train = data[1:2500,];
test = data[2501:5088,];
x=model.matrix(Y~x1+x2+x3+x4+x5+x6, data)[,-1]
cv.out=cv.glmnet(x, data$Y, alpha=0, family="binomial")
bestlam=cv.out$lambda.min
ridge.mod=glmnet(x, data$Y, alpha=0, family="binomial")
test$Y <- NULL
newx = data.matrix(test)
ridge.pred = predict(ridge.mod,newx=newx, type="response")
当使用predict时,我一直收到以下错误信息:
在执行cbind2(1, newx) %*% nbeta的as.matrix函数时出错:在选择函数“as.matrix”的方法时评估参数“x”时出错:在选择函数“t”的方法时评估参数“x”时出错:在../MatrixOps/cholmod_sdmult.c文件的第90行处发生Cholmod错误“X和/或Y具有错误的维度”。
我已经在"Hitters"数据集上尝试过,它可以完美地运行。
library(ISLR);
library(glmnet)
Hitters=na.omit(Hitters)
Hitters$Rich<-ifelse(Hitters$Salary>500,1,0)
Hitters.train = Hitters[1:200,]
Hitters.test = Hitters[201:dim(Hitters)[1],]
x=model.matrix(Rich~.,Hitters)[,-1]
cv.out=cv.glmnet(x, Hitters$Rich, alpha=0, family="binomial")
bestlam=cv.out$lambda.min
ridge.mod=glmnet(x, Hitters$Rich, alpha=0,lambda=bestlam, family="binomial")
Hitters.test$Rich <- NULL
newx = data.matrix(Hitters.test)
ridge.pred=predict(ridge.mod,newx=newx, type="response")
head(ridge.pred)
ridge.pred[1:10,]
有人知道我该如何解决这个问题吗?
model.matrix
函数时引起的null
问题之外,当您的测试x中没有与训练x中找到的变量相同时,也会出现此错误。 - Vlo