线性回归梯度下降

梯度下降:一种最优化算法,就是沿着函数的梯度方向寻找函数的最小值

线性回归模型:

最终的目标就是利用      (梯度下降法)      求出使      (误差函数)      最小的线性函数的系数值

梯度下降算法有两种

1.批量梯度下降(Batch gradient descent)

2.随机梯度下降(Stochastic gradient descent)

练习题目

import numpy as np

def stochastic_gradient_descent(x, y, theta, alpha,m,max_iter):
    """随机梯度下降法,每一次梯度下降只使用一个样本。
    :param x: 训练集种的自变量
    :param y: 训练集种的因变量
    :param theta: 待求的权值
    :param alpha: 学习速率
    :param m: 样本总数
    :param max_iter: 最大迭代次数
    """
    deviation = 1
    iter = 0
    flag = 0
    while True:
        for i in range(m):  #循环取训练集中的一个
            deviation = 0
            h = theta[0] * x[i][0] + theta[1] * x[i][1]
            theta[0] = theta[0] - alpha * (y[i] - h)*x[i][0]
            theta[1] = theta[1] - alpha * (y[i] - h)*x[i][1]

            iter = iter + 1
            #计算误差
            for i in range(m):
                deviation = deviation + (y[i] - (theta[0] * x[i][0] + theta[1] * x[i][1])) ** 2
            if deviation <alpha or iter >max_iter:
                flag = 1
                break
        if flag == 1 :
            break
    return theta, iter


x =np.array([[1,2],[2,5],[5,1],[2,4]])
y =np.array([19,26,19,20])

theta=[1,1]
ALPHA=0.001
MAX_ITER=5000

result,iters=stochastic_gradient_descent(x,y,theta,ALPHA,4,MAX_ITER)
print(result,iters)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值