summaries_axes[0].set_xlabel('Iterations') summaries_axes[0].set_xlim((0, max_iter)) summaries_axes[0].set_ylabel('Loss') summaries_axes[0].set_title('Learning curves') # Display the error rate across folds summaries_axes[1].bar(np.arange(1, K+1), np.squeeze(np.asarray(errors)), color=color_list) summaries_axes[1].set_xlabel('Fold'); summaries_axes[1].set_xticks(np.arange(1, K+1)) summaries_axes[1].set(xlim=(1/2, K+1/2), ylim=(0, 1)) summaries_axes[1].set_ylabel('Error rate'); summaries_axes[1].set_title('Test misclassification rates ANN') # Display the error rate across folds summaries_axes[2].bar(np.arange(1, K+1), np.squeeze(np.asarray(errors_base)), color=color_list) summaries_axes[2].set_xlabel('Fold'); summaries_axes[2].set_xticks(np.arange(1, K+1)) summaries_axes[2].set(xlim=(1/2, K+1/2), ylim=(0, 1)) summaries_axes[2].set_ylabel('Error rate'); summaries_axes[2].set_title('Test misclassification rates baseline') print('Diagram of best neural net in last fold:') weights = [net[i].weight.data.numpy().T for i in [0,2]] biases = [net[i].bias.data.numpy() for i in [0,2]] tf = [str(net[i]) for i in [1,3]] draw_neural_net(weights, biases, tf, attributeNames,classNames) # Print the average classification error rate print('\nGeneralization error/average error rate: {0}%'.format(round(100*np.mean(errors),4))) print('Ran Exercise Magnus')
error_rate = (sum(e).type(torch.float) / len(y_test)).data.numpy() errors.append(error_rate) # store error rate for current CV fold # Display the learning curve for the best net in the current fold h, = summaries_axes[0].plot(learning_curve, color=color_list[k]) h.set_label('CV fold {0}'.format(k + 1)) summaries_axes[0].set_xlabel('Iterations') summaries_axes[0].set_xlim((0, max_iter)) summaries_axes[0].set_ylabel('Loss') summaries_axes[0].set_title('Learning curves') # Display the error rate across folds summaries_axes[1].bar(np.arange(1, K + 1), np.squeeze(np.asarray(errors)), color=color_list) summaries_axes[1].set_xlabel('Fold') summaries_axes[1].set_xticks(np.arange(1, K + 1)) summaries_axes[1].set_ylabel('Error rate') summaries_axes[1].set_title('Test misclassification rates') print('Diagram of best neural net in last fold:') weights = [net[i].weight.data.numpy().T for i in [0, 2]] biases = [net[i].bias.data.numpy() for i in [0, 2]] tf = [str(net[i]) for i in [1, 3]] draw_neural_net(weights, biases, tf, attribute_names=attributeNames) # Print the average classification error rate print('\nGeneralization error/average error rate: {0}%'.format( round(100 * np.mean(errors), 4))) print('Ran Exercise 8.2.5')
summaries_axes[0].set_xlabel('Iterations') summaries_axes[0].set_xlim((0, max_iter)) summaries_axes[0].set_ylabel('Loss') summaries_axes[0].set_title('Learning curves') # Display the error rate across folds summaries_axes[1].bar(np.arange(1, K + 1), np.squeeze(np.asarray(errors)), color=color_list) summaries_axes[1].set_xlabel('Fold') summaries_axes[1].set_xticks(np.arange(1, K + 1)) summaries_axes[1].set_ylabel('Error rate') summaries_axes[1].set_title('Test misclassification rates') # Show the plots # plt.show(decision_boundaries.number) # try these lines if the following code fails (depends on package versions) # plt.show(summaries.number) plt.show() # Display a diagram of the best network in last fold print('Diagram of best neural net in last fold:') weights = [net[i].weight.data.numpy().T for i in [0, 2]] biases = [net[i].bias.data.numpy() for i in [0, 2]] tf = [str(net[i]) for i in [1, 3]] draw_neural_net(weights, biases, tf) # Print the average classification error rate print('\nGeneralization error/average error rate: {0}%'.format( round(100 * np.mean(errors), 4))) print('Ran exercise 8.2.2.')