if (!require(rpart))      install.packages("rpart")
## 要求されたパッケージ rpart をロード中です
if (!require(rpart.plot)) install.packages("rpart.plot")
## 要求されたパッケージ rpart.plot をロード中です
if (!require(DT))         install.packages("DT")
## 要求されたパッケージ DT をロード中です
if (!require(kableExtra)) install.packages("kableExtra")
## 要求されたパッケージ kableExtra をロード中です
d <- read.csv('https://stats.dip.jp/01_ds/data/bike_rental.csv')
library(DT)
datatable(d,options=list(pageLength=0))
datatable(d,options=list(pageLength=2))
COL <- c(rgb(255,   0,   0,  105, max = 255), 
         rgb(  0,   0, 255,  105, max = 255), 
         rgb(  0, 155,   0,  105, max = 255), 
         rgb(100, 100, 100,   55, max = 255)) 
tree <- rpart(レンタル数 ~ 季節+月+祝日+曜日+休日+天気+気温+湿度+風速,data = d, method = 'anova', cp = 0.01)
rpart.plot(tree, type = 5,box.palette =rainbow(10))

tree <- rpart(レンタル数 ~ 季節+月+祝日+曜日+休日+天気+気温+湿度+風速,data = d, method = 'anova', cp = 0.01)
rpart.plot(tree,type =3,box.palette = "Blues", pal.thresh = 0.017)

rpart.rules(tree,cover=T)
printcp(tree)
## 
## Regression tree:
## rpart(formula = レンタル数 ~ 季節 + 月 + 祝日 + 曜日 + 
##     休日 + 天気 + 気温 + 湿度 + 風速, data = d, method = "anova", 
##     cp = 0.01)
## 
## Variables actually used in tree construction:
## [1] 気温 季節 月   湿度 風速
## 
## Root node error: 2739535392/731 = 3747654
## 
## n= 731 
## 
##          CP nsplit rel error  xerror     xstd
## 1  0.390509      0   1.00000 1.00429 0.040470
## 2  0.070302      1   0.60949 0.62768 0.028325
## 3  0.052880      2   0.53919 0.56815 0.027406
## 4  0.022313      3   0.48631 0.51965 0.023082
## 5  0.015319      4   0.46400 0.50020 0.021938
## 6  0.012892      5   0.44868 0.50365 0.022052
## 7  0.012226      6   0.43579 0.49999 0.022054
## 8  0.010671      7   0.42356 0.49545 0.021702
## 9  0.010087      8   0.41289 0.50020 0.021900
## 10 0.010000     10   0.39271 0.49733 0.021777
plotcp(tree)

rpart.plot(tree, branch.type = 5)

tree2 <- prune(tree, cp = 0.1)
rpart.plot(tree2, branch.type = 5)

tree3 <- prune(tree, cp = 0.02)
rpart.plot(tree3, branch.type = 5)

気温が12度より大きくて湿度が69%以下かつ九月より後ろの時にレンタル数が最大になる

a <- read.csv('https://stats.dip.jp/01_ds/data/iris.csv')
library(DT)
datatable(a,options=list(pageLength=0))
datatable(a,options=list(pageLength=5))
tree10 <- rpart(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,data = a, method = 'class', cp = 0.01)
rpart.plot(tree10,type =3,box.palette = "Blues", pal.thresh = 0.017)

rpart.rules(tree10,cover=T)
plotcp(tree10)

tree11 <- prune(tree10, cp = 0.005)
rpart.plot(tree11, branch.type = 5)

a.new <- data.frame(Sepal.Length=4.0,
                    Sepal.Width=3.0,
                    Petal.Length=3.0,
                    Petal.Width=1.0)
rpart.predict(tree10, newdata = a.new)
##   setosa versicolor  virginica
## 1      0  0.9074074 0.09259259

以上のデータより、データから予測されるアイリスの種類は9割の確率でversicolor