作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题之前已经被问过好几次了。但在遵循答案时出现错误
首先我指定哪一部分是训练集和验证集,如下所示。
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()
最佳答案
尝试更换
cv = PredefinedSplit(test_fold=my_test_fold)
与
cv = list(PredefinedSplit(test_fold=my_test_fold).split(new_data_df, df_y))
原因是您可能需要应用split method实际上将其分为训练和测试(然后将其从可迭代对象转换为列表对象)。
关于python - 使用预定义验证集 Sklearn 执行网格搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45677916/
我是一名优秀的程序员,十分优秀!