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

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

下面直接看代码:

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遍的拟合效果

TYP
发布了7 篇原创文章 · 获赞 0 · 访问量 551

猜你喜欢

转载自blog.csdn.net/weixin_44000193/article/details/95949179