Prophet を使用して時系列データ結果の予測を実現し、予測データの年間傾向と月次値を分解します

パート 1: 預言者の紹介

以下のように、chatgpt によるプラグインの説明のセクションを選択してください。
Prophet (Prophet) は、Facebook によって開発されたオープンソースの時系列分析ツールであり、時系列データを予測するためのシンプルで強力なフレームワークを提供することを目的としています。Prophet の設計目標は、時系列分析の信頼性を高め、使いやすくし、ビジネス、金融、天然資源、社会動向などのさまざまな種類の時系列データに適用できるようにすることです。

Prophet の主な機能と利点は次のとおりです。

季節と休日の影響の自動検出: Prophet は、年間の季節性、週ごとの季節性、特定の休日など、データ内の季節と休日の影響を自動的に検出してモデル化できます。

欠損データや外れ値を処理できる: Prophet は欠損データや外れ値が存在する場合でもモデル化できるため、データの前処理の複雑さが軽減されます。

解釈可能性: Prophet によって生成されたモデルは解釈可能であり、分解されたコンポーネントを分析することで、傾向、季節性、休日の影響が予測に与える影響を理解できます。

柔軟性: ユーザーは、実際の状況に応じてカスタムの季節効果や休日効果を追加することで、モデルをさらに改善できます。

多変量予測のサポート: Prophet は多変量時系列データの予測をサポートしており、ユーザーは必要に応じて他の影響要因を追加できます。

使いやすさ: Prophet の API はデザインがフレンドリーで使いやすく、パラメーターの調整をあまり必要としません。

スケーラビリティ: Prophet は Stan 確率的プログラミング言語に基づいて構築されているため、パラメーターを調整してより複雑なモデリングと予測のニーズを実現できます。

つまり、Prophet は、特に時系列分析の分野に詳しくないユーザーにとって、時系列分析のための強力なツールです。季節性と休日の影響の自動検出と解釈可能性を備えており、ユーザーは時系列データの傾向と変化をよりよく理解し、予測できるようになります。

その2:Prophetのインストール方法

Prophet のインストールは非常に簡単です。次の手順に従って、Python 環境に Prophet をインストールできます。

ターミナルまたはコマンド プロンプトを開きます。

次のコマンドを使用して、pip で Prophet パッケージをインストールします。

pip install pystan==2.19.1.1
pip install prophet

上記のインストール手順は、システムや環境によって若干異なる場合があることに注意してください。インストール中に問題が発生した場合は、Prophet の公式ドキュメントまたはコミュニティ サポートを確認してください。

インストールしたら、Prophet を Python にインポートし、時系列分析と予測に使用し始めることができます。例えば:

from prophet import Prophet

Prophet をインポートして使用する前に、必要な依存関係がインストールされており、Python 環境が正しく構成されていることを確認してください。

ステップ 3: 予測を立てる

完全なコードは次のとおりです。

import numpy as np
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt
# 示例数据,替换为您的实际数据
data =[{"时间":"2000/02","均值":0.266791999},{"时间":"2000/03","均值":0.310662061},{"时间":"2000/04","均值":0.378926367},{"时间":"2000/05","均值":0.377644122},{"时间":"2000/06","均值":0.509663224},{"时间":"2000/07","均值":0.559362471},{"时间":"2000/08","均值":0.600726485},{"时间":"2000/09","均值":0.533398926},{"时间":"2000/10","均值":0.425571382},{"时间":"2000/11","均值":0.344209075},{"时间":"2000/12","均值":0.276758969},....]
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为SimHei
plt.rcParams['axes.unicode_minus'] = False   # 解决保存图像是负号'-'显示为方块的问题

# 将数据转换为DataFrame
df = pd.DataFrame(data)
df['ds'] = pd.to_datetime(df['时间'])
df.rename(columns={'均值': 'y'}, inplace=True)

# 拆分训练测试数据
# split_index = int(len(df)*0.8)
# train = df[:split_index] 
# test = df[split_index:]
train = df[:-12]
test = df[-12:]

# 初始化Prophet模型
model = Prophet(daily_seasonality=False)

# 添加节假日效应(如果适用)
# model.add_country_holidays(country_name='US')

# 训练模型
model.fit(train)

# 生成未来日期(未来5年,每月)
future = pd.date_range(start='2021-01', periods=60, freq='M')
future = pd.DataFrame({'ds': future})

# 进行预测
forecast = model.predict(future)

# 打印预测结果
print(forecast[['ds', 'yhat']].tail(60))

fig = model.plot_components(forecast)
# 分别设置trend成分的横纵坐标标签
for ax in fig.axes[:1]:
    ax.set_xlabel("年份", fontsize=16)
    ax.set_ylabel("趋势值", fontsize=16)
    ax.set_xticklabels(ax.get_xticklabels(), fontsize=14)
    ax.set_yticklabels(ax.get_yticklabels(), fontsize=14)

# 分别设置yearly成分的横纵坐标标签
for ax in fig.axes[1:]:
    ax.set_xlabel("月份", fontsize=16)
    ax.set_ylabel("季节性值", fontsize=16)
 
    # 设置横坐标标签,这里以月份为例,根据实际情况调整
    x_labels = ['一月',  '三月','五月', 
                '七月', '九月', '十一月', '一月']

    # 设置横坐标刻度和标签
    ax.set_xticklabels(x_labels, fontsize=14)
    ax.set_yticklabels(ax.get_yticklabels(), fontsize=14)
  
# 设置标题
#plt.title('自定义标题')

plt.tight_layout()
plt.savefig('F:/plot.jpg', dpi=600, format='jpg')
plt.show()

結果は次のとおりです。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_42464154/article/details/132106883