import matplotlib.pyplot as plt
import numpy as np
# Retina mode
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
Some practice problems
ML
from sklearn.linear_model import LinearRegression
= LinearRegression()
lr
# Create some data
= np.linspace(0, 1, 100).reshape(-1, 1)
x = 2 * x + 1
f_x = np.random.randn(100, 1)*0.5
eps = f_x + eps
y
='Data')
plt.scatter(x, y, label'r', label='True function') plt.plot(x, f_x,
= LinearRegression()
lr = np.diag(np.eye(x.shape[0]))
penalty_matrix penalty_matrix
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
=penalty_matrix)
lr.fit(x, y, sample_weight
lr.coef_, lr.intercept_'g', label='Fitted model')
plt.plot(x, lr.predict(x), 'r', label='True function')
plt.plot(x, f_x, ='Data')
plt.scatter(x, y, label plt.legend()
= LinearRegression()
lr
lr.fit(x, y)print(lr.coef_, lr.intercept_)
'g', label='Fitted model')
plt.plot(x, lr.predict(x), 'r', label='True function')
plt.plot(x, f_x, ='Data')
plt.scatter(x, y, label plt.legend()
[[1.9804156]] [1.05585787]
= np.linspace(0, 1, 100)
penalty_matrix
= LinearRegression()
lr =penalty_matrix)
lr.fit(x, y, sample_weightprint(lr.coef_, lr.intercept_)
'g', label='Fitted model')
plt.plot(x, lr.predict(x), 'r', label='True function')
plt.plot(x, f_x, ='Data')
plt.scatter(x, y, label plt.legend()
[[1.94435821]] [1.08001753]
= np.diag(penalty_matrix)
R print(R)
[[0. 0. 0. ... 0. 0. 0. ]
[0. 0.01010101 0. ... 0. 0. 0. ]
[0. 0. 0.02020202 ... 0. 0. 0. ]
...
[0. 0. 0. ... 0.97979798 0. 0. ]
[0. 0. 0. ... 0. 0.98989899 0. ]
[0. 0. 0. ... 0. 0. 1. ]]
= np.hstack([np.ones_like(x), x])
x_aug = np.linalg.inv(x_aug.T @ R @ x_aug) @ x_aug.T @ R @ y
theta_hatprint(theta_hat)
[[1.08001753]
[1.94435821]]
\(\hat{y} = x^T\theta\)
= LinearRegression(fit_intercept=False)
lr
lr.fit(x, y)print(lr.coef_, lr.intercept_)
[[3.55624367]] 0.0
= np.sum(x * y)
sum_x_y = np.sum(x * x)
sum_x_x
/sum_x_x sum_x_y
3.5562436711266945
\(\hat{y} = \theta\)
= LinearRegression(fit_intercept=False)
lr
lr.fit(np.ones_like(y), y)print(lr.coef_, lr.intercept_)
[[2.04606567]] 0.0
np.mean(y)
2.0460656658200334