一、版本背景
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 autoMlArgs
from flaml import AutoML
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\__init__.py", line 2, in <module>
from flaml.automl import AutoML, logger_formatter
File "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, size
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl\automl.py", line 5
from __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 autoMlArgs
from flaml import AutoML
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\__init__.py", line 2, in <module>
from flaml.automl import AutoML, logger_formatter
File "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, size
File "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 fit
self._search()
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl.py", line 2771, in _search
self._search_sequential()
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\automl.py", line 2594, in _search_sequential
use_ray=False,
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\tune\tune.py", line 452, in run
result = 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_base
state.fit_kwargs,
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\ml.py", line 592, in compute_estimator
fit_kwargs=fit_kwargs,
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\ml.py", line 501, in evaluate_model_CV
fit_kwargs=fit_kwargs,
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\ml.py", line 400, in get_val_loss
estimator.fit(X_train, y_train, budget, **fit_kwargs)
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\flaml\model.py", line 1201, in fit
return 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 _fit
model.fit(X_train, y_train, **kwargs)
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\core.py", line 422, in inner_f
return f(**kwargs)
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\sklearn.py", line 915, in fit
callbacks=callbacks)
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\training.py", line 235, in train
early_stopping_rounds=early_stopping_rounds)
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\training.py", line 102, in _train_internal
bst.update(dtrain, i, obj)
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\core.py", line 1282, in update
dtrain.handle))
File "C:\Users\dell\Anaconda3\envs\modelEnv\lib\site-packages\xgboost\core.py", line 189, in _check_call
raise 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即可。(暂时不太理解)
三、总结
暂时先写这么多问题,后续如果有新的问题会更新本文章。