【问题标题】:party package for decision tree in R does not support character data type?R中决策树的派对包不支持字符数据类型?
【发布时间】:2015-06-20 20:53:04
【问题描述】:

如果我的数据框中的一列是数据类型字符,我会收到以下错误。

> 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" 

如何解决这些问题?

【问题讨论】:

  • 将您的字符值转换为因子。 df$Petal.Width &lt;- factor(df$Petal.Width)。您不能真正为任意字符串值建模。您至少需要假设它们是离散/分类变量。
  • @MrFlick ,感谢您的回复。但是转换为因子的麻烦在于,随着因子数量的增加,这些决策树包确实很慢。有没有办法让它们保持数字/连续变量并使用这个包?
  • 您可以将字符值映射到数字并改用numeric 列向量输入。
  • 你试过使用包randomForest吗?
  • 这是一个方法问题。如果您对这些软件包使用的统计方法以及为什么它们在因子数量上的扩展性不佳有疑问,您会在 Cross Validated 上获得更好的运气,因为此类统计讨论是热门话题。

标签: r decision-tree


【解决方案1】:

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

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

同样,给定变量中可能的二元分裂的确定关键取决于尺度。并且character 不是一个有标准方法来评估相关性或分裂的量表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 2017-10-18
    • 2019-12-30
    • 2016-05-18
    • 2014-08-21
    • 2016-04-24
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多