(Bing Image Creator で生成: Closeup of red Cilvia miniata flowers, blue sky background, photo )
の続きです。
前回まででデータの前処理は終わりましたので、これからは分類にチャレンジしてみます。はじめに、Region が Other の観測データを除いたデータフレームを作成します。
この Region が Lisbon か Oporto かどうかを分類します。
Region が Lisbon なら1、そうでないなら0のダミー変数を作成します。
Region はもう必要ないので除外します。
Lisbon を一番左側にもってきます。
この df_2 をトレーニング用とテスト用にわけます。
テスト用とトレーニング用で、Lisbon の比率に大きな違いがないことを確認します。
トレーニング用のほうは Lisbon の比率は 0.6216で、テスト用のほうは 0.62でした。
ほぼ同じですね。
glm() 関数でロジスティクス回帰モデルを生成します。
このモデルは、有意でない変数が多数含まれていますので、step() 関数で不要な変数を削除します。
predict() 関数をつかってテスト用のデータの予測をします。
table() 関数を使って予測結果をみます。
正解率は、
48% でした。
簡素化したモデルでの予測はどうでしょうか?
正解率は、
56%でした。
ロジスティクス回帰モデルでは、あまりうまく分類はできないようです。
今回は以上です。
次回は
です。
初めから読むには、
です。
今回のコードは以下になります。
#
# Region が Lisbon と Oporto だけのデータフレームを作成
df_2 <- df |>
filter(Region != "Other")
summary(df_2)
#
# Region が Lisbon なら 1, そうでないなら Oporto のダミー変数を作成
df_2 <- df_2 |>
mutate(Lisbon = if_else(Region == "Lisbon", 1, 0))
table(df_2$Lisbon)
#
# Region を削除
df_2 <- df_2 |>
select(-Region)
df_2
#
# Lisbon を一番左にもってくる
df_2 <- df_2 |>
relocate(Lisbon)
df_2
#
# df_2 をトレーニング用とテスト用にわける
set.seed(321)
index <- sample(1:nrow(df_2), 0.6 * nrow(df_2), replace = FALSE)
df_2train <- df_2[index, ]
df_2test <- df_2[-index, ]
#
# df_2train と df_2test の Lisbon の比較
t.test(df_2train$Lisbon, df_2test$Lisbon)
#
# ロジスティクス回帰モデル
logit_mod <- glm(Lisbon ~ (.)^2, data = df_2train,
family = binomial)
summary(logit_mod)
#
# logit_mod を簡素化
logit_mod2 <- step(logit_mod, trace = FALSE)
summary(logit_mod2)
#
# logit_mod で予測
logit_pred <- predict(logit_mod, df_2test,
type = "response") |>
round(0)
#
# 予測結果
table(logit_pred,df_2test$Lisbon)
#
# 正解率
(10 + 14) / length(logit_pred)
#
# logit_mod2 で予測
logit_pred2 <- predict(logit_mod2, df_2test,
type = "response") |>
round(0)
#
# 予測結果
table(logit_pred2, df_2test$Lisbon)
#
# 正解率
(10 + 18) / length(logit_pred2)
#