scikitlearninspired时间序列
skits的Python项目详细描述
小品
图书馆 ^{str1}$Sci^{str1}$Kit学习-^{str1}$Inspired^{str1}$Time^{str1}$S系列模型。在
这个库的主要目标是允许人们使用类似于scikit-learn
的API训练时间序列预测模型。因此,与scikit-learn
相似,该库由preprocessors
、feature_extractors
、和{
安装
使用pip安装:
pip install skits
预处理器
预处理器期望接收时间序列数据,然后存储一些关于时间序列的数据,这样它们就可以完全反转转换。{cd6>展示了如何将原始数据转换回cd6}。DifferenceTransformer
减去从每个点移动period
的点。在
特征提取程序
在所有的预处理转换完成后,可以从时间序列中构建出多个特征。这些可以通过特征提取器来构建,应该将这些提取器组合成一个大的FeatureUnion
。当前特征包括自回归、季节性和综合特征(包括ARIMA模型的AR和I)。在
管道
有两种类型的管道。ForecasterPipeline
用于预测时间序列(duh)。具体地说,我们应该用一个回归函数作为最后一步来构建这个管道,这样就可以做出适当的预测。该功能类似于常规的scikit-learn
管道。不同之处包括将forecast()
方法与to_scale
关键字参数一起添加到predict()
中,这样就可以确保它们的预测与原始数据的规模相同。在
这些类可能会发生变化,因为它们现在相当粗糙。例如,在引入DifferenceTransformer
之前,必须为所有转换同时转换X
和{pre_
前缀。在
任何人,这里有一个例子:
importnumpyasnpfromsklearn.linear_modelimportLinearRegressionfromsklearn.preprocessingimportStandardScalerfromsklearn.pipelineimportFeatureUnionfromskits.pipelineimportForecasterPipelinefromskits.preprocessingimportReversibleImputerfromskits.feature_extractionimport(AutoregressiveTransformer,SeasonalTransformer)steps=[('pre_scaling',StandardScaler()),('features',FeatureUnion([('ar_transformer',AutoregressiveTransformer(num_lags=3)),('seasonal_transformer',SeasonalTransformer(seasonal_period=20))])),('post_features_imputer',ReversibleImputer()),('regressor',LinearRegression(fit_intercept=False))]l=np.linspace(0,1,101)y=5*np.sin(2*np.pi*5*l)+np.random.normal(0,1,size=101)X=y[:,np.newaxis]pipeline=ForecasterPipeline(steps)pipeline.fit(X,y)y_pred=pipeline.predict(X,to_scale=True,refit=True)
最后看起来像:
importmatplotlib.pyplotaspltplt.plot(y,lw=2)plt.plot(y_pred,lw=2)plt.legend(['y_true','y_pred'],bbox_to_anchor=(1,1));
预测看起来像
start_idx=70plt.plot(y,lw=2);plt.plot(pipeline.forecast(y[:,np.newaxis],start_idx=start_idx),lw=2);ax=plt.gca();ylim=ax.get_ylim();plt.plot((start_idx,start_idx),ylim,lw=4);plt.ylim(ylim);plt.legend(['y_true','y_pred','forecast start'],bbox_to_anchor=(1,1));
- 项目
标签: