【问题标题】:How to Set up A Decision Tree如何建立决策树
【发布时间】:2015-06-09 19:22:27
【问题描述】:

我不确定自己做错了什么?我正在尝试从我的数据中生成决策树。

CasinoTree <- rpart(Default ~ Competition + FreeLiquor + RateofReturn + 
                                 Default, data = CasinoTree, method = class)

***我怀疑我的信息不正确,上面写着data = CasinoTree

我尝试这个时得到的信息是.....

as.character(x) 中的错误: 无法将类型“内置”强制为“字符”类型的向量 另外:警告消息:
1:在 model.matrix.default(attr(frame, "terms"), frame) 中: 响应出现在右侧并被删除
2:在 model.matrix.default(attr(frame, "terms"), frame) 中: model.matrix 中第 4 项的问题:未分配任何列

我的数据在下面。

    Competition FreeLiquor  RateofReturn    Default
1   Yes Yes High    No
2   Yes No  Low Yes
3   Yes Yes Low Yes
4   Yes Yes High    No
5   Yes No  Low Yes
6   Yes Yes Low No
7   Yes Yes High    No
8   Yes No  High    No
9   Yes No  Low Yes
10  Yes No  High    Yes
11  Yes No  Low Yes
12  Yes No  Low Yes
13  Yes No  Low Yes
14  No  No  Low Yes
15  No  No  High    No
16  No  No  Low Yes
17  No  No  High    No
18  No  Yes Low No
19  No  No  Low No
20  No  Yes High    No
21  No  No  High    No
22  No  No  High    No
23  No  No  Low No
24  No  Yes High    No
25  No  Yes Low Yes

我刚试了一下,收到了这个错误信息

rpart(默认 ~ Competition + FreeLiquor + RateofReturn, data = Casinotree, method = "class") is.data.frame(data) 中的错误:找不到对象“casinotree”

【问题讨论】:

  • 第一个警告消息说Default 在您的公式的左轴和右轴中...这是故意的吗?另外你需要引用"class"
  • 重新,您的编辑... R 区分大小写。首先是CasinoTree,然后是casinotree
  • 我是这方面的真正新手。你能解释一下lhs和rhs吗?我的意图是让“默认”成为结果。所以公式是 'Default ~ Competition + FreeLiquor + Rate of Return' 。我的最新编辑包括以下内容:rpart(Default ~ Competition + FreeLiquor + RateofReturn, data = Casinotree, method = "class") is.data.frame(data) 中的错误:找不到对象“casinotree”。我该怎么办?
  • 我添加了“类”。你能告诉我我是否列出了 data = 的正确信息吗?

标签: r tree classification decision-tree


【解决方案1】:

我怀疑您对数据框的命名与生成的 rpart 对象(上面都称为 CasinoTree)和响应变量(也作为回归变量之一出现)感到困惑。可能一些数据准备也不正确,这很难从您的问题描述中看出。如果避免了这些问题(如下所示),一切都会顺利进行。

首先,我读取数据框并将其命名为CasinoData

CasinoData <- read.table(textConnection('Competition FreeLiquor RateofReturn    Default
1   Yes Yes High    No
2   Yes No  Low Yes
3   Yes Yes Low Yes
4   Yes Yes High    No
5   Yes No  Low Yes
6   Yes Yes Low No
7   Yes Yes High    No
8   Yes No  High    No
9   Yes No  Low Yes
10  Yes No  High    Yes
11  Yes No  Low Yes
12  Yes No  Low Yes
13  Yes No  Low Yes
14  No  No  Low Yes
15  No  No  High    No
16  No  No  Low Yes
17  No  No  High    No
18  No  Yes Low No
19  No  No  Low No
20  No  Yes High    No
21  No  No  High    No
22  No  No  High    No
23  No  No  Low No
24  No  Yes High    No
25  No  Yes Low Yes'))

这似乎运作良好:

summary(CasinoData)

## Competition FreeLiquor RateofReturn Default 
## No :12      No :16     High:11      No :14  
## Yes:13      Yes: 9     Low :14      Yes:11  

那么CasinoTree可以用rpart()创建:

library("rpart")
CasinoTree <- rpart(Default ~ Competition + FreeLiquor + RateofReturn,
  data = CasinoData)

打印出来看起来很合理:

CasinoTree

## n= 25 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
## 1) root 25 11 No (0.56000000 0.44000000)  
##   2) RateofReturn=High 11  1 No (0.90909091 0.09090909) *
##   3) RateofReturn=Low 14  4 Yes (0.28571429 0.71428571) *

或绘图(使用partykit 包的增强绘图):

plot(partykit::as.party(CasinoTree))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 2021-03-02
    • 2019-10-02
    • 2021-04-22
    • 2018-12-20
    • 2014-03-14
    • 2021-09-25
    相关资源
    最近更新 更多