def problem8(): data = (train_bow_features, train_labels, val_bow_features, val_labels) # values of T and lambda to try Ts = [1, 5, 10, 15, 25, 50] Ls = [0.001, 0.01, 0.1, 1, 10] pct_tune_results = utils.tune_perceptron(Ts, *data) print('perceptron valid:', list(zip(Ts, pct_tune_results[1]))) print('best = {:.4f}, T={:.4f}'.format(np.max(pct_tune_results[1]), Ts[np.argmax(pct_tune_results[1])])) avg_pct_tune_results = utils.tune_avg_perceptron(Ts, *data) print('avg perceptron valid:', list(zip(Ts, avg_pct_tune_results[1]))) print('best = {:.4f}, T={:.4f}'.format(np.max(avg_pct_tune_results[1]), Ts[np.argmax(avg_pct_tune_results[1])])) # fix values for L and T while tuning Pegasos T and L, respective fix_L = 0.01 peg_tune_results_T = utils.tune_pegasos_T(fix_L, Ts, *data) print('Pegasos valid: tune T', list(zip(Ts, peg_tune_results_T[1]))) print('best = {:.4f}, T={:.4f}'.format(np.max(peg_tune_results_T[1]), Ts[np.argmax(peg_tune_results_T[1])])) fix_T = Ts[np.argmax(peg_tune_results_T[1])] peg_tune_results_L = utils.tune_pegasos_L(fix_T, Ls, *data) print('Pegasos valid: tune L', list(zip(Ls, peg_tune_results_L[1]))) print('best = {:.4f}, L={:.4f}'.format(np.max(peg_tune_results_L[1]), Ls[np.argmax(peg_tune_results_L[1])])) utils.plot_tune_results('Perceptron', 'T', Ts, *pct_tune_results) utils.plot_tune_results('Avg Perceptron', 'T', Ts, *avg_pct_tune_results) utils.plot_tune_results('Pegasos', 'T', Ts, *peg_tune_results_T) utils.plot_tune_results('Pegasos', 'L', Ls, *peg_tune_results_L)
Ts = [1, 5, 10, 15, 25, 50] Ls = [0.001, 0.01, 0.1, 1, 10] pct_tune_results = utils.tune_perceptron(Ts, *data) print('perceptron valid:', list(zip(Ts, pct_tune_results[1]))) print('best = {:.4f}, T={:.4f}'.format(np.max(pct_tune_results[1]), Ts[np.argmax(pct_tune_results[1])])) avg_pct_tune_results = utils.tune_avg_perceptron(Ts, *data) print('avg perceptron valid:', list(zip(Ts, avg_pct_tune_results[1]))) print('best = {:.4f}, T={:.4f}'.format(np.max(avg_pct_tune_results[1]), Ts[np.argmax(avg_pct_tune_results[1])])) # fix values for L and T while tuning Pegasos T and L, respective fix_L = 0.01 peg_tune_results_T = utils.tune_pegasos_T(fix_L, Ts, *data) print('Pegasos valid: tune T', list(zip(Ts, peg_tune_results_T[1]))) print('best = {:.4f}, T={:.4f}'.format(np.max(peg_tune_results_T[1]), Ts[np.argmax(peg_tune_results_T[1])])) fix_T = Ts[np.argmax(peg_tune_results_T[1])] peg_tune_results_L = utils.tune_pegasos_L(fix_T, Ls, *data) print('Pegasos valid: tune L', list(zip(Ls, peg_tune_results_L[1]))) print('best = {:.4f}, L={:.4f}'.format(np.max(peg_tune_results_L[1]), Ls[np.argmax(peg_tune_results_L[1])])) utils.plot_tune_results('Perceptron', 'T', Ts, *pct_tune_results) utils.plot_tune_results('Avg Perceptron', 'T', Ts, *avg_pct_tune_results) utils.plot_tune_results('Pegasos', 'T', Ts, *peg_tune_results_T) utils.plot_tune_results('Pegasos', 'L', Ls, *peg_tune_results_L)
# print("{:50} {:.4f}".format("Validation accuracy for Pegasos:", avg_peg_val_accuracy)) data = (train_bow_features, train_labels, val_bow_features, val_labels) # values of T and lambda to try Ts = [1, 5, 10, 15, 25, 50, 100] Ls = [0.01, 0.1, 0.2, 0.5, 1] pct_tune_results = utils.tune_perceptron(Ts, *data) avg_pct_tune_results = utils.tune_avg_perceptron(Ts, *data) # fix values for L and T while tuning Pegasos T and L, respective best_L = 0.01 best_T = 15 avg_peg_tune_results_T = utils.tune_pegasos_T(best_L, Ts, *data) avg_peg_tune_results_L = utils.tune_pegasos_L(best_T, Ls, *data) utils.plot_tune_results('Perceptron', 'T', Ts, *pct_tune_results) utils.plot_tune_results('Avg Perceptron', 'T', Ts, *avg_pct_tune_results) utils.plot_tune_results('Pegasos', 'T', Ts, *avg_peg_tune_results_T) utils.plot_tune_results('Pegasos', 'L', Ls, *avg_peg_tune_results_L) #------------------------------------------------------------------------------- # Section 3.13 # # Modify the code below to extract your best features from the submission data # and then classify it using your most accurate classifier. #------------------------------------------------------------------------------- # submit_texts = [sample['text'] for sample in utils.load_data('reviews_submit.tsv')] #