选择随机验证数据集

问题描述 投票:2回答:1

给定一个numpy数组,该数组由从模拟生成的持续时间生成的数据组成。基于此我使用tensorflow和keras来训练神经网络,我的问题在我的模型中引用了这行代码:

model.fit(X1, Y1, epochs=1000, batch_size=100, verbose=1, shuffle=True, validation_split=0.2)

在阅读了Keras的文档之后,我发现验证数据集(在这种情况下是原始数据的20%)是从末尾开始切片的。由于我正在为持续时间生成数据,我显然不希望将最后一部分切掉,因为它不能代表验证。我更希望从整个数据集中随机选择验证数据。为此目的,我现在正在训练之前将我的整个数据集(人工神经网络的输入和输出一致)混乱,以获得随机验证数据。

我觉得我不想破坏我的数据中的时间组件,这就是为什么我正在寻找一个解决方案来随机选择验证集而不必改变整个数据集。另外,我想知道你们有什么想法不会拖延时间连续数据。同样,我不是在询问验证拆分的性质,我只是想知道如何修改验证数据的选择方式。

python validation tensorflow random keras
1个回答
1
投票

正如您所提到的,Keras只需要获取数据集的最后x个样本,因此如果您想继续使用它,则需要提前对数据集进行洗牌。

或者,您只需使用sklearn train_test_split()方法:

x_train, x_valid, y_train, y_valid = sklearn.model_selection.train_test_split(x, y, test_size=0.2)

此方法有一个名为“shuffle”的参数,用于确定是否在拆分之前对数据进行洗牌(默认设置为True)。

但是,通过使用“分层”参数可以更好地分割数据,这将在验证和训练集之间提供类似的标签分布:

x_train, x_test, y_train, y_test = train_test_split(x, y,
                                                    test_size=0.2,
                                                    random_state=0,
                                                    stratify=y)
© www.soinside.com 2019 - 2024. All rights reserved.