【问题标题】:Sklearn's train_test_split split with two inputs and one outputSklearn train_test_split 拆分为两个输入和一个输出
【发布时间】:2021-03-24 19:18:11
【问题描述】:

我有一个神经网络有两个输入分支的网络。我想使用 sklearn 的 train_test_split 函数将我的数据集拆分为训练、测试和验证集。我知道如果我有一个输入数组,那么我可以按如下方式进行拆分:

from sklearn.model_selection import train_test_split

X_train, X_val_and_test, Y_train, Y_val_and_test = train_test_split(X, Y, test_size=0.2)
X_val, X_test, Y_val, Y_test = train_test_split(X_val_and_test, Y_val_and_test, test_size=0.5)

但是,如果我有两个输入 X1 和 X2,那么如果数据被统一拆分,我该如何拆分数据。我们将不胜感激。

【问题讨论】:

  • X1和X2是什么数据类型? numpy 数组?
  • 是的,它们都是 numpy 数组。一个是形状(40011,38),另一个是形状(40011,301,4)。

标签: python-3.x scikit-learn deep-learning


【解决方案1】:

我能想到的第一件事是压缩两个输入,使用 train_test_split,然后将它们分开:

X = np.array(list(zip(X1, X2)))
X_train, X_test, y_train, y_test = train_test_split(X, y)
X1_train, X2_train = X_train[:, 0], X_train[:, 1]

但是,由于您拥有的数据量,这可能会消耗大量内存。如果您使用 tensorflow,另一种方法是使用 tf.data.Dataset 实现 train_test_split,检查此 question

【讨论】:

    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多