theta_t = np.array([-2, -1, 1, 2]) X_t = np.c_[np.ones(5), np.arange(1, 16).reshape((3, 5)).T/10] y_t = np.array([1, 0, 1, 0, 1]) lmda_t = 3 cost, grad = lCF.lr_cost_function(theta_t, X_t, y_t, lmda_t) np.set_printoptions(formatter={'float': '{: 0.6f}'.format}) print('Cost: {:0.7f}'.format(cost)) print('Expected cost: 2.534819') print('Gradients:\n{}'.format(grad)) print('Expected gradients:\n[ 0.146561 -0.548558 0.724722 1.398003]') input('Program paused. Press ENTER to continue') # ===================== Part 2-b: One-vs-All Training ===================== print('Training One-vs-All Logistic Regression ...') lmd = 0.1 all_theta = ova.one_vs_all(X, y, num_labels, lmd) input('Program paused. Press ENTER to continue') # ===================== Part 3: Predict for One-Vs-All ===================== pred = pova.predict_one_vs_all(all_theta, X) print('Training set accuracy: {}'.format(np.mean(pred == y)*100)) input('ex3 Finished. Press ENTER to exit')
# Randomly select 100 data points to display shuffle_100_X = np.arange(0, m, 1, dtype=int) np.random.shuffle(shuffle_100_X) sel = X[shuffle_100_X[0:100], :] display_data(sel) print('Program paused. Press enter to continue.\n') # pause_func() # ============ Part 2a: Vectorize Logistic Regression ============ # Test case for lrCostFunction print('\nTesting lrCostFunction() with regularization') theta_t = np.array([[-2], [-1], [1], [2]]) X_t = np.append(np.ones((5, 1)), np.arange(1, 16).reshape(5, 3, order='F') / 10, axis=1) y_t = np.array([[1], [0], [1], [0], [1]]) lambda_t = 3 J, grad = lr_cost_function(theta_t, X_t, y_t, lambda_t) print('\nCost: \n', J, '\nExpected cost: 2.534819\n') print('Gradients:\n', grad, '\nExpected gradients:\n', ' 0.146561\n -0.548558\n 0.724722\n 1.398003\n') print('Program paused. Press enter to continue.\n') # pause_func() # ============ Part 2b: One-vs-All Training ============ print('\nTraining One-vs-All Logistic Regression...\n') ova_lambda = 0.1 all_theta = one_vs_all(X, y, num_labels, ova_lambda) print('Program paused. Press enter to continue.\n') # pause_func() # ================ Part 3: Predict for One-Vs-All ================ pred = predict_one_vs_all(all_theta, X) + 1 print('\nTraining Set Accuracy: \n', np.mean((pred == y) * 100))