如何使用随机搜索CV使用交叉验证分裂的数据



我正在尝试使用随机搜索。

在我的单行情况下,我的数据被拆分为火车/验证/测试数据。

当我在train_data上使用默认的3倍CV运行随机搜索CV时,我注意到我的Train_input的长度将降低到Train_data的66%(在3倍CV中是有意义的。

所以我猜我应该将初始火车和验证设置合并为较大的火车集,然后让随机搜索将其分为火车和验证集。

那是正确的方法吗?

我的问题是:如何访问我的Train_input的剩余33%以将其馈送到我的验证精度测试功能(请注意,我的分数功能在测试集上运行(?

感谢您的帮助!yoann

我不确定我的代码在这里是否有帮助,因为我的问题相当通用。

这是我通过浏览Sklearn的代码找到的答案:随机搜索CV不会以一种简单的方式返回拆分验证数据,我绝对应该将初始火车和验证设置合并到较大的火车集中,然后让随机的SearchCV Split它进入火车和验证集。

使用跨胶体器将Train_data分配为CV,将其分为火车/验证集(在我的情况下,分层k-folds http://scikit-learn.org/stable/modules/mmodules/generated/sklearn.model_selection。stratifiedkfold.html(

我的估计器定义如下:

class DNNClassifier(BaseEstimator, ClassifierMixin):

它需要一个分数函数才能评估验证集中的简历性能。在分类类中有一个默认的分数函数(该类别返回平均准确性,并且需要在估算器类中实现预测函数(。

在我的情况下,我在估算器类中实现了自定义分数功能。

完成了超参数搜索和简历拟合,称为随机搜索的拟合函数

RandomizedSearchCV(DNNClassifier(), param_distribs).fit(train_data)

此拟合功能在火车集上运行估算器的自定义拟合功能,然后在验证集上运行分数功能。

这是使用._validation库中的_fit_and_score函数完成的。

因此,我可以在我的估计器拟合函数结束时访问自动拆分验证集(我的train_data输入的33%(。

我宁愿在估算器的拟合函数中访问它,以便我可以使用它来绘制培训步骤的验证精度和尽早停止(我将保留一个单独的验证设置(。

我想我可以通过从我的初始train_data中寻找丢失的索引来重建自动生成的验证集(估算器拟合函数中使用的train_data具有初始train_data的索引的66%(。

如果有人已经做过的事情,我很想听到!

最新更新