web-dev-qa-db-ja.com

テンソルをトレーニングセットとテストセットに分割する

TextLineReaderを使用してテキストファイルを読み込んだとしましょう。 Tensorflowでこれをトレインセットとテストセットに分割する方法はありますか?何かのようなもの:

def read_my_file_format(filename_queue):
  reader = tf.TextLineReader()
  key, record_string = reader.read(filename_queue)
  raw_features, label = tf.decode_csv(record_string)
  features = some_processing(raw_features)
  features_train, labels_train, features_test, labels_test = tf.train_split(features,
                                                                            labels,
                                                                            frac=.1)
  return features_train, labels_train, features_test, labels_test
12
Luke

次のようなものが動作するはずです:tf.split_v(tf.random_shuffle(...

9
user1454804

Elhamが述べたように、 scikit-learn を使用してこれを簡単に行うことができます。 scikit-learnは、機械学習用のオープンソースライブラリです。パラメーターの比較、検証、選択を処理する _model_selection_ モジュールを含むデータ準備用のツールが多数あります。

model_selection.train_test_split() メソッドは、データをトレインセットとテストセットにランダムにパーセンテージで分割するように特別に設計されています

_X_train, X_test, y_train, y_test = train_test_split(features,
                                                    labels,
                                                    test_size=0.33,
                                                    random_state=42)
_

_test_size_はテスト用に予約する割合であり、_random_state_はランダムサンプリングをシードすることです。

私は通常、これを使用してトレーニングおよび検証データセットを提供し、真のテストデータを個別に保持します。これを行うには、_train_test_split_を2回実行するだけで済みます。つまりデータを(Train + Validation)とTestに分割し、Train + Validationを2つの別々のテンソルに分割します。

12
Jspies
import sklearn.model_selection as sk

X_train, X_test, y_train, y_test = 
sk.train_test_split(features,labels,test_size=0.33, random_state = 42)
3
elham shawky

Tf.data.Dataset APIのマップおよびフィルター機能を使用して、なんとか素敵な結果を得ることができました。 map関数を使用して、トレーニングとテストの間でサンプルをランダムに選択します。これを行うには、各例で、一様分布からサンプルを取得し、サンプル値がレート分割を下回っているかどうかを確認します。

def split_train_test(parsed_features, train_rate):
    parsed_features['is_train'] = tf.gather(tf.random_uniform([1], maxval=100, dtype=tf.int32) < tf.cast(train_rate * 100, tf.int32), 0)
    return parsed_features

def grab_train_examples(parsed_features):
    return parsed_features['is_train']

def grab_test_examples(parsed_features):
    return ~parsed_features['is_train']