plt.title('Polynomial Regression Learning Curve (lambda = {})'.format(lmd)) plt.legend(['Train', 'Cross Validation']) plt.xlabel('Number of Training Examples') plt.ylabel('Error') plt.axis([0, 13, 0, 100]) #plt.xticks(list(range(0,13,2))) #plt.yticks(list(range(0,120,10))) print('Polynomial Regression (lambda = {})'.format(lmd)) print('# Training Examples\tTrain Error\t\tCross Validation Error') for i in range(m): print(' \t{}\t\t{}\t{}'.format(i, error_train[i], error_val[i])) input('Program paused. Press ENTER to continue') # ===================== Part 8 : Validation for Selecting Lambda ===================== # You will now implement validationCurve to test various values of # lambda on a validation set. You will then use this to select the # 'best' lambda value. lambda_vec, error_train, error_val = vc.validation_curve( X_poly, y, X_poly_val, yval) plt.figure() plt.plot(lambda_vec, error_train, lambda_vec, error_val) plt.legend(['Train', 'Cross Validation']) plt.xlabel('lambda') plt.ylabel('Error') input('ex5 Finished. Press ENTER to exit')
plt.figure(3) plt.scatter(X,Y,c='r',marker='x') plt.plot(x_fit,y_fit) plt.xlabel('Change in water level (x)') plt.ylabel('Water folowing out of the dam (y)') plt.ylim([0, 60]) plt.title('Polynomial Regression Fit (lambda = {})'.format(lmd)) # plt.show() # 计算代价误差 error_train, error_val = learning_curve(X_poly, Y, X_poly_val, Yval, lmd) plt.figure(4) plt.plot(np.arange(m), error_train, np.arange(m), error_val) plt.title('Polynomial Regression Learning Curve (lambda = {})'.format(lmd)) plt.legend(['Train', 'Cross Validation']) plt.xlabel('Number of Training Examples') plt.ylabel('Error') plt.axis([0, 13, 0, 150]) # plt.show() print('Polynomial Regression (lambda = {})'.format(lmd)) print('# Training Examples\tTrain Error\t\tCross Validation Error') for i in range(m): print(' \t{}\t\t{}\t{}'.format(i, error_train[i], error_val[i])) # ======================= 7.通过交叉验证集选择正则项系数lambda lambda_vec,error_train,error_val = validation_curve(X_poly,Y,X_poly_test,Ytest) plt.figure(5) plt.plot(lambda_vec, error_train, lambda_vec, error_val) plt.legend(['Train', 'Test Validation']) plt.xlabel('lambda') plt.ylabel('Error') plt.show()