我使用该函数创建的最后一个类别step_num2factor()
可以正确创建所有级别,但最后一个。它在那里填写了一个 NA。
MWE
test <- tibble(pred = c(0, 1, 2, 3, 4, 5, 8), target = c(0,1,0,1,1,1,0))
打印时看起来像这样:
# A tibble: 7 x 2
pred target
<dbl> <dbl>
1 0 0
2 1 1
3 2 0
4 3 1
5 4 1
6 5 1
7 8 0
执行配方步骤并比较结果
test <- tibble(pred = c(0, 1, 2, 3, 4, 5, 8), target = c(0,1,0,1,1,1,0))
my_levels <- c("zero", "one", "two", "three", "four", "five", "eight")
recipe(target ~ pred, data = test) %>%
step_num2factor(pred, levels = my_levels, transform = function(x) x + 1) %>%
prep(training = test) %>%
bake(new_data = test)
备注:transform 因为一个因子不能有的level 0。(来源)
准备和烘焙后的转换数据集
# A tibble: 7 x 2
pred target
<fct> <dbl>
1 zero 0
2 one 1
3 two 0
4 three 1
5 four 1
6 five 1
7 NA 0
NA不应该在那里。它应该是“八”类。我究竟做错了什么?
备注:我也尝试了“六”,因为我认为该函数可能只接受单词中的值而不是完全随机命名的级别,但事实并非如此。