# break # X = sequence.pad_sequences(X, maxlen=max_len) X = np.asarray(X) y = np.asarray(y) return X, y def execute_model(X, y): kf = KFold(y.shape[0], n_folds=n_fold, shuffle=True) results_user = np.array([0.0, 0.0, 0.0, 0.0]) for train_index, test_index in kf: X_train, X_test = X[train_index], X[test_index] y_train, y_test = y[train_index], y[test_index] accuracy, precision, recall, f1 = cnn_model(X_train, y_train, X_test, y_test) # precision, recall, f1 = bidirectional_lstm(X_train, y_train, X_test, y_test) results_user[0] += accuracy results_user[1] += precision results_user[2] += recall results_user[3] += f1 results_user /= n_fold return results_user if __name__ == '__main__': n_count = 0 data = util.read_data(path.join(util.data_path, util.file_name)) X, y = build_dataset(data) results = execute_model(X, y) print results util.insert_results('CNN', results[0], results[2], results[1], results[3])
def prediction_model(X_train, y_train, X_test, y_test): classifier = LogisticRegression() classifier.fit(X_train, y_train) pred_labels = classifier.predict(X_test) accuracy = accuracy_score(y_test, pred_labels) precision, recall, f1 = precision_recall_fscore_support(y_test, pred_labels, average='weighted') return accuracy, precision, recall, f1 if __name__ == '__main__': model = Doc2Vec(alpha=0.025, min_alpha=0.025, size=100, window=10, negative=5) model.build_vocab(read_labeled_doc(path.join(util.data_path, util.file_name))[0]) for i in xrange(0, 1): model.train(read_labeled_doc(path.join(util.data_path, util.file_name))) print 'end of iteration ', i + 1 labels_ratings = get_labels_ratings(path.join(util.data_path, util.file_name)) X = [] y = [] for entry in labels_ratings: current_data = model.docvecs[entry[0]] current_rating = labels_ratings[entry[1]] X.append(current_data) y.append(y) X = np.asarray(X) y = np.asarray(y) results = execute_model(X, y) print 'Doc2vec' print results util.insert_results('Doc2Vec', results[0], results[2], results[1], results[3])
print("Building model...") model = Sequential() model.add(Dense(512, input_shape=(max_len,))) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(nb_classes)) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', class_mode='categorical') history = model.fit(X_train, Y_train, nb_epoch=nb_epoch, batch_size=batch_size, verbose=1, show_accuracy=True, validation_split=0.1) model.evaluate(X_test, Y_test, batch_size=batch_size, verbose=1, show_accuracy=True) # print('Test score:', score[0]) # print('Test accuracy:', score[1]) pred_labels = model.predict_classes(X_test) # print pred_labels # print y_test accuracy = accuracy_score(y_test, pred_labels) precision, recall, f1, supp = precision_recall_fscore_support(y_test, pred_labels, average='weighted') print precision, recall, f1, supp return accuracy, precision, recall, f1 if __name__ == '__main__': n_count = 0 data = util.read_data(path.join(util.data_path, util.file_name)) X, y = build_dataset(data) results = execute_model(X, y) print results util.insert_results('MLP', results[0], results[2], results[1], results[3])
# X = sequence.pad_sequences(X, maxlen=max_len) X = np.asarray(X) y = np.asarray(y) return X, y def execute_model(X, y): kf = KFold(y.shape[0], n_folds=n_fold, shuffle=True) results_user = np.array([0.0, 0.0, 0.0, 0.0]) for train_index, test_index in kf: X_train, X_test = X[train_index], X[test_index] y_train, y_test = y[train_index], y[test_index] # accuracy, precision, recall, f1 = lstm_model(X_train, y_train, X_test, y_test) accuracy, precision, recall, f1 = bidirectional_lstm(X_train, y_train, X_test, y_test) results_user[0] += accuracy results_user[1] += precision results_user[2] += recall results_user[3] += f1 results_user /= n_fold return results_user if __name__ == '__main__': n_count = 0 data = util.read_data(path.join(util.data_path, util.file_name)) X, y = build_dataset(data) results = execute_model(X, y) print results util.insert_results('BI-LSTM', results[0], results[2], results[1], results[3])