(Bing Image Creator で生成: プロンプト: Close up of red Gladiolus flowers, background is blue sky, photo.)
の続きです。
前回までで、データセットの調整は終わりました。今回からはいよいよモデルを作成して予測する作業に入ります。
データフレーム、df をトレーニング用とテスト用に分けます。
df_train と df_test の healthy, (これが被説明変数です) の比率に大きな違いが無いことを確認します。
p-value = 0.2185 となりました。0.05 よりも大きな値なので大丈夫です。
一番初めの予測方法として、デタラメ予測をしてみます。df_train の healthy の 1, 0 の割合が df_test でも適用される、と仮定してその割合で、デタラメに 1, 0 を割り振る、ということです。
結果をみてみます。
正解数は、18 + 7 = 25 です。全部で69個のデータがありますから、正解率は36%です。
だいぶ低いですね。
この一連の作業を1000回繰り返して、デタラメ予測の平均正解率を調べてみます。
1000回のデタラメ予測の平均正解率は、51%でした。
ヒストグラムを見てみます。
こうしてヒストグラムを見てみると、はじめに実行したデタラメ予測の平均正解率の36%はかなり悪い時の結果だったことがわかりますね。
95%の信頼区間を求めます。
39%から62%です。
今回は、デタラメ予測で正解率がどのくらいかを調べました。平均で51%の正解率でした。95%の信頼区間は39%から62%でした。
次回以降の予測モデルでは、62%以上の正解率を得ることが目標になりますね。
今回は以上です。
次回は
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# トレーニング用とテスト用に分ける
set.seed(517)
index <- sample(1:nrow(df), nrow(df) * 0.8, replace = FALSE)
df_train <- df[index, ]
df_test <- df[-index, ]
#
# df_train, df_test の health
t.test(df_train$healthy, df_test$healthy)
#
# df_train の healthy の割合
mean(df_train$healthy)
#
# デタラメ予測
set.seed(1234567)
detarame <- sample(c(0, 1), size = nrow(df_test), replace = TRUE,
prob = c(0.634, 0.366))
#
# デタラメ予測の結果
table(detarame, df_test$healthy)
#
# 正解率
(18 + 7) / (18 + 7 + 24 + 20)
#
# 1000個の正解率を入れる箱を作る
kekka <- numeric(1000)
#
# 1000回繰り返す
for (i in 1:1000) {
set.seed(i)
detarame <- sample(c(0, 1), size = nrow(df_test), replace = TRUE,
prob = c(0.634, 0.366))
tbl <- table(detarame, df_test$healthy)
kekka[i] <- (tbl[1, 1] + tbl[2, 2]) / nrow(df_test)
}
# 1000回の平均値
mean(kekka)
#
# ヒストグラム
tibble(kekka) |>
ggplot(aes(x = kekka)) +
geom_histogram(color = "white",
binwidth = 0.025)
#
# 95%の信頼区間
quantile(kekka, c(0.025, 0.975))
#