首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XGBoost的多参数优化

XGBoost的多参数优化
EN

Stack Overflow用户
提问于 2018-06-22 09:42:02
回答 1查看 1.6K关注 0票数 3

我试图在python中的AmazonSag怪人中构建一个超参数优化工作,但是有些东西不起作用。以下是我所拥有的:

代码语言:javascript
复制
sess = sagemaker.Session()

xgb = sagemaker.estimator.Estimator(containers[boto3.Session().region_name],
                                    role, 
                                    train_instance_count=1, 
                                    train_instance_type='ml.m4.4xlarge',
                                    output_path=output_path_1,
                                    base_job_name='HPO-xgb',
                                    sagemaker_session=sess)

from sagemaker.tuner import HyperparameterTuner, IntegerParameter, CategoricalParameter, ContinuousParameter    

hyperparameter_ranges = {'eta': ContinuousParameter(0.01, 0.2),
                         'num_rounds': ContinuousParameter(100, 500),
                         'num_class':  4,
                         'max_depth': IntegerParameter(3, 9),
                         'gamma': IntegerParameter(0, 5),
                         'min_child_weight': IntegerParameter(2, 6),
                         'subsample': ContinuousParameter(0.5, 0.9),
                         'colsample_bytree': ContinuousParameter(0.5, 0.9)}

objective_metric_name = 'validation:mlogloss'
objective_type='minimize'
metric_definitions = [{'Name': 'validation-mlogloss',
                       'Regex': 'validation-mlogloss=([0-9\\.]+)'}]

tuner = HyperparameterTuner(xgb,
                            objective_metric_name,
                            objective_type,
                            hyperparameter_ranges,
                            metric_definitions,
                            max_jobs=9,
                            max_parallel_jobs=3)

tuner.fit({'train': s3_input_train, 'validation': s3_input_validation}) 

我得到的错误是:

代码语言:javascript
复制
AttributeError: 'str' object has no attribute 'keys'

错误似乎来自于tuner.py文件:

代码语言:javascript
复制
----> 1 tuner.fit({'train': s3_input_train, 'validation': s3_input_validation})

~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/tuner.py in fit(self, inputs, job_name, **kwargs)
    144             self.estimator._prepare_for_training(job_name)
    145 
--> 146         self._prepare_for_training(job_name=job_name)
    147         self.latest_tuning_job = _TuningJob.start_new(self, inputs)
    148 

~/anaconda3/envs/python3/lib/python3.6/site-packages/sagemaker/tuner.py in _prepare_for_training(self, job_name)
    120 
    121         self.static_hyperparameters = {to_str(k): to_str(v) for (k, v) in self.estimator.hyperparameters().items()}
--> 122         for hyperparameter_name in self._hyperparameter_ranges.keys():
    123             self.static_hyperparameters.pop(hyperparameter_name, None)
    124 

AttributeError: 'list' object has no attribute 'keys'                           
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 00:04:50

初始化HyperparameterTuner对象时的参数顺序是错误的。构造函数具有以下签名:

代码语言:javascript
复制
HyperparameterTuner(estimator, 
                    objective_metric_name, 
                    hyperparameter_ranges, 
                    metric_definitions=None, 
                    strategy='Bayesian', 
                    objective_type='Maximize', 
                    max_jobs=1, 
                    max_parallel_jobs=1, 
                    tags=None, 
                    base_tuning_job_name=None)

因此,在这种情况下,您的objective_type处于错误的位置。有关更多详细信息,请参阅医生们

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50985138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档