文件上分离的数据集的交叉验证

Cross validation of dataset separated on files

我拥有的数据集在不同的文件中分开,这些文件根据彼此了解的样本分组,即它们是在相似的条件下在相似的时间创建的。 训练-测试数据集的平衡很重要,因此样本必须在训练或测试中,但不能分开。所以 KFold 在我的 scikit-learn 代码上使用起来并不简单。

现在,我正在使用类似于 LOO 的东西制作类似的东西:

train ~> cat ./dataset/!(1.txt)
test ~> cat ./dataset/1.txt

如果我想在多个文件的测试中进行折叠并制作 "real" CV,这会很不舒服,也不是很有用。 如何制作一份好的 CV 来检查真正的过度拟合?

查看 this answer,我意识到 pandas 可以连接数据帧。我检查过该过程比 cat 命令行慢 15-20%,但能够按照我的预期进行折叠。

无论如何,我很确定应该有比这个更好的方法:

import glob
import numpy as np
import pandas as pd
from sklearn.cross_validation import KFold

allFiles = glob.glob("./dataset/*.txt")
kf = KFold(len(allFiles), n_folds=3, shuffle=True)

for train_files, cv_files in kf:
    dataTrain = pd.concat((pd.read_csv(allFiles[idTrain], header=None) for idTrain in train_files))
    dataTest = pd.concat((pd.read_csv(allFiles[idTest], header=None) for idTest in cv_files))