机器学习代码实战——梯度下降(gradient descent)
文章目录
- 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)之梯度下降(gradient descent)
机器学习(1)之梯度下降(gradient descent) 题记:最近零碎的时间都在学习Andrew Ng的machine learning,因此就有了这些笔记. 梯度下降是线性回归的一种(Line ...
- 【李宏毅机器学习】04:梯度下降Gradient Descent
李宏毅机器学习04:梯度下降Gradient Descent 文章目录 李宏毅机器学习04:梯度下降Gradient Descent 一.梯度下降方法 二.梯度下降的改进方法 Tip 1: Tunin ...
- 梯度下降(Gradient Descent),一句代码,一个式子
一直以来,总是觉得国外的PhD们的教育以及课程的安排很好很强大,虽然是说很累作业多工作量大,但是功率大了,效果好点儿,浪费的时间也少,年轻人哪有怕苦怕累的.比比身边好多每天睡超过12小时的研究生们,不 ...
- Lesson 4.34.4 梯度下降(Gradient Descent)基本原理与手动实现随机梯度下降与小批量梯度下降
Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现 在上一小节中,我们已经成功的构建了逻辑回归的损失函数,但由于逻辑回归模型本身的特殊性,我们在构造损失函数时无法采用 ...
- 机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)
前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公 ...
- 梯度下降 gradient descent
文章目录 导数 偏导数 方向导数 梯度 代价函数的梯度 梯度下降的详细算法 先决条件 算法过程 代价损失中 θ 偏导数公式推导 批量梯度下降(Batch Gradient Descent,BGD) 随 ...
- excel计算二元线性回归_用人话讲明白梯度下降Gradient Descent(以求解多元线性回归参数为例)...
文章目录 1.梯度 2.多元线性回归参数求解 3.梯度下降 4.梯度下降法求解多元线性回归 梯度下降算法在机器学习中出现频率特别高,是非常常用的优化算法. 本文借多元线性回归,用人话解释清楚梯度下降的 ...
- 梯度下降 Gradient Descent 详解、梯度消失和爆炸
1.什么是梯度 在微积分中,对多元函数的参数求∂偏导,把求得的各个参数的偏导数以向量形式写出来即为梯度. 例如对于函数f(x,y),分别对x,y求偏导,求得的梯度向量就是 (∂f/∂x, ∂f/∂y) ...
- 机器学习-线性回归与梯度下降
线性回归 linear regression 符号定义 notation,仅为本教程中的符号定义. \(m\) 训练集中样本的数量 \(x\) 输入值,features. \(x^{(i)}\),表示 ...
最新文章
- 一文读懂GoogLeNet神经网络 | CSDN博文精选
- LeetCode Combination Sum IV(动态规划)
- php ssd性能影响,SATA SSD有无缓存,是否影响速度性能实例
- Block 再学习 !
- java 类持久化_Java 持久化之 -- IO 全面整理(看了绝不后悔)
- 使用Servlet实现用户注册
- [系统审计]SAP HANA 中的系统审计策略管理
- linux下双击sh文件夹,Linux系统下如何运行.sh文件的实现
- opipe--一款基于java的自定义“命令”管道
- 阳新一中2021高考成绩查询,阳新一中2019高考成绩喜报、一本二本上线人数情况...
- strut2_struts.xml文件配置知识点汇集
- PCIe协议中的电源管理概述
- ipd敏捷开发_融入华为IPD软件开发流程与敏捷开发实施java课程设计
- 实验室设备管理系统mysql
- LiDARTag:一种基于点云的实时估计基准标记物位姿的系统
- 基于OpenCV 的美颜相机推送直播流
- 小程序扫码在线点餐系统源码开源分享
- “三分天下”会有云米吗?
- windows jdk1.7安装
- python制作五角星