我希望使用tsfresh库对一个多时间序列的多变量时间序列预测问题进行特征选择。我的问题与
https://github.com/blue-yonder/tsfresh/blob/master/notebooks/timeseries_forecasting_google_stock.ipynb
,但进行了一些调整(我在链接问题的上下文中列出了这些调整)。
1)与其只对谷歌股票进行预测,我更愿意对各种股票(例如一组科技股)进行预测。因此,将有一个单一的模型能够对整套股票做出预测。
2)我不只是预测下一个时间点(比如股票明天的表现如何),而是预测下一周/两周/等等股票的上涨幅度。
3)我想包括来自其他股票的数据(可能像是每个股票的一些预定义集)用于特征选择。
4)我希望使用所有的值(高、低等),而不是仅仅使用高值作为特性。
我试着用tsfresh实现它,但失败了。能做到吗?如果可以,怎么做?下面是我编写的用滚动方法计算自己特性的代码
def get_past_days_features(row, var, daysback):
if 'rainfall' in var:
rainfall_df = mean_rainfall_unstacked
rainfall_df.date = pd.to_datetime(rainfall_df.date, dayfirst = True)
gov_data = rainfall_df[rainfall_df.gov_iso == row.gov_iso].set_index('date')
x_days_date = row.date - pd.to_timedelta(daysback, unit='d')
relevant_gov_data = gov_data.loc[(gov_data.index >= x_days_date) & (gov_data.index < row.date)].sort_index()
return (pd.Series([np.mean(relevant_gov_data[var]), np.max(relevant_gov_data[var]), kurtosis(relevant_gov_data[var])]))
else:
gov_data = case_death_rainfall_data[case_death_rainfall_data.gov_iso == row.gov_iso].set_index('date')
x_days_date = row.date - pd.to_timedelta(daysback, unit='d')
relevant_gov_data = gov_data.loc[(gov_data.index >= x_days_date) & (gov_data.index < row.date)].sort_index()
return (pd.Series([np.mean(relevant_gov_data[var]), np.max(relevant_gov_data[var]), kurtosis(relevant_gov_data[var])]))
其中,完整数据是一个扁平的数据框架,包含列:日期、股票ID和一些时间序列(高、低等)。