文章目录

  • 1.实验目的
  • 2.梯度下降
    • 2.1.借助sklearn库
    • 2.2.手写梯度下降函数

1.实验目的

本实验将使用两种方法实现梯度下降算法并可打印出参数,可视化梯度下降过程。第一种方法是借助sklearn库,第二种方法是手写梯度下降函数。
数据链接
密码:faxo

2.梯度下降

2.1.借助sklearn库

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression #调用线性回归模型def predict_using_sklearn():df = pd.read_csv('test_scores.csv')    #读取数据model = LinearRegression()     #实例化model.fit(df[['math']],df.cs)     #训练return model.coef_, model.intercept_    #返回模型系数和截距m_sklearn, b_sklearn = predict_using_sklearn()    #调用函数
print("Using sklearn: Coef {} Intercept {}".format(m_sklearn,b_sklearn))    #打印模型系数和截距

2.2.手写梯度下降函数

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import mathdef gradient_descent(x,y):m_curr, b_curr = 0, 0    #初始化系数m、截距biterations = 100      #迭代次数n = len(x)        #数据总数lr = 0.00001       #学习率cost_previous = 0    #初始化损失for i in range(iterations):y_predicted = m_curr*x + b_curr      #预测当前迭代的yplt.plot(x,y_predicted,color='green')     #打印预测直线cost = (1/n)*sum([val**2 for val in (y-y_predicted)])    #计算当前迭代损失dm = -(2/n)*sum(x*(y-y_predicted))     #求m的偏导数db = -(2/n)*sum(y-y_predicted)         #求b的偏导数m_curr = m_curr - lr*dm       #求当前mb_curr = b_curr - lr*db       #求当前bif i==99:plt.plot(x,y_predicted,color='red',linewidth=1)   #画最后一次迭代预测直线if math.isclose(cost,cost_previous,rel_tol=1e-20):    #用于判断相邻两个迭代误差是否在容差范围内breakcost_previous = costprint ("m:{}|b:{}|cost:{}|iteration:{}".format(m_curr,b_curr,cost, i))return m_curr, b_curr    #返回最终m,bdf = pd.read_csv('test_scores.csv')
x = np.array(df.math)
y = np.array(df.cs)m, b = gradient_descent(x, y)
print("Using sklearn: Coef: {} Intercept: {}".format(m,b))


实验过程中需要不断的调整参数(如迭代次数、学习率)以使得误差尽可能小,选择误差相对较小的超参数作为最终的模型参数。

机器学习代码实战——梯度下降(gradient descent)相关推荐

  1. 机器学习(1)之梯度下降(gradient descent)

    机器学习(1)之梯度下降(gradient descent) 题记:最近零碎的时间都在学习Andrew Ng的machine learning,因此就有了这些笔记. 梯度下降是线性回归的一种(Line ...

  2. 【李宏毅机器学习】04:梯度下降Gradient Descent

    李宏毅机器学习04:梯度下降Gradient Descent 文章目录 李宏毅机器学习04:梯度下降Gradient Descent 一.梯度下降方法 二.梯度下降的改进方法 Tip 1: Tunin ...

  3. 梯度下降(Gradient Descent),一句代码,一个式子

    一直以来,总是觉得国外的PhD们的教育以及课程的安排很好很强大,虽然是说很累作业多工作量大,但是功率大了,效果好点儿,浪费的时间也少,年轻人哪有怕苦怕累的.比比身边好多每天睡超过12小时的研究生们,不 ...

  4. Lesson 4.34.4 梯度下降(Gradient Descent)基本原理与手动实现随机梯度下降与小批量梯度下降

    Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现 在上一小节中,我们已经成功的构建了逻辑回归的损失函数,但由于逻辑回归模型本身的特殊性,我们在构造损失函数时无法采用 ...

  5. 机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)

    前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公 ...

  6. 梯度下降 gradient descent

    文章目录 导数 偏导数 方向导数 梯度 代价函数的梯度 梯度下降的详细算法 先决条件 算法过程 代价损失中 θ 偏导数公式推导 批量梯度下降(Batch Gradient Descent,BGD) 随 ...

  7. excel计算二元线性回归_用人话讲明白梯度下降Gradient Descent(以求解多元线性回归参数为例)...

    文章目录 1.梯度 2.多元线性回归参数求解 3.梯度下降 4.梯度下降法求解多元线性回归 梯度下降算法在机器学习中出现频率特别高,是非常常用的优化算法. 本文借多元线性回归,用人话解释清楚梯度下降的 ...

  8. 梯度下降 Gradient Descent 详解、梯度消失和爆炸

    1.什么是梯度 在微积分中,对多元函数的参数求∂偏导,把求得的各个参数的偏导数以向量形式写出来即为梯度. 例如对于函数f(x,y),分别对x,y求偏导,求得的梯度向量就是 (∂f/∂x, ∂f/∂y) ...

  9. 机器学习-线性回归与梯度下降

    线性回归 linear regression 符号定义 notation,仅为本教程中的符号定义. \(m\) 训练集中样本的数量 \(x\) 输入值,features. \(x^{(i)}\),表示 ...

最新文章

  1. 一文读懂GoogLeNet神经网络 | CSDN博文精选
  2. LeetCode Combination Sum IV(动态规划)
  3. php ssd性能影响,SATA SSD有无缓存,是否影响速度性能实例
  4. Block 再学习 !
  5. java 类持久化_Java 持久化之 -- IO 全面整理(看了绝不后悔)
  6. 使用Servlet实现用户注册
  7. [系统审计]SAP HANA 中的系统审计策略管理
  8. linux下双击sh文件夹,Linux系统下如何运行.sh文件的实现
  9. opipe--一款基于java的自定义“命令”管道
  10. 阳新一中2021高考成绩查询,阳新一中2019高考成绩喜报、一本二本上线人数情况...
  11. strut2_struts.xml文件配置知识点汇集
  12. PCIe协议中的电源管理概述
  13. ipd敏捷开发_融入华为IPD软件开发流程与敏捷开发实施java课程设计
  14. 实验室设备管理系统mysql
  15. LiDARTag:一种基于点云的实时估计基准标记物位姿的系统
  16. 基于OpenCV 的美颜相机推送直播流
  17. 小程序扫码在线点餐系统源码开源分享
  18. “三分天下”会有云米吗?
  19. windows jdk1.7安装
  20. python制作五角星

热门文章

  1. “我有必要写技术博客吗?” 写技术博客一年,谈谈其得失优劣
  2. 在PHP中使用协程实现多任务调度
  3. 为MySQL选择合适的备份方式
  4. js方法实现rgb颜色转换成16进制格式的代码的方法
  5. 如何设置硬盘安装linux,linux用硬盘安装时所设置选项
  6. mysql 报错注入输出多个字段_SQL注入浅析
  7. acc 蓝牙_蓝牙耳机什么牌子好,哪个品牌的无线蓝牙耳机便宜好用
  8. 举例说明TCP/IP
  9. ISA2000安装与设置
  10. 转贴: mysql-5.7.20 编码由 utf8 改为 utf8mb4