(Bing Image Creator で生成: Closeup of purple iris and pink iris flowers, background is blue sky, photo)
の続きです。
今回はニューラルネットワークとサポートベクターマシーンで分類してみます。
まず、ニューラルネットワークから。nnet パッケージを読み込みます。
nnet() 関数でニューラルネットワークモデルを推定します。
predict() 関数で予測します。
結果を table() 関数で確認します。
正解率は
56%でした。
続いて、サポートベクターマシーンで分類します。
ます、kernlab パッケージを読み込みました。
ksvm() でモデルを推定します。
predict() 関数で df_2testの Lisbon を予測します。
結果を table() 関数でみてみましょう。
正解率は
52% でした。
いままでの予測結果を統合しましょう。
この5つの予測の多数決で最終的な予測を決めます。
結果をみてみます。
正解率は
54% でした。
今回は以上です。
初めから読むには、
です。
今回のコードは以下になります。
#
# nnet パッケージを読み込む
library(nnet)
#
# ニューラルネットワークモデルの生成
nnet_mod <- nnet(as.factor(Lisbon) ~ ., data = df_2train,
size = 3, decay = 0.1)
#
# 予測
nnet_pred <- predict(nnet_mod, df_2test,
type = "class")
#
# 結果
table(nnet_pred, df_2test$Lisbon)
#
# 正解率
(10 + 18) / nrow(df_2test)
#
# kernlab パッケージを読み込む
library(kernlab)
#
# サポートベクターマシーンモデルの生成
set.seed(274)
svm_mod <- ksvm(factor(Lisbon) ~ ., data = df_2train,
cross = 3)
svm_mod
#
# 予測
svm_pred <- predict(svm_mod, df_2test)
#
# 結果
table(svm_pred, df_2test$Lisbon)
#
# 正解率
(3 + 23) / nrow(df_2test)
#
# いままでの予測の統合
predictions <- tibble(
logit = logit_pred,
logit2 = logit_pred2,
tree = pruned_pred,
nnet = nnet_pred,
svm = svm_pred
)
predictions
#
# predictions の多数決
predictions <- predictions |>
mutate(tree = as.numeric(tree) - 1,
nnet = as.numeric(nnet),
svm = as.numeric(svm) - 1)
predictions
final_pred <- rowMeans(predictions) |>
round(0)
final_pred
#
# 最終結果
table(final_pred, df_2test$Lisbon)
#
# 正解率
(10 + 17) / nrow(df_2test)
#