我有一个目标数据集,我将其分成5个非重叠的折叠。 在每次迭代中(总迭代== 5),我使用1倍(我们称之为fold_for_tuning
)进行参数调整,并使用4次折叠进行测试。GridSearchCV参数不会改进分类
原因是我想做域自适应,并且在调整之前,我将源数据拟合到分类器中,并且我正在使用目标数据的小子集进行调整)。
我打电话GridSearchCV和适应fold_for_tuning
的,也是我经过一堆参数,我想调:
param_test1 = {
'max_depth': [5, 7],
'min_child_weight': [0.5, 1, 2],
'gamma': [0.1, 1],
'subsample': [0.6, 0.7],
'colsample_bytree': [0.6, 0.7],
'reg_alpha': [0.01, 0.1]
}
gsearch = GridSearchCV(estimator=classifierXGB,
param_grid=param_test1,
scoring='accuracy',
n_jobs=4, iid=False, cv=2)
gsearch.fit(fold_for_tuning_data, fold_for_tuning_labels)
每次迭代之后,我得到gsearch.best_params_
,我将它们设置为classifierXGB
(因为他们应该根据我的理解,给出更好的预测)。 然后,当我打电话 test_y_predicted = classifierXGB.predict(4_unseen_folds)
我得到不改善:
prediction before tuning:
acc: 0.690658872245
auc: 0.700764301397
f1: 0.679211922203
prediction after tuning:
acc: 0.691382460414
auc: 0.701595887248
f1: 0.680132554837
但如果我叫gsearch.predict(4_unseen_folds)
我得到更好的性能:
prediction grid search :
acc: 0.933313032887
auc: 0.930058979926
f1: 0.920623414281
所以我很困惑:网格搜索内部发生了什么?它不应该只优化我在param_grid
中传递的参数吗?如果是这样,那么为什么在classifierXGB
中设置非常相同的参数不会导致更好的性能?
你叫什么'迭代'?目前尚不清楚 – MMF
您可以展示[MWE](http://stackoverflow.com/help/mcve),包括您在gsearch.fit后面做了什么? – ncfirth