【问题标题】:rpart not creating Decision Tree in R, SVM worksrpart 不在 R 中创建决策树,SVM 有效
【发布时间】:2017-09-08 02:36:54
【问题描述】:

我正在尝试为分类创建决策树,但没有创建。相同的数据使用 SVM(训练 == 测试数据)以 0.85 的精度执行,“播放”是目标...

知道我做错了什么吗?这是数据和代码: https://gist.github.com/romeokienzler/c471819cbf156a69f73daf49f8c700c6

外观、温度、湿度、风、玩

晴,热,高,假,无

阳光明媚,炎热,高,真实,不

阴,热,高,假,是

下雨,温和,高,假,是的

下雨,凉爽,正常,假,是的

下雨,凉爽,正常,真实,不

阴,凉爽,正常,真实,是的

晴天,温和,高,假,无

晴天,凉爽,正常,假,是的

下雨,温和,正常,假,是的

晴天,温和,正常,真实,是的

阴,温和,高,真实,是的

阴,热,正常,假,是

下雨,温和,高,真实,不

为了使用 SVM,我对数据进行了编码: https://gist.github.com/romeokienzler/9bfce4182eda3d7662315621462c9cc6

外观、温度、湿度、风、玩

1,1,2,假,假

1,1,2,真,假

2,1,2,FALSE,TRUE

3,2,2,假,真

3,3,1,FALSE,TRUE

3,3,1,真,假

2,3,1,真,真

1,2,2,假,假

1,3,1,FALSE,TRUE

3,2,1,假,真

1,2,1,真,真

2,2,2,真,真

2,1,1,FALSE,TRUE

3,2,2,真,假

这是 SVM 案例:

library(e1071)
df= read.csv("5.tennis_encoded.csv")
attach(df)
x <- subset(df, select=-play)
y <- play
detach(df)
model = svm(x,y,type = "C")
pred = predict(model,x)
truthVector = pred == y
good = length(truthVector[truthVector==TRUE])
bad = length(truthVector[truthVector==FALSE])
good/(good+bad)

[1] 0.8571429

还有这个用于决策树

df= read.csv("5.tennis_encoded.csv")
library(rpart)
model = rpart(play ~ .,method = "class", data=df)
print(model)

1) 根 14 5 真 (0.3571429 0.6428571) *

所以我基本上得到一棵只有根和 0.64% 的游戏概率的树 == 是的

任何想法我做错了什么?

【问题讨论】:

    标签: r machine-learning classification svm decision-tree


    【解决方案1】:

    很可能您传递给算法的数据太少而无法拆分。

    查看 rpart.control 函数了解更多详情

    rpart.control(minsplit = 20, minbucket = round(minsplit/3), cp = 0.01, 
                  maxcompete = 4, maxsurrogate = 5, usesurrogate = 2, xval = 10,
                  surrogatestyle = 0, maxdepth = 30, ...)
    

    如您所见,最小拆分大小为 20。

    如果你

    model = rpart(play ~ .,method = "class", data=df, control= rpart.control(minsplit=2))
    

    你应该得到更多的分裂

    【讨论】:

      猜你喜欢
      • 2013-02-09
      • 2021-05-30
      • 2014-05-09
      • 2015-07-01
      • 2015-01-08
      • 2020-10-05
      • 2014-12-11
      • 2016-07-24
      • 2015-06-28
      相关资源
      最近更新 更多