Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

UCI Machine Learning Repository の Obesity データの分析10 - Random Forest モデルで予測。正解率は、94/0%

www.crosshyou.info

の続きです。今回はランダムフォレストモデルで予測してみます。

まず、モデルを作成します。

ワークフローを作成します。

 

チューニンググリッドを作成します。

 

トレーニング用のデータでチューニングします。

 

最適なパラメータを確認します。

 

最終ワークフローを作成します。

 

トレーニング用データで学習します。

 

テスト用のデータで予測します。

おお~~! さすがランダムフォレストですね。はじめの10行は全問正解です。

 

混合行列を作成します。

Obesity_Type_IIとIIIは全部正解です。

正解率を計算します。

正解率は 94.0% でした。このデータセットは。ツリーモデルと相性がいいようですね。

今回は以上です。

はじめから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# モデルの作成
rf_mod <- rand_forest(
  mtry = tune(),
  trees = 500,
  min_n = tune()
) |> 
  set_engine("ranger", importance = "impurity") |> 
  set_mode("classification")
#
# ワークフローの作成
rf_wf <- workflow() |> 
  add_recipe(rec) |> 
  add_model(rf_mod)
#
# チューニンググリッドの作成
rf_grid <- grid_regular(
  mtry(range = c(1, 4)),
  min_n(range = c(2, 20)),
  levels = 5
)
#
# チューニングの実行
set.seed(123)
rf_tuned <- tune_grid(
  rf_wf,
  resamples = folds,
  grid = rf_grid,
  metrics = metric_set(accuracy)
)
#
# 最適なパラメータの確認
rf_params <- select_best(rf_tuned, metric = "accuracy")
rf_params
#
# 最適なパラメータで最終ワークフローを作成
rf_wf_final <- finalize_workflow(rf_wf, rf_params)
#
# トレーニング用データで学習
set.seed(123)
rf_fit <- fit(rf_wf_final, data = df_train)
#
# テスト用のデータで予測
rf_pred <- predict(rf_fit, new_data = df_test) |> 
  bind_cols(df_test |> select(obesity))
tree_pred
#
# 混合行列を作成
conf_mat(rf_pred, truth = obesity, estimate = .pred_class)
#
# 正解率
accuracy(rf_pred, truth = obesity, estimate = .pred_class)
#

(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは Photograph of landscape, natural green grass field, under the clear blue sky, there are some purple AJISAI and red AJISAI flowers, close up of a yellow AJISAI flower. です。)