Python XGboost-网格搜索无法正常工作

Python XGboost-网格搜索无法正常工作,python,machine-learning,xgboost,grid-search,Python,Machine Learning,Xgboost,Grid Search,没有参数化的Xgboost回归器具有64.5R2 xgb1 = XGBRegressor( learning_rate=0.09, max_depth=4, min_child_weight=2, subsample=0.7 ) 当我手动添加如下超参数时,我得到66.4R2 xgb1 = XGBRegressor( learning_rate=0.09, max_depth=4, min_child_weight=2, subsample=0.7 ) 但是,当我进行网格搜索时,在我手动选择的

没有参数化的Xgboost回归器具有
64.5
R2

xgb1 = XGBRegressor(
learning_rate=0.09,
max_depth=4,
min_child_weight=2,
subsample=0.7
)
当我手动添加如下超参数时,我得到
66.4
R2

xgb1 = XGBRegressor(
learning_rate=0.09,
max_depth=4,
min_child_weight=2,
subsample=0.7
)
但是,当我进行网格搜索时,在我手动选择的超参数范围内输入超参数-R2仅为
63

网格搜索:

xgb1 = XGBRegressor()

parameters = {'learning_rate': [0.09, 0.1, 0.2], 
              'min_child_weight':[1, 2, 3], 
              'gamma':[0, .1],
              'subsample':[.7, .8, .9, 1],
              'colsample_bytree':[.8, .9, 1], 
              'max_depth': [3, 4, 5], 
              'n_estimators': [100, 120, 200] }

xgb_grid = GridSearchCV(xgb1,
                        parameters,
                        cv = 5,
                        n_jobs = -1,
                        verbose=True)

xgb_grid.fit(X_train, y_train)

print(xgb_grid.best_score_)
print(xgb_grid.best_params_)
正如您在“参数”中看到的,是值​​我手动选择的。网格搜索选择完全不同的参数 比默认参数更糟糕。 这不是我第一次遇到手动参数化比网格搜索效果更好的情况。这可能是什么原因

最佳参数和分数:

0.6384582336141522
{'colsample_bytree': 0.8, 'gamma': 0.1, 'learning_rate': 0.2, 'max_depth': 4, 'min_child_weight': 3, 'n_estimators': 120, 'subsample': 0.9}

我看这里没有什么问题

您在第二个代码段中列出的所有参数都出现在
parameters
字典中


此外,每次运行都会得到略有不同的结果,因为由于子采样、列采样等原因,会涉及到一定程度的随机性。如果希望每次使用相同的参数集时都得到相同的结果,请使用设置为整数值的随机状态初始化回归器:
XGBRegressionor(随机状态=42)

请明确说明您的问题所在-性能不好,或者网格搜索没有使用您提供的参数?您的标题暗示第一个,而您的文本暗示第二个。如果是第二个,请同时提供流程最终选择的参数。设置了随机状态,结果始终相同。-66.4对于网格搜索,结果总是63.3。对于默认参数-64.5对于网格搜索,数据共分为5组,其中1组不在培训过程中进行验证(如果
cv=5
)。您是否尝试过,仅使用80%的数据进行手动方法,并在剩余的20%上进行验证?