我有一个字符id,我想保留在数据中,但不用于训练。当我查看烘焙数据时,我看到我的ID列现在是一个因子,每个值都有一个水平,但值都是NA。
REPREX:
# Make a dataset with a unique <chr> ID
myData <- mtcars %>%
mutate(myID = paste("j", row_number()))
myDataSplit <- initial_split(myData)
class(testing(myDataSplit)$myID) # [1] "character"
# change role of myID from 'predictor' to 'ID'
myRecipe <- recipe(mpg ~., data = training(myDataSplit)) %>%
update_role(myID, new_role="ID")
myTesting <- myRecipe %>%
prep() %>%
bake(testing(myDataSplit))
字符串
myID现在是所有级别的一个因素,但始终不适用
> unique(myTesting$myID)
[1] <NA>
Levels: j1 j10 j13 j15 j16 j17 j19 j21 j22 j23 j24 j25 j26 j27 j28 j29 j3 j30 j32 j4 j5 j6 j7 j8
型
我也试过(不成功):
step_factor2string(myID)
型
和
myRecipe <- recipe(mpg ~., data = training(myDataSplit), **convert_strings = FALSE**)
型
我使用了一个codeflow(),当我调用predict(myworflow,testing(myDataSplit))时,它会自动bake。这似乎可以工作,但是当我调用bake()时,myID发生了什么,这让我觉得我错过了一些重要的东西。谢谢!
1条答案
按热度按时间f0brbegy1#
在这种情况下,您需要为
prep()
使用strings_as_factors
参数:字符串
创建于2023-12-09带有reprex v2.0.2
如果你在现实生活中,你确实希望你的一些预测因素成为因素,你可能必须在食谱之前提前设置这些因素。