
前回は k-NN で予測しました。今回は Naive Bayes で予測してみます。
はじめに discrim パッケージを読み込んでおきます。

モデルを作成します。

ワークフローを作成します。レシピは前回の k-NN で作成したレシピをそのまま使います。

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

チューニングを実行します。

最良パラメータを取り出します。

最良パラメータで最終ワークフローを作成します。

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

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

2, 3, 10行目が正解していますね。
混合行列を作成します。

青枠で囲ったところが正解です。前回の k-NN に比べると正解率は落ちるようです。
正解率を計算します。

正解率は 48.2% でした。
今回は以上です。
次回は
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# discrimパッケージを読み込む
library(discrim)
#
# モデルの作成
nb_mod <- naive_Bayes(
smoothness = tune(),
Laplace = tune()
) |>
set_engine("naivebayes", usekernel = FALSE)
#
# ワークフローの作成
nb_wf <- workflow() |>
add_recipe(rec) |>
add_model(nb_mod)
#
# チューニンググリッドの作成
nb_grid <- grid_regular(
smoothness(range = c(0, 3)),
Laplace(range = c(0, 3))
)
#
# チューニングの実行
nb_tuned <- tune_grid(
nb_wf,
resamples = folds,
grid = nb_grid,
metrics = metric_set(accuracy)
)
#
# 最良パラメータ
nb_params <- select_best(nb_tuned, metric = "accuracy")
nb_params
#
# 最良パラメータで最終ワークフロー
nb_final_wf <- finalize_workflow(nb_wf, nb_params)
#
# トレーニング用のデータで学習
nb_fit <- fit(nb_final_wf, df_train)
#
# テスト用のデータで予測
nb_pred <- predict(nb_fit, new_data = df_test) |>
bind_cols(df_test |> select(obesity))
nb_pred
#
# 予測結果の混合行列
conf_mat(nb_pred, truth = obesity, estimate = .pred_class)
#
# 予測結果の正解率
accuracy(nb_pred, truth = obesity, estimate = .pred_class)
#
(冒頭の画像は、Bing Image Creator で生成しました。プロンプトは Landscape of natural green grass fields with small river running through the field and close up of a white rose flower, under the light start night, photo です。)