Python-感知机以及实现感知机

感知机定义

如果有一个算法,具有1个或者多个入参,但是返回值要么是0,要么是1,那么这个算法就叫做感知机,也就是说,感知机是个算法

感知机有什么用

感知机是用来表示可能性的大小的,我们可以认为假设如果返回1,那么事情下一步的方向偏向A更大一些,如果返回0,那么事情下一步的方向偏向B更大一些,现在说这些还太早,总之我们知道感知机是用来表述可能性大小的东西就可以了

乱写一个感知机

根据定义,下面的算法是我随便写的,虽然没任何用,但是它确实是一个感知机算法,很明显,感知机算法有无穷无尽个
java语言:

public static void main(String[] args) {int result = 感知机(7, 8);System.out.println(result);
}public int 感知机(int a, int b) {if (a + b > 5) {return 1;}return 0;
}

python语言:

def perceptron(a,b): # 定义感知机算法if(a + b>5):return 1else: return 0
a,b = 7,8
result = perceptron(a,b)
print(result)

阈值与偏置:上述示例中的[5]叫做阈值,后文中我们会叫它偏置

阈值:
很明显,上述示例中的5,是我根据我脑海中的需求,随便写出来的,其他人的想法肯定是和我不太一样的,所以其他人也有可能写成a+b>999,那么我们就说阈值是999,如果满足这个阈值,就返回1,不满足这个阈值,就返回0
偏置:
在感知机的概念中,我们通常把阈值叫做偏置,既然名词改变了,那么我们的算法也需要改变一下,变成下面这样

if(-5 + (a + b)>0):return 1
else: return 0

这个时候,我们才可以正式的说:偏置为-5

权重

这是一个非常重要的概念,在上述算法中,我没有体现出权重,也就是说,上面的代码,没有权重,或者说,上述的代码中,权重是1

那么对于感知机来说,什么是权重?没有权重会怎么样
1.什么是权重:每个入参都需要乘以一个值,至于值是多少,我们先不管,那么乘以的这个值,就叫做权重,拿上述代码来说,其实是乘以了1,就像下面这样:

# a乘以1加上b乘以1
if(-5 + (a*1 + b*1)>0):return 1
else: return 0

2.加上权重会怎么样?当然是会严重影响结果了例如,我们让参数a的权重是0.5,参数b的权重是0.1,变成下面这样

if(-5 + (a*0.5 + b*0.1)>0):return 1
else: return 0
# 此时如果a=7,b=8,那么该感知机算法会返回0,之前是返回1的,加了这个权重,变成0

3.权重到底影响什么?权重影响的是参数,如果我们认为参数是现实中的某种决策的外在条件,那么权重会影响最终结果,例如,今天下雨天气不好,我要出去玩HR,那么请问天气不好在家的权重大,还是出去玩HR的权重大???如果天气不好在家的权重非常大,只要滴几个小雨点或者阴天,那么我们就绝对不会出门,如果出去玩HR的权重大,那么无论天气多么恶劣,我们也会出去玩HR,对不对??所以说权重会影响决策,例如下面你的代码,无论你将b设置成什么值,都不会影响结果,因为它的权重非常小

if(-5 + (a*0.5 + b*0)>0): # 我们将b的权重设置成0,相当于完全忽略b这个条件return 1
else: return 0

感知机的初步公式

我们上面介绍了入参,权重,偏置,所以得到了一个感知机公式,如下

结果0 = 偏置 + (入参1 * 入参1权重 + 入参2 * 入参2权重) <=0
结果1 = 偏置 + (入参1 * 入参1权重 + 入参2 * 入参2权重) > 0

阶跃函数与激活函数

阶跃函数是当结果超过了某个阈值,就输出另一个参数,在本文的例子中,就是大于0小于0这个过程,下面代码中的step函数,就是阶跃函数,对上文的代码进行拆分,我们拆分成两步,如下
步骤1:

结果X = 偏置 + (入参1 * 入参1权重 + 入参2 * 入参2权重)

步骤2:

def step(a): # 定义一个阶跃函数if(a>0):return 1else: return 0
结果R = step(X) # 将步骤1的结果传递到阶跃函数中,结果R要么是0,要么是1

由于阶跃函数使用起来不够平滑,平滑指的是跳跃太大了,有点像高低电平,给一个阈值,以这个阈值为门槛,这有很多缺点,我们之后再说,总之你要记住“不够平滑”,我们想要平滑,所以又提出了阶跃函数的升级版本,也叫激活函数(注意,激活是个名词,不是动词)

激活函数

这里不写了,单独拎出一片文章吧,今天该下班回家打LOL了

感知机的缺点

感知机有一个缺点,就是这个权重的设置,在本文的代码中,0.5,0.1,0什么的,这都是我随便设置的,但是现实生活中,如果想让一个算法具有智能,那么这个权重是通过大量数据总结出来的,如果想要人工总结,那么得需要大量的时间和人工成本,是否有什么办法,能够让计算机自己定义这个权重呢??

当然是有的,我们常常听到的机器学习,就是通过大量数据+一个叫做神经网络的技术,把权重算出来,当然,如果你觉得对这个权重不满意,也可以人工干扰,或者说我本身就知道应该设置权重多少,没必要进行机器学习,直接写死权重值也是可以的,不过这是后面文章的内容了

本文就到这里,介绍了一些感知机的概念

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

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

相关文章

STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析

知识点1【TRGO的介绍】 1、TRGO的概述 TRGO&#xff1a;Trigger Output&#xff08;触发输出&#xff09;&#xff0c;是定时器的一种功能。 它可以作为外设的启动信号&#xff0c;比如ADC转换&#xff0c;DAC输出&#xff0c;DMA请求等。 对于ADC来说&#xff0c;可以通过…

Qwen3技术报告解读

https://github.com/QwenLM/Qwen3/blob/main/Qwen3_Technical_Report.pdf 节前放模型&#xff0c;大晚上的发技术报告。通义&#xff0c;真有你的~ 文章目录 预训练后训练Long-CoT Cold StartReasoning RLThinking Mode FusionGeneral RLStrong-to-Weak Distillation 模型结构…

【网络编程】十、详解 UDP 协议

文章目录 Ⅰ. 传输层概述1、进程之间的通信2、再谈端口号端口号的引出五元组标识一个通信端口号范围划分常见的知名端口号查看知名端口号协议号 VS 端口号 3、两个问题一个端口号是否可以被多个进程绑定&#xff1f;一个进程是否可以绑定多个端口号&#xff1f; 4、部分常见指令…

实现RTSP低延迟播放器,挑战与解决方案

随着低延迟直播需求的快速增长&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09;播放器逐渐成为实时视频流传输中的核心技术之一。与WebRTC&#xff08;Web Real-Time Communication&#xff09;相比&#xff0c;RTSP在实时性和网络延迟方面面临诸多挑战&…

【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)

该系列项目整体介绍及源代码请参照前面写的一篇文章【springcloud学习(dalston.sr1)】项目整体介绍&#xff08;含源代码&#xff09;&#xff08;一&#xff09; springcloud学习&#xff08;dalston.sr1&#xff09;系统文章汇总如下&#xff1a; 【springcloud学习(dalston…

GPU与NPU异构计算任务划分算法研究:基于强化学习的Transformer负载均衡实践

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;H卡级别算力&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生专属优惠。 引言 在边缘计算与AI推理场景中&#xff0c;GPU-NPU异构计算架构已成为突破算力瓶颈的关键技…

探索C语言中的二叉树:原理、实现与应用

一、引言 二叉树作为一种重要的数据结构&#xff0c;在计算机科学领域有着广泛的应用&#xff0c;无论是在操作系统的文件系统管理&#xff0c;还是在数据库的索引构建中&#xff0c;都能看到它的身影。在C语言中&#xff0c;我们可以利用指针灵活地构建和操作二叉树。接下来&…

使用libUSB-win32的简单读写例程参考

USB上位机程序的编写&#xff0c;函数的调用过程. 调用 void usb_init(void); 进行初始化 调用usb_find_busses、usb_find_devices和usb_get_busses这三个函数&#xff0c;获得已找到的USB总线序列&#xff1b;然后通过链表遍历所有的USB设备&#xff0c;根据已知的要打开USB设…

vue注册用户使用v-model实现数据双向绑定

定义数据模型 Login.vue //定义数据模型 const registerData ref({username: ,password: ,confirmPassword: })使用 v-model 实现数据模型的key与注册表单中的元素之间的双向绑定 <!-- 注册表单 --><el-form ref"form" size"large" autocompl…

【Arthas实战】常见使用场景与命令分享

简介: Arthas是一款Java诊断工具&#xff0c;适用于多种场景&#xff0c;如接口响应变慢、CPU占用过高、热更新需求等。其核心命令包括实时监控面板&#xff08;dashboard&#xff09;、线程状态查看&#xff08;thread&#xff09;、方法调用链路追踪&#xff08;trace&#x…

Jenkins 最佳实践

1. 在Jenkins中避免调度过载 过载Jenkins以同时运行多个作业可能导致资源竞争、构建速度变慢和系统性能问题。分配作业启动时间可以防止瓶颈&#xff0c;并确保更顺畅的执行。如何实现&#xff1f; 在Cron表达式中使用H&#xff1a;引入抖动&#xff08;jitter&#xff09;&a…

pytest框架 - 第二集 allure报告

一、断言assert 二、Pytest 结合 allure-pytest 插件生成美观的 Allure 报告 (1) 安装 allure 环境 安装 allure-pytest 插件&#xff1a;pip install allure-pytest在 github 下载 allure 报告文件 地址&#xff1a;Releases allure-framework/allure2 GitHub下载&#x…

人工智能时代:解锁职业新身份,从“认证师”到“工程师”的进阶之路

在人工智能技术浪潮席卷全球的今天,技术的飞速迭代正在重塑职业版图。从算法优化到伦理决策,从系统测试到应用开发,AI技术不再只是程序员的专属领域,而是成为各行各业从业者必须掌握的“生存技能”。当企业争相布局AI赛道,个人如何在这场变革中抢占先机?答案或许藏在两个…

【带文档】网上点餐系统 springboot + vue 全栈项目实战(源码+数据库+万字说明文档)

&#x1f4cc; 一、项目概括 本系统共包含三个角色&#xff1a; 管理员&#xff1a;系统运营管理者 用户&#xff1a;点餐消费用户 美食店&#xff1a;上传菜品与处理订单的店铺账号 通过对这三类角色的权限与业务分工设计&#xff0c;系统实现了点餐流程的全链路数字化&a…

window nvidia-smi命令 Failed to initialize NVML: Unknown Error

如果驱动目录下的可以执行&#xff0c;那可能版本原因 "C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi"复制"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe"替换 C:\Windows\System32\nvidia-smi.exe 或者 把C:\Windows\System3…

接触感知 钳位电路分析

以下是NG板接触感知电路的原理图。两极分别为P3和P4S&#xff0c;电压值P4S < P3。 电路结构分两部分&#xff0c;第一部分对输入电压进行分压钳位。后级电路使用LM113比较器芯片进行电压比较&#xff0c;输出ST接触感知信号。 钳位电路输出特性分析 输出电压变化趋势&a…

70、微服务保姆教程(十三)Docker容器详细讲义

一、关于Docker 1.1为什么要用docker? 随着开发的项目越来越复杂,软件越来越多,服务器越来越多,我们在开发和部署的时候会遇到很多问题,比如: 1.不同的应用程序可能会有不同的应用环境,比如Java开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都…

Python 中的 typing.ClassVar 详解

一、ClassVar 的定义和基本用途 ClassVar 是 typing 模块中提供的一种特殊类型&#xff0c;用于在类型注解中标记类变量&#xff08;静态变量&#xff09;。根据官方文档&#xff0c;使用 ClassVar[…] 注释的属性表示该属性只在类层面使用&#xff0c;不应在实例上赋值 例如&…

架构与UML4+1视图

简单对比分析 架构41视图 架构41视图是由Philippe Kruchten提出的&#xff0c;用于描述软件系统的架构。它包括以下五个视图&#xff1a; 逻辑视图&#xff1a;描述系统的功能需求&#xff0c;展示系统的静态结构&#xff0c;通常使用类图、对象图等。开发视图&#xff1a;…

Redis 八股

目录 数据类型 字符串&#xff1a; List&#xff1a; HASH&#xff1a; Set&#xff1a; Zset&#xff1a; BitMap&#xff1a;&#xff08;这个及以下是后来新增的数据结构&#xff09; HyperLogLog&#xff1a; GEO&#xff1a; Stream&#xff1a; 主要数据结构 …