gpt4 book ai didi

R:ada:如何在具有分类描述符的数据帧上使用对?

转载 作者:行者123 更新时间:2023-11-30 09:13:27 25 4
gpt4 key购买 nike

我使用 ada 包进行分类,其中描述符变量为categoricnumeric。这会导致调用pairs函数时出现问题。下面是一个说明我的问题的示例:

require(rpart)
require(ada)

data(car90, package = "rpart")
target = "Country"
input = setdiff(names(car90), target)

# ada only works with two distinct responses
car90 = car90[car90$Country %in% c("USA", "Japan/USA"), ]

# remove surplus factor levels
car90$Country = as.character(car90$Country)

adaCar90 = ada(car90[, input], car90[, target])
pairs(adaCar90, car90[, input], vars = 32:33)

# Error in pairs.default(as.matrix(rbind(train.data, test.x))[, vars],
# lower.panel = panel.low, : non-numeric argument to 'pairs'

使用pairs 函数的vars 参数仅选择数字 描述符似乎无法解决问题。有谁知道我该如何解决这个问题?

干杯。

最佳答案

看起来 ada 包的维护者没有预料到您的具体用例。 ada:::pairs.ada 的最后一行内容为:

pairs(as.matrix(rbind(train.data, test.x))[, vars], lower.panel = panel.low, 
upper.panel = panel.up)

问题出在 [, vars] 的放置位置。该代码将 train.datatest.x 绑定(bind)在一起,然后将整个事物转换为矩阵,然后是子集。由于您的 train.data 包含一堆非数字列,因此 as.matrix 返回一个字符矩阵。如果将最后一行更改为:

pairs(as.matrix(rbind(train.data, test.x)[, vars]), lower.panel = panel.low, 
upper.panel = panel.up)

然后 as.matrix 仅在包含数值数据的子集上调用,并且该函数有效。

编辑

我认为我上面建议的是一个很好的长期解决方案,但可能有一个更简单的短期解决方案:仅传递图表所需的训练数据列,而不是使用 vars 选项。这样,只有数字数据会传递到最后一行代码。这可能会让您获得图表,而无需破解该函数。

关于R:ada:如何在具有分类描述符的数据帧上使用对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000653/

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