microsoft / FLAML

A fast library for AutoML and tuning. Join our Discord: https://discord.gg/Cppx2vSPVP.
https://microsoft.github.io/FLAML/
MIT License
3.75k stars 495 forks source link

Official example: Time Series Forecast TypeError: 'NoneType' object is not callable #1284

Closed Seyda1 closed 3 months ago

Seyda1 commented 4 months ago

Hi, python version is 3.11.7

When I run the univariate time series code from official document, it returns a TypeError: 'NoneType' object is not callable.

Univariate time series

import statsmodels.api as sm

data = sm.datasets.co2.load_pandas().data
data = data['co2'].resample('MS').mean()
data = data.bfill().ffill()  
data = data.to_frame().reset_index()
num_samples = data.shape[0]
time_horizon = 12
split_idx = num_samples - time_horizon
train_df = data[:split_idx] 
X_test = data[split_idx:]['index'].to_frame()
y_test = data[split_idx:]['co2'] 

from flaml import AutoML

automl = AutoML()
settings = {
    "time_budget": 10, 
    "metric": 'mape', 
    "task": 'ts_forecast',  
    "log_file_name": 'CO2_forecast.log', 
    "eval_method": "holdout", 
    "seed": 7654321,
}

automl.fit(dataframe=train_df,
           label='co2',  
           period=time_horizon,  
           **settings)

Output


TypeError                                 Traceback (most recent call last)
Cell In[11], [line 11](vscode-notebook-cell:?execution_count=11&line=11)
      [1](vscode-notebook-cell:?execution_count=11&line=1) automl = AutoML()
      [2](vscode-notebook-cell:?execution_count=11&line=2) settings = {
      [3](vscode-notebook-cell:?execution_count=11&line=3)     "time_budget": 10, 
      [4](vscode-notebook-cell:?execution_count=11&line=4)     "metric": 'mape', 
   (...)
      [8](vscode-notebook-cell:?execution_count=11&line=8)     "seed": 7654321, 
      [9](vscode-notebook-cell:?execution_count=11&line=9) }
---> [11](vscode-notebook-cell:?execution_count=11&line=11) automl.fit(dataframe=train_df,
     [12](vscode-notebook-cell:?execution_count=11&line=12)            label='co2', 
     [13](vscode-notebook-cell:?execution_count=11&line=13)            period=time_horizon, 
     [14](vscode-notebook-cell:?execution_count=11&line=14)            **settings)

File [c:\Users\seyda.aybar\AppData\Local\anaconda3\envs\testpython311\Lib\site-packages\flaml\automl\automl.py:1925](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:1925), in AutoML.fit(self, X_train, y_train, dataframe, label, metric, task, n_jobs, log_file_name, estimator_list, time_budget, max_iter, sample, ensemble, eval_method, log_type, model_history, split_ratio, n_splits, log_training_metric, mem_thres, pred_time_limit, train_time_limit, X_val, y_val, sample_weight_val, groups_val, groups, verbose, retrain_full, split_type, learner_selector, hpo_method, starting_points, seed, n_concurrent_trials, keep_search_state, preserve_checkpoint, early_stop, force_cancel, append_log, auto_augment, min_sample_size, use_ray, use_spark, free_mem_ratio, metric_constraints, custom_hp, time_col, cv_score_agg_func, skip_transform, mlflow_logging, fit_kwargs_by_estimator, **fit_kwargs)
   [1923](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:1923)     with training_log_writer(log_file_name, append_log) as save_helper:
   [1924](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:1924)         self._training_log = save_helper
-> [1925](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:1925)         self._search()
   [1926](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:1926) else:
   [1927](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:1927)     self._training_log = None

File [c:\Users\seyda.aybar\AppData\Local\anaconda3\envs\testpython311\Lib\site-packages\flaml\automl\automl.py:2482](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:2482), in AutoML._search(self)
   [2480](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:2480)     state.best_config = state.init_config[0] if state.init_config else {}
   [2481](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/automl.py:2481) elif self._use_ray is False and self._use_spark is False:
...
    [214](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/model.py:214) if logger.level == logging.DEBUG:
    [215](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/model.py:215)     # xgboost 1.6 doesn't display all the params in the model str
    [216](file:///C:/Users/seyda.aybar/AppData/Local/anaconda3/envs/testpython311/Lib/site-packages/flaml/automl/model.py:216)     logger.debug(f"flaml.automl.model - {model} fit started with params {self.params}")

TypeError: 'NoneType' object is not callable

I couldn't find a solution despite trying many different things.

Thank you !

thinkall commented 4 months ago

Hi @Seyda1 , FLAML doesn't fully support python 3.11 yet. Could you use it with python 3.10? Thanks.

Seyda1 commented 4 months ago

Hi @Seyda1 , FLAML doesn't fully support python 3.11 yet. Could you use it with python 3.10? Thanks. Hi, @thinkall , It worked. Thanks!