我有~25kR x 10C的数据集。有些列在分类变量中包含大量级别。我正在尝试使用RSofia软件包将数据集转换为SVM-Light格式,但是收到以下错误
Error in model.matrix.default(formula, data) :
allocMatrix: too many elements specified
我已成功使用sparse.model.matrix
包将数据集转换为Matrix
对象,但我很好奇是否可以从sparse.model.matrix
对象编写SVM-Light格式的文件。 / p>
我的代码如下:
library(RSofia)
library(Matrix)
n = 100000
df1 <- data.frame(id = 1:n, target = round(runif(n),0), col1 = factor(letters[sample(1:26,n,replace = T)])
, col2 = factor(letters[sample(1:26,n,replace = T)])
, col3 = round(runif(n)*1000,0)
)
df1$col4 <- with(df1,factor(paste(col2, col3, sep = '')))
head(df1);length(unique(df1$col4))
str(df1)
varsToUse <- c('col1','col2','col3', 'col4')
smm1 <- sparse.model.matrix(df1$target ~ 0 +., data = df1[,varsToUse])
运行此代码时出错:
x <- parse_formula(smm1$target ~ 0 +., data = smm1[,varsToUse])
x <- parse_formula(df1$target ~ 0 +., data = df1[,varsToUse])
tmp <- tempfile()
write.svmlight(x$labels, x$data, tmp);
readLines(tmp)
有什么建议吗?