NeuralProphet之二:季节性(Seasonality)
NeuralProphet中的季节性使用傅里叶项建模。yearly_seasonality
、weekly_seasonality
和 daily_seasonality
是关于要模拟的季节成分。
m = NeuralProphet(
yearly_seasonality=8,
weekly_seasonality=3,
daily_seasonality=2
)
- seasonality_mode可以设置为additive或者multiplicative。
- seasonality_reg 将稀疏性引入模型。这也有助于避免模型对训练数据的过度拟合。在0.1-1范围内的小值允许拟合大的季节性波动,而在1-100范围内的大值则会对傅里叶系数施加较重的惩罚,从而抑制季节性。
示例:
seasonality_mode="multiplicative"比seasonality_mode="additive"可能效果更好
导入库和数据
import pandas as pd
import matplotlib.pyplot as plt
from neuralprophet import NeuralProphet, set_log_level
set_log_level("ERROR")
# data_location = "https://raw.githubusercontent.com/ourownstory/neuralprophet-data/main/datasets/"
data_location = 'datasets/'
df = pd.read_csv(data_location + "air_passengers.csv")
seasonality_mode="additive"预测
m = NeuralProphet()
metrics = m.fit(df, freq="MS")
future = m.make_future_dataframe(df, periods=50, n_historic_predictions=len(df))
forecast = m.predict(future)
fig = m.plot(forecast)
seasonality_mode="multiplicative"预测
m = NeuralProphet(seasonality_mode="multiplicative")
metrics = m.fit(df, freq="MS")
future = m.make_future_dataframe(df, periods=50, n_historic_predictions=len(df))
forecast = m.predict(future)
fig = m.plot(forecast)
plt.show()