如何将预测值转换为二进制变量并将其保存为CSV

时间:2015-04-08 00:32:04

标签: r

我已经在测试数据上建立了决策树模型,然后用它来预测测试数据集中的值。

dtpredict<-predict(ct1, testdat, type="class")

输出如下:

      1       2       3       4       5       6 
    Class_2 Class_2 Class_6 Class_2 Class_8 Class_2 

我想写一个csv看起来像:

id, Class_1, Class_2, Class_3, Class_4, Class_5, Class_6, Class_7, Class_8, Class_9
1, 0, 1, 0, 0, 0, 0, 0, 0, 0
2, 0, 1, 0, 0, 0, 0, 0, 0, 0
3, 0, 0, 0, 0, 0, 1, 0, 0, 0
4, 0, 1, 0, 0, 0, 0, 0, 0, 0
5, 0, 0, 0, 0, 0, 0, 0, 1, 0
6, 0, 1, 0, 0, 0, 0, 0, 0, 0

2 个答案:

答案 0 :(得分:1)

有一个名为 dummies 的软件包可以做得很好......

install.packages("dummies")
library(dummies)

x <- factor(c("Class_2", "Class_2", "Class_6", "Class_2", "Class_8", "Class_2"),
            levels = paste("Class", 1:9, sep="_"))

dummy(x, drop = FALSE)

     xClass_1 xClass_2 xClass_3 xClass_4 xClass_5 xClass_6 xClass_7 xClass_8 xClass_9
[1,]        0        1        0        0        0        0        0        0        0
[2,]        0        1        0        0        0        0        0        0        0
[3,]        0        0        0        0        0        1        0        0        0
[4,]        0        1        0        0        0        0        0        0        0
[5,]        0        0        0        0        0        0        0        1        0
[6,]        0        1        0        0        0        0        0        0        0

剩下的就是摆脱&#34; x&#34;但对于这样的事情,这不应该太难:

d <- dummy(x,drop = FALSE)
colnames(d) <- sub("x", "", colnames(d))

然后保存到磁盘:

write.csv(d, "somefile.csv", row.names = FALSE)

答案 1 :(得分:0)

呃,010101的逻辑是什么?如果是这样,他们在你的例子中没有多大意义,所有都是1级(与你的例子dtpredict不对应)。如果它们是合乎逻辑的......

# if dtpredict is a factor vector, where the values are the classes
# and the names are the boolean values:
values = as.numeric(as.character(names(dtpredict)))
classes = as.character(dtpredict)
x = data.frame(id=names(classes))
for(class in sort(unique(classes)){
     x[ , class] = as.numeric(sapply(classes, FUN=function(p) p==class])
}
write.csv(x, 'blah.csv')