对文件

时间:2016-05-20 15:35:47

标签: cross-validation dataset python scikit-learn

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

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

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

如果我想在几个文件的测试中进行折叠并制作“真正的”CV,那么这不是很舒服且不是很有用。 如何才能制作好的简历来检查真正的过度拟合?

1 个答案:

答案 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))