如果我的数据框中的列之一是数据类型字符,则会出现以下错误。

> library("party")
> r2 <- ctree(Sepal.Length ~ .,data=df)
Error in trafo(data = data, numeric_trafo = numeric_trafo, factor_trafo = factor_trafo,  :
  data class character is not supported
> plot(r2)
> sapply(df,class)
Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species
    "factor"     "factor"     "factor"  "character"     "factor"

有时,我也会收到此错误
 Error in match.arg(type) :
  'arg' should be one of “response”, “node”, “prob” >
> sapply(df,class)
          AGE        GENDER          STAY      GRADE          XYNS        CHARGE
    "integer"     "integer"      "factor"     "integer"     "integer"     "integer"

我该如何解决这些问题?

最佳答案

响应变量和所有解释变量的尺度对于 CTree 算法的两个方面很重要:(1)在每个节点中进行的关联测试以确定应该使用哪个变量进行 split 。 (2) 在给定的解释变量中选择最佳分割点。

关联测试总是捕获响应与每个解释变量之间的“相关性”或“缺乏独立性”。相关性度量的类型取决于所涉及变量的规模(请参阅交叉验证上的这篇文章:https://stats.stackexchange.com/questions/144143)。变量可以是数字(或整数)、无序分类(即因子)、有序分类或删失(Surv 对象)。为数据框中的给定变量选择合适的变量类型对于从树中获得有意义的结果至关重要。

类似地,确定给定变量中可能的二元 split 关键取决于尺度。并且 character 不是一个衡量相关性或 split 的标准方法的量表。

关于r - R中决策树的party包不支持字符数据类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29641015/

10-12 22:14
查看更多