
の続きです。今回はtidymodelsのワークフローに沿った回帰分析による電子レンジ所有数量の予測をしてみます。はじめは一番簡単な線形回帰モデル、前回までのモデルと同じです。そのあとは、ランダムフォレストなど他のモデルも試してみます。
最初にtidymodelsパッケージの読み込みをします。

initial_split()関数を使ってトレーニング用データとテスト用データに分けます。

recipe()関数を使ってレシピを作成します。

普通の線形回帰では、前処理は文字列型の変数をダミー変数に処理します。
次はモデルを作成します。linear_reg()関数で、エンジンは"lm"です。

レシピとモデルを合体してワークフローを作ります。

ワークフローができたら、fit()関数で学習します。

predict()関数でテスト用のデータで予測します。

実際の値と一緒にしたデータフレームを作ります。

RMSEなどの評価値を算出します。metric()関数で自動的に算出できます。

RMSEは18.4でした。平均して、18.4台くらい誤差がある、ということですね。
次回以降、他のモデルでこの値を下回ることができるかどうかに注目です。
今回は以上です。
次回は
です。
はじめから読むには、
です。
今回のコードは以下になります。
#
# tidymodelsの読み込み
library(tidymodels)
#
#
# トレーニング用のデータとテスト用のデータ(全モデル共通)
set.seed(1234567890)
split <- initial_split(df, prop = 0.8)
train_data <- training(split)
test_data <- testing(split)
#
# レシピを作成(_rec)
lm_rec <- recipe(microwave ~ year + l_mitsudo + conve + single + income,
data = train_data) |>
step_dummy(all_nominal_predictors())
lm_rec
#
# モデルを作成(_mod)
lm_mod <- linear_reg() |>
set_engine("lm")
lm_mod
#
# ワークフローを作成(_wf)
lm_wf <- workflow() |>
add_recipe(lm_rec) |>
add_model(lm_mod)
lm_wf
#
# トレーニング用データで学習(_fit)
lm_fit <- fit(lm_wf, data = train_data)
#
# テスト用のデータで予想(_pred)
lm_pred <- predict(lm_fit, new_data = test_data)
#
# 実際の値と予測値(_result)
lm_result <- test_data |>
select(microwave) |>
bind_cols(lm_pred)
lm_result
#
# 評価(_metric)
lm_metric <- lm_result |>
metrics(truth = microwave, .pred) |>
mutate(model = "Linear_Regression")
lm_metric
#
(冒頭の画像は、Bing Image Creatorで生成しました。プロンプトはNice landscape of a bit old times wild flower garden, photoです。)