def solve(A, y, delta, method):
if method == 'ridge_reg_chol':
R = cholesky(dot(A.T, A) + delta*np.identity(A.shape[1]))
z = lstsq(R.T, dot(A.T, y))[0]
x = lstsq(R, z)[0]
elif method == 'ridge_reg_inv':
x = dot(dot(inv(dot(A.T, A) + delta*np.identity(A.shape[1])), A.T), y)
elif method == 'ls_mldivide':
if delta > 0:
print('ignoring lambda; no regularization used')
x = lstsq(A, y)[0]
loss = 0.5 * (dot(A, x) - y) **2
return x.reshape(-1, 1)
评论列表
文章目录