import pandas as pd import numpy as np # load the time series data data = pd.read_csv('data.csv', parse_dates=['date'], index_col='date') # create lagged variables lags = 5 for i in range(1, lags+1): data['lag_{}'.format(i)] = data['value'].shift(i) # create rolling statistics window = 3 data['rolling_mean'] = data['value'].rolling(window=window).mean() data['rolling_std'] = data['value'].rolling(window=window).std() # create seasonality and trend features data['month'] = data.index.month data['day_of_week'] = data.index.dayofweek # perform Fourier transformations fourier_terms = 3 for i in range(1, fourier_terms+1): data['fourier_{}'.format(i)] = np.sin(2*np.pi*i*data.index.dayofyear/365.25) # perform time series decomposition from statsmodels.tsa.seasonal import seasonal_decompose decomposition = seasonal_decompose(data['value']) data['trend'] = decomposition.trend data['seasonal'] = decomposition.seasonal data['residual'] = decomposition.resid # perform feature selection from sklearn.feature_selection import SelectKBest, mutual_info_regression X = data.drop('value', axis=1) y = data['value'] selector = SelectKBest(mutual_info_regression, k=5) selector.fit(X, y) selected_features = X.columns[selector.get_support()] data = data[selected_features] |