2015-04-05 132 views
1

我不确定我做错了什么?我试图从我的数据中发展出一个决策树。如何设置决策树

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

***我怀疑我有不正确的信息在那里说:data = CasinoTree

消息我得到的,当我尝试这是.....在as.character

错误(x): 不能强制类型'内置'到类型'字符'的向量 另外:警告消息:
1:在model.matrix.default(attr(frame,“terms”),frame)中: 反应出现d在右侧并且被丢弃
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 

我只是尝试这样做,在is.data.frame接收此错误消息

rpart包(默认〜竞争+ FreeLiquor + RateofReturn,数据= casinotree,方法= “类”) 错误(数据):对象“casinotree”未找到

+0

可能重复的[这是什么的rpart包在as.character“错误(X):不能强制类型'内建'类型'字符'的消息意味着什么?](http://stackoverflow.com/questions/2337018/what-does-the-rpart-error-in-as-characterx-cannot-coerce- type-builtin-to) – user20650 2015-04-05 03:17:44

+0

第一条警告信息说'Default'在你的lhs和rhs中mula ...是这个意图吗?您还需要引用''class'' – user20650 2015-04-05 03:18:16

+1

re,您的编辑... R区分大小写。首先你有'CasinoTree'然后'casinotree' – user20650 2015-04-05 03:21:48

回答

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