线性回归的神经网络法——机器学习

news2024/11/15 4:50:11

一、算法思想


        线性回归方程在神经网络深度学习中线性回归方程是需要掌握的最基础的式子,就是:y=wx+b,其中w,b是未知的。

        神经网络就是可以通过收集大量的数据集,然后将这些数据集进行训练后得到几个较为准确的参数,训练数据集后会得到两个参数,当损失率越小,那么测试集得到的数据就越准确。

 

二、算法原理


        在常规的神经网络中,神经网络结构中有多个层,非线性激活函数和每个节点上面的偏差单元。使用一个有一个或者多个权重w的层,在简单线性回归中,权重w和偏差单元一般都写成一个参数向量β其中偏差单元是y轴上面的截距,w是回归线的斜率。

 

三、算法分析


 

(1)数据处理:即得到y和x,不过在这里称为标签和特征,之后当用更加复杂的数据以及模型的时候,则需要对其进行一些预处理来的到更好的结果

(2)构建模型:在这里的模型就是线性回归函数y = k*x+b

​(3)训练模型:在这个过程中,会不断调整k和b的值来贴近真实值,具体怎么操作在之后会详细说明

​(4)预测:很明显,就是通过新的x值来预测以后的y值

四、源程序代码


import numpy as np
import matplotlib.pyplot as plt
 
# 样本数据
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
y = [3, 4, 5, 5, 2, 4, 7, 8, 11, 8, 10, 11, 13, 13, 16, 17, 16, 17, 18, 20]
m = 20  # 样本数量
alpha = 0.01  # 学习率
θ_0 = 1  # 初始化θ_0的值
θ_1 = 1  # 初始化θ_1的值
 
 
# 预测目标变量y的值
def predict(θ_0, θ_1, x):
    y_predicted = θ_0 + θ_1 * x
    return y_predicted
 
 
# 遍历整个样本数据,计算偏差,使用批量梯度下降法
def loop(m, θ_0, θ_1, x, y):
    sum1 = 0
    sum2 = 0
    error = 0
    for i in range(m):
        a = predict(θ_0, θ_1, x[i]) - y[i]
        b = (predict(θ_0, θ_1, x[i]) - y[i]) * x[i]
        error1 = a * a
        sum1 = sum1 + a
        sum2 = sum2 + b
        error = error + error1
    return sum1, sum2, error
 
 
# 批量梯度下降法进行更新θ的值
def batch_gradient_descent(x, y, θ_0, θ_1, alpha, m):
    gradient_1 = (loop(m, θ_0, θ_1, x, y)[1] / m)
    while abs(gradient_1) > 0.001:  # 设定一个阀值,当梯度的绝对值小于0.001时即不再更新了
        gradient_0 = (loop(m, θ_0, θ_1, x, y)[0] / m)
        gradient_1 = (loop(m, θ_0, θ_1, x, y)[1] / m)
        error = (loop(m, θ_0, θ_1, x, y)[2] / m)
        θ_0 = θ_0 - alpha * gradient_0
        θ_1 = θ_1 - alpha * gradient_1
    return (θ_0, θ_1, error)
 
 
θ_0 = batch_gradient_descent(x, y, θ_0, θ_1, alpha, m)[0]
θ_1 = batch_gradient_descent(x, y, θ_0, θ_1, alpha, m)[1]
error = batch_gradient_descent(x, y, θ_0, θ_1, alpha, m)[2]
print("The θ_0 is %f, The θ_1 is %f, The The Mean Squared Error is %f " % (θ_0, θ_1, error))
 
plt.figure(figsize=(6, 4))  # 新建一个画布
plt.scatter(x, y, label='y')  # 绘制样本散点图
plt.xlim(0, 21)  # x轴范围
plt.ylim(0, 22)  # y轴范围
plt.xlabel('x', fontsize=20)  # x轴标签
plt.ylabel('y', fontsize=20)  # y轴标签
 
x = np.array(x)
y_predict = np.array(θ_0 + θ_1 * x)
plt.plot(x, y_predict, color='red')  # 绘制拟合的函数图
plt.show()


五、运行结果及分析

六、实验总结


 

线性回归的神经网络法我理解的就是对方程: 根据现有的数据来求解该方程中的w和b。

但由于实际问题中的数据x和y并不是都能被这个方程所描述,就像二维的散点图中,不能用一条直线来穿过所有的点,所以目标是要让这条直线能够穿过尽可能多的点,不在该直线上的点也能让它尽可能的离这条直线近。

即要找到合适的w和b使得计算出来的y'与真实的y误差最小化。给定训练数据特征X和对应的已知标签y,线性回归的目标是找到一组权重向量w和偏置b:

当给定从X的同分布中取样的新样本特征时, 这组权重向量和偏置能够使得新样本预测标签的误差尽可能小。

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

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

相关文章

MongoDB单机集群方案及详解

目录帮助文档MongoDB在企业级网站中的定位单机MongoDB部署集群(副本集)集群(副本集仲裁)集群(分片)mongo运行原理mongo管理小工具推荐帮助文档 MongoDB官方更新速度过快,语法不断更新&#xff…

云南民族文化旅游网页设计制作 简单静态HTML网页作品 我的家乡网页作业成品 学生旅游网站模板

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

m基于光纤光栅传感网接入GPON的光纤通信系统matlab性能仿真,包括解码,解封装,分接,码率恢复,解帧,拆包,译码

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 接入处理系统模块化设计: 传感器接收到的信息转换为二进制信息(这个我们可以直接模拟出随机的二进制序列来表示传感器的数据,首先设置一组数据&#…

maven学习: 使用Maven构建Web项目

5.1 Maven中Web项目的结构 ​ 在java的世界中,Web应用占有很大的地位,而它的标准打包方式是WAR。WAR与JAR类似,但它包含了更多内容,如JSP文件、Servlet、web.xml配置文件、静态web资源(如html,css&#xf…

Python Gui之tkinter

GUI是什么 目录 1。GUI编程的核心步骤和第一个GUI程序 2.tkinter主窗口​​​​​​​ 3.GUI的整体描述 常用组件汇总 4.简单的组件 1.Label标签 2.Options选项详解 3.Button 4.Entry单行文本框 5.Text多行文本框 1。GUI编程的核心步骤和第一个GUI程序 from tkinte…

biaffine model:Named Entity Recognition as Dependency Parsing

论文名称:Named Entity Recognition as Dependency Parsing 论文地址:https://www.aclweb.org/anthology/2020.acl-main.577/ 前提说明 本文主要参考了以下资料 nlp_paper_study_information_extraction/code_pytorch.md at main km1994/nlp_paper_s…

ASEMI肖特基二极管SBT40100VFCT规格,SBT40100VFCT封装

编辑-Z ASEMI肖特基二极管SBT40100VFCT参数: 型号:SBT40100VFCT 最大重复峰值反向电压(VRRM):100V 最大平均正向整流输出电流(IF):40A 峰值正向浪涌电流(IFSM&#…

使用kubeadm搭建高可用集群-k8s相关组件及1.16版本的安装部署

本文是向大家分享k8s相关组件及1.16版本的安装部署,它能够让大家初步了解k8s核心组件的原理及k8s的相关优势,有兴趣的同学可以部署安装下。 什么是kubernetes kubernetes是Google 开源的容器集群管理系统,是大规模容器应用编排系统&#xff…

ubuntu下jupyter notebook设置远程访问

1. 安装anaconda 推荐安装anaconda,安装后就会包含jupyter notebook 使用命令conda list或者pip list查看jupyter notebook包,这里不多介绍 2. 生成默认配置文件 在ubuntu环境下,安装jupyter notebook后,用户主目录中会有一个…

DRU-Net--一种用于医学图像分割的高效深度卷积神经网络

Title:DRU-NET: AN EFFICIENT DEEP CONVOLUTIONAL NEURAL NETWORK FOR MEDICAL IMAGE SEGMENTATION 摘要 本文的网络结构是受ResNet和DenseNet两个网络的启发而提出的。与ResNet相比本文的方法增加了额外的跳跃连接,但使用的模型参数要比DenseNet少的多。 基于先…

【创建型设计模式-单例模式】一文搞懂单例模式的使用场景及代码实现的7种方式(全)

1.什么是单例模式 在了解单例模式前,我们先来看一下它的定义: 确保一个类只有一个实例,而且自行实例化并且自行向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法, 单例模式是一种对象的创建型…

北京东物流,南顺丰速运

配图来自Canva可画 众所周知,“双11”是一年一度的物流高峰期,但2022年“双11”当日快递业务量并未达到预期水平,全年增速创下新低。据了解,“双11”当日业务量为5.52亿件,同比下滑了20.69%,而11月1日至11…

什么是CISAW认证?有什么价值?

随着信息技术的快速发展和信息化应用的不断深入,信息技术、产品及网络已经融入社会经济生活的方方面面,但同时信息安全问题也越来越突出。面对严峻的信息安全形势,我国将信息安全上升至国家战略,相继出台了一系列政策法规。那大家…

IDEA好用插件推荐

一、MavenHelper 当Maven Helper 插件安装成功后,打开项目中的pom文件,下面就会多出一个试图Dependency Analyzer 切换到此试图即可进行相应操作: Conflicts(查看冲突)All Dependencies as List(列表形式…

数据仓库规范

模型设计 模型设计概述 为什么需要模型设计? Linux 的创始人 Torvalds 有 一段关于“什么才是优秀程序员”的话:“烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系”,其阐述了数据模型的重要性。有了适合业务和基础数据存…

python 中__init__ 作用

__init__的作用: (1)声明包 (2)预加载模块内容 (1)声明包 python项目结构中,普通目录下无__init__文件;而包下是有__init__文件的。 python 项目结构是按目录来组织的…

R语言结课及Matlab开始

R语言结课 我们R语言的学习这节课下课就结束了,接下来进行Matlab的学习。下面我会说一下R的结课任务及如何考试,以及我自己整理的Matlab安装教程。 R的结课作业:周二上课时提到的两个回归模型课程总结(老师说作业总结主要是作业…

如何运用java代码操作Redis

目录 1、java如何连接Redis? 1.1.启动Redis服务 1.2.导入相关Redis依赖 1.3.java代码进行连接 2、java连接Redis 2.1.String 2.1.1.设值 2.1.2.拿值 2.1.3.删除 2.1.4.修改 2.1.5.给键值对设置过期时间 2.1.6.获取键值对剩余的存活时间 2.2.哈希(Hash&a…

jacoco单测报告怎么同步到sonarqube

sonarqube支持多种代码覆盖率的报告展示,最常用的当属jacoco报告,那么jacoco的报告怎么同步到我们的sonarqube中呢? 我们先看看jacoco的offline模式(单元测试)报告生成的流程 根据上图我们需要生成单测报告&#xff0…

Apollo 应用与源码分析:CyberRT-工具与命令

概念 cyberRT包括一个可视化工具cyber_visualizer和两个命令行工具cyber_monitor和cyber_recorder。 注意:使用这些工具需要apollo docker环境 并且Cyber RT 中提供了一些命令工具,可以方便快捷的解决上述问题,本部分内容就主要介绍这些命…