对变量在行中编码的数据进行建模

时间:2016-01-06 22:30:36

标签: r machine-learning modeling training-data

假设您有一个训练数据集,如下所示:

User_ID Screen_ID Age
1          4       1
2          7       0
3          9       1
3          11      1
.          .       .
.          .       .
.          .       .

我有一个与上面相同格式的测试集,没有Age的值。我想在我的模型中使用Screens_ID作为自变量。我是否必须转置数据集,以便唯一的Screen_ID为列,如下所示:

           Screen ID
User ID       4 7  9  11 . . .
1             1  0  0  0
2             0  1  0  0
3             0  0  1  1

或者我可以使用第一个表格中的格式来建模这些数据。我问的原因是转置这些数据会占用太多内存。

1 个答案:

答案 0 :(得分:0)

我想你想在这里创建虚拟变量。您可以使用caret执行此操作。

例如,获取与您类似的数据

a=as.data.frame(matrix(c(1,2,3,3,4,9,10,11,12,13),ncol=2))

会给出

>a
  V1 V2
1  1  9
2  2 10
3  3 11
4  3 12
5  4 13

在此

上使用插入符号的dummyVar方法
library(caret)
to_change=as.factor(a$V2)
to_change=as.data.frame(to_change)
dummies <- dummyVars( ~ ., data = to_change)
dummy_vars=as.data.frame(predict(dummies, newdata = to_change))

pre_final=cbind(V1=a[,1],dummy_vars)

通过用户ID或在我的案例V1中汇总这个,你得到你的需求。数据

df= aggregate(.~V1, data=pre_final, sum, na.rm=TRUE)

给出

  V1 to_change.9 to_change.10 to_change.11 to_change.12 to_change.13 
1  1           1            0            0            0            0            
2  2           0            1            0            0            0            
3  3           0            0            1            1            0            
4  4           0            0            0            0            1