如何在FourierSeries中优化'k'的最佳值

问题描述 投票:0回答:1

我尝试使用pmdarima软件包中的autoARIMA预测700种不同的产品。对于季节性,由于所有产品的样式都不同,傅里叶系列使操作变得更容易。

但是,如何基于循环中的乘积选择不同的“ k”值。有测试或优化功能吗?

pipe = Pipeline([
            ("fourier", FourierFeaturizer(m=12, k=3)),
            ("arima",   pm.AutoARIMA(exogenous=None, start_p=1, d=None, start_q=1, max_p=3,
                        max_d=2, max_q=3, start_P=1, D=None, start_Q=1, max_P=2,
                        max_D=1, max_Q=2, max_order=10, m=12, seasonal=False,
                        stationary=False, information_criterion='aic', alpha=0.05,
                        test='kpss', seasonal_test='ocsb', stepwise=False, n_jobs=1,
                        start_params=None, trend=None, method=None, transparams=True,
                        solver='nm', maxiter=None, disp=0, callback=None,
                        offset_test_args=None, seasonal_test_args=None,
                        suppress_warnings=True, error_action='warn', trace=True,
                        random=False, random_state=20, n_fits=30,`enter code here`
                        return_valid_fits=False, out_of_sample_size=0, scoring='mse',
                        scoring_args=None, with_intercept=True))])

请提出建议。谢谢。

python-3.x statistics continuous-fourier pmdarima fourier-descriptors
1个回答
0
投票

下面是创建循环以使用最小AIC获得K值以进行傅立叶变换的循环。我的数据按月显示。它对我有用。

 aic_best = np.inf
 len_k = 0 
      trans = FourierFeaturizer(12, k)
                y_prime, exog = trans.fit_transform(y_train)
                model_auto_arima =  auto_arima(y_train, exogenous=exog, start_p=1, d=None, start_q=1, max_p=4, max_d=3, max_q=4, start_P=1,
                                    D=None, start_Q=1, max_P=2, max_D=1, max_Q=2, max_order=10, m=12, seasonal=False, stationary=False,
                                    information_criterion='aic', alpha=0.05, test='kpss', seasonal_test='ocsb', stepwise=False, n_jobs=1,
                                    start_params=None, trend=None, method='lbfgs', maxiter=50, offset_test_args=None, seasonal_test_args=None,
                                    suppress_warnings=True, error_action='warn', trace=False, random=False, random_state=20, n_fits=30,
                                    return_valid_fits=False, out_of_sample_size=0, scoring='mse', scoring_args=None, with_intercept=True,
                                    sarimax_kwargs=None)
                # aic_value = model_auto_arima.fit(y_train,exog).aic()
                aic_value = model_auto_arima.aic()
                print(aic_value)
                if aic_value < aic_best:
                    aic_best =  aic_value
                    len_k = k 
                else:
                    pass
© www.soinside.com 2019 - 2024. All rights reserved.