【问题标题】:How do perform grid search for xgboost in python?如何在 python 中对 xgboost 执行网格搜索?
【发布时间】:2016-09-20 03:23:30
【问题描述】:

我有一些分类问题,我想使用 xgboost。 我有以下内容:

alg = xgb.XGBClassifier(objective='binary:logistic')

我正在测试它的日志丢失:

cross_validation.cross_val_scoree(alg, train_cluster_x, train_cluster_y, cv=5, scoring='log_loss')

我正在尝试通过以下方式执行网格搜索:

clf = GridSearchCV(alg,{'max_depth': [2,4,6],
                        'n_estimators': [50,100,200]}, 
                        verbose=1, 
                        error_score='log_loss')

clf.fit(train_cluster_x,train_cluster_y)
clf.best_score_, clf.best_params_

但我得到不同的结果。 网格搜索现在计算log loss,作为交叉验证吗?

【问题讨论】:

  • 当你说你得到不同的结果时,你的意思是每次你重新运行脚本你得到不同的最佳分数和最佳参数吗?如果是这样,这很常见。每次重新运行时,您的数据都会以不同的方式拆分,因此最佳模型的细节通常会略有不同。如果您能举例说明您收到的输出,让我们知道您的期望和所见,将会有所帮助。

标签: python machine-learning scikit-learn xgboost grid-search


【解决方案1】:

不同之处在于网格搜索设置。 error_score 表示引发错误时的值。您应该将评分参数指定为“neg_log_loss”。

clf = GridSearchCV(alg,{'max_depth': [2,4,6],
                    'n_estimators': [50,100,200]}, 
                    verbose=1, 
                    scoring='neg_log_loss')

clf.fit(train_cluster_x,train_cluster_y)
clf.best_score_, clf.best_params_

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 2018-08-27
    • 2021-03-27
    • 1970-01-01
    • 2020-07-11
    • 2020-02-24
    • 2018-11-27
    • 2017-10-01
    • 2017-06-26
    相关资源
    最近更新 更多