【備忘録】機械学習ツールH2O.aiを用いた予測モデルの構築 -予測精度検証編-(7/12更新)
前提:
● 1万レコードのサンプルデータで売上予測モデルを構築する。
● 売上予測モデルのデータソースを作成するために、自動機械学習を強みとする機械学習ツール:H2O.aiを選択した。
● データソースをビジュアライズするために、私が専門とするBIツール:Tableauデスクトップを選択した。
ステップ1:データのインポートと前処理
Python
import h2o
import pandas as pd
from h2o.frame import H2OFrame
# H2Oの初期化
h2o.init()
# データのインポート
data = h2o.import_file("C:/data/sample_superstore.csv")
# Pandasデータフレームに変換
# フィルタリングを正常処理するためPandasフレームに一旦変換
data_df = data.as_data_frame(use_pandas=True)
# 行番号を追加
# ビジュアライズ時のデータソースの紐づけのため
data_df['行番号'] = range(len(data_df))
# 日付文字列を日付形式に変換
data_df['オーダー日'] = pd.to_datetime(data_df['オーダー日'], format='%Y/%m/%d')
# トレーニングデータセットの抽出
# 2021年1月〜2023年12月の3年分でトレーニング
train_df = data_df[(data_df['オーダー日'] >= "2021-01-01") & (data_df['オーダー日'] <= "2023-12-31")]
# テストデータセットの抽出
# 2024年1月〜2024年12月の1年分をテスト
test_df = data_df[(data_df['オーダー日'] >= "2024-01-01") & (data_df['オーダー日'] <= "2024-12-31")]
# トレーニングデータとテストデータをH2Oフレームに変換
# フィルタリングを正常処理したためH2Oフレームに戻す
train_h2o = H2OFrame(train_df)
test_h2o = H2OFrame(test_df)
2.ステップ2:モデルのトレーニングと予測
# 特徴量とターゲットの設定
x = ["オーダー日", "カテゴリ", "地域", "行番号"]
y = "売上"
# AutoMLを使用したモデルのトレーニング
# H2O.aiを使用する一番の理由はこの自動機械学習
from h2o.automl import H2OAutoML
aml = H2OAutoML(max_runtime_secs=600, seed=1234, nfolds=5)
aml.train(x=x, y=y, training_frame=train_h2o)
# 予測の実行
predictions = aml.leader.predict(test_h2o)
# 予測結果に行番号を追加
# ビジュアライズ時のデータソースの紐づけのため
predictions = predictions.cbind(test_h2o["行番号"])
# 予測結果をCSVファイルにエクスポート
h2o.export_file(predictions, path="C:/data/predictions_2024.csv", force=True)
以上