from kats.consts import TimeSeriesData from kats.models.prophet import ProphetModel, ProphetParams
# take `air_passengers` data as an example air_passengers_df = pd.read_csv( "./data/air_passengers.csv", header=0, names=["time", "passengers"], ) air_passengers_df.head()
time
passengers
0
1949-01-01
112
1
1949-02-01
118
2
1949-03-01
132
3
1949-04-01
129
4
1949-05-01
121
# convert to TimeSeriesData object air_passengers_ts = TimeSeriesData(air_passengers_df) # create a model param instance params = ProphetParams(seasonality_mode='multiplicative') # additive mode gives worse results
# create a prophet model instance m = ProphetModel(air_passengers_ts, params) # fit model simply by calling m.fit() m.fit() # make prediction for next 30 month fcst = m.predict(steps=30, freq="MS")
INFO:fbprophet:Disabling weekly seasonality. Run prophet with weekly_seasonality=True to override this. INFO:fbprophet:Disabling daily seasonality. Run prophet with daily_seasonality=True to override this.
fcst.tail()
time
fcst
fcst_lower
fcst_upper
25
1963-02-01
504.226854
488.814245
518.102516
26
1963-03-01
585.357522
569.323618
600.734632
27
1963-04-01
563.669453
548.299180
578.251332
28
1963-05-01
586.795969
571.121988
602.562586
29
1963-06-01
668.096474
650.864940
685.632700
02
时间序列检测案例
异常改变点的检测
import numpy as np from kats.consts import TimeSeriesData from kats.detectors.cusum_detection import CUSUMDetector
# simulate time series with increase np.random.seed(10) df_increase = pd.DataFrame( { 'time': pd.date_range(
'2019-01-01', '2019-03-01'), 'increase':np.concatenate([np.random.normal(1,0.2,30), np.random.normal(2,0.2,30)]), } )
# convert to TimeSeriesData object timeseries = TimeSeriesData(df_increase)
# run detector and find change points change_points = CUSUMDetector(timeseries).detector()
# Initiate feature extraction class from kats.tsfeatures.tsfeatures import TsFeatures # take `air_passengers` data as an example air_passengers_df = pd.read_csv( "./data/air_passengers.csv", header=0, names=["time", "passengers"], )
# convert to TimeSeriesData object air_passengers_ts = TimeSeriesData(air_passengers_df)
# calculate the TsFeatures features = TsFeatures().transform(air_passengers_ts)