我在gridsearchcv中看到最佳参数是基于cross-validation
确定的,但我真正想要做的是根据one held out validation set
而不是cross validation
来确定最佳参数。
不确定是否有办法做到这一点。我找到了一些自定义cross-validation folds
的类似帖子。然而,我真正需要的是在一组上训练并验证验证集上的参数。
有关我的数据集的其他信息基本上是由text series type
创建的panda
。
答案 0 :(得分:3)
我确实通过使用PredefinedSplit
来回答我自己的问题for i in range(len(doc_train)-1):
train_ind[i] = -1
for i in range(len(doc_val)-1):
val_ind[i] = 0
ps = PredefinedSplit(test_fold=np.concatenate((train_ind,val_ind)))
然后在gridsearchCV参数中
grid_search = GridSearchCV(pipeline, parameters, n_jobs=7, verbose=1 , cv=ps)
答案 1 :(得分:1)
使用hypopt
Python程序包(pip install hypopt
)。这是一个专门为使用验证集进行参数优化而创建的专业软件包。它可以与任何现成的scikit学习模型一起使用,也可以与Tensorflow,PyTorch,Caffe2等一起使用。
# Code from https://github.com/cgnorthcutt/hypopt
# Assuming you already have train, test, val sets and a model.
from hypopt import GridSearch
param_grid = [
{'C': [1, 10, 100], 'kernel': ['linear']},
{'C': [1, 10, 100], 'gamma': [0.001, 0.0001], 'kernel': ['rbf']},
]
# Grid-search all parameter combinations using a validation set.
opt = GridSearch(model = SVR(), param_grid = param_grid)
opt.fit(X_train, y_train, X_val, y_val)
print('Test Score for Optimized Parameters:', opt.score(X_test, y_test))