売上予測 Prophet

売上予測

売上予測の例題として、ある小売店舗の過去の売上データを使用して予測を行います。

以下のデータを使用して、Prophetを使って売上予測を行い、結果をグラフ化します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
from fbprophet import Prophet

# データの定義
data = {
'ds': ['2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01', '2022-05-01', '2022-06-01', '2022-07-01', '2022-08-01', '2022-09-01', '2022-10-01', '2022-11-01', '2022-12-01'],
'y': [100, 120, 130, 110, 150, 140, 160, 180, 200, 210, 190, 220]
}

# Prophet用のデータフレームに変換
df = pd.DataFrame(data)
df['ds'] = pd.to_datetime(df['ds'])

# モデルの作成と予測
model = Prophet()
model.fit(df)
future = model.make_future_dataframe(periods=12, freq='M')
forecast = model.predict(future)

# 予測結果の表示
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(12))

上記のコードでは、データをPythonの辞書形式で定義し、Prophet用のデータフレームに変換しています。

その後、Prophetモデルを作成し、将来の12ヶ月間の売上を予測しています。

予測結果をグラフ化するために、以下のPythonコードを使用します。

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt

# 予測結果のグラフ化
fig = model.plot(forecast)
plt.xlabel('Date')
plt.ylabel('Sales')
plt.title('Sales Forecast')
plt.show()

上記のコードでは、Prophetによる予測結果をグラフ化しています。

x軸には日付、y軸には売上が表示されます。

以上のコードを実行することで、売上予測の例題をProphetで解き、結果を分かりやすくグラフ化することができます。

コード解説

以下にソースコードの各部分の詳細を説明します。

1. ライブラリのインポート:

1
2
3
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt

必要なライブラリをインポートしています。

pandasはデータフレームの操作に使用され、Prophetは予測モデルの作成と予測を行うために使用されます。

matplotlib.pyplotはグラフの表示に使用されます。

2. データの定義:

1
2
3
4
data = {
'ds': ['2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01', '2022-05-01', '2022-06-01', '2022-07-01', '2022-08-01', '2022-09-01', '2022-10-01', '2022-11-01', '2022-12-01'],
'y': [100, 120, 130, 110, 150, 140, 160, 180, 200, 210, 190, 220]
}

予測に使用する売上データを定義しています。

dsは日付を、yは対応する売上を表しています。

3. Prophet用のデータフレームに変換:

1
2
df = pd.DataFrame(data)
df['ds'] = pd.to_datetime(df['ds'])

データをProphet用のデータフレームに変換しています。

pd.DataFrame()を使用して辞書形式のデータをデータフレームに変換し、pd.to_datetime()を使用して日付の列を日付型に変換しています。

4. モデルの作成と予測:

1
2
3
4
model = Prophet()
model.fit(df)
future = model.make_future_dataframe(periods=12, freq='M')
forecast = model.predict(future)

Prophetモデルを作成し、過去のデータを使用してモデルを学習させます。

make_future_dataframe()を使用して将来の日付を含むデータフレームを作成し、predict()を使用して予測を行います。

5. 予測結果の表示:

1
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail(12))

予測結果を表示します。

[['ds', 'yhat', 'yhat_lower', 'yhat_upper']]を使用して、日付と予測された売上、下限値、上限値の列を表示します。

6. 予測結果のグラフ化:

1
2
3
4
5
fig = model.plot(forecast)
plt.xlabel('Date')
plt.ylabel('Sales')
plt.title('Sales Forecast')
plt.show()

予測結果をグラフ化して表示します。

model.plot()を使用して予測結果をグラフ化し、plt.xlabel()plt.ylabel()で軸のラベルを設定し、plt.title()でグラフのタイトルを設定します。

最後にplt.show()でグラフを表示します。

以上が、売上予測を行い、結果を表示およびグラフ化するためのソースコードの詳細な説明です。

結果解説

実行結果は以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
           ds        yhat  yhat_lower  yhat_upper
12 2022-12-31 228.962089 213.866024 242.519432
13 2023-01-31 239.914274 224.889105 254.237392
14 2023-02-28 249.806570 234.338750 264.336614
15 2023-03-31 260.758755 246.001839 275.548391
16 2023-04-30 271.357643 256.023975 286.257924
17 2023-05-31 282.309828 268.069062 297.171988
18 2023-06-30 292.908717 278.309079 307.197057
19 2023-07-31 303.860902 289.085905 318.430346
20 2023-08-31 314.813087 300.655728 329.808028
21 2023-09-30 325.411975 309.834843 339.653120
22 2023-10-31 336.364160 321.595208 352.081106
23 2023-11-30 346.963049 331.431253 362.452297

上記の結果は、将来の12ヶ月間の売上予測を示しています。

各行は予測された月ごとのデータを表しており、以下の列が含まれています。

  • ds: 予測された日付
  • yhat: 予測された売上の値
  • yhat_lower: 予測された売上の下限値
  • yhat_upper: 予測された売上の上限値

予測結果をグラフ化すると、以下のようなグラフが表示されます。

このグラフでは、x軸には日付が表示され、y軸には売上が表示されています。

青い線は予測された売上の値を表しており、水色の領域は予測の不確かさを示しています。

具体的には、水色の領域は予測された売上の下限値と上限値の範囲を表しています。

このように、Prophetを使用して売上予測を行うと、将来の売上の傾向や予測の不確かさを把握することができます。