sparse.model.matrix 面临问题

Facing issues with sparse.model.matrix

我正在尝试输入一个由 30 个变量组成的数据,其中 10 个是因子变量。 我是 运行 xgboost 并尝试使用 sparse.model.matrix 函数对数据进行热编码,但出现错误显示为

"""Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]]) : contrasts can be applied only to factors with 2 or more levels""" Can you let me know how to overcome this error

trainm <- sparse.model.matrix(pol ~.-1, data = train)

错误是由于只有一个级别的因素。请看这个例子,从 Matrix 包中实现的 sparse.model.matrix 的文档稍作修改:

library(Matrix)    
dd <- data.frame(a = gl(3,4), b = gl(4,1,12), c = gl(1,1, 12))
sparse.model.matrix(~ ., dd)

这会引发错误,因为 c 是只有一级的因子:

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 

对比只能应用于具有 2 个或更多水平的因素

我不知道你的原始数据,但像这样的东西可以解决它,通过在一个水平上丢弃任何因素。

sparse.model.matrix(~.,dd[,sapply(dd, nlevels) > 1])