def get_ensembler_predictions(shuffle=2, embed_dim=300, epochs=10, filter_hs=[3, 4, 5], hidden_units=100, name = "model"):
    print('-' * 40 + name)
    print("Loading data...")
    (X_train, y_train), (X_test, y_test), (X_prediction, X_id), vocab, cuisines = cooking.load_data(test_split=0.1,
                                                                                                    shuffle=2)
    print(len(X_train), 'train sequences')
    print(len(X_test), 'test sequences')
    print("Pad sequences (samples x time)")
    nb_classes = np.max(y_train) + 1
    print "data loaded!"
    print('-' * 40)
    rand_vecs = random_we(vocab, k=int(embed_dim))
    U = get_W(rand_vecs, k=embed_dim)
    execfile("conv_net_classes.py")
    # filter = filter_set()
    test_set_subm = get_test_set(X_prediction, X_id, max_l=65, filter_h=np.max(filter_hs))
    results = []
    datasets = make_idx_data_cv(X_train, y_train, X_test, y_test, max_l=65, k=int(embed_dim),
                                filter_h=np.max(filter_hs))
    perf = train_conv_net(datasets,
                          test_set_subm,
                          U,
                          name,
                          np.array(X_id),
                          lr_decay=0.95,
                          img_w=int(embed_dim),
                          filter_hs=filter_hs,
                          conv_non_linear="relu",
                          hidden_units=[hidden_units, nb_classes],
                          shuffle_batch=True,
                          n_epochs=int(epochs),
                          sqr_norm_lim=9,
                          non_static=True,
                          batch_size=50,
                          dropout_rate=[0.5])
    print "cv: " + ", perf: " + str(perf[0])
    print "probs shape"
    print perf[3].shape
    results.append(perf[0])
    submision_complete = perf[1]
    trans = np.transpose(submision_complete)[:, 1:]
    # final_ensemble = []
    # for i in range(submision_complete.shape[0]):
    #     print trans[i]
    #     count = np.bincount(trans[i], minlength=20)
    #     final_ensemble.append(np.argmax(count))
    # count = np.apply_along_axis(np.bincount, axis=1, arr=np.transpose(submision_complete)[:, 1:], minlength=20)
    # final_ensemble = np.apply_along_axis(np.argmax, 1, count)
    submision_complete = np.vstack([np.array(X_id), np.array(cuisines)[perf[2]]])
    submision_prediction_df = DataFrame(np.transpose(submision_complete))
    submision_prediction_df.to_csv(r'submision_final_' + name +'.csv', header=False,
                                   index=False, sep=' ',
                                   mode='a')
    print str(np.mean(results))
    print('-' * 40 + name)
    return perf[3], X_id, cuisines
Example #2
0
# LSTM
lstm_output_size = 70

# Training
batch_size = 50
nb_epoch = 8

'''
Note:
batch_size is highly sensitive.
Only 2 epochs are needed as the dataset is very small.
'''

print("Loading data...")
(X_train, y_train), (X_test, y_test), (X_prediction, X_id), vocab, cuisines = cooking.load_data(train_path="../train.json",
                                                                                                test_path="../test_json", test_split=0.0)
print(len(X_train), 'train sequences')
print(len(X_test), 'test sequences')
max_features = len(vocab)
print("Pad sequences (samples x time)")
nb_classes = np.max(y_train) + 1

X_train = sequence.pad_sequences(X_train, maxlen=maxlen)
X_test = sequence.pad_sequences(X_test, maxlen=maxlen)
X_prediction = sequence.pad_sequences(X_prediction, maxlen=maxlen)
Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)
print('Y_train shape:', Y_train.shape)
print('Y_test shape:', Y_test.shape)
print('X_train shape:', X_train.shape)
print('X_test shape:', X_test.shape)
    randVecs = np.cast[int](sys.argv[3])

    X, labels = [],[]
    X_train, y_train = [],[]
    X_test, y_test = [],[]
    X_prediction, X_id = [],[]
    vocab, cuisines = [],[]

    number_cv = 10

    print("Loading data...")
    if (number_cv>0):
        (X, labels), (X_prediction, X_id), vocab, cuisines = cooking.load_full_data(shuffle=2)
        print(len(X), 'dataset sequences')
    else:
        (X_train, y_train), (X_test, y_test), (X_prediction, X_id), vocab, cuisines = cooking.load_data(test_split=0.1, shuffle=2)
        print(len(X_train), 'train sequences')
        print(len(X_test), 'test sequences')
        nb_classes = np.max(y_train) + 1

    max_features = len(vocab)
    print("Pad sequences (samples x time)")


    print "data loaded!"
    print('-' * 40)
    rand_vecs =[]
    if (randVecs):
        print "Using random vectors"
        rand_vecs = random_we(vocab, k=int(embed_dim))
        U = get_W(rand_vecs, embed_dim)