Slackbot
10/18/2023, 2:54 PMJosé Morales
10/18/2023, 4:27 PMfrom sklearn.impute import SimpleImputer
from sklearn.pipeline import make_pipeline
rf = make_pipeline(SimpleImputer(), RandomForestRegressor()) # use this as your model instead
Or you can use a before predict callback that fills nans
def fill_na(df):
return df.fillna(0) # or some other value
MLforecast.predict(h, before_predict_callback=fill_na)
Francisco
10/18/2023, 4:28 PMFrancisco
10/18/2023, 4:31 PMJosé Morales
10/18/2023, 4:41 PMJosé Morales
10/18/2023, 4:41 PMFrancisco
10/18/2023, 4:43 PMFrancisco
10/18/2023, 4:44 PMFrancisco
10/18/2023, 4:44 PMFound null values in lag1, lag2, lag3, lag6, lag12, expanding_mean_lag1,
Francisco
10/18/2023, 4:44 PMFrancisco
10/18/2023, 4:45 PMJosé Morales
10/18/2023, 4:55 PMimport numpy as np
from mlforecast import MLForecast
from mlforecast.target_transforms import GlobalSklearnTransformer, LocalStandardScaler, Differences
from mlforecast.utils import generate_series
from numba import njit
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import FunctionTransformer
from window_ops.expanding import expanding_mean
from window_ops.rolling import rolling_mean
@njit
def rolling_mean_12(x):
return rolling_mean(x, window_size=12)
sk_log1p = FunctionTransformer(np.log1p, np.expm1)
series = generate_series(2, min_length=45, max_length=45)
lags = [1,2,3,6,12]
lag_transforms = {
1: [expanding_mean, rolling_mean_12],
2: [expanding_mean, rolling_mean_12],
3: [expanding_mean, rolling_mean_12],
6: [expanding_mean, rolling_mean_12],
12: [expanding_mean, rolling_mean_12]
}
# Crear pipeline de pronosticos
ml = MLForecast(
models=[LinearRegression()], #3 modelos de ML
freq='D', #Month start
lags=lags,
lag_transforms=lag_transforms, #Lag transforms definidas anteriormente
target_transforms=[GlobalSklearnTransformer(sk_log1p), LocalStandardScaler(), Differences([1])], #El orden de las
#transformaciones importa (log, estandarizo y primera diferencia)
num_threads=1,
date_features=['month']
ml.cross_validation(df=series, h=6, step_size=12, n_windows=2)
)
Francisco
10/18/2023, 5:49 PM