sb-ai-lab / LightAutoML

Fast and customizable framework for automatic ML model creation (AutoML)
https://developers.sber.ru/portal/products/lightautoml
Apache License 2.0
1.18k stars 51 forks source link

Issue with AutoTS, no parameter "transformers_params" #83

Closed ksetdekov closed 1 year ago

ksetdekov commented 1 year ago

🐛 Bug

When installing in a fresh venv, version from pip does not support transformers_params argument in lightautoml.addons.autots.base.AutoTS

To Reproduce

Steps to reproduce the behavior:

  1. get python Python 3.8.10 (v3.8.10:3d8993a744, May 3 2021, 08:55:58)
  2. install lightautoml==0.3.7.3
    pip install lightautoml
  3. get code from master/examples/demo13.py
  4. try to run
    
    import numpy as np
    import pandas as pd

from sklearn.metrics import mean_absolute_error

from lightautoml.addons.autots.base import AutoTS from lightautoml.tasks import Task

np.random.seed(42)

data = pd.read_csv("data/ai92_value_77.csv") horizon = 30

train = data[:-horizon] test = data[-horizon:]

roles = {"target": "value", "datetime": "date"}

seq_params = { "seq0": { "case": "next_values", "params": {"n_target": horizon, "history": np.maximum(7, horizon), "step": 1, "test_last": True}, }, }

True (then set default values) / False; int, list or np.array

default: lag_features=30, diff_features=7

transformers_params = { "lag_features": [0, 1, 2, 3, 5, 10], "lag_time_features": [0, 1, 2], "diff_features": [0, 1, 3, 4], }

task = Task("multi:reg", greater_is_better=False, metric="mae", loss="mae")

automl = AutoTS( task, seq_params=seq_params, trend_params={ "trend": False, }, transformers_params=transformers_params, ) trainpred, = automl.fitpredict(train, roles, verbose=4) forecast, = automl.predict(train)

print("Check scores...") print("TEST score: {}".format(mean_absolute_error(test[roles["target"]].values, forecast.data)))

5. get error:

```bash
multi:reg isn`t supported in lgb
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[4], line 20
     12 transformers_params = {
     13     "lag_features": [0, 1, 2, 3, 5, 10],
     14     "lag_time_features": [0, 1, 2],
     15     "diff_features": [0, 1, 3, 4],
     16 }
     18 task = Task("multi:reg", greater_is_better=False, metric="mae", loss="mae")
---> 20 automl = AutoTS(
     21     task,
     22     seq_params=seq_params,
     23     trend_params={
     24         "trend": False,
     25     },
     26     transformers_params=transformers_params,
     27 )
     28 train_pred, _ = automl.fit_predict(train, roles, verbose=4)
     29 forecast, _ = automl.predict(train)

TypeError: __init__() got an unexpected keyword argument 'transformers_params'

Expected behavior

Additional context

elineii commented 1 year ago

Hi @ksetdekov,

This error occurs because the corresponding functionality is present in the version from the master branch available on github, but not in the latest release on pypi. The bug will be fixed after a fresh release.

Alina