线性模型(穷举法实现)

news2025/7/22 14:12:21

参考视频:2.线性模型_哔哩哔哩_bilibili

参考视频中实现 y = w x y=wx y=wx 的代码,在加上偏置b后实现 y = w x + b y=wx+b y=wx+b 的线性模型

image-20221115165212612

假设我们有这样一个线性模型: y = w x + b y=wx+b y=wx+b

X和Y对应的数据如下

XY
1.05.0
2.08.0
3.011.0
4.0

预测值: y ^ = w x + b \hat{y}=wx+b y^=wx+b

误差Train Loss: l o s s = ( y ^ − y ) 2 = ( x ∗ w − y ) 2 loss=(\hat{y}-y)^2=(x*w-y)^2 loss=(y^y)2=(xwy)2

平均平方误差MSE: c o s t = 1 N ∑ n = 1 N ( y ^ n − y n ) 2 cost=\frac{1}{N}\sum_{n=1}^{N}(\hat{y}_n-y_n)^2 cost=N1n=1N(y^nyn)2

1 穷举法

首先一种方法是穷举法,假设w的范围是[0.0, 6.0],b的范围也是[0.0,6.0]

穷举w和b的每一种组合,并计算每一次的误差,取误差最小的一次为最优解

下面是代码实现:

import numpy as np
import sys
from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [5.0, 8.0, 11.0]


def forward(x):
    return w * x + b


def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y) ** 2


w_list = np.arange(0.0, 6.1, 0.1)
b_list = np.arange(0.0, 6.1, 0.1)
mse_list = []  # 平均平方误差

min_mse = sys.float_info.max  # 记录最小的MSE
best_w = -1.0  # 记录MSE最小时的w
best_b = -1.0  # 记录MSE最小时的b

for w in w_list:
    for b in b_list:
        l_sum = 0
        for x_val, y_val in zip(x_data, y_data):  # 以元组的形式遍历(x,y)
            loss_val = loss(x_val, y_val)  # 计算Loss
            l_sum += loss_val

        mse = l_sum / len(x_data)  # 计算这一次的MSE
        if mse < min_mse:
            min_mse = mse
            best_b = b
            best_w = w
        mse_list.append(mse)

print(str(best_w) + " " + str(best_b))

ax = plt.axes(projection='3d')
ax.set_xlabel('w', fontsize=14)
ax.set_ylabel('b', fontsize=14)
ax.set_zlabel(' Loss', fontsize=14)
X, Y = np.meshgrid(w_list, b_list)
Z = np.array(mse_list)

ax.scatter3D(X, Y, Z, c=Z, cmap='viridis')
plt.show()

用matplotlib画出三维图形,X轴是权重w,Y轴是偏置b,Z轴是Loss:

image-20221115172639842
显然在w=3,b=2时Loss最小

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

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

相关文章

开源知识付费APP代码分析

如今&#xff0c;传统的学校已经不能满足大众多元化的需求&#xff0c;各种教育培训机构落地生根。随着时间的推移&#xff0c;互联网与传统教育的结合也开拓了一种新的教育方式&#xff0c;这就是广为人知的知识付费。在线教育的突然崛起多半是因为疫情的“催化”&#xff0c;…

OceanBase 4.0 - 从分布式到单机,从单机到分布式

近些年国产化数据库如雨后春笋般冒出并遍地开花。据某技术平台不完全统计&#xff0c;国产化数据库&#xff08;见图 &#xff09;已达 200余个&#xff0c;对于这些数据库的名字&#xff0c;即使作为多年数据库从业者的我&#xff0c;也有很多是第一次听说。在这竞争激烈的数据…

FFplay文档解读-49-多媒体过滤器三

32.14 sendcmd, asendcmd 将命令发送到filtergraph中的过滤器。 这些过滤器读取要发送到filtergraph中其他过滤器的命令。 必须在两个视频滤镜之间插入sendcmd&#xff0c;必须在两个音频滤镜之间插入asendcmd&#xff0c;但除此之外&#xff0c;它们的行为方式相同。 可以…

[附源码]java毕业设计基于的高校学生考勤管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

vue中tinymce的使用

1.下载 npm i tinymce5.10.3 tinymce/tinymce-vue3.2.8 -S2.在node_modules中找到 &#xff08;我这里是vue2&#xff0c;vue3不是写在public下&#xff0c;具体的可以搜搜 看看&#xff09; 3.在public中新建 tinymce 文件夹 把三个文件复制进去 4.在components文件夹中新建…

Unity架构之详解域重新加载和场景重新加载

一、unity进入运行模式包括以下主要阶段 备份当前场景&#xff1a;这仅在场景被修改后发生。这样当退出运行模式时&#xff0c;Unity 将场景恢复为运行模式开始前的状态。Domain Reload&#xff1a;通过重新加载脚本域来重置脚本状态。Scene Reload&#xff1a;通过重新加载场…

h264编码算法流程

xh264编解码&#xff1a; 编码层&#xff1a;视频压缩解压缩等核心算法&#xff0c;VLC就是这一系列算法&#xff0c;得到的是编码后的比特序列&#xff0c;即VLC数据。 网络抽象层&#xff1a;将压缩后的原始码流拼接头信息用于解码时来识别&#xff0c;安排格式以方便后续的…

APT 注解处理器如何实现Lombok的常用注解功能?带你完整解析

1 背景 在开发中我们常常会用到类似 lombok 、mapstruct 或者 mybatisplus 的框架&#xff0c;只要加入几个注解即可生成对应的方法&#xff0c;既然被很多框架使用&#xff0c;了解其中的原理还是非常有必要的。 2 生成字节码原理 2.1 APT(Annotation Processing Tool )注解…

【论文笔记】用于几何匹配的卷积神经网络结构(CNN for Geometric Matching)

用于几何匹配的卷积神经网络结构(CNN for Geometric Matching) 文章目录AbstractCNNRelated WorkArchitecture for Geometric Matching特征提取&#xff1a;Matching Networkcorrelation-layer归一化&#xff1a;Regression NetworkGeometric TransformationsAffine Transforma…

正大杯市场调查与分析大赛|赛前准备 持续更新ing

目录 1.随机化实验 1.1背景 1.2操作 1.3作用 平衡协变量 克服选择偏差 1.4分类 完全随机化实验 分层随机化实验 配对随机化实验 1.5分层随机化 1.6缺陷 2.均值、中位数、分割点、游程数 ​3. 什么是系统抽样 4.F大于临界值说明什么 5.德宾—沃森(DW)统计量[Dur…

webpack5 CssMinimizerPlugin css压缩

CssMinimizerWebpackPlugin | webpack 中文文档webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换&#xff08;transform&#xff09;、打包&#xff08;bundle&#xff09;或包…

动态修改el-input样式;动态修改elmentUI元素样式;css变量

场景&#xff1a;正常我们动态修改div元素的样式&#xff0c;使用:style和:class即可&#xff1b;但是我们想要动态修改element的组件样式时候&#xff0c;例如el-input字体颜色&#xff0c;由于el-input的样式嵌套很深&#xff0c;我们需要修改的实际是.el-input__inner这个样…

强强合作,替代钉盘/微盘,企业实现低成本扩容

后疫情时代&#xff0c;远程办公不断推动协同办公软件快速发展&#xff0c;协同办公软件活跃度保持增长&#xff0c;无疑不反应出企业对对此类办公产品的喜欢&#xff0c;并保持深度使用。 客户的需求和选择也不是一成不变的&#xff0c;完美日记曾经是企业微信的重点客户&…

【附源码】计算机毕业设计JAVA互联网保险网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

9类人事管理场景应用,泛微协助HR释放更多工作量

人事管理数字化是大势所趋&#xff1a; 组织处在不断发展变化的大环境之中&#xff0c;竞争格外激烈&#xff0c;人力资源日益成为组织竞争优势的关键所在。改变传统人事管理模式&#xff0c;推进人事管理数字化变革&#xff0c;把传统的人事管理事务统一到一个平台&#xff0…

从零到一掌握 Docker 的基本原理与实践操作

富 Web 时代,应用变得越来越强大,与此同时也越来越复杂。集群部署、隔离环境、灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁。本文我们就来探索Docker的神秘世界,从零到一掌握 Docker 的基本原理与实践操作,是时候该开疆扩土啦。 讲个故事 为了更好的理解 …

【BSC】使用Python实现PancakeSwap自动交易(入门篇)

需求 最近我们需要在BSC上实现代币的自动化交易&#xff0c;比如自动把BNB兑换成USDT&#xff0c;自动把USDT兑换成CAKE等其它代币&#xff0c;同时也要监视价格&#xff0c;在价格合适的时候再兑换代币。而PancakeSwap正是BSC上最大的去中心化交易平台&#xff0c;我们已经学…

2022行情变了,请各位做好一年内随时失业的准备

前两天跟一个HR朋友聊天&#xff0c;她表示刚在boss上发布了一个普通测试岗位&#xff0c;不到一小时竟然收到了几百份简历。而且简历质量极高&#xff0c;这是往年不敢想象的。岗位少&#xff0c;竞争激烈&#xff0c;这是今年软件测试就业的真实写照&#xff0c;也是所有岗位…

【附源码】计算机毕业设计JAVA畜牧场信息管理系统

【附源码】计算机毕业设计JAVA畜牧场信息管理系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA …

个人如何调用股票程序交易接口?

关于股票程序交易接口的调用一般只有量化交易投资者才能涉及的到&#xff0c;那么做常见也最实用的方法就是使用外接端口&#xff0c;意思就是可以买一个接口就可以接入交易软件了&#xff0c;不过要具有编程基础才能实现&#xff0c;因为现有的策略和设置的函数都是无法满足投…