文章目录

  • 线性回归实现
    • 实验数据:
    • 实现结果:
    • 算法流程:
    • 代码实现:

线性回归实现

y=ax+by = ax + by=ax+b

x,y 是向量,a,b是标量

梯度下降法:

a=a−α∂cost∂aa = a - \alpha \frac{\partial cost}{\partial a}a=a−α∂a∂cost​

cost=12m∑i=1m(yi−y‘i)2cost= \frac{1}{2m}\sum^m_{i=1}(y_i - y`_i)^2cost=2m1​i=1∑m​(yi​−y‘i​)2

cost :代价函数

实验数据:

实现结果:

算法流程:

代码实现:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np# 线性回归实现 梯度下降方法
# y = ax + b
# a, b 是标量
# x, y 是向量# 模型 y = ax + b, 需要训练出 a 和 b 的值
def model(a, b, x):# numpy的广播特征# print(a, b, x)ret = a*x+b# print("ret :  ", ret)# ret = [a*i+b for i in x]# print(ret)return ret# 代价|损失函数
def cost_function(a, b, x, y, n=5):# 1/(2n) * sum( square(yi -yi`) )return 0.5 / n * (np.square(y - a * x - b)).sum()# 梯度下降方法 对a,b进行优化
def optimize(a, b, x, y, n=5):# a = a-alpha*(损失函数对a求偏导)alpha = 1e-1y_hat = model(a, b, x)da_t = y_hat - yda = (1.0 / n) * ((y_hat - y) * x).sum()db = (1.0 / n) * (y_hat - y).sum()a = a - alpha * dab = b - alpha * dbreturn a, b# 使用x, y 向量训练出 a, b两个标量
def train(x, y, cost=10000):# 初始化 a=b=0a = b = 0.0# 进入循环 直到到达循环结束条件# 循环结束条件:损失函数最小值   #这儿我是用控制循环次数来结束循环while True:# 优化方法 使用梯度下降的算法,对a,b进行优化a, b=optimize(a, b, x, y)cost = cost - 1if cost == 0:breakreturn a, bif __name__ == "__main__":# 数据提取 使用pandas# ds 的类型:<class 'pandas.core.frame.DataFrame'>ds = pd.read_csv("LinearRegression.csv")print(type(np.array(ds.iloc[:, [1]])),np.array(ds.iloc[:, [1]]))# 将数据变成一维# np.array(ds.iloc[:, [1]])# 将 <class 'pandas.core.frame.DataFrame'> 转换为 <class 'numpy.ndarray'># narray.reshape(-1) 将 numpy.narray 的多维转换为一维x = np.array(ds.iloc[:, [1]]).reshape(-1)print(type(x), x)y = np.array(ds.iloc[:, [2]]).reshape(-1)# x = [float(i) for i in x]# y = [float(i) for i in y]# print(type(np.array(ds.iloc[:, [1]]).reshape(-1)),np.array(ds.iloc[:, [1]]).reshape(-1) )# print(type(x), x)# print(type(y), y)# 使用 6 张图片显示count = 1for i in range(1, 7):plt.subplot(3, 2, i)a, b = train(x, y, count)plt.plot(x, y, "bo")plt.plot(x, model(a, b, x))count = count * 3plt.show()

线性回归实现——梯度下降相关推荐

  1. 机器学习01-定义、线性回归、梯度下降

    目录 一.定义 What is Machine Learning 二.建模 Model Representation 三.一元线性回归 Linear Regression with One Varia ...

  2. 机器学习第4天:线性回归及梯度下降

    文章目录 一.简单线性回归(即一元线性回归) 二.代价函数 数学表达式: 代码实现: 实例说明 三.梯度下降 数学表达式: 具体方法 代码实现: 代价随迭代次数的变化 一.简单线性回归(即一元线性回归 ...

  3. 【机器学习基础】线性回归和梯度下降的初学者教程

    作者 | Lily Chen 编译 | VK 来源 | Towards Data Science 假设我们有一个虚拟的数据集,一对变量,一个母亲和她女儿的身高: 考虑到另一位母亲的身高为63,我们如何 ...

  4. 梯度下降的线性回归用python_一元线性回归和梯度下降的python代码实现

    一元线性回归和梯度下降的python代码实现 2020-08-05 23:49 阅读数 9 import numpy as np import matplotlib.pyplot as plt imp ...

  5. 为什么回归直线过平均值点_线性回归和梯度下降的初学者教程

    假设有一个虚拟的数据集包含多对变量,即每位母亲和她女儿的身高: 通过这个数据集,我们如何预测另一位身高为63的母亲的女儿的身高? 方法是用线性回归. 首先找到最佳拟合线,然后用这条直线做预测. 线性回 ...

  6. 用懊悔法学习吴恩达机器学习【2】-----线性回归的梯度下降

    以下英文文档皆出自课程配套笔记 课9 代价函数二 这一课时考虑使用两个参数来描述代价函数.此时等价函数是一个碗形,碗底点为最小值,将碗形用等高线表示,等高线中心就是代价函数的最小值.所以距离等高线中心 ...

  7. 线性回归(梯度下降)2021-04-16

    线性回归(+gradient desent) 线性回归 基本思想 1,线性回归 1.1线性回归概念 1.2 回归参数的求解方法 1.21 最小二乘法(least square method 2.211 ...

  8. 吴恩达机器学习(六)线性回归的梯度下降

    文章目录 1.先导知识 2.线性回归的梯度下降 1.先导知识 之前学习的内容: 2.线性回归的梯度下降 我们要做的是将梯度下降法应用到最小化平方差代价函数, 我们解决过的梯度下降问题之一就是它容易陷入 ...

  9. 线性回归随机梯度下降_线性回归的批次梯度与随机梯度下降

    线性回归随机梯度下降 In this article, we will introduce about batch gradient and stochastic gradient descent m ...

最新文章

  1. 您的手机上未安装应用程序 android 点击快捷方式提示未安装程序的解决
  2. 理解Python中的类对象、实例对象、属性、方法
  3. MySQL:union all与union区别详解
  4. 二叉树、树和有序树的区别
  5. mo汇编指令_汇编指令大全
  6. 节点文件将两个不同格式的XML文件,进行节点对照,并生成一个用于对照功能的XML...
  7. LAN7500 Mac OS X Device Driver
  8. 利用QT写的局域网聊天工具(客户端)
  9. Cisco思科交换机Vlan划分
  10. B站视频下载方法之--手机下载后再转移至电脑
  11. 用计算机拜年祝福语,新年大吉拜年短信 适合春节发的祝福语说说
  12. 深度学习中的epochs、batch_size、iterations详解
  13. 解决网页无法复制文字
  14. 电机控制器,FPGA 硬件电流环 基于FPGA的永磁同步伺服控制系统的设计
  15. 剑指 Offer 06. 从尾到头打印链表
  16. css实现文字渐变并兼容IE浏览器
  17. html格式自动出现乱码,HTML页面乱码怎么解决?
  18. 云呼叫中心系统实现坐席远程办公
  19. php 如何判断手机(m端)和电脑(pc端)
  20. 蓝牙最新版本6.0_手机蓝牙连接汽车放歌。放30秒就没声音了是什么坏了?

热门文章

  1. var和function谁先优先执行_JS中如何和让异步函数优先执行?
  2. stm32l4 外部中断按键会卡死_stm32f103c8怎么实现外部中断按键点灯,按一下就亮,再按一下就灭,求大神帮忙...
  3. php提交表单并发送邮件,php提交表单发送邮件的方法
  4. c#提交事务的两种方法
  5. Java5~11新特性
  6. Ubuntu 16.04 安装Go 1.9.2
  7. Jboss启动报错——DailyRollingFileAppender无法转换异常
  8. 目标描述(基于边界的描述)
  9. mysql 存储过程 用户变量值_mysql:用户变量、系统变量、局部变量(存储过程中的)...
  10. oracle怎么自定义排序,查询时怎么根据一个自定义的函数来进行排序