sparse.model.matrix面临的问题

时间:2020-03-29 15:26:52

标签: r xgboost

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

时出现错误

“”“ contrasts<-*tmp*中的错误,值= contr.funs [1 + isOF [nn]]): 对比度只能应用于具有2个或更多级别的因素“”“ 你能让我知道如何克服这个错误吗?

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

1 个答案:

答案 0 :(得分:0)

该错误是由于只有一个级别的因素引起的。请参见以下示例,该示例与sparse.model.matrix包中实现的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])