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])
我正在尝试输入一个由 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])