def reset_weight(Data): w0 = 1 / float(len(Data)) for row in Data: row['weight'] = w0 # Q2.a # Run AdaBoosting for T = 1-500, plot error-T relationship outFile = open("ada_out.txt", 'w') outFile.write("iter\terr_train\terr_test\n") for T in [ 1, 2, 3, 4, 5, 6, 8, 10, 15, 20, 30, 50, 70, 90, 120, 150, 200, 250, 300, 350, 400, 450, 500 ]: trees, alphas = AdaBoost.AdaBoost_train(Data_train, Attributes, Labels, T) hit_train = AdaBoost.AdaBoost_test(Data_train, trees, alphas) hit_test = AdaBoost.AdaBoost_test(Data_test, trees, alphas) outFile.write( str(T) + "\t" + str(1 - hit_train) + "\t" + str(1 - hit_test) + "\n") reset_weight(Data_train) outFile.close() # for T=500, find training and test error in each iteration e_t, e_r = AdaBoost.print_err_Ada(Data_train, Data_test, Attributes, Labels, 500) t = [i + 1 for i in range(0, 500)] fig, ax = plt.subplots(figsize=(6, 4)) ax.plot(t, e_r, label='test error', c='grey', alpha=0.3) ax.plot(t, e_t, label='training error')