gpt4 book ai didi

r - 当其中一些特征是因子时,如何预处理特征?

转载 作者:行者123 更新时间:2023-12-02 06:14:57 25 4
gpt4 key购买 nike

我的问题与this one有关使用 Caret 包时关于分类数据(R 术语中的因子)。我从链接的帖子中了解到,如果您使用“公式界面”,某些功能可能会成为因素,并且培训会正常进行。我的问题是如何使用 preProcess() 函数缩放数据?如果我尝试在包含某些列作为因子的数据框中执行此操作,则会收到此错误消息:

Error in preProcess.default(etitanic, method = c("center", "scale")) : 
all columns of x must be numeric

请参阅此处的一些示例代码:

library(earth)
data(etitanic)

a <- preProcess(etitanic, method=c("center", "scale"))
b <- predict(etitanic, a)

谢谢。

最佳答案

这与您链接到的帖子确实是同一个问题。 preProcess 仅适用于数字数据,您可以:

> str(etitanic)
'data.frame': 1046 obs. of 6 variables:
$ pclass : Factor w/ 3 levels "1st","2nd","3rd": 1 1 1 1 1 1 1 1 1 1 ...
$ survived: int 1 1 0 0 0 1 1 0 1 0 ...
$ sex : Factor w/ 2 levels "female","male": 1 2 1 2 1 2 1 2 1 2 ...
$ age : num 29 0.917 2 30 25 ...
$ sibsp : int 0 1 1 1 1 0 1 0 2 0 ...
$ parch : int 0 2 2 2 2 0 0 0 0 0 ...

您无法按原样居中和缩放 pclasssex,因此需要将它们转换为虚拟变量。您可以使用 model.matrix 或插入符号的 dummyVars 来执行此操作:

 > new <- model.matrix(survived ~ . - 1, data = etitanic)
> colnames(new)
[1] "pclass1st" "pclass2nd" "pclass3rd" "sexmale" "age"
[6] "sibsp" "parch"

-1 消除了拦截。现在您可以在此对象上运行 preProcess

顺便说一句,使 preProcess 忽略非数字数据在我的“待办事项”列表中,但对于不注意的人来说可能会导致错误。

最大

关于r - 当其中一些特征是因子时,如何预处理特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com