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

21 篇文章 0 订阅
14 篇文章 0 订阅

参考了这个博客中的数据

# -*- 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)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值