Bayesian Optimization代码报错:无法从colorama导入just_fix_windows_console
解决Bayesian Optimization中的colorama导入错误
问题详情
使用Anaconda构建机器学习模型,运行贝叶斯优化代码时持续报错:ImportError: cannot import name 'just_fix_windows_console' from 'colorama',已安装并更新所有相关包,但问题仍未解决,需要让代码正常执行贝叶斯优化。
执行代码
from bayes_opt import BayesianOptimization def fcv(max_depth, gamma, min_child_weight, subsample, colsample_bytree, learning_rate, num_boost_round): params = {"objective":'reg:squarederror', "max_depth":int(max_depth), 'gamma':gamma, 'min_child_weight':min_child_weight, 'subsample':subsample, "colsample_bytree":colsample_bytree, "learning_rate":learning_rate} cv_results=xgb.cv(dtrain=data_dmatrix, params=params, nfold=10, num_boost_round=int(num_boost_round), early_stopping_rounds=10, metrics='rmse', as_pandas=True) return -cv_results['test-rmse-mean'].min() dict_cv = { 'max_depth': (2, 12), 'gamma': (0.001, 10.0), 'min_child_weight': (0, 20), 'subsample': (0.4, 1.0), 'colsample_bytree': (0.4, 1.0), 'learning_rate': (0.1, 1.0), 'num_boost_round' :(30, 100) } XGB_BO = BayesianOptimization(fcv, dict_cv) #Creating the optimizer XGB_BO.maximize(init_points=10, n_iter=40, acq='ei', xi=0.0) #Running optimization!
报错信息
Output exceeds the size limit. Open the full output data in a text editor --------------------------------------------------------------------------- ImportError Traceback (most recent call last) c:\Users\ehler\Documents\Masterarbeit\Codes\MAcoding_v5.ipynb Zelle 34 in <cell line: 1>() ----> 1 from bayes_opt import BayesianOptimization 2 # Gradient Boosting Machine 3 def gbm_cl_bo(max_depth, max_features, learning_rate, n_estimators, subsample): File c:\Users\ehler\anaconda3\lib\site-packages\bayes_opt\__init__.py:1, in <module> ----> 1 from .bayesian_optimization import BayesianOptimization, Events 2 from .domain_reduction import SequentialDomainReductionTransformer 3 from .util import UtilityFunction File c:\Users\ehler\anaconda3\lib\site-packages\bayes_opt\bayesian_optimization.py:5, in <module> 1 import warnings 3 from bayes_opt.constraint import ConstraintModel ----> 5 from .target_space import TargetSpace 6 from .event import Events, DEFAULT_EVENTS 7 from .logger import _get_default_logger File c:\Users\ehler\anaconda3\lib\site-packages\bayes_opt\target_space.py:4, in <module> 1 import warnings 3 import numpy as np ----> 4 from .util import ensure_rng, NotUniqueError 5 from .util import Colours 8 def _hashable(x): ... (...) 44 :return: x_max, The arg max of the acquisition function. 45 """ ImportError: cannot import name 'just_fix_windows_console' from 'colorama' (c:\Users\ehler\anaconda3\lib\site-packages\colorama\__init__.py)
解决方案
升级colorama版本:
just_fix_windows_console是colorama 0.4.6及以上版本新增的函数,低版本没有该接口。- 查看当前colorama版本:
conda list colorama - 如果版本低于0.4.6,执行升级:
conda install -c conda-forge colorama>=0.4.6
- 查看当前colorama版本:
重新安装bayesian-optimization:可能是包依赖不匹配导致的问题,卸载后重装可解决版本冲突:
pip uninstall bayesian-optimization -y pip install bayesian-optimization或者使用conda安装:
conda install -c conda-forge bayesian-optimization手动修改bayes_opt源码(临时方案):如果上述方法无效,可直接跳过控制台修复逻辑:
找到c:\Users\ehler\anaconda3\lib\site-packages\bayes_opt\util.py文件,找到以下代码并注释掉:# from colorama import just_fix_windows_console # just_fix_windows_console()该操作仅跳过控制台颜色修复,不会影响贝叶斯优化的核心功能。
内容的提问来源于stack exchange,提问作者Christoph Ehler
相关产品推荐
相关产品推荐

