【随学随想】numpy实现线性回归(批量梯度下降法)


前言

线性回归(Linear Rrgresson)是最简单的机器学习算法之一,是绝大部分萌新入坑机器学习的第一个算法,相当于机器学习界的"Hello World"。为了让大家更好地学习线性回归,因此笔者将使用numpy(手写)批量梯度下降法实现线性回归的代码。


一、线性回归是什么?

关于线性回归,网络上有许多相关资料,譬如维基百科,百度百科,MBA智库百科上的“线性回归”条目,吴恩达的机器学习lecture2~4以及其他CSDN bloger写的文章,相信大部分人写的都比笔者要好,所以对于原理部分笔者将不再赘述。

二、引用资料

吴恩达《Machine Learning|Coursera》课件中的Lecture2~Lecture4部分

三、实现步骤

代码如下

1.引入库

首先引入numpy库

import numpy as np

2.搭建LR(线性回归)类,并设定超参数

这里,由于计算精度的问题,优化器要迭代至完全0误差需要很多的步数,或者说周期数,故设定阈值。即若误差小于阈值,将停止迭代 (之前的文章【随学随想】自适应过滤法预测时间序列 有提到过)

class LR:
    def __init__(self, variable, label, alpha=0.0001, max_epoch=100):
        self.variable = np.array(variable, dtype=float)  # 特徵
        self.label = np.array(label)  # 標簽值

        self.num_sample = self.variable.shape[0]  # 樣本數
        self.num_variable = self.variable.shape[1]  # 特徵數,用其確定參數(假設函數權重)的個數

        self.alpha = alpha  # 學習率
        self.threshold = 0.0001  # 均方誤差變化閾值

        self.theta = np.random.normal(size=(1, self.num_variable)).T.flatten()  # 初始權重

        self.max_epoch = max_epoch  # 最大迭代數

3.构建假设函数

假设函数表达式如下: h θ = ∑ i = 0 n θ i x i h_\theta=\sum^{n}_{i=0}\theta_{i}x_{i} hθ=i=0n

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值