message (4)
message (4)
import numpy as np
class Regression(object):
pass
class LinearRegression(Regression):
"""Linear regression"""
def fit(self, x_train: np.ndarray, t_train: np.ndarray):
"""Perform least squares fitting.
Parameters
----------
x_train : np.ndarray
training independent variable (N, D)
t_train : np.ndarray
training dependent variable (N,)
"""
self.w = np.linalg.pinv(x_train) @ t_train
self.var = np.mean(np.square(x_train @ self.w - t_train))
Returns
-------
y : np.ndarray
prediction of each sample (N,)
y_std : np.ndarray
standard deviation of each predition (N,)
"""
y = x @ self.w
if return_std:
y_std = np.sqrt(self.var) + np.zeros_like(y)
return y, y_std
return y
class RidgeRegression(Regression):
"""Ridge regression"""
def __init__(self, lambd: float = 1.):
"""
Parameters
----------
lambda : float, optional
Regularization Coefficient
"""
self.lambd = lambd
# Make predictions
t_pred = ridge.predict(X_test)
Returns
-------
np.ndarray
prediction of each input (N,)
"""
# ---- Part (f) ---- #
linreg = LinearRegression()
linreg.fit(X_train, t_train)
# Make predictions
t_pred_linreg = linreg.predict(X_test)