1
此问题之前已被多次询问。但是当我回答下面的问题时,我得到一个错误:使用预定义的验证集执行网格搜索Sklearn
首先我指定哪一部分是训练集和验证集,如下所示。
my_test_fold = []
for i in range(len(train_x)):
my_test_fold.append(-1)
for i in range(len(test_x)):
my_test_fold.append(0)
然后进行网格搜索。
from sklearn.model_selection import PredefinedSplit
param = {
'n_estimators':[200],
'max_depth':[5],
'min_child_weight':[3],
'reg_alpha':[6],
'gamma':[0.6],
'scale_neg_weight':[1],
'learning_rate':[0.09]
}
gsearch1 = GridSearchCV(estimator = XGBClassifier(
objective= 'reg:linear',
seed=1),
param_grid = param,
scoring='roc_auc',
cv = PredefinedSplit(test_fold=my_test_fold),
verbose = 1)
gsearch1.fit(new_data_df, df_y)
但我得到以下错误
object of type 'PredefinedSplit' has no len()
非常感谢。它运作良好! – Pubudu
不客气:) –