名称错误: 名称'nan'未定义时使用 eval



我正在运行一个网格搜索xgboost。我遍历了所有可能的参数组合。我有一个表达式如下:

best_params="{'__init__': {'objective': 'reg:squarederror', 'max_depth': 5, 'learning_rate': 0.1, 'n_estimators': 5, 'verbosity': None, 'booster': 'gbtree', 'tree_method': 'exact', 'n_jobs': None, 'gamma': None, 'min_child_weight': None, 'max_delta_step': None, 'subsample': 0.8, 'colsample_bytree': 0.85, 'colsample_bylevel': None, 'colsample_bynode': None, 'reg_alpha': None, 'reg_lambda': None, 'scale_pos_weight': None, 'base_score': None, 'random_state': 123, 'missing': nan, 'num_parallel_tree': None, 'monotone_constraints': None, 'interaction_constraints': None, 'importance_type': 'gain', 'gpu_id': None, 'validate_parameters': None, 'predictor': None, 'enable_categorical': False, 'kwargs': None}}"
final_params=eval(best_params)

当运行这个时,我得到以下错误:

NameError: name 'nan' is not defined

其中一个参数'missing'在字典中的值为nan。我该怎么做才能避免这个错误呢?

添加

from numpy import nan
# or
nan = float('nan')

相关内容

最新更新