added codes
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# Importing functions from folder with common functions for project 1
|
||||
import sys
|
||||
sys.path.append('../functions')
|
||||
from functions import *
|
||||
from regression import OLS
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from sklearn.linear_model import Ridge as OLS_sklearn
|
||||
|
||||
|
||||
|
||||
# Making meshgrid of datapoints and compute Franke's function
|
||||
n = 3
|
||||
N = 1000
|
||||
x = np.sort(np.random.uniform(0, 1, N))
|
||||
y = np.sort(np.random.uniform(0, 1, N))
|
||||
x_mesh_, y_mesh_ = np.meshgrid(x,y)
|
||||
z = FrankeFunction(x_mesh_, y_mesh_)
|
||||
|
||||
# Add noise
|
||||
z_noise = z + np.random.normal(scale = 1, size = (N,N))
|
||||
|
||||
# Perform regression
|
||||
X = create_X(x_mesh_, y_mesh_, n=n)
|
||||
model = OLS()
|
||||
beta = model.fit(X, z_noise, ret=True)
|
||||
|
||||
# Perform regression with Scikit learn using ridge with alpha = 0
|
||||
# Because of inconsistencies in linear_regression
|
||||
model2 = OLS_sklearn(alpha = 0, fit_intercept = False)
|
||||
model2.fit(X, np.ravel(z_noise))
|
||||
|
||||
# Print beta-values of the two models
|
||||
print('============================')
|
||||
print('Calculated beta-values:', beta)
|
||||
print('Scikit-learn beta-values:', model2.coef_)
|
||||
|
||||
# Create best-fit matrix for plotting
|
||||
x_r = np.linspace(0,1,N)
|
||||
y_r = np.linspace(0,1,N)
|
||||
x_mesh, y_mesh = np.meshgrid(x,y)
|
||||
X_r = create_X(x_mesh, y_mesh, n=n)
|
||||
|
||||
# Predict
|
||||
z_reg = (model.predict(X_r)).reshape((N,N))
|
||||
plot_surface(x_mesh, y_mesh, z_reg, "OLS regression")
|
||||
print('============================ \n')
|
||||
print("MSE: %.5f" %MSE(z, z_reg))
|
||||
print("R2_Score: %.5f" %R2_Score(z, z_reg))
|
||||
|
||||
Reference in New Issue
Block a user