【问题标题】:Is there a keras method to split data?有没有keras方法来拆分数据?
【发布时间】:2018-07-12 00:26:35
【问题描述】:

我认为标题是不言自明的,但要详细询问,有 sklearn 的方法 train_test_split() 它的工作方式类似于:X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3, stratify = Y) 这意味着:该方法将以 0.3 : 0.7 的比例拆分数据,并尝试将百分比两个数据中的标签相等。有没有相当于这个的keras?

【问题讨论】:

  • 没有单独的方法,但是可以使用fit函数的validation_split关键字来分割输入数据。拆分仍然是幼稚的,不会尝试平衡标签。
  • 不,验证拆分进行交叉验证,也就是在训练期间,它只使用验证数据来验证在当前训练数据的反向传播上学习到的模型。我不想要它,我只想有单独的测试数据,只有在模型准备好后才会使用。
  • 没有办法,就用scikit-learn里面的那个。

标签: python machine-learning scikit-learn keras


【解决方案1】:

现在正在使用 keras Dataset 类。我正在运行 keras-2.2.4-tf 以及新的 tensorflow 版本。

基本上,使用tf.data.Dataset.from_tensor_slices 之类的东西将所有数据加载到数据集中。然后将数据拆分为新的数据集以进行训练和验证。例如,打乱数据集中的所有记录。然后使用除前 400 个以外的所有作为训练,前 400 个作为验证。

ds = ds_in.shuffle(buffer_size=rec_count)
ds_train = ds.skip(400)
ds_validate = ds.take(400)

Dataset 类的实例是传递给 Keras 模型的自然容器。我从 tensorflow 或 keras 训练示例中复制了这个概念,但似乎找不到了。

使用load_data 方法的罐装数据集创建 numpy.ndarray 类,因此它们有点不同,但可以轻松转换为 keras 数据集。我怀疑这还没有完成,因为太多现有代码会中断。

【讨论】:

    【解决方案2】:

    很遗憾,答案(尽管我们希望)是否定的!有一些现有的数据集,如 MNIST 等,可以直接加载:

    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    

    这种以拆分方式直接加载的方式让人对拥有通用方法抱有一种错误的希望,但不幸的是,这里不存在这种方法,尽管您可能会对使用wrappers for SciKit-Learn on Keras 感兴趣。

    DataScience SE 上几乎有 similar question

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 2021-06-14
      • 1970-01-01
      • 2022-12-18
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2011-08-15
      相关资源
      最近更新 更多