elif method == 'Ridge': lr.My_Ridge() z_predict = lr.My_Predict(X_fit, False) elif method == 'Lasso': lr.My_Lasso() z_predict = lr.My_predict(X_fit, True) diff = z - z_predict MSE = 1.0/(n*n)*(sum(diff*diff)) print (MSE) """ # Do bootstrap boot = Bootstrap(X_fit, z, B, lambda_, split, method) m, z_test = boot.My_Bootstrap() #print (z_test) z_mat = np.tile(z_test, (B, 1)) # Calculate different statistical properties MSE = np.mean(np.mean((z_test - m)**2, axis=1, keepdims=True)) bias = np.mean((z_test - np.mean(m, axis=1, keepdims=True))**2) variance = np.mean(np.var(m, axis=1, keepdims=True)) doubleR = 1.0 - sum((sum( (z_mat - m)**2)) / sum(sum( (z_mat - np.mean(m, axis=1, keepdims=True))**2))) #R2 = np.mean(doubleR) """ a = (z_test - m)**2
""" ###### Part 4 ####### Uses the OLS, ridge and lasso regression of the training data and plots the R-score for test data and predicted data, for different lambdas. """ method = 'OLS' doubleR_OLS = np.zeros(9) lambda_ = np.array( [0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0]) Y_mat = np.tile(Y_test, (100, 1)) for i in range(9): # do bootstrap boot = Bootstrap(X_train, X_test, Y_train, 100, lambda_[i], method) Y_pred, coeff_train = boot.My_Bootstrap() doubleR_OLS[i] = 1.0 - ((Y_mat - Y_pred)**2).sum() / ( (Y_mat - Y_mat.mean())**2).sum() method = 'Ridge' doubleR_ridge = np.zeros(9) for i in range(9): # do bootstrap boot = Bootstrap(X_train, X_test, Y_train, 100, lambda_[i], method) Y_pred, coeff_train = boot.My_Bootstrap() doubleR_ridge[i] = 1.0 - ((Y_mat - Y_pred)**2).sum() / ( (Y_mat - Y_mat.mean())**2).sum() method = 'Lasso' doubleR_lasso = np.zeros(9) for i in range(9):