1.2 正规方程的推导及Python验证

1.2 正规方程的推导及Python验证_第1张图片

import numpy as np
#X矩阵的维度10*2
m=100
n=2
#定义输入矩阵、参数、输出列向量
X=np.random.randint(1,m,m*n).reshape(m,n)
#这里的参数数量和n相等就行
pre_theta=np.array([1.872,100.221]).T
y=np.dot(X,pre_theta)
#求秩,需要判断下是否为奇异矩阵
A=np.dot(X.T,X)
B=np.dot(X.T,y)
rank=np.linalg.matrix_rank(A)
#不是直接求解就行,是的话求最小二乘解
if rank==min(m,n):
    theta=np.linalg.tensorsolve(A,B)
else:
    theta=np.linalg.lstsq(A,B)
print(theta)

你可能感兴趣的:(cs229(吴恩达机器学习))