机器学习--正规方程的简单实现

后面有完整代码?

正规方程为:
在这里插入图片描述
该方程的实现:

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就变得比较小了,所以运用正规方程也能拟合训练集

本人是在网上边学习边模仿,边对代码进行改进。如有问题,欢迎留言指出。谢谢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值