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

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

UCI Machine Learning Repository の Obesity データの分析8 - Quadratic Discriminant Analysis で分類。正解率は 56.4%

www.crosshyou.info

の続きです。今回は、Quadratic Discriminant Analysis で分類してみたいと思います。

モデルを作成します。discrim_quad() でエンジンは MASS です。

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

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

あれれ、エラーになってしまいました。説明変数の数が多すぎるとなるようです。

なので、QDA専用のレシピを作成します。PCAで説明変数の数を減らします。

num_comp = 5 として5個に減らしました。

再度、ワークフローを作成します。書き忘れましたが、QDAはハイパーパラメータは無いです。

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

今度はエラーが出ません。

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

2, 3 行目しか正解していないですね。あまり成績はよくない感じです。

混合行列を作成します。conf_mat() 関数を使います。

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

正解率は 56.4% でした。

今回は以上です。

次回は

www.crosshyou.info

です。

 

はじめから読むには、

www.crosshyou.info

です。

 

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

#
# モデルの作成
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 です。)