単純な在庫予測モデルのサンプルコード

2024年6月25日

以下は、単純な在庫予測モデルのサンプルコードです。この例では、時系列データに基づいて自己回帰モデル(Autoregressive Integrated Moving Average, ARIMA)を使用しています。このモデルは、過去のデータから将来の在庫を予測するのに役立ちます。

python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from sklearn.metrics import mean_squared_error

# データの読み込み
# ここでは、過去の在庫データが入ったCSVファイルを想定しています
data = pd.read_csv('inventory_data.csv')

# 日付列をdatetime型に変換
data['Date'] = pd.to_datetime(data['Date'])

# 日付列をインデックスに設定
data.set_index('Date', inplace=True)

# データの可視化
plt.figure(figsize=(10, 6))
plt.plot(data)
plt.title('Inventory Data')
plt.xlabel('Date')
plt.ylabel('Inventory Level')
plt.show()

# ARIMAモデルのパラメータ設定
p = d = q = range(0, 2) # p, d, q の候補を設定
pdq = [(x[0], x[1], x[2]) for x in list(itertools.product(p, d, q))] # すべてのパラメータの組み合わせを作成

# 最適なパラメータの選択
best_param = None
best_aic = float('inf')

for param in pdq:
    try:
        model = ARIMA(data, order=param)
        results = model.fit()
        if results.aic < best_aic:
            best_aic = results.aic
            best_param = param
    except:
        continue

print('Best ARIMA parameter:', best_param)

# モデルの構築
model = ARIMA(data, order=best_param)
results = model.fit()

# 予測
forecast_steps = 30
forecast = results.forecast(steps=forecast_steps)

# 予測結果の可視化
plt.figure(figsize=(10, 6))
plt.plot(data, label='Actual')
plt.plot(pd.date_range(start=data.index[-1], periods=forecast_steps+1, closed='right'), forecast, label='Forecast', linestyle='--')
plt.title('Inventory Forecast')
plt.xlabel('Date')
plt.ylabel('Inventory Level')
plt.legend()
plt.show()

このコードでは、inventory_data.csvという名前のCSVファイルから過去の在庫データを読み込み、ARIMAモデルを使って在庫の未来の値を予測します。最適なARIMAモデルのパラメータは、AIC(赤池情報量基準)を使用して自動的に選択されます。

未分類

Posted by ぼっち