aimclub / FEDOT

Automated modeling and machine learning framework FEDOT
https://fedot.readthedocs.io
BSD 3-Clause "New" or "Revised" License
632 stars 86 forks source link

TypeError: parameter_change_mutation() #1103

Closed irivo closed 1 year ago

irivo commented 1 year ago

After updating GOLEM to version 0.3.1, FEDOT gives the following error:

Traceback (most recent call last):
  File "...", line 75, in <module>
    main()
  File "..", line 72, in main
    my_fedot()
  File "..", line 63, in my_fedot
    best_pipeline = model.fit(features=X_df, target=y_df)
  File "C:\..\lib\site-packages\fedot\api\main.py", line 206, in fit
    self.api_composer.obtain_model(**self.params.api_params)
  File "C:\..\lib\site-packages\fedot\api\api_utils\api_composer.py", line 82, in obtain_model
    return self.compose_fedot_model(api_params_dict, composer_params_dict, tuner_params_dict)
  File "C:\..\lib\site-packages\fedot\api\api_utils\api_composer.py", line 261, in compose_fedot_model
    best_pipeline, best_pipeline_candidates, gp_composer = self.compose_pipeline(task, train_data,
  File "C:\..\lib\site-packages\fedot\api\api_utils\api_composer.py", line 315, in compose_pipeline
    best_pipelines = gp_composer.compose_pipeline(data=train_data)
  File "C:\..\lib\site-packages\fedot\core\composer\gp_composer\gp_composer.py", line 65, in compose_pipeline
    opt_result = self.optimizer.optimise(objective_function)
  File "C:\..\lib\site-packages\golem\core\optimisers\populational_optimizer.py", line 88, in optimise
    self._initial_population(evaluator)
  File "C:\..\lib\site-packages\golem\core\optimisers\genetic\gp_optimizer.py", line 71, in _initial_population
    self.initial_individuals = self._extend_population(self.initial_individuals)
  File "C:\..\lib\site-packages\golem\core\optimisers\genetic\gp_optimizer.py", line 85, in _extend_population
    new_ind = self.mutation(choice(self.initial_individuals))
  File "C:\..\lib\site-packages\golem\core\optimisers\genetic\operators\mutation.py", line 38, in __call__
    return self._mutation(population)
  File "C:\..\lib\site-packages\golem\core\optimisers\genetic\operators\mutation.py", line 48, in _mutation
    new_graph, mutation_names = self._apply_mutations(new_graph, num_mut)
  File "C:\..\lib\site-packages\golem\core\optimisers\genetic\operators\mutation.py", line 74, in _apply_mutations
    new_graph, applied = self._adapt_and_apply_mutation(new_graph, mutation_type)
  File "C:\..\lib\site-packages\golem\core\optimisers\genetic\operators\mutation.py", line 87, in _adapt_and_apply_mutation
    new_graph = mutation_func(new_graph, requirements=self.requirements,
  File "C:\..\lib\site-packages\golem\core\adapter\adapter.py", line 173, in adapted_fun
    result = fun(*adapted_args, **adapted_kwargs)
TypeError: parameter_change_mutation() missing 2 required positional arguments: 'params' and 'opt_params'

Even such an example:

    model = Fedot(problem='classification') 
#------------------------------------------------------------------------------    
    best_pipeline = model.fit(features=X_df, target=y_df)
gkirgizov commented 1 year ago

Проблема на стороне FEDOT-а -- нужно поменять сигнатуру мутации. Я пофикшу.

gkirgizov commented 1 year ago

Хотя нет, эт давно пофикшено, еще в #1057

Федот точно актуальный? @irivo

irivo commented 1 year ago

Запускаю в терминале win 10. Выполнил установку через pip в новую чистую виртуальную среду. Вот результат:

...\lib\site-packages\statsmodels\genmod\families\links.py:13: FutureWarning: The log link alias is deprecated. Use Log instead. The log link alias will be removed after the 0.15.0 release. warnings.warn( ...\lib\site-packages\statsmodels\genmod\families\links.py:13: FutureWarning: The identity link alias is deprecated. Use Identity instead. The identity link alias will be removed after the 0.15.0 release. warnings.warn( ...\lib\site-packages\statsmodels\genmod\families\links.py:13: FutureWarning: The inverse_power link alias is deprecated. Use InversePower instead. The inverse_power link alias will be removed after the 0.15.0 release. warnings.warn( ...\lib\site-packages\statsmodels\genmod\families\links.py:13: FutureWarning: The inverse_squared link alias is deprecated. Use InverseSquared instead. The inverse_squared link alias will be removed after the 0.15.0 release. warnings.warn( 2023-05-26 17:01:06,768 - AssumptionsHandler - Memory consumption for fitting of the initial pipeline in main session: current 46.9 MiB, max: 157.1 MiB 2023-05-26 17:01:06,784 - ApiComposer - Initial pipeline was fitted in 11.1 sec. 2023-05-26 17:01:06,784 - AssumptionsHandler - Preset was changed to best_quality due to fit time estimation for initial model. 2023-05-26 17:01:06,799 - ApiComposer - AutoML configured. Parameters tuning: True. Time limit: 5.0 min. Set of candidate models: ['rf', 'qda', 'dt', 'lgbm', 'pca', 'scaling', 'bernb', 'normalization', 'knn', 'mlp', 'fast_ica', 'resample', 'logit', 'isolation_forest_class', 'poly_features', 'rf', 'qda', 'dt', 'lgbm', 'pca', 'scaling', 'bernb', 'normalization', 'knn', 'mlp', 'fast_ica', 'resample', 'logit', 'isolation_forest_class', 'poly_features']. 2023-05-26 17:01:06,799 - ApiComposer - Pipeline composition started. Generations: 0%| | 1/10000 [00:00<?, ?gen/s]...\lib\site-packages\statsmodels\genmod\families\links.py:13: FutureWarning: The log link alias is deprecated. Use Log instead. The log link alias will be removed after the 0.15.0 release. warnings.warn( ...\lib\site-packages\statsmodels\genmod\families\links.py:13: FutureWarning: The identity link alias is deprecated. Use Identity instead. The identity link alias will be removed after the 0.15.0 release. warnings.warn( ...\lib\site-packages\statsmodels\genmod\families\links.py:13: FutureWarning: The inverse_power link alias is deprecated. Use InversePower instead. The inverse_power link alias will be removed after the 0.15.0 release. warnings.warn( ...\lib\site-packages\statsmodels\genmod\families\links.py:13: FutureWarning: The inverse_squared link alias is deprecated. Use InverseSquared instead. The inverse_squared link alias will be removed after the 0.15.0 release. warnings.warn( 2023-05-26 17:01:33,369 - MultiprocessingDispatcher - 1 individuals out of 1 in previous population were evaluated successfully. Generations: 0%| | 1/10000 [00:26<?, ?gen/s] Traceback (most recent call last): File "...", line 73, in main() File "...", line 70, in main my_fedot() File "...", line 61, in my_fedot best_pipeline = model.fit(features=X_df, target=y_df) File "...\lib\site-packages\fedot\api\main.py", line 206, in fit self.api_composer.obtain_model(*self.params.api_params) File "...\lib\site-packages\fedot\api\api_utils\api_composer.py", line 82, in obtain_model return self.compose_fedot_model(api_params_dict, composer_params_dict, tuner_params_dict) File "...\lib\site-packages\fedot\api\api_utils\api_composer.py", line 261, in compose_fedot_model best_pipeline, best_pipeline_candidates, gp_composer = self.compose_pipeline(task, train_data, File "...\lib\site-packages\fedot\api\api_utils\api_composer.py", line 315, in compose_pipeline best_pipelines = gp_composer.compose_pipeline(data=train_data) File "...\lib\site-packages\fedot\core\composer\gp_composer\gp_composer.py", line 65, in compose_pipeline opt_result = self.optimizer.optimise(objective_function) File "...\lib\site-packages\golem\core\optimisers\populational_optimizer.py", line 88, in optimise self._initial_population(evaluator) File "...\lib\site-packages\golem\core\optimisers\genetic\gp_optimizer.py", line 71, in _initial_population self.initial_individuals = self._extend_population(self.initial_individuals) File "...\lib\site-packages\golem\core\optimisers\genetic\gp_optimizer.py", line 85, in _extend_population new_ind = self.mutation(choice(self.initial_individuals)) File "...\lib\site-packages\golem\core\optimisers\genetic\operators\mutation.py", line 38, in call return self._mutation(population) File "...\lib\site-packages\golem\core\optimisers\genetic\operators\mutation.py", line 48, in _mutation new_graph, mutation_names = self._apply_mutations(new_graph, num_mut) File "...\lib\site-packages\golem\core\optimisers\genetic\operators\mutation.py", line 74, in _apply_mutations new_graph, applied = self._adapt_and_apply_mutation(new_graph, mutation_type) File "...\lib\site-packages\golem\core\optimisers\genetic\operators\mutation.py", line 87, in _adapt_and_apply_mutation new_graph = mutation_func(new_graph, requirements=self.requirements, File "...0\lib\site-packages\golem\core\adapter\adapter.py", line 173, in adapted_fun result = fun(adapted_args, **adapted_kwargs) TypeError: parameter_change_mutation() missing 2 required positional arguments: 'params' and 'opt_params'

packages in environment at FEDOT070: # Name Version Build Channel alabaster 0.7.12 pyhd3eb1b0_0 anytree 2.8.0 pypi_0 pypi arrow 1.2.3 py39haa95532_1 astroid 2.14.2 py39haa95532_0 asttokens 2.0.5 pyhd3eb1b0_0 atomicwrites 1.4.0 py_0 attrs 22.1.0 py39haa95532_0 autopep8 1.6.0 pyhd3eb1b0_1 babel 2.11.0 py39haa95532_0 backcall 0.2.0 pyhd3eb1b0_0 bcrypt 3.2.0 py39h2bbff1b_1 beautifulsoup4 4.12.2 py39haa95532_0 binaryornot 0.4.4 pyhd3eb1b0_1 black 23.3.0 py39haa95532_0 bleach 4.1.0 pyhd3eb1b0_0 brotlipy 0.7.0 py39h2bbff1b_1003 ca-certificates 2023.01.10 haa95532_0 catboost 1.2 pypi_0 pypi certifi 2023.5.7 py39haa95532_0 cffi 1.15.1 py39h2bbff1b_3 chardet 4.0.0 py39haa95532_1003 charset-normalizer 2.0.4 pyhd3eb1b0_0 click 8.0.4 py39haa95532_0 cloudpickle 2.2.1 py39haa95532_0 colorama 0.4.6 py39haa95532_0 comm 0.1.2 py39haa95532_0 contourpy 1.0.7 pypi_0 pypi cookiecutter 1.7.3 pyhd3eb1b0_0 cryptography 39.0.1 py39h21b164f_0 cycler 0.11.0 pypi_0 pypi debugpy 1.5.1 py39hd77b12b_0 decorator 5.1.1 pyhd3eb1b0_0 defusedxml 0.7.1 pyhd3eb1b0_0 diff-match-patch 20200713 pyhd3eb1b0_0 dill 0.3.6 py39haa95532_0 docstring-to-markdown 0.11 py39haa95532_0 docutils 0.18.1 py39haa95532_3 entrypoints 0.4 py39haa95532_0 et-xmlfile 1.1.0 pypi_0 pypi ete3 3.1.3 pypi_0 pypi exceptiongroup 1.1.1 pypi_0 pypi executing 0.8.3 pyhd3eb1b0_0 fedot 0.7.0 pypi_0 pypi flake8 6.0.0 py39haa95532_0 fonttools 4.39.4 pypi_0 pypi func-timeout 4.3.5 pypi_0 pypi future 0.18.3 pypi_0 pypi giflib 5.2.1 h8cc25b3_3 glib 2.69.1 h5dc1a3c_2 gst-plugins-base 1.18.5 h9e645db_0 gstreamer 1.18.5 hd78058f_0 hyperopt 0.2.7 pypi_0 pypi icu 58.2 ha925a31_3 idna 3.4 py39haa95532_0 imagesize 1.4.1 py39haa95532_0 importlib-metadata 6.0.0 py39haa95532_0 importlib-resources 5.12.0 pypi_0 pypi importlib_metadata 6.0.0 hd3eb1b0_0 inflection 0.5.1 py39haa95532_0 iniconfig 2.0.0 pypi_0 pypi intervaltree 3.1.0 pyhd3eb1b0_0 ipykernel 6.19.2 py39hd4e2768_0 ipython 8.12.0 py39haa95532_0 ipython_genutils 0.2.0 pyhd3eb1b0_1 isort 5.9.3 pyhd3eb1b0_0 jaraco.classes 3.2.1 pyhd3eb1b0_0 jedi 0.18.1 py39haa95532_1 jellyfish 0.9.0 py39h2bbff1b_0 jinja2 3.1.2 py39haa95532_0 jinja2-time 0.2.0 pyhd3eb1b0_3 joblib 1.2.0 pypi_0 pypi jpeg 9e h2bbff1b_1 jsonpickle 3.0.1 pypi_0 pypi jsonschema 4.17.3 py39haa95532_0 jupyter_client 8.1.0 py39haa95532_0 jupyter_core 5.3.0 py39haa95532_0 jupyterlab_pygments 0.1.2 py_0 keyring 23.13.1 py39haa95532_0 kiwisolver 1.4.4 pypi_0 pypi krb5 1.19.4 h5b6d351_0 lazy-object-proxy 1.6.0 py39h2bbff1b_0 lerc 3.0 hd77b12b_0 libclang 14.0.6 default_hb5a9fac_1 libclang13 14.0.6 default_h8e68704_1 libdeflate 1.17 h2bbff1b_0 libffi 3.4.4 hd77b12b_0 libiconv 1.16 h2bbff1b_2 libogg 1.3.5 h2bbff1b_1 libpng 1.6.39 h8cc25b3_0 libsodium 1.0.18 h62dcd97_0 libspatialindex 1.9.3 h6c2663c_0 libtiff 4.5.0 h6c2663c_2 libvorbis 1.3.7 he774522_0 libwebp 1.2.4 hbc33d0d_1 libwebp-base 1.2.4 h2bbff1b_1 libxml2 2.10.3 h0ad7f3c_0 libxslt 1.1.37 h2bbff1b_0 lightgbm 3.3.5 pypi_0 pypi lxml 4.9.2 py39h2bbff1b_0 lz4-c 1.9.4 h2bbff1b_0 markupsafe 2.1.1 py39h2bbff1b_0 matplotlib 3.7.1 pypi_0 pypi matplotlib-inline 0.1.6 py39haa95532_0 mccabe 0.7.0 pyhd3eb1b0_0 mistune 0.8.4 py39h2bbff1b_1000 more-itertools 8.12.0 pyhd3eb1b0_0 multiprocess 0.70.14 pypi_0 pypi mypy_extensions 0.4.3 py39haa95532_1 nbclient 0.5.13 py39haa95532_0 nbconvert 6.5.4 py39haa95532_0 nbformat 5.7.0 py39haa95532_0 nest-asyncio 1.5.6 py39haa95532_0 networkx 3.1 pypi_0 pypi numpy 1.24.3 pypi_0 pypi numpydoc 1.5.0 py39haa95532_0 openpyxl 3.1.2 pypi_0 pypi openssl 1.1.1t h2bbff1b_0 packaging 23.0 py39haa95532_0 pandas 2.0.1 pypi_0 pypi pandocfilters 1.5.0 pyhd3eb1b0_0 paramiko 2.8.1 pyhd3eb1b0_0 parso 0.8.3 pyhd3eb1b0_0 pathspec 0.10.3 py39haa95532_0 patsy 0.5.3 pypi_0 pypi pcre 8.45 hd77b12b_0 pexpect 4.8.0 pyhd3eb1b0_3 pickleshare 0.7.5 pyhd3eb1b0_1003 pillow 9.5.0 pypi_0 pypi pip 23.0.1 py39haa95532_0 platformdirs 2.5.2 py39haa95532_0 plotly 5.14.1 pypi_0 pypi pluggy 1.0.0 py39haa95532_1 ply 3.11 py39haa95532_0 poyo 0.5.0 pyhd3eb1b0_0 prompt-toolkit 3.0.36 py39haa95532_0 psutil 5.9.5 pypi_0 pypi ptyprocess 0.7.0 pyhd3eb1b0_2 pure_eval 0.2.2 pyhd3eb1b0_0 py4j 0.10.9.7 pypi_0 pypi pyaml 23.5.9 pypi_0 pypi pycodestyle 2.10.0 py39haa95532_0 pycparser 2.21 pyhd3eb1b0_0 pydocstyle 6.3.0 py39haa95532_0 pyflakes 3.0.1 py39haa95532_0 pygments 2.15.1 py39haa95532_1 pylint 2.16.2 py39haa95532_0 pylint-venv 2.3.0 py39haa95532_0 pyls-spyder 0.4.0 pyhd3eb1b0_0 pynacl 1.5.0 py39h8cc25b3_0 pyopenssl 23.0.0 py39haa95532_0 pyparsing 3.0.9 pypi_0 pypi pyqt 5.15.7 py39hd77b12b_0 pyqt5-sip 12.11.0 py39hd77b12b_0 pyqtwebengine 5.15.7 py39hd77b12b_0 pyrsistent 0.18.0 py39h196d8e1_0 pysocks 1.7.1 py39haa95532_0 pytest 7.3.1 pypi_0 pypi python 3.9.16 h6244533_2 python-dateutil 2.8.2 pyhd3eb1b0_0 python-fastjsonschema 2.16.2 py39haa95532_0 python-graphviz 0.20.1 pypi_0 pypi python-lsp-black 1.2.1 py39haa95532_0 python-lsp-jsonrpc 1.0.0 pyhd3eb1b0_0 python-lsp-server 1.7.2 py39haa95532_0 python-slugify 5.0.2 pyhd3eb1b0_0 pytoolconfig 1.2.5 py39haa95532_1 pytz 2022.7 py39haa95532_0 pyvis 0.2.1 pypi_0 pypi pywin32 305 py39h2bbff1b_0 pywin32-ctypes 0.2.0 py39haa95532_1000 pyyaml 6.0 py39h2bbff1b_1 pyzmq 25.0.2 py39hd77b12b_0 qdarkstyle 3.0.2 pyhd3eb1b0_0 qstylizer 0.2.2 py39haa95532_0 qt-main 5.15.2 he8e5bd7_8 qt-webengine 5.15.9 hb9a9bb5_5 qtawesome 1.2.2 py39haa95532_0 qtconsole 5.4.2 py39haa95532_0 qtpy 2.2.0 py39haa95532_0 qtwebkit 5.212 h2bbfb41_5 requests 2.29.0 py39haa95532_0 rope 1.7.0 py39haa95532_0 rtree 1.0.1 py39h2eaa2aa_0 salib 1.4.7 pypi_0 pypi scikit-learn 1.2.2 pypi_0 pypi scikit-optimize 0.9.0 pypi_0 pypi scipy 1.10.1 pypi_0 pypi seaborn 0.12.2 pypi_0 pypi setuptools 66.0.0 py39haa95532_0 sip 6.6.2 py39hd77b12b_0 six 1.16.0 pyhd3eb1b0_1 snowballstemmer 2.2.0 pyhd3eb1b0_0 sortedcontainers 2.4.0 pyhd3eb1b0_0 soupsieve 2.4 py39haa95532_0 sphinx 5.0.2 py39haa95532_0 sphinxcontrib-applehelp 1.0.2 pyhd3eb1b0_0 sphinxcontrib-devhelp 1.0.2 pyhd3eb1b0_0 sphinxcontrib-htmlhelp 2.0.0 pyhd3eb1b0_0 sphinxcontrib-jsmath 1.0.1 pyhd3eb1b0_0 sphinxcontrib-qthelp 1.0.3 pyhd3eb1b0_0 sphinxcontrib-serializinghtml 1.1.5 pyhd3eb1b0_0 spyder 5.4.3 py39haa95532_1 spyder-kernels 2.4.3 py39haa95532_0 sqlite 3.41.2 h2bbff1b_0 stack_data 0.2.0 pyhd3eb1b0_0 statsmodels 0.14.0 pypi_0 pypi tenacity 8.2.2 pypi_0 pypi testfixtures 7.1.0 pypi_0 pypi text-unidecode 1.3 pyhd3eb1b0_0 textdistance 4.2.1 pyhd3eb1b0_0 thegolem 0.3.1 pypi_0 pypi threadpoolctl 3.1.0 pypi_0 pypi three-merge 0.1.1 pyhd3eb1b0_0 tinycss2 1.2.1 py39haa95532_0 toml 0.10.2 pyhd3eb1b0_0 tomli 2.0.1 py39haa95532_0 tomlkit 0.11.1 py39haa95532_0 tornado 6.2 py39h2bbff1b_0 tqdm 4.65.0 pypi_0 pypi traitlets 5.7.1 py39haa95532_0 typing 3.7.4.3 pypi_0 pypi typing-extensions 4.5.0 py39haa95532_0 typing_extensions 4.5.0 py39haa95532_0 tzdata 2023.3 pypi_0 pypi ujson 5.4.0 py39hd77b12b_0 unidecode 1.2.0 pyhd3eb1b0_0 urllib3 1.26.15 py39haa95532_0 vc 14.2 h21ff451_1 vs2015_runtime 14.27.29016 h5e58377_2 watchdog 2.1.6 py39haa95532_0 wcwidth 0.2.5 pyhd3eb1b0_0 webencodings 0.5.1 py39haa95532_1 whatthepatch 1.0.2 py39haa95532_0 wheel 0.38.4 py39haa95532_0 win_inet_pton 1.1.0 py39haa95532_0 wrapt 1.14.1 py39h2bbff1b_0 xgboost 1.7.5 pypi_0 pypi xz 5.4.2 h8cc25b3_0 yaml 0.2.5 he774522_0 yapf 0.31.0 pyhd3eb1b0_0 zeromq 4.3.4 hd77b12b_0 zipp 3.11.0 py39haa95532_0 zlib 1.2.13 h8cc25b3_0 zss 1.2.0 pypi_0 pypi zstd 1.5.5 hd43e919_0
gkirgizov commented 1 year ago

Ах, понял, кажется. Версия федота в pip устарела. Выпущу новый мини-релиз 071. Думал, проблема на мастере. Очень хорошо, что заметил. В общем, интеграционки в CI должны падать от этого.

irivo commented 1 year ago

Все в порядке. После выполнения в среде pip install --upgrade --force-reinstall git+https://github.com/aimclub/FEDOT.git и установки fedot-0.7.1 все работает