机器学习·线性回归

线性回归

损失函数

J ( w , b ) = 1 2 m ∑ i = 1 m ( f ( i ) ( w 1 , w 2 , … , w j , b ) − y ( i ) ) 2 J(w,b)=\frac{1}{2m}\sum_{i=1}^{m}\left({f^{(i)}(w_1,w_2,\ldots,w_j,b)-y^{(i)}} \right)^2 J(w,b)=2m1i=1m(f(i)(w1,w2,,wj,b)y(i))2

梯度下降方法

w i = w i − α 1 m ∑ i = 1 m ( f ( i ) ( w 1 , w 2 , … , w j , b ) − y ( i ) ) w i w_i=w_i-\alpha\frac{1}{m}\sum_{i=1}^{m}({f^{(i)}(w_1,w_2,\ldots,w_j,b)-y^{(i)}})w_i wi=wiαm1i=1m(f(i)(w1,w2,,wj,b)y(i))wi
b = b − α 1 m ∑ i = 1 m ( f ( i ) ( w 1 , w 2 , … , w j , b ) − y ( i ) ) b=b-\alpha\frac{1}{m}\sum_{i=1}^{m}({f^{(i)}(w_1,w_2,\ldots,w_j,b)-y^{(i)}}) b=bαm1i=1m(f(i)(w1,w2,,wj,b)y(i))
i = 1 , 2 , … , m 表示 m 组数据集 j = 1 , 2 , … , p 表示 p 个 w i α 表示学习率,随着变量增多不宜过大 i=1,2,\ldots,m\ 表示m组数据集\\j=1,2,\ldots,p\ 表示p个w_i\\\alpha\ 表示学习率,随着变量增多不宜过大 i=1,2,,m 表示m组数据集j=1,2,,p 表示pwiα 表示学习率,随着变量增多不宜过大

一元线性回归代码

def cost(x,y,w,b):cost=0m=x.shape[0]# 第一行的维度 numpy默认对行操作for i in range(m):cost+=(y[i]-w*x[i]-b)**2cost/=2*mreturn cost
def gradient(x,y,w,b):m=x.shape[0]dj_dw_total=0dj_db_total=0for i in range(m):dj_dw=(w*x[i]+b-y[i])*x[i]dj_db=(w*x[i]+b-y[i])dj_dw_total+=dj_dwdj_db_total+=dj_dbdj_dw_total/=mdj_db_total/=mreturn dj_dw_total,dj_db_total
def gradient_descent(x,y,w0,b0,alpha,iteration,cost,gradient):J=[]parameter=[]w=w0b=b0for i in range(iteration):dj_dw,dj_db=gradient(x,y,w,b)w-=alpha*dj_dwb-=alpha*dj_dbJ.append(cost(x,y,w,b))parameter.append([w,b])if i % math.ceil(iteration / 10) == 0:print(f"Iteration {i:4}: Cost {J[-1]:0.2e} ",f"dj_dw: {dj_dw: 0.3e}, dj_db: {dj_db: 0.3e}  ",f"w: {w: 0.3e}, b:{b: 0.5e}")print('现在为你绘制损失函数')plt.figure(figsize=(12, 6))plt.subplot(1,2,1)plt.plot(J[:100])plt.ylabel('cost')plt.xlabel('迭代次数')plt.subplot(1, 2, 2)plt.plot(np.arange(100,len(J)),J[100:])plt.ylabel('cost')plt.xlabel('迭代次数')plt.show()return w,b,J,parameter

多元线性回归

def multi_cost(X,Y,w,b):m=X.shape[0]cost=np.sum((X@w+b-Y)**2)return cost
def multi_gradient(X,Y,w,b):m,n=X.shapedj_dw=np.zeros((n,))dj_db=0for i in range(m):temp=X[i]@w+b-Y[i]for j in range(n):dj_dw[j]+=temp*X[i,j]dj_db+=tempdj_dw=dj_dw/mdj_db=dj_db/mreturn dj_dw,dj_db
def mutil_gradient_descent(X,Y,w0,b0,alpha,iteration,multi_cost,multi_gradient):J=[]parameter=[]w=w0b=b0J.append(multi_cost(X,Y,w,b))parameter.append([w,b])for i in range(iteration):dj_dw,dj_db=multi_gradient(X,Y,w,b)w-=alpha*dj_dwb-=alpha*dj_dbif i < 100000:  # prevent resource exhaustionJ.append(multi_cost(X, Y, w, b))parameter.append([w,b])# Print cost every at intervals 10 times or as many iterations if < 10if i % math.ceil(iteration / 10) == 0:print(f"Iteration {i:4d}: Cost {J[-1]:8.2f}   ")print('现在为你绘制损失函数')plt.figure(figsize=(12, 6))plt.subplot(1, 2, 1)plt.plot(J[:len(J)//2])plt.ylabel('cost')plt.xlabel('迭代次数1')plt.subplot(1, 2, 2)plt.plot(np.arange(len(J)//2, len(J)), J[len(J)//2:])plt.ylabel('cost')plt.xlabel('迭代次数2')plt.show()return J,parameter

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

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

相关文章

【资料分享】2024第三届钉钉杯大学生大数据挑战赛B题思路解析+双语言代码

2024钉钉杯大学生大数据挑战赛&#xff0c;B题解题思路和双语言代码分享&#xff0c;资料预览&#xff1a;

机房建设及运维方案

随着信息技术的快速发展&#xff0c;机房作为企业数据处理与存储的核心场所&#xff0c;其重要性日益凸显。机房的建设不仅关乎到企业业务的正常运行&#xff0c;更与企业的长期发展紧密相连。为了确保机房设备的稳定运行和业务的连续性&#xff0c;本文将从机房建设及运维两个…

解密阿里大神写的天书般的Tree工具类,轻松搞定树结构!

首发公众号&#xff1a;赵侠客 一、引言 最近公司新进了不少新人&#xff0c;包括一些来自阿里、网易等大型企业的资深工程师。我们组的一位新同事是阿里来的专家&#xff0c;我在CR&#xff08;Code Review, 简称CR&#xff09;时看到了他编写的一个关于树操作的工具类&#…

操作系统:进程1

一.进程 1.什么是进程 一个进程创建&#xff0c;他会生成几块&#xff1a; 代码段&#xff1a;进程执行的程序代码数据段&#xff1a;全局变量&#xff0c;静态变量&#xff0c;在进程生命周期中是动态可变的堆&#xff1a;动态分配的内存区域&#xff0c;malloc、calloc、real…

html实现酷炫美观的可视化大屏(十种风格示例,附源码)

文章目录 完整效果演示1.蓝色流线风的可视化大屏1.1 大屏效果1.2 大屏代码1.3 大屏下载 2.地图模块风的可视化大屏2.1 大屏效果2.2 大屏代码2.3 大屏下载 3.科技轮动风的可视化大屏3.1 大屏效果3.2 大屏代码3.3 大屏下载 4.蓝色海洋风的可视化大屏4.1 大屏效果4.2 大屏代码4.3 …

快速介绍git(Linux)

git 1、安装2、版本控制3、git vs gitee&&GitHub(git故事)4、git的操作 1、安装 很简单&#xff0c;直接 sudo yum install -y git2、版本控制 故事介绍&#xff1a;你是一个大学生&#xff0c;你上课需要交一分实验报告&#xff0c;教你的老师比较负责&#xff0c;…

Postman多环境测试全解析:打造灵活的API测试策略

Postman多环境测试全解析&#xff1a;打造灵活的API测试策略 在API开发和测试过程中&#xff0c;经常需要在不同的环境&#xff08;如开发、测试和生产环境&#xff09;中进行测试。Postman提供了多环境测试的功能&#xff0c;允许测试者为API定义多个运行环境&#xff0c;并快…

手把手教你集成GraphRag.Net:打造智能图谱搜索系统

在人工智能和大数据发展的背景下&#xff0c;我们常常需要在项目中实现知识图谱的应用&#xff0c;以便快速、准确地检索和使用信息。 今天&#xff0c;我将向大家详细介绍如何在一个新的.NET项目中集成GraphRag.Net&#xff0c;这是一个参考GraphRag实现的.NET版本&#xff0c…

Git 中的工作区(Working Directory)、暂存区(Staging Area 或 Index)、提交区(Repository)

在 Git 中&#xff0c;工作区&#xff08;Working Directory&#xff09;、暂存区&#xff08;Staging Area 或 Index&#xff09;、提交区&#xff08;Repository&#xff09;是三个核心概念&#xff0c;它们分别代表不同的文件状态和存储位置。以下是它们的详细解释及其关联&…

Linux_make/Makefile的理解

1.make是一个命令&#xff0c;makefile是一个文件, 依赖关系和依赖方法. a.快速使用一下 i.创建一个Makefile文件(首字母也可以小写) b.依赖关系和依赖方法 i.依赖关系: 我为什么要帮你? mybin:mytest.c ii.依赖方法: 怎么帮? gcc -o mybin mytest.c make之前要注意先创建…

探索LLM世界:新手小白的学习路线图

随着人工智能的发展&#xff0c;语言模型&#xff08;Language Models, LLM&#xff09;在自然语言处理&#xff08;NLP&#xff09;领域的应用越来越广泛。对于新手小白来说&#xff0c;学习LLM不仅能提升技术水平&#xff0c;还能为职业发展带来巨大的机遇。那么&#xff0c;…

CycloneIV 使用MAX7219驱动数码管

MAX7219驱动数码管的代码&#xff0c;C语言有大把的代码参考&#xff0c;实现的原理这里我就不细说了&#xff0c;其他博主说得很详细&#xff0c;但是Verilog的代码并没有很多&#xff0c;因此&#xff0c;这里我封装好了代码&#xff0c;仅需根据自己的需要去配置就可以 mod…

Linux(虚拟机)的介绍

Linux介绍 常见的操作系统 Windows&#xff1a;微软公司开发的一款桌面操作系统&#xff08;闭源系统&#xff09;。版本有dos&#xff0c;win98&#xff0c;win NT&#xff0c;win XP , win7, win vista. win8, win10&#xff0c;win11。服务器操作系统&#xff1a;winserve…

Linux中将文件解压到指定目录

在Linux中&#xff0c;你可以使用以下命令将压缩文件解压到指定的目录&#xff1a; 对于.tar文件&#xff1a; tar -xvf archive.tar -C /path/to/directory这里的archive.tar是你要解压的.tar文件&#xff0c;/path/to/directory是你想要解压到的目标目录。 对于.tar.gz或.…

conda issue

Conda 是一个跨平台、通用的二进制包管理器。它是 Anaconda 安装使用的包管理器&#xff0c;但它也可能用于其他系统。Conda 完全用 Python 编写&#xff0c;并且是 BSD 许可的开源。通用意味着大部分的包都可以用它进行管理&#xff0c;很像一个跨平台版本的apt或者yum&#x…

vue3 父组件 props 异步传值,子组件接收不到或接收错误

1. 使用场景 我们在子组件中通常需要调用父组件的数据&#xff0c;此时需要使用 vue3 的 props 进行父子组件通信传值。 2. 问题描述 那么此时问题来了&#xff0c;在使用 props 进行父子组件通信时&#xff0c;因为数据传递是异步的&#xff0c;导致子组件无法成功获取数据…

汇川CodeSysPLC教程03-2-6 ModBus TCP

什么是ModBus TCP&#xff1f; ModBus TCP是一种基于TCP/IP协议的工业网络通信协议&#xff0c;常用于工业自动化和控制系统。它是ModBus协议的一个变种&#xff0c;ModBus协议最初由Modicon&#xff08;现在是施耐德电气的一部分&#xff09;在1979年开发。 以下是ModBus TC…

【gradle】在test apk中定义SDK编译和拷贝任务

// 定义一个任务来编译 AAR 并拷贝到自定义位置 tasks.register(‘compileAndCopyAAR’) { exec { commandLine ‘cmd’, “/c”, “cd …/…/ &&” ‘gradlew SDK:assembleRelease’ } copy {from("../../SDK/build/outputs/aar/") {include SDK-release.…

数据治理之“财务一张表”

前言 信息技术的发展&#xff0c;伴随企业业务系统的纷纷建设&#xff0c;提升业务处理效率的同时&#xff0c;也将企业的整体主价值链流程分成了一段一段的业务子流程&#xff0c;很多情况下存在数据上报延迟、业务协作不顺畅、计划反馈不及时、库存积压占资多……都可以从数据…

【Android】linux

android系统就是跑在linux上的系统。Linux层里面包含系统和硬件驱动等一些本地代码的环境。 linux的目录 mount: 用于查看哪个模块输入只读&#xff0c;一般显示为&#xff1a; [rootlocalhost ~]# mount /dev/cciss/c0d0p2 on / type ext3 (rw) proc on /proc type proc (…