import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
true_beta = np.array([3, 5, 7])
d = len(true_beta)
n = 100
X = np.random.uniform(size=n * d).reshape(-1, d)
y = X @ true_beta + np.random.normal(size=n)
class OLS:
def fit(self, X, y):
self.beta_ = np.linalg.inv(X.T @ X) @ X.T @ y
return self
def predict(self, X):
return X @ self.beta_
model = OLS()
model.fit(X, y)
model.beta_