Bing Image Creator で生成: Close up of gentiana scabra flowers, background is wild natural fields, photo
の続きです。
今回は、R の rpart パッケージを使って、決定木(Decision Tree) モデルで予測してみます。rpart パッケージを読み込みます。
rpart.plot パッケージも読み込みます。
rpart() 関数でモデルを作ります。
CP の表を確認します。
この表の xerror の値が一番小さいときの CP が一番いいそうです。
この best_cp でモデルを剪定します。
rpart.plot() 関数でモデルをグラフにします。
けっこう細かい決定木ですね。
predict() 関数で予測します。
df_results にこの予測値も追加します。
決定木モデルでの予測は、同じ値が何個も出てきますね。
予測値と実際の値のグラフを描きます。
そこそこ、あたっている感じですね。
RMSE を計算します。
RMSE は 1018 でした。線形回帰モデルの RMSE は 825、k-Nearest Neighbors は 1060 でしたので、その間ですね。
今回は以上です。
初めから読むには、
です。
今回のコードは以下になります。
#
# 予測モデル3: Decision Treeによる予測
# rpart パッケージの読み込み
library(rpart)
#
# rpart.plot パッケージの読み込み
library(rpart.plot)
#
# rpart() 関数でモデルを生成
set.seed(247)
fit_rpart <- rpart(cnt ~ ., data = df_train,
minsplit = 3, cp = 0)
#
# CP table
head(fit_rpart$cptable)
#
# 最適なCP
minrow <- which.min(fit_rpart$cptable[ , "xerror"])
best_cp <- fit_rpart$cptable[minrow, "CP"]
best_cp
#
# 最適なCPでfit_rpartを剪定
fit_rpart <- prune(fit_rpart, cp = best_cp)
#
# rpart.plot() でグラフ
rpart.plot(fit_rpart, type = 1)
#
# fit_rpart で予測
pred_rpart <- predict(fit_rpart, newdata = df_test)
#
# df_results に追加
df_results <- df_results |>
mutate(rpart = pred_rpart)
df_results
#
# 予測値と実際の値のグラフ
df_results |>
ggplot(aes(x = time)) +
geom_line(aes(y = rpart), color = "red") +
geom_line(aes(y = jissai))
#
# RMSE の計算
rmse_rpart <- sqrt(mean*1
rmse_rpart
#
*1:pred_rpart - df_test$cnt)^2