) plt.subplot(2, 2, 3) plt.plot(self.train_acc_list, self.dev_acc_list) plt.xlabel('train acc') plt.ylabel('dev acc') fig = plt.gcf() plt.draw() fig.savefig(file_name, dpi=100) if __name__ == '__main__': import os, sys sys.path.append(os.pardir) from common.utils import load_labeled_data, load_word_data model = BinaryClassifier() train_data = list(load_labeled_data('../../test/03-train-input.txt')) test_data = list(load_word_data('../../test/03-train-answer.txt')) trainer = Trainer(model, train_data, test_data) trainer.train() model.save_params('test.pkl') model2 = BinaryClassifier() model2.load_params('test.pkl') print(model.params) print(model2.params)
y = [model.predict(x) for model in models] y = np.sign(sum(y)) print(f'{y}\t{" ".join(x)}') elif arg.mode == 'diag': from collections import defaultdict from random import sample model = BinaryClassifier() model.load_params('model.pkl') for name, value in sorted(model.params.items(), key=lambda i: -abs(i[1]))[:10]: print(f'{name} : {value}') mistakes = defaultdict(list) gold = list(load_labeled_data('../../data/titles-en-test.labeled')) for i, x in enumerate(load_word_data('../../data/titles-en-test.word')): y = model.predict(x) t = gold[i][1] if y != t: mistakes[f'{t} -> {y}'].append(' '.join(x)) for key, sentences in mistakes.items(): print(f'{key} : {len(sentences)}') for line in sample(sentences, min(len(sentences), 20)): print(line) elif arg.mode == 'verbose': model = BinaryClassifier() model.load_params('model.pkl')
# python train_perceptron.py if __name__ == '__main__': import sys, os sys.path.append(os.pardir) from common.binary_classifier import BinaryClassifier, SimpleOptimizer, Trainer, NormalizingOptimizer from common.utils import load_labeled_data, load_word_data import matplotlib.pyplot as plt model = BinaryClassifier() optimizer = SimpleOptimizer() # optimizer = NormalizingOptimizer() train_data = list(load_labeled_data('../../data/titles-en-train.labeled')) print(f'train data: {len(train_data)}') trainer = Trainer(model, train_data, epochs=40, optimizer=optimizer) trainer.train() trainer.draw_accuracy('figure.png') model.save_params('model.pkl')