我拥有的数据集在不同的文件上分开,这些文件分组在相互了解的样本上,即它们是在类似时间的相似条件下创建的。 列车测试数据集的平衡很重要,因此样本必须在列车或测试,但不能分开。所以KFold在我的scikit-learn代码上使用并不简单。
现在,我正在使用类似于LOO的东西:
train ~> cat ./dataset/!(1.txt)
test ~> cat ./dataset/1.txt
如果我想在几个文件的测试中进行折叠并制作“真正的”CV,那么这不是很舒服且不是很有用。 如何才能制作好的简历来检查真正的过度拟合?
答案 0 :(得分:0)
期待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))