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.
Something like the following should work:
tf.split_v(tf.random_shuffle(...
Edit: For tensorflow>0.12 This should now be called as tf.split(tf.random_shuffle(...
Reference
See docs for tf.split and for tf.random_shuffle for examples.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With