Rで何かをしたり、読書をするブログ

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

UCI Machine Learning Repository の Bike Sharing のデータの分析2 - R で予測をするための前処理をする

Bing Image Creator で生成: Close up of Wisteria of Flowers, background is natural green forests and blue sky, photo

www.crosshyou.info

の続きです。

前回は CSV ファイルのデータを R に読み込みました。今回はそのデータを予測しやすいように、データを整えます。

まず、dteday 変数のかわりに、1, 2, 3, ... のインデックスを生成します。

次に、temp, atemp, hum, windspeed, t を最小値が 0, 最大値が 1 になるように標準化します。

これらの変数のサマリーを見てみましょう。

どの変数も最小値が 0, 最大値が 1 になっていることがわかります。

次は、cnt を一番左にもってきます。

このようなデータフレームになりました。

そうしたら、このデータフレームをトレーニング用とテスト用にわけます。

df_train がトレーニング用のデータフレームで、df_test がテスト用のデータフレームです。

この二つのデータフレームの cnt に大きな違いが無いことを確認します。

df_train のほうの cnt の平均値は 4523 で、df_test のほうの平均は 4459 です。

p-value が0.6929 と 0.05 よりもずっと大きく、この二つの平均値の差の 95% 信頼区間は、-252 ~ 379 と 0 を含んでいます。なので、df_train の cnt とdf_test の cnt では統計的に有意な違いはありません。

今回は以上です。

次回は、

www.crosshyou.info

です。

初めから読むには、

www.crosshyou.info

です。

今回のコードは以下になります。

#
# dteday のかわりに 1, 2, 3... のインデックスにする
df <- df |> 
  mutate(t = 1:nrow(df)) |> 
  select(-dteday)
#
# temp, atemp, hum, windspeed, t を標準化する
df <- df |> 
  mutate(
    temp = (temp - min(temp)) / (max(temp) - min(temp)),
    atemp = (atemp - min(atemp)) / (max(atemp) - min(atemp)),
    hum = (hum - min(hum)) / (max(hum) - min(hum)),
    windspeed = (windspeed - min(windspeed)) / (max(windspeed) - min(windspeed)),
    t = (t - min(t)) / (max(t) - min(t))
  )
#
# 標準化した変数のサマリー
df |> 
  select(temp, atemp, hum, windspeed, t) |> 
  summary()
#
# cnt を一番左にもってくる
df <- df |> 
  relocate(cnt)
glimpse(df)
#
# df をトレーニング用とテスト用に分ける
set.seed(123)
index <- sample(1:nrow(df), nrow(df) * 0.7, replace = FALSE)
df_train <- df[index, ]
df_test <- df[-index, ]
#
# df_train と df_test の cnt の比較
t.test(df_train$cnt, df_test$cnt)
#