我有一個目標數據集,我將其分成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