web-dev-qa-db-ja.com

データを分割するためのkerasメソッドはありますか?

タイトルは自明だと思いますが、詳しく尋ねると、次のように機能する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はありますか?

9
CerushDope

残念ながら、答え(私たちの願いにもかかわらず)はノーです!直接ロードできるMNISTなどの既存のデータセットがいくつかあります。

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

分割された方法でのこの直接ロードは、一般的な方法を持っているという誤った希望を抱かせますが、残念ながら、ここにはありませんが、 SciKit-Learn on Kerasのラッパー を使用することに興味があるかもしれません。 =。

DataScience SEにはほとんど 同様の質問 があります

2

現在、kerasDatasetクラスを使用しています。新しいtensorflowリリースと一緒にkeras-2.2.4-tfを実行しています。

基本的に、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モデルに渡す自然なコンテナーです。テンソルフローまたはkerasトレーニングの例からコンセプトをコピーしましたが、再度見つけることができないようです。

load_dataメソッドを使用して固定されたデータセットはnumpy.ndarrayクラスを作成するため、少し異なりますが、kerasデータセットに簡単に変換できます。多くの既存のコードが壊れてしまうので、これは行われていないのではないかと思います。

0
dturvene