关于自动机器学习flaml训练时的一些报错
一、版本背景
flaml == 1.1.3
sciket-learn == 0.23.0
二、一路报错
2.1、SyntaxError: future feature annotations is not defined
Traceback (most recent call last):File "C:/Users/dell/Desktop/AI/run.py", line 151, in <module>model.autoMlArgs(queryDf,target)File "C:/Users/dell/Desktop/AI/run.py", line 61, in autoMlArgsfrom flaml import AutoMLFile "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\__init__.py", line 2, in <module>from flaml.automl import AutoML, logger_formatterFile "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl\__init__.py", line 1, in <module>from flaml.automl.automl import AutoML, AutoMLState, SearchState, logger_formatter, sizeFile "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl\automl.py", line 5from __future__ import annotations^
SyntaxError: future feature annotations is not defined
2.2、解决SyntaxError: future feature annotations is not defined
进入到flaml的automl下的automl.py文件。找到from __future__ import annotations,注释即可(网上搜索这一行代码是需要升级python版本到3.7才能正常执行)
2.3、ImportError: cannot import name 'StratifiedGroupKFold'
Traceback (most recent call last):File "C:/Users/dell/Desktop/AI/run.py", line 151, in <module>model.autoMlArgs(queryDf,target)File "C:/Users/dell/Desktop/AI/run.py", line 61, in autoMlArgsfrom flaml import AutoMLFile "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\__init__.py", line 2, in <module>from flaml.automl import AutoML, logger_formatterFile "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl\__init__.py", line 1, in <module>from flaml.automl.automl import AutoML, AutoMLState, SearchState, logger_formatter, sizeFile "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl\automl.py", line 14, in <module>from sklearn.model_selection import (
ImportError: cannot import name 'StratifiedGroupKFold'
2.4、解决ImportError: cannot import name 'StratifiedGroupKFold'
原因是flaml版本太高了,卸载重装flaml为0.10.0即可
pip install flaml==0.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
2.5、xgboost.core.XGBoostError: C:/Users/xxx/learner.cc:567: Check failed:mparam_.num_feature != 0 (0 vs. 0) : 0 feature is supplied. Are you using raw Booster interface?
Traceback (most recent call last):File "C:/Users/dell/Desktop/AI/run.py", line 65, in <module>autoMl.fit(queryDf, target.values, **settings)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl.py", line 2275, in fitself._search()File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl.py", line 2771, in _searchself._search_sequential()File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl.py", line 2594, in _search_sequentialuse_ray=False,File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\tune\tune.py", line 452, in runresult = evaluation_function(trial_to_run.config)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl.py", line 280, in _compute_with_config_basestate.fit_kwargs,File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\ml.py", line 592, in compute_estimatorfit_kwargs=fit_kwargs,File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\ml.py", line 501, in evaluate_model_CVfit_kwargs=fit_kwargs,File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\ml.py", line 400, in get_val_lossestimator.fit(X_train, y_train, budget, **fit_kwargs)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\model.py", line 1201, in fitreturn super().fit(X_train, y_train, budget, **kwargs)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\model.py", line 972, in fit**kwargs,File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\model.py", line 152, in _fitmodel.fit(X_train, y_train, **kwargs)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\core.py", line 422, in inner_freturn f(**kwargs)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\sklearn.py", line 915, in fitcallbacks=callbacks)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\training.py", line 235, in trainearly_stopping_rounds=early_stopping_rounds)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\training.py", line 102, in _train_internalbst.update(dtrain, i, obj)File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\core.py", line 1282, in updatedtrain.handle))File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\core.py", line 189, in _check_callraise XGBoostError(py_str(_LIB.XGBGetLastError()))
xgboost.core.XGBoostError: [14:26:20] C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:567: Check failed: mparam_.num_feature != 0 (0 vs. 0) : 0 feature is supplied. Are you using raw Booster interface?
1)、可能是特征数过少?直接在fit的 estimator_list 里指定训练模型的范围,不勾选xgboost即可。
2)、修改传入fit里的x和y的类型。我之前是直接传的dataframe,改为dataframe.values即可。(暂时不太理解)
三、总结
暂时先写这么多问题,后续如果有新的问题会更新本文章。