2. 感知机算法和简单 Python 实现

目录

1. 感知机介绍

1.1 背景

1.2 定义

1.2.1 权重

1.2.2 阈值

1.2.3 偏置

1.3 逻辑处理:与门、非门、或门

2. 感知机实现

2.1 与门的 Python 实现

2.2 非门的 Python 实现

2.3 或门的 Python 实现


1. 感知机介绍

1.1 背景

        感知机1957年由 Rosenblatt 提出,是神经网络与支持向量机的基础。它是最简单最基础的机器学习算法,可以用于处理最简单的二分类任务,并且模型和学习算法都十分简单。

1.2 定义

        感知机是具有输入和输出的算法。给定一个或者输入之后,将输出一个既定的值。

        感知机接收多个输入信号,输出一个信号。输入信号可以用 0 或者 1 表示,0 表示 “不传递信号”,1 表示 “传递信号”。从多个输入信号到一个输出信号,即感知机算法。

        最简单的感知机算法可以理解为 1 个输入信号 x,输出 y;算法即 y = x

1.2.1 权重

        前面说了,感知机能接收多个输入信号,但是多个输入信号在感知机那边的权重可能是不一样的,即同样的信号传到感知机,感知机处理的是不一样的。

        比如有 x1,x2 两个信号,则有对应的权重 w1,w2。

        y= w1 * x1+w2 * x2

1.2.2 阈值

        1.2.1 说了加上权重之后的感知机算法 “y= w1 * x1+w2 * x2”,事实上感知机并非简单的将输入信号合并,它绝大多数时候是按照阈值来输出 0 或 1 这个信号的。

        假设存在一个阈值 θ,那么

                        y={0 (w1 * x1+w2 * x2 ≤ θ)

                             1 (w1 * x1+w2 * x2 ​> θ)​

1.2.3 偏置

        事实上上述加了阈值的算法,还可以理解为如下表达方式,其中 b 即 - θ

                        y={0 ( w1 * x1+w2 * x2 +b ≤ 0)

                             1 ( w1 * x1+w2 * x2 ​+b > 0)​

        这时候 b 可以称之为偏置

1.3 逻辑处理:与门、与非门、或门

        相信大家都熟悉编程语言中的与、非、或三种最基本的逻辑关系,此处就不再赘述。感知机也可以用来处理这三种逻辑关系。

        与门:具有两个输入和一个输出的门电路,仅在两个输入信号都为 1 时候输出 1,其他输出 0

        与非门:即颠倒了与门的输出

        或门:只要两个输入信号有一个为 1,输出即为 1,其他输出 0

与门、与非门、或门的真值表达式
输入信号输出信号 y
x1x2与门与非门或门
100010
210011
301011
411101

2. 感知机实现

2.1 与门的 Python 实现

        下面是与门的 Python 实现。权重分别是 w1 0.1、w2 0.2;阈值即 0.7。

def AND(x1,x2):w1,w2,theta = 0.1,0.2,0.7tmp=w1*x1+w2*x2if(tmp<=theta):return(0)else:return(1)
print(AND(0,0))
print(AND(0,2))
print(AND(0,4))
print(AND(1,3))
print(AND(2,4))
print(AND(5,0))
print(AND(7,0))

 结果显示程序正确

2.2 非门的 Python 实现

        下面是非门的 Python 实现。权重分别是 w1 0.1、w2 0.2;偏置即 -0.7。

def NAND(x1,x2):w1,w2 = -0.1,-0.2w=np.array([w1,w2]) # 权重转换成 array 方便计算x=np.array([x1,x2]) # 输入信号转换成 array 方便计算b=0.7 #设置偏置tmp=np.sum(w*x)+bif(tmp<=0):return(0)else:return(1)
print(NAND(0,0))
print(NAND(0,2))
print(NAND(0,4))
print(NAND(1,3))
print(NAND(2,4))

结果显示程序正确

2.3 或门的 Python 实现

        或门的 Python 实现请大家自行实现,也许眼尖的同学已经发现了,与门、非门本质上代码是一致的,区别只是权重和偏置的值是正或者负了。

        代码实现

def  OR(x1,x2):w1,w2 = 0.1,0.2w=np.array([w1,w2]) # 权重转换成 array 方便计算,权重和 AND 不同x=np.array([x1,x2]) # 输入信号转换成 array 方便计算b=-0.7 #设置偏置,偏置和 AND 不同tmp=np.sum(w*x)+bif(tmp<=0):return(0)else:return(1)
print(OR(0,0))
print(OR(0,2))
print(OR(0,4))
print(OR(1,3))
print(OR(2,4))

'''

要是大家觉得写得还行,麻烦点个赞或者收藏吧,想给博客涨涨人气,非常感谢!

'''

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

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

相关文章

Android NDK开发(一)生成指定平台的ndk及根据native接口生成jni接口

为了初步了解Android NDK开发&#xff0c;本文记录了Android Studio使用过程中的部分内容。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习&#xff0c;梳理总结后写下文章&#xff0c;对音视频相关内容感兴趣的读者&#xff0c;可以点击观看课程…

MATLAB公式推导和导出Latex格式的方法

最近在推机械臂正逆运动学公式&#xff0c;那个旋转矩阵乘起来是真滴多&#xff0c;手算算的脑浆疼。突然想起来MATLAB还有符号计算这个功能&#xff0c;于是翻了翻手册&#xff0c; 找到了这个利用MATLAB帮助计算公式并且直接导出Latex格式的办法。 先定义符号变量&#xff0…

redis安装与群集

项目需求&#xff1a; 1.安装redis 2.测试redis性能&#xff0c;100个并发连接&#xff0c;100000个请求测试 3.在当前数据库下创建键值对 a11,a22,a33,a44&#xff0c;a55 4.查看键值对 5.将a1改名为a11,将a2删除 5.将a3移动到1号数据库 6搭建redis集群(可选) 测试环境…

软件测试之 接口测试 Postman使用

接口测试 URL HTTP协议 HTTP 请求部分 HTTP响应部分 Postman使用 界面介绍 这里 注意 如果你无法访问 那么 captchaImage这个打错了&#xff0c;给的资料中是错误的地址 https://kdtx-test.itheima.net/api/captchaImage登录接口 科大天下 第一个接口的登录设置 https://kd…

# 电脑突然连接不上网络了,怎么办?

电脑突然连接不上网络了&#xff0c;怎么办&#xff1f; 一、原因分析&#xff1a; 1、IP 地址冲突 2、DNS 解析出现问题。 3、无线网卡驱动损坏。 二、解决方法&#xff1a; 1、修改自动获取 IP 地址为手动设置 IP 地址&#xff1a; 1&#xff09;查看自己电脑自动获取…

掼蛋—开牌三步走

掼蛋是消遣也是一项脑力活动&#xff0c;除了牌运&#xff0c;还要掌握技巧。和大家一起分享一下掼蛋游戏中的“开牌三步走”技巧。 1、快速理牌 目的&#xff1a;潜力最大化 开局时可以快速查看一下自己的同花顺&#xff0c;优先保留不损害其他炸弹的同花顺&#xff0c;并及时…

Paper Digest | 基于原型学习的实体图谱预训练跨域推荐框架

欢迎大家在 GitHub 上 Star 我们&#xff1a; 分布式全链路因果学习系统 OpenASCE: https://github.com/Open-All-Scale-Causal-Engine/OpenASCE 大模型驱动的知识图谱 OpenSPG: https://github.com/OpenSPG/openspg 大规模图学习系统 OpenAGL: https://github.com/TuGraph-…

靠谱的知识竞赛活动公司怎么去找

搞知识竞赛活动&#xff0c;找一家靠谱的知识竞赛活动公司来承办是重中之重&#xff0c;他直接决定了竞赛活动的成败和效果。那么&#xff0c;如何去找这样一家公司呢&#xff1f; 知识竞赛活动一般包括两大部分内容&#xff0c;一部分是舞台及其包装&#xff0c;另一部分是知识…

WT32-ETH01作为TCP Client进行通讯

目录 模块简介WT32-ETH01作为TCP Client设置电脑作为TCP Server设置连接并进行通讯总结 模块简介 WT32-ETH01网关主要功能特点: 采用双核Xtensa⑧32-bit LX6 MCU.集成SPI flash 32Mbit\ SRAM 520KB 支持TCP Server. TCP Client, UDP Server. UDP Client工作模式 支持串口、wif…

【Java】高效解决 非降序数组合并 两种方法

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持&#xff01; oj&#xff1a;https://leetcode.cn/problems/merge-sorted-array/submissions/ 合并两个有序数组是个经典问题&#xff0c;它不仅在算法学习中频繁出现&#xff0c;也在实际开发中经常遇到。合并数…

NLP 词嵌入向量即word embedding原理详解

文章目录 1. 前言2. 目标3. CBOW4. 训练结果5. 如何使用6. 延伸7. 参考 1. 前言 现在 NLP 相关的技术大概率会接触到词向量、word embedding&#xff08;词嵌入&#xff09;诸如此类的术语。然后网上一搜&#xff0c;哦&#xff0c;有一个 Word2Vec 的技术&#xff0c;能够把单…

租赁商城小程序基于ThinkPHP+FastAdmin+UniApp(源码搭建/上线/运营/售后/更新)

提供用户物品租赁服务的应用程序&#xff0c;方便客户搭建各种类型的租赁场景服务。通过小程序端多角色进行平台管理&#xff0c;用户租赁商品缴纳租金及押金&#xff0c;员工端可操作商品出库和归还&#xff0c;订单完成后押金原路退回。 ​在线预约和支付&#xff1a;用户可以…