Let's say I've read in a textfile using a TextLineReader
. Is there some way to split this into train and test sets in Tensorflow
? Something like:
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
As elham mentioned, you can use scikit-learn to do this easily. scikit-learn is an open source library for machine learning. There are tons of tools for data preparation including the model_selection
module, which handles comparing, validating and choosing parameters.
The model_selection.train_test_split()
method is specifically designed to split your data into train and test sets randomly and by percentage.
X_train, X_test, y_train, y_test = train_test_split(features,
labels,
test_size=0.33,
random_state=42)
test_size
is the percentage to reserve for testing and random_state
is to seed the random sampling.
I typically use this to provide train and validation data sets, and keep true test data separately. You could just run train_test_split
twice to do this as well. I.e. split the data into (Train + Validation) and Test, then split Train + Validation into two separate tensors.