【发布时间】:2020-09-18 20:02:13
【问题描述】:
model.matrix 中有一些我不明白的地方。当我输入一个没有截距的二进制变量时,它返回两个级别。
> temp.data <- data.frame('x' = sample(c('A', 'B'), 1000, replace = TRUE))
> temp.data.table <- model.matrix( ~ 0 + x, data = temp.data)
> head(temp.data.table)
xA xB
1 1 0
2 0 1
3 0 1
4 0 1
5 1 0
6 0 1
但是,当我输入另一个二进制级别时,它只会创建 3 列。这是为什么?是什么让函数的行为突然不同?我该如何避免呢?
> temp.data <- data.frame('x' = sample(c('A', 'B'), 1000, replace = TRUE),
+ 'y' = sample(c('J', 'D'), 1000, replace = TRUE))
> temp.data.table <- model.matrix( ~ 0 + x + y, data = temp.data)
> head(temp.data.table)
xA xB yJ
1 0 1 0
2 0 1 1
3 0 1 1
4 0 1 0
5 1 0 1
6 0 1 0
【问题讨论】:
标签: r one-hot-encoding