Python 实现梯度下降算法总结

Python 实现梯度下降算法

最近重新回顾了一下机器学习的基础知识,关于梯度下降的知识,个人认为看懂原理和公式,仅仅是一方面,如果能从代码的角度重新实现或者走一遍可能会更加记忆深刻,下面两个参考链接讲的就非常好,大家一块来学习呀。

相关参考:

[1] 深入浅出–梯度下降法及其实现
[2] python写出梯度下降的代码

Python实现版本 [1]

import numpy as npm = 20  # Size of the points dataset.X0 = np.ones((m, 1))  # Points x-coordinate and dummy value (x0, x1).
X1 = np.arange(1, m + 1).reshape(m, 1)
X = np.hstack((X0, X1))y = np.array([  # Points y-coordinate3, 4, 5, 5, 2, 4, 7, 8, 11, 8, 12,11, 13, 13, 16, 17, 18, 17, 19, 21
]).reshape(m, 1)alpha = 0.01  # The Learning Rate alpha.def error_function(theta, X, y):"""Error function J definition."""diff = np.dot(X, theta) - yreturn (1. / 2 * m) * np.dot(np.transpose(diff), diff)def gradient_function(theta, X, y):"""Gradient of the function J definition."""diff = np.dot(X, theta) - yreturn (1. / m) * np.dot(np.transpose(X), diff)def gradient_descent(X, y, alpha):"""Perform gradient descent."""theta = np.array([1, 1]).reshape(2, 1)gradient = gradient_function(theta, X, y)while not np.all(np.absolute(gradient) <= 1e-5):theta = theta - alpha * gradientgradient = gradient_function(theta, X, y)return thetaoptimal = gradient_descent(X, y, alpha)
error = error_function(optimal, X, y)[0, 0]
print('optimal:', optimal)
print('error function:', error)

Python实现版本 [2]

import numpy as npiterations = 1000  # 定义迭代次数和学习率
alpha = 0.1  # 学习率
m = 100  # 数据长度def compute_error(X, y, theta):  # 定义损失函数predictions = np.dot(X, theta)sqrErrors = (predictions - y) ** 2J = 1 / (2 * m) * np.sum(sqrErrors)return Jdef compute_gradient(theta, X, y):  # 梯度更新predictions = np.dot(X, theta)errors = predictions - ytheta = theta - alpha / m * np.dot(X.T, errors)return thetadef gradient_descent(X, y, theta, num_iters):  # 梯度下降算法J_history = np.zeros((num_iters, 1))  # 记录损失函数for i in range(num_iters):theta = compute_gradient(theta, X, y)J_history[i] = compute_error(X, y, theta)return theta, J_history# 测试代码
x = 2 * np.random.rand(m, 1)  # 随机生成一些数据
y = 100 + 3 * x + np.random.randn(m, 1)
X_b = np.c_[np.ones((m, 1)), x]  # 在数据中添加x0=1
theta = np.random.randn(2, 1)  # 初始化theta
theta, J_history = gradient_descent(X_b, y, theta, iterations)  # 运行梯度下降算法
print("最终参数值:", theta)  # 输出最终结果
print("损失函数值:", J_history[-1])

声明: 总结学习,有问题或不当之处,可以批评指正哦,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/111995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

会议OA小程序【首页布局】

目录 一. Flex布局介绍 1.1 什么是Flex布局 1.2 基本概念 1.3 Flex属性 二. 会议OA首页轮播图的实现 配置 Mock工具 swiper 效果展示 三. 会议OA首页会议信息布局 index.js index.wxml index.wxss 首页整体效果展示 一. Flex布局介绍 布局的传统解决方案&#x…

【LeetCode】54. 螺旋矩阵

题目链接 注意边界 和 方向变化 文章目录 Python3方法一&#xff1a; 计算每个元素 下一个元素的下标 ⟮ O ( m n ) 、 O ( m n ) ⟯ \lgroup O(mn)、O(mn) \rgroup ⟮O(mn)、O(mn)⟯方法二&#xff1a;按层模拟 ⟮ O ( m n ) 、 O ( 1 ) ⟯ \lgroup O(mn)、O(1) \rgroup…

【AIGC核心技术剖析】基于大规模弱监督的鲁棒语音识别【附源码】

论文研究了语音处理系统的能力&#xff0c;该系统只是为了预测互联网上的大量音频成绩单而训练的。当扩展到 680,000 小时的多语言和多任务监督时&#xff0c;生成的模型可以很好地推广到标准基准&#xff0c;并且通常与先前的完全监督结果竞争&#xff0c;但在零镜头传输设置中…

开发模式学习

技术项目 技术项目是指公司经过技术战略规划&#xff08;TPP&#xff09;而产生的技术或平台开发类项目&#xff0c;与产品开发项目不同&#xff0c;技术/平台的开发主要为产品开发而服务&#xff0c;主要针对内部的用户&#xff0c;而非外面直接的客户。 敏捷开发Scrum Scr…

大势山维 | 全盘自主可控的实景三维中国建设解决方案

实景三维中国建设是面向新时期测绘地理信息事业服务于社会经济建设和生态文明建设的新定位、新需求。多年来&#xff0c;大势智慧与山维科技深耕数字化建设&#xff0c;以技术研发为立身之本&#xff0c;逐步成长为空间地理信息建设领域的领跑企业。 大势智慧围绕三维重建国产…

ICML2021 | RSD: 一种基于几何距离的可迁移回归表征学习方法

目录 引言动机分析主角&#xff08;Principal Angle&#xff09;表征子空间距离正交基错配惩罚可迁移表征学习实验数据集介绍 实验结果总结与展望 论文链接 相关代码已经开源 引言 深度学习的成功依赖大规模的标记数据&#xff0c;然而人工标注数据的代价巨大。域自适应&…

Mybatis-plus连接postgrel数据库主键自增问题

首先pg中没有直接设置主键自增这一说法&#xff0c;一般只能新建一个序列&#xff0c;可以使用Navicat创建 在mp的配置类中加入序列的配置&#xff1a; Bean public IKeyGenerator keyGenerator() {return new H2KeyGenerator(); }然后实体类的主键策略只能是INPUT&#xff0…

Android系统 修改源码实现root

适用于所有Android版本&#xff08;userdebug和user版本&#xff09; 1.关闭selinux 源码路径&#xff1a;system/core diff --git a/init/selinux.cpp b/init/selinux.cpp index 5a0255acd..787917274 100644 --- a/init/selinux.cppb/init/selinux.cpp-104,6 104,8 Enforc…

SQLServe联合主键、联合索引、唯一索引,聚集索引,和非聚集索引、主键、唯一约束和外键约束、索引运算总结

联合主键 SQL server 中给表增加联合主键的两种方法 第一种方法&#xff0c;新建表时增加联合主键&#xff1a; create table t_students(id int not null,name varchar(10) not null Primary Key (id, name),age int,dept_id int )注&#xff1a;联合主键的列需要限制非空约…

React中的key有什么作用

一、是什么 首先&#xff0c;先给出react组件中进行列表渲染的一个示例&#xff1a; const data [{ id: 0, name: abc },{ id: 1, name: def },{ id: 2, name: ghi },{ id: 3, name: jkl } ];const ListItem (props) > {return <li>{props.name}</li>; };co…

解决Unity打包时,Android SDK 报错问题

报错内容应该包括类似如下信息&#xff1a; CommandInvokationFailure: Failed to update Android SDK package list. java.lang.UnsupportedClassVersionError: com/android/prefs/AndroidLocationsProvider has been compiled by a more recent version of the Java Runtim…

Vue 异步更新 -- $nextTick

Vue 异步更新 – $nextTick **创建 工程&#xff1a; H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day04\准备代码\16-$nextTick vue --version vue crea…

亿赛通电子文档安全管理系统 Update.jsp SQL注入

目录 0x01 漏洞介绍 0x02 影响产品 0x03 语法特征 0x04 漏洞复现页面 0x05 漏洞修复建议 0x01 漏洞介绍 亿赛通电子文档安全管理系统是国内最早基于文件过滤驱动技术的文档加解密产品之一&#xff0c;保护范围涵盖终端电脑&#xff08;Windows、Mac、Linux系统平台&#…

cAdvisor监控Docker容器做性能测试

cAdvisor监控Docker容器做性能测试 缘起 当前有个服务做技术选型&#xff0c;服务要求比较高的性能&#xff0c;要做性能测试。部署的环境是容器话部署&#xff0c;但申请新的容器流程较长&#xff0c;于是我打算在流程走完之前简单评估下性能&#xff0c;来确定技术选型是否…

深度学习YOLOv4环境配置

软件安装 1、什么是CUDA CUDA(ComputeUnified Device Architecture)&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。 CUDA下载地址为CUDA Toolkit Archive | NVIDIA Developer 版…

【Python第三方包】如何让中文变成拼音呢?(pypinyin包)

文章目录 前言一、安装pypinyin包二、pypinyin的具体使用方式2.1 将单个中文字符转化为拼音:2.2 将中文字符串转化为拼音:2.3 指定拼音风格:2.4 处理多个中文字符:2.5 自定义错误处理:2.6 获取拼音的首字母:总结前言 当我们处理中文文本时,有时候需要将中文字符转换成拼…

【Django 02】数据表构建、数据迁移与管理

1. Django 构建数据表创建与数据迁移 1.1 数据表创建 1.1.1 模块功能 如前所述&#xff0c;models.py文件主要用一个 Python 类来描述数据表。运用这个类,可以通过简单的 Python 代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的SQL语句。今天的例子就是在…

微软Azure OpenAI支持数据微调啦!可打造专属ChatGPT

10月17日&#xff0c;微软在官网宣布&#xff0c;现在可以在Azure OpenAI公共预览版中对GPT-3.5-Turbo、Babbage-002 和Davinci-002模型进行数据微调。 使得开发人员通过自己的数据集&#xff0c;便能打造独一无二的ChatGPT。例如&#xff0c;通过海量医疗数据进行微调&#x…

RSTP详解:对比STP,到底改进了什么?

一、RSTP概述 IEEE 802.1W中定义的RSTP可以视为STP的改进版本&#xff0c;RSTP在许多方面对STP进行了优化&#xff0c;它的收敛速度更快&#xff0c;而且能够兼容STP。 二、RSTP对STP的改进 改进点1&#xff1a;端口角色 、 改进点2&#xff1a;端口状态 RSTP的状态规范缩…

Vue切换回页面可见状态后,避免执行多次滚动定位的动画

目录 一. 问题场景描述 二. 问题解决方案 三. 相关知识点 四. 注意点 五. 相关代码实现 一. 问题场景描述 vue里的一个页面组件涉及到音频文件的自动播放&#xff0c;并且在自动播放时要自动滚动聚焦定位到对应的语音文本列表项&#xff0c;那么当用户点击了自动播放后&am…