
の続きです。今回は、Quadratic Discriminant Analysis で分類してみたいと思います。
モデルを作成します。discrim_quad() でエンジンは MASS です。

次はワークフローの作成です。

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

あれれ、エラーになってしまいました。説明変数の数が多すぎるとなるようです。
なので、QDA専用のレシピを作成します。PCAで説明変数の数を減らします。

num_comp = 5 として5個に減らしました。
再度、ワークフローを作成します。書き忘れましたが、QDAはハイパーパラメータは無いです。

改めて、トレーニング用のデータで学習します。

今度はエラーが出ません。
テスト用のデータで予測します。

2, 3 行目しか正解していないですね。あまり成績はよくない感じです。
混合行列を作成します。conf_mat() 関数を使います。

正解率を accuracy() 関数で計算します。

正解率は 56.4% でした。
今回は以上です。
次回は
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# モデルの作成
qda_mod <- discrim_quad() |>
set_engine("MASS")
#
# ワークフローの作成
qda_wf <- workflow() |>
add_recipe(rec) |>
add_model(qda_mod)
#
# トレーニング用のデータで学習
qda_fit <- fit(qda_wf, data = df_train)
#
# QDA用のレシピを用意する
qda_rec <- recipe(obesity ~ ., data = df_train) |>
step_dummy(all_nominal_predictors()) |>
step_normalize(all_predictors()) |>
step_zv() |>
step_pca(all_predictors(), num_comp = 5)
#
# ワークフローの再作成
qda_wf2 <- workflow() |>
add_recipe(qda_rec) |>
add_model(qda_mod)
#
# トレーニング用のデータで再学習
qda_fit2 <- fit(qda_wf2, data = df_train)
#
# テスト用のデータで予測
qda_pred <- predict(qda_fit2, new_data = df_test) |>
bind_cols(df_test |> select(obesity))
qda_pred
#
# 混合行列を作成
conf_mat(qda_pred, truth = obesity, estimate = .pred_class)
#
# 正解率
accuracy(qda_pred, truth = obesity, estimate = .pred_class)
#
(冒頭の画像は Bing Image Creator で生成しました。プロンプトは Natural green grass field landscape, under the blue sky, small red flowers are there, close up of an yellow TANPOPO flower, photo です。)