
の続きです。
今回は glmnet パッケージを使って、赤ワインと白ワインをロジスティクス回帰で分類する、ということをやってみましょう。
まず、glmnet パッケージを読み込みます。

dfからglmnetで使えるようにマトリックスをつくります。makeX()関数を使います。

colorred, colorwhiteの2つの変数のうち、1つの変数があればよいので、colorredは削除して、colorwhiteの変数名をwhiteに変えましょう。

トレーニング用のインデックスを作成します。

glmnetパッケージの中にbigGlm()関数があります。これはペナルティ無の普通の回帰モデルを推計します。

係数をみてみます。

続いて、テスト用のデータをこのモデルで推計してみます。

実際の値と比べてみましょう。

これはなかなか良い結果だと思います。間違いは7つしかないですね。
正解率を計算します。

99.79%の正解率でした。
赤ワインと白ワインを判別するのは、今回のデータがあれば簡単なのですね。
今回は以上です。
次回は、
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# glmnet の読み込み
library(glmnet)
#
# dfからマトリックスを作成
mtx <- makeX(df)
#
# mtxを整える
mtx <- mtx[ , -1]
colnames(mtx)[1] <- "white"
head(mtx)
#
# トレーニング用のインデックスを作成
set.seed(1212)
idx <- sample(1:nrow(mtx), size = 0.7 * nrow(mtx),
replace = FALSE)
#
# bigGlm()関数でモデル推計
logit_model <- bigGlm(
x = mtx[idx, -1],
y = mtx[idx, 1],
family = "binomial"
)
#
# モデルの係数
coef(logit_model)
#
# テスト用のデータで予測
logit_pred <- predict(logit_model,
newx = mtx[-idx, -1],
type = "response") |>
round()
head(logit_pred)
#
#
# 実際の値との比較
table(logit_pred, mtx[-idx, 1])
#
# 正解率
(483 + 1460) / (483 + 1460 + 3 + 1)
#
(冒頭の画像は Bing Image Creator で生成しました。プロンプトは Fall season, trees with dropping leaves, flowering white Japanese Chrysanthemum flowers, blue sky, Photograph です。