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

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

UCI Machine Learning Repository の Credit Approval のデータ分析5 - k-Nearest Neighbors でクラシフィケーション

Bing Image Creator で生成: Long view of blue ocean and high cliff, blue sky and white clouds, photo

www.crosshyou.info

の続きです。

今回は、k-Nearest Neighbors でクラシフィケーションをします。

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

fit() 関数でモデルをフィットします。

predict() 関数で予測します。

predict() 関数で、type = "prob" にすると、0 と 1 の確率を返します。

metrics() 関数で予測精度を計算します。

count() 関数で予測値と実際の値の表を作ります。

roc_auc() 関数を使って、ROC曲線のAUCを計算します。

0.894 でした。

最後に roc_curve() 関数と autoplot() 関数で ROC 曲線を描きます。

今回は以上です。

初めから読むには、

www.crosshyou.info

です。

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

#
# k-nearest neighbors
knn_cls_spec <-
  nearest_neighbor(neighbors = 11, weight_func = "triangular") |> 
  set_mode("classification") |> 
  set_engine("kknn")
knn_cls_spec
#
# モデルをフィット fit() 関数
knn_cls_fit <- fit(knn_cls_spec, approved ~ ., data = df_train)
knn_cls_fit
#
# prediction() 関数で予測
knn_cls_pred <-
  bind_cols(
    predict(knn_cls_fit, df_test),
    predict(knn_cls_fit, df_test, type = "prob")
  ) |> 
  mutate(truth = df_test$approved)
knn_cls_pred
#
# 予測精度 metrics()
knn_cls_pred |> 
  metrics(truth, .pred_class)
#
# 表
knn_cls_pred |> 
  count(truth, .pred_class)
#
# ROC
knn_cls_pred |> 
  roc_auc(truth, .pred_0)
#
# ROC 曲線
knn_cls_pred |> 
  roc_curve(truth, .pred_0) |> 
  autoplot()
#