人工智能-线性回归学习笔记

导数

先了解导数,也就是梯度
解释梯度:y=f(x)
    x=2(随机取一个值),然后x变化了△x(趋向于0),y值变化了△y,△y除以△x 就是x=2的梯度。当x等于一个值,对应的梯度为0,
    代表了y到了该函数的极大值或者极小值。
    举例
    函数y=x*x ,梯度(也就是导数,高中学过求导函数)y=2x
    当x=2,x变化了0.1(△x=0.01),x=2的导数为((2+0.1)*(2+0.1)-2*2)/((2+0.1)-2)=4.1 约等于4,跟导数y=2x计算的结果接近,△x越小越接近。
x在某一点的导数值代表了,切线的陡与缓。值趋向于0,代表了,y也就是目标值到了极大值或者极小值。

线性回归开始

w=4;//预设置权重

x_data=[1,2,3];

y_data=[2,4,6];

1、定义前向传播函数,也就是数学模型, 比如 y=w*x;
 

   def forword(x){
        return w*x;
    }

2、定义损失函数,使用设置的w权重,计算出来实际样例数据与模型计算出来的数据取差值的平方和,然后取平均
 

  def  cost(xs,ys){
        costval = 0;
        for x,y in zip(xs,ys){
            y_pred = fowrod(x);
            costval=costval+(y_pred-y)**2;//计算出来实际样例数据与预测出来的数据,取差值的平方和,存储到变量costval
        }
        return costval / len(xs);
    }

3、定义计算梯度的函数。这里的因变量是w,相当于y=f(x)中的x。

        导函数为 2*x*(x*w-y)。使用真实数据,灌入梯度函数,求出来平均梯度。

        当平均梯度越小,一般情况第二步的损失函数的值也越小(除非数据与模型严重不吻合),梯度越小,代表了,变化量越小,差值越小。grandint得到的值越小,w的取值,使损失函数的值越小,偏差越小,越吻合模型。

def grandint(xs,ys):
   grad=0
   for x,y in zip(xs,ys):
       grad=grad+2*x*(x*w-y)
   return grad/len(xs)

4、训练,训练100轮

for i in range(100):
    cost_val=cost(x_data,y_data)
    grad_val=gradient(x_data,y_data)
    w=w-0.1*grad_val;//0.1为步长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值