def test_ridge_regression_py(X, Y, _lambda):
X = X.astype(np.float32)
Y = Y.astype(np.float32)
t1 = time.time()
n, p = X.shape
if n < p:
tmp = np.dot(X, X.T)
if _lambda:
tmp += _lambda*n*np.eye(n)
tmp = la.pinv(tmp)
beta_out = np.dot(np.dot(X.T, tmp), Y.reshape(-1, 1))
else:
tmp = np.dot(X.T, X)
if _lambda:
tmp += _lambda*n*np.eye(p)
tmp = la.pinv(tmp)
beta_out = np.dot(tmp, np.dot(X.T, Y.reshape(-1, 1)))
t2 = time.time()
dt = t2-t1
print("total time (Python): {}".format(dt))
print(beta_out[:20,0])
评论列表
文章目录