利用梯度下降法求解“最小二乘法”各个参数问题

本文详细介绍了梯度下降法的基本原理,并通过一个具体的数值例子展示了如何使用Python实现梯度下降法求解线性回归问题。从初始化参数到迭代更新,逐步解析梯度下降过程中的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考了这个博客中的数据

# -*- coding:utf-8 -*-
import numpy as np
import math

m = 20

X = [[1, 1],
     [1, 2,],
     [1, 3,],
     [1, 4,],
     [1, 5,],
     [1, 6,],
     [1, 7,],
     [1, 8,],
     [1, 9,],
     [1,10,],
     [1,11,],
     [1,12,],
     [1, 13,],
     [1, 14,],
     [1, 15,],
     [1, 16,],
     [1, 17,],
     [1, 18,],
     [1, 19,],
     [1, 20,]
     ]

y = [3, 4, 5, 5, 2, 4, 7, 8, 11, 8, 12,
     11, 13, 13, 16, 17, 18, 17, 19, 21]
alpha = 0.01

# 梯度函数
def gradient_function(theta, X, y):
    diff = []
    for index in range(len(y)):
        diff.append((theta[0] * X[index][0] + theta[1] * X[index][1]) - y[index])

    result = [0, 0]
    for index in range(len(y)):
        result[0] += (X[index][0] * diff[index])
        result[1] += (X[index][1] * diff[index])

    result[0] = result[0] / 20.0
    result[1] = result[1] / 20.0
    return result

def gradient_descent(X, y, alpha):
    theta = [100000000000.0, 2.0]
    gradient = gradient_function(theta, X, y)
    while True :
        theta[0] = theta[0] - (alpha * gradient[0])
        theta[1] = theta[1] - (alpha * gradient[1])
        gradient = gradient_function(theta, X, y)
        print theta
    return theta

gradient_descent(X, y, alpha)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值