后面有完整代码?
正规方程为:
该方程的实现:
def qiuTheta(X,Y):
A = np.dot(X.T,X)
A1 = A.I
B = np.dot(A1,X.T)
B1 = np.dot(B,Y)
return B1
完整代码:
import numpy as np
#运用正规方程求theta
def qiuTheta(X,Y):
A = np.dot(X.T,X)
A1 = A.I
B = np.dot(A1,X.T)
B1 = np.dot(B,Y)
return B1
def computeCost(X,Y,theta):
m=len(Y)
j=np.sum(np.square(np.dot(X,theta)-Y))/(2*m)
return j
#算出代价函数J
#训练集
X = np.mat([[1,0.,3],
[1,1.,3],
[1,2.,3],
[1,3.,2],
[1,4.,4]])
print("X:\n",X)
Y = np.mat([[95.364],
[97.217205],
[75.195834],
[60.105519],
[49.342380]])
print("Y:\n",Y)
theta = qiuTheta(X,Y)
print("θ:\n",theta)
#算代价函数
j = computeCost(X,Y,theta)
print("j = ",j)
最后运行结果为:
X:
[[1. 0. 3.]
[1. 1. 3.]
[1. 2. 3.]
[1. 3. 2.]
[1. 4. 4.]]
Y:
[[95.364 ]
[97.217205]
[75.195834]
[60.105519]
[49.34238 ]]
θ:
[[ 98.10408328]
[-13.02877437]
[ 1.13281768]]
j = 11.696628824327151
此时代价函数j就变得比较小了,所以运用正规方程也能拟合训练集
本人是在网上边学习边模仿,边对代码进行改进。如有问题,欢迎留言指出。谢谢?