【发布时间】:2015-05-14 22:25:46
【问题描述】:
我正在尝试使用 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 时不断收到此错误消息:
as.matrix(cbind2(1, newx) %*% nbeta) 中的错误: 在为函数“as.matrix”选择方法时评估参数“x”时出错:t(.Call(Csparse_dense_crossprod, y, t(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,]
有人知道我该如何解决这个问题吗?
【问题讨论】:
-
我投票结束这个问题,因为它是关于如何在没有可重现示例的情况下使用 R。
-
我在上面添加了一个可重现的部分
-
谢谢!我们现在看看是否可以为您迁移。
-
感谢您的帮助.. 这已经困扰了我好几个小时了。
-
只是为了标记对这个答案的响应,因为它是这个特定错误的第一个谷歌结果。除了将这个函数与
model.matrix一起使用引起的null问题外,当您的测试x 没有在火车x 中找到相同的变量时,也会出现此错误。
标签: r probability prediction glmnet