7

I get this error when trying to fit glmnet() with family="binomial", for Logistic Regression fit:

> data <- read.csv("DAFMM_HE16_matrix.csv", header=F)
> x <- as.data.frame(data[,1:3])
> x <- model.matrix(~.,data=x)
> y <- data[,4]

> train=sample(1:dim(x)[1],287,replace=FALSE)

> xTrain=x[train,]
> xTest=x[-train,]
> yTrain=y[train]
> yTest=y[-train]

> fit = glmnet(xTrain,yTrain,family="binomial")

Error in lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs,  : 
one multinomial or binomial class has 1 or 0 observations; not allowed

Any help would be greatly appreciated - I've searched the internet and haven't been able to find anything that helps

EDIT:

Here's what data looks like:

> data
          V1       V2    V3      V4
1   34927.00   156.60 20321  -12.60
2   34800.00   156.60 19811  -18.68
3   29255.00   156.60 19068    7.50
4   25787.00   156.60 19608    6.16
5   27809.00   156.60 24863   -0.87
...
356 26495.00 12973.43 11802    6.35
357 26595.00 12973.43 11802   14.28
358 26574.00 12973.43 11802    3.98
359 25343.00 14116.18 11802   -2.05
4

2 回答 2

3

我认为这是因为您的因子变量的水平。假设有 10 个级别,而您的 1 个级别只有一条记录,请尝试删除该级别。您可以使用gdata包中的丢弃级别。

于 2016-04-18T09:42:36.417 回答
1

这通常是因为数据结构及其响应变量,有时响应不止二进制输出。或者数据响应变量有二进制输出,但它们有更多的一个类,我们可以称它们最有可能是类不平衡问题。因此,在训练和测试数据期间会出现问题。因此,如果有两个以上的结果,您必须将响应变量转换为二进制,第二,您可以multinomial针对binomial. 希望这可以帮到你。

于 2019-08-21T11:21:59.203 回答