生徒数の増減 Prophet

生徒数の増減

Prophetを使用して、学校に関連する仮想的な問題のデータを生成し、その結果をグラフ化します。

以下の問題を考えてみましょう。

問題:

ある学校の生徒数が次の10年間でどのように変化するか予測してください。

まずデータを生成し、Prophetで予測を行います。

以下はProphetを使用してデータを生成するPythonコードです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import random
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt

# データフレームを作成
data = pd.DataFrame()
data['ds'] = pd.date_range(start='2023-01-01', periods=10, freq='Y')
data['y'] = [500, 520, 540, 550, 560, 570, 580, 590, 600, 610] # 仮想的な生徒数データ
random.shuffle(data['y'] )

# Prophetモデルの初期化
model = Prophet()

# データにモデルを適合
model.fit(data)

# 10年間の予測を作成
future = model.make_future_dataframe(periods=10, freq='Y')
forecast = model.predict(future)

# 予測結果をグラフ化
fig = model.plot(forecast)
plt.xlabel('Year')
plt.ylabel('Number of Students')
plt.title('School Student Enrollment Forecas')
plt.show()

このコードは、10年間の学校の生徒数を予測し、Prophetによって生成された予測結果をグラフ化します。

グラフは年ごとの生徒数の推移を示します。

使用しているデータは仮想的なものであり、実際の学校データではありませんが、Prophetを使ってデータの予測とグラフ化を行う方法を示しています。

ソースコード解説

以下はソースコードの詳細な説明です:

1. import ステートメント:

  • random: データをランダムにシャッフルするためのライブラリ。
  • pandas as pd: データ処理と分析のためのライブラリ。
  • from prophet import Prophet: Facebook Prophetのライブラリをインポートします。
    Prophetは時系列データの予測に使用されます。
  • import matplotlib.pyplot as plt: グラフの描画に使用するMatplotlibのライブラリ。

2. データフレームの作成:

  • pd.DataFrame(): データフレームを作成します。
  • pd.date_range(): 日付の範囲を生成し、’ds’列に格納します。
    ここでは、2023年から10年分のデータを1年ごとに生成しています。
  • data['y']: ‘y’列に仮想的な生徒数データを格納します。
    このデータはランダムにシャッフルされています。

3. Prophetモデルの初期化:

  • Prophet(): Prophetモデルを初期化します。

4. データにモデルを適合:

  • model.fit(data): データをProphetモデルに適合させ、モデルをトレーニングします。

5. 10年間の予測を作成:

  • model.make_future_dataframe(): 未来の日付を含むデータフレームを生成し、’future’に格納します。
    ここでは、10年分のデータを1年ごとに生成しています。
  • model.predict(future): 未来のデータに基づいて予測を行い、’forecast’に格納します。

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

  • model.plot(forecast): 予測結果を可視化し、予測されたトレンド、季節性、不確実性を含むグラフを生成します。
  • plt.xlabel(), plt.ylabel(), plt.title(): グラフの軸ラベルとタイトルを設定します。
  • plt.show(): グラフを表示します。

このソースコードは、Prophetを使用して学校の生徒数を予測し、予測結果を視覚化するための基本的なスクリプトです。

データはランダムにシャッフルされているため、実際の予測ではなく、Prophetの使用方法を示しています。

グラフ解説

以下のグラフは、学校の生徒数の10年間の予測を示しています。

グラフは横軸に年を、縦軸に生徒数を表示しています。

- 青い線と青い領域:

青い線は予測された生徒数のトレンドを示しており、時間の経過とともにどのように変化するかを表しています。
青い領域は予測の不確実性を示しており、この領域内に実際のデータがある可能性が高いです。

- 黒い点:

実際のデータポイントが黒い点で示されており、これらは過去の生徒数データを表しています。

このグラフを通じて、次の10年間で学校の生徒数が増加する傾向にあることが示されています。

青い線が右肩下がりになっており、生徒数が着実に減少していくと予測されています。

また、季節性成分も考慮されており、年ごとの変動が示されています。


ただし、予測には不確実性があり、青い領域が広がっていることから、将来の生徒数には変動がある可能性があることも示唆されています。

このグラフはProphetモデルを使用して生成されたもので、実際の学校のデータに基づいているわけではないことに注意してください。