我试图为分类创建一个决策树,但是它没有被创建。同样的数据以0.85的精度使用支持向量机(训练==测试数据),“播放”是目标。
知道我做错什么了吗?以下是数据和代码:https://gist.github.com/romeokienzler/c471819cbf156a69f73daf49f8c700c6
展望,温度,湿度,刮风,玩耍 阳光,热,高,假,不 阳光,热,高,真,不 阴天,热,高,假,是的 下雨,温和,高,假,是的 下雨,凉爽,正常,假的,是的 阴雨,凉爽,正常,真实,不 阴沉,酷,正常,真的,是的 阳光,温和,高,假,不 阳光,凉爽,正常,虚假,是的 下雨,温和,正常,假,是的 阳光,温和,正常,真实,是的 阴,温和,高,真的,是的 阴天,热,正常,假,是的 雨,轻,高,真,不
对于使用支持向量机,我对数据进行了编码:https://gist.github.com/romeokienzler/9bfce4182eda3d7662315621462c9cc6
展望,温度,湿度,刮风,玩耍 1,1,2,假,假 1,1,2,真,假 2,1,2,假,真 3,2,2,假,真 3,3,1,假,真 3,3,1,真,假 2,3,1,真,真 1,2,2,假,假 1,3,1,假,真 3,2,1,假,真 1,2,1,真,真 2,2,2,真,真 2,1,1,假,真 3,2,2,真,假
这就是支持向量机的情况:
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%
知道我做错什么了吗?
发布于 2017-04-12 11:25:39
最有可能的情况是,您传递给算法的数据太少,无法拆分。
有关更多细节,请查看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))
你应该得到更多的分裂
https://stackoverflow.com/questions/43367413
复制相似问题