如何设置决策树

时间:2015-04-05 02:45:55

标签: r tree classification decision-tree

我不确定我做错了什么?我正在尝试从我的数据中增加一个决策树。

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

***我怀疑我的信息不正确data = CasinoTree

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

  

as.character(x)出错:         不能强迫类型内置&#39;对于类型&#39;字符&#39;        另外:警告信息:
     1:在model.matrix.default(attr(frame,&#34; terms&#34;),frame)中:        响应出现在右侧并被丢弃     2:在model.matrix.default(attr(frame,&#34; terms&#34;),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(默认〜竞争+ FreeLiquor + RateofReturn,data = casinotree,method =&#34; class&#34;)   is.data.frame(data)中的错误:object&#39; casinotree&#39;找不到

1 个答案:

答案 0 :(得分:0)

我怀疑你在某种程度上与数据框的命名与产生的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))

enter image description here