机器学习:用梯度下降法解决线性回归问题

线性回归
线性回归通常是利用已知的数据集,来预测未来的数据的大小。例如利用往年的房价数据集来预测未来的房价。
梯度下降法
本次利用梯度下降法求线性回归,是属于监督学习的范畴。通过真实值与预测值的差来求代价函数。

下面直接看代码:

import matplotlib.pyplot as plt
import numpy as np
x=np.array([1,1,1,1,2,2,2,3,3,3,3,3,4,4,4,5,5,6,6,6,7,8,8,9,9])
y=np.array([1,2,2,3,3,3,4,4,5,5,5,5,5,5,6,6,8,8,9,9,10,10,7,12,13])
T=np.arctan2(y,x)

a=0.001 #learning_rate
def cost_b(k,b,X,Y):#代价函数的偏导数
    loss=np.sum(k*X+b-Y)/len(X)
    return loss
def cost_k(k,b,X,Y):
    loss=np.sum((k*X+b-Y)*X)/len(X)
    return loss
def cost(k,b,X,Y):#求得损失值
    loss=np.sum((k*X+b-Y)**2)/(2*len(X))
    return loss
#初始化
k=-1
b=1
print('请输入训练的次数')
time=int(input())
i=0
while i<time:
    b0=b
    k0=k
    b=b0-a*cost_b(k0,b0,x,y)
   # print('b: ',b)
   # print('k: ',k)
    k=k0-a*cost_k(k0,b0,x,y)
    loss=cost(k,b,x,y)
    print('loss: ',loss)
    i+=1
X=x
Y=k*x+b
plt.plot(X,Y)
plt.scatter(x,y,s=75,c=T,alpha=0.3)
plt.show()


在这里插入图片描述上图为训练100次的拟合效果

在这里插入图片描述上图为训练1000遍的拟合效果

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值