facebookexperimental / Robyn

Robyn is an experimental, AI/ML-powered and open sourced Marketing Mix Modeling (MMM) package from Meta Marketing Science. Our mission is to democratise modeling knowledge, inspire the industry through innovation, reduce human bias in the modeling process & build a strong open source marketing science community.
https://facebookexperimental.github.io/Robyn/
MIT License
1.07k stars 322 forks source link

Robyn API via Python plumber didn't work when no organic_vars or factor_vars specifty #906

Closed rupatrawut closed 5 months ago

rupatrawut commented 5 months ago

I am trying to call Robyn API via plumber by following this example: [https://github.com/.../robyn_api/robyn_python_notebook.ipynb] (https://github.com/facebookexperimental/Robyn/blob/main/robyn_api/robyn_python_notebook.ipynb?fbclid=IwAR2kOT1jP92BwvuWLfg3ofEGc0m3pUiodTAIqL38ztT1eH8iU1E6TQoTC2I)

However, when I try it with my custom dataset (without organic_vars and factor_vars). I got the following error:

Running feature engineering... <simpleError in check_InputCollect(InputCollect): Some elements where not provided in your inputs list: organic_vars, factor_vars>

But this dataset works fine in R version.

Environment & Robyn version

My Robyn version is '3.10.5.9010' run on Windows 11 environment.

inputArgs = {
    'date_var': 'data_date',
    'dep_var': 'kpi',
    'dep_var_type': 'revenue',
    'prophet_vars': ['trend', 'season', 'holiday'],
    # 'prophet_signs': ['default', 'default', 'default'],
    'prophet_country': 'TH',
    'context_vars': context_vars,
    'context_signs': context_signs,
    'paid_media_spends': paid_media_spends,
    'paid_media_vars': paid_media_vars,
    # 'organic_vars': organic_vars, # or empty list []
    # 'factor_vars': factor_vars, # or empty list []
    'window_start': '2022-01-01',
    'window_end': '2023-09-30',
    'adstock': 'geometric'
}

Error is shown when I call InputCollect = robyn_api('robyn_inputs', payload=payload), during setting hyperparameters.

payload = {
    'dt_input': asSerialisedFeather(df),
    'dt_holiday': asSerialisedFeather(df_holiday),
    'jsonInputArgs': json.dumps(inputArgs)
}
InputCollect = robyn_api('robyn_inputs', payload=payload)
...
-- Set hyperparameters
inputArgs = {'hyperparameters': hyperparameters}
payload = {
    'InputCollect': json.dumps(InputCollect),
    'jsonInputArgs': json.dumps(inputArgs)
}
InputCollect = robyn_api('robyn_inputs', payload=payload)  # Error here in log file as mentioned above.
yu-ya-tanaka commented 5 months ago

Hi, This error was reproduced in my env. I will fix it.

rupatrawut commented 5 months ago

Hi @yu-ya-tanaka! Many thanks for your support. Please keep me posted :) And thank you for your contribution for this wonderful tool!

yu-ya-tanaka commented 5 months ago

Hi @rupatrawut , I fixed API endpoint file and now API can accept the input dataset without organic_vars and factor_vars. Please re-run the new notebook on your env.