模式识别实验三

实验三

一  实验名称

感知器设计

二 目的和意义

使用感知器完成线性分类任务

三 操作步骤或算法结构

  1. 数据预处理。载入数据文件( iris.csv 文件)中的数据,并将其分成样本向量矩阵X和样本分类结果向量 G \bf G G

  2. 4 4 4 列向量的 X X X 在最前增加一列常数 1 1 1,得到增广向量 y y y 。定义增广权向量 α α α,取各项初值为 1 1 1

  3. 根据错分惩罚的感知器准则函数原理设计感知器(公式 8.1 8.1 8.1 8.4 8.4 8.4,及教材 150 页算法 8-1 ),将包含三类的样本 X X X 分别训练。取出每一类的 80 % 80\% 80% 作为训练样本,剩余 20 % 20\% 20% 作为对比样本。第一次训练,将第一类训练样本保持不变,第二第三类取负值,分类判断出第一类样本。第二次训练,将剩余样本的第二类保持不变,第三类取负值,试训练第二类样本。观察两次训练的结果是否收敛。

    • 公式 8.1 8.1 8.1
      f ( x ) = sign ( ω T x + b ) = { + 1 ω T x + b ≥ 0 − 1 o t h e r s f(\textbf x) = \textbf {sign} (\omega^T\textbf x+b) = \begin{cases}+1 \ \ \omega^Tx +b \geq 0 \\-1\ \ others\end{cases} f(x)=sign(ωTx+b)={+1  ωTx+b01  others

    • 公式 8.2 8.2 8.2
      sign ( x ) = { + 1 x ≥ 0 − 1 x < 0 \textbf {sign}(\textbf x) =\begin{cases}+1\ \ \textbf x \geq 0 \\-1\ \ \textbf x < 0\ \end{cases} sign(x)={+1  x01  x<0 

    • 公式 8.3 8.3 8.3
      − 1 ∣ ∣ ω ∣ ∣ ∑ x i ∈ M y i ( ω T x i + b ) -\frac{1}{||\omega||}\sum\limits_{x_i \in M}y_i(\omega^T\textbf x_i+b) ∣∣ω∣∣1xiMyi(ωTxi+b)

    • 公式 8.4 8.4 8.4
      ∂ L i ( ω , b ) ∂ ω = − y i x i ∂ L i ( ω , b ) ∂ b = − y i \frac{\partial L_i(\omega,b)}{\partial \omega} = -y_i\textbf x_i\\\frac{\partial L_i(\omega,b)}{\partial b} = -y_i ωLi(ω,b)=yixibLi(ω,b)=yi

  4. 调整上述步骤中的步长、训练样本分类方式和迭代次数参数,重复实验,观察结果。试推测感知器训练不收敛的可能原因。

四 结构程序设计

读取数据

import pandas as pdiris = pd.read_csv('iris.csv')

训练模型

import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
import matplotlib.pyplot as pltiris = load_iris()
df = pd.DataFrame(iris.data, columns=['sepal length', 'sepal width', 'petal length', 'petal width'])
df['label'] = iris.targetdata = np.array(df.iloc[:100, [0, 1, -1]])
X, y = data[:, :-1], data[:, -1]
y = np.array([1 if i == 1 else -1 for i in y])# 感知机模型
class Model:def __init__(self):self.w = np.ones(len(data[0]) - 1, dtype=np.float64)self.b = 0self.rate = 0.1def sign(self, x, w, b):y = np.dot(x, w) + breturn ydef fit(self, X_train, y_train):fault = Falsewhile not fault:wrong_count = 0for d in range(len(X_train)):x = X_train[d]y = y_train[d]if y * self.sign(x, self.w, self.b) <= 0:self.w = self.w + self.rate * np.dot(y, x)self.b = self.b + self.rate * ywrong_count += 1if wrong_count == 0:fault = Truereturn "success"perceptron = Model()
perceptron.fit(X, y)x = np.linspace(3, 6, 10)
y = -(perceptron.w[0] * x + perceptron.b) / perceptron.w[1]
plt.plot(x, y)plt.plot(data[:50, 0], data[:50, 1], 'bo', color="blue", label="0")
plt.plot(data[50:100, 0], data[50:100, 1], 'bo', color="red", label="1")
plt.legend()
plt.show()

五 结果讨论与分析

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可见感知机在该数据集上有非常好的分类效果。

对于较为简单的数据,不需要使用更加复杂的深度神经网络结构,使用传统的机器学习算法即可。不仅能够同样取得非常好的效果,并且在可解释性和算力要求上有优势。

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

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

相关文章

【Vue3】2-5 : 指令系统与事件方法及传参处理

本书目录&#xff1a;点击进入 一、标签属性中的使用 - 指令系统 1.1 那么模板语法是否可以在标签属性中进行使用呢? ▶ 当然可以&#xff1a;使用 指令系统 二、指令系统 2.1 v-bind 2.2 v-on 三、实战 3.1 methods 选项 3.2 $event语法 一、标签属性中的使用 - 指令…

RT_Thread 调试笔记:时间相关,时钟管理函数,延时,定时器、 毫秒转换为时分秒 等

说明&#xff1a;记录日常使用 RT_Thread 开发时做的笔记。 持续更新中&#xff0c;欢迎收藏。 1. 延时函数 1. us延时函数 rt_hw_us_delay(rt_uint32_t us);//输如数据是us rt_hw_us_delay(200);//输入数据是us 2. ms延时函数 rt_thread_mdelay(1000);//输入数据是ms 2…

【教学类-综合练习-07】20240102 大4班 综合材料 (涂色类)对称动物面具,对称蝴蝶、头饰等

背景需求 年终了&#xff0c;清理库存&#xff0c;各种打印的题型纸都拿出来&#xff0c;当个别化学习材料 教学过程&#xff1a; 时间&#xff1a;2024年1月2日 班级&#xff1a;大4班 人数&#xff1a;25人 这次混了一点“EBRU湿拓郁金香”的纸片&#xff0c; 裁剪花朵…

从零学Java - String类

Java String类 文章目录 Java String类1 String1.1 常用两种创建方式1.2 比较两种创建方式1.3 字符串不可变性1.4 面试题 2 常用方法2.1 练习 3 可变字符串3.1 常用方法3.2 验证StringBuilder的高效性3.3 练习3.4 面试题: 4 正则表达式4.1 元字符4.2 其他字符4.2.1 预定义字符4…

基于Tosca和Terraform的多云资源编排探索

01 导言 随着企业采用多云战略和迁移到云平台&#xff0c;需要依赖不同的云资源来支持业务系统。传统的手动开通和配置资源关联关系的方法在多云环境下变得耗时且复杂&#xff0c;给运维带来困难。 为了应对多云环境中基础设施管理的复杂性&#xff0c;寻找一种高效的多云资源编…

mysql索引失效的情况

目录 1破坏最左前缀法则2在索引列上做任何计算、函数操作&#xff0c;会导致索引失效而转向全表扫描。3存储引擎不能使用索引中范围条件右边的列4Mysql在使用不等于时无法使用索引会导致全表查询5is null可以使用索引&#xff0c;但是is not null无法使用索引6like以通配符开头…

Packet Tracer - Configure AAA Authentication on Cisco Routers

Packet Tracer - 在思科路由器上配置 AAA 认证 地址表 目标 在R1上配置本地用户账户&#xff0c;并使用本地AAA进行控制台和vty线路的身份验证。从R1控制台和PC-A客户端验证本地AAA身份验证功能。配置基于服务器的AAA身份验证&#xff0c;采用TACACS协议。从PC-B客户端验证基…

软件测试|测试平台开发-Flask入门:Flask动态路由

前言 之前我们介绍了flask发送http请求&#xff0c;以及flaskURL的详解&#xff0c;我们使用的路由都是固定的&#xff0c;一个路径和一个视图函数绑定&#xff0c;当访问这条路径时会触发相应的处理函数。但是当我们要处理更为复杂的情况时&#xff0c;比如我们有多个用户&am…

Mybatis面经

Mybatis &#x1f4d1;前言 本文主要是【Mybatis】——Mybatis面经的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每…

【书生·浦语大模型实战营03】《基于 InternLM 和 LangChain 搭建你的知识库》学习笔记

《基于 InternLM 和 LangChain 搭建你的知识库》 常见术语 RAG: Retrieval Augmented Generation&#xff0c;检索增强生成 1. 大模型开发范式 1.1 RAG VS Finetune RAGFinetune低成本可个性化微调可实时更新知识覆盖面广受基座模型影响大成本高昂单次回答知识有限无法实时…

Elasticsearch:Search tutorial - 使用 Python 进行搜索 (二)

这个是继上一篇文章 “Elasticsearch&#xff1a;Serarch tutorial - 使用 Python 进行搜索 &#xff08;一&#xff09;” 的续篇。在今天的文章中&#xff0c;我们接着来完成如何进行分页及过滤。 分页 - pagination 应用程序处理大量结果通常是不切实际的。 因此&#xff0…

代码随想录二刷 |二叉树 | 验证二叉搜索树

代码随想录二刷 &#xff5c;二叉树 &#xff5c; 验证二叉搜索树 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述 98.验证二叉搜索树 给定一个二叉树&#xff0c;判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征&#xff1a; 节点的左子…

Eureka的自我保护机制

一&#xff1a;Eureka的自我保护机制是什么&#xff1f; 保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式&#xff0c;Eureka Server将会尝试保护其服务注册表中的信息&#xff0c;不再删除服务注册表中的数据&#xff0c;也就是不…

关于电脑屏幕亮度的调整,看这篇文章就够了

你可能需要定期更改屏幕亮度。当外面很亮的时候,你想把它调大,这样你就能看到。当你在黑暗的房间里时,你会希望它变暗,这样就不会伤害你的眼睛。降低屏幕亮度也有助于节省电力并延长笔记本电脑的电池寿命。 除了手动更改屏幕亮度外,Windows还可以通过多种方式自动更改屏幕…

Pytorch常用的函数(六)常见的归一化总结(BatchNorm/LayerNorm/InsNorm/GroupNorm)

Pytorch常用的函数(六)常见的归一化总结(BatchNorm/LayerNorm/InsNorm/GroupNorm) 常见的归一化操作有&#xff1a;批量归一化&#xff08;Batch Normalization&#xff09;、层归一化&#xff08;Layer Normalization&#xff09;、实例归一化&#xff08;Instance Normaliza…

【React系列】React生命周期、setState深入理解、 shouldComponentUpdate和PureComponent性能优化、脚手架

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 生命周期 1.1. 认识生命周期 很多的事物都有从创建到销毁的整个过程&#xff0c;这个过程称之为是生命周期&…

案例分析——如何优化跨境直播网络

跨境直播 风口已至 这些年越来越多商家加入直播带货行列&#xff0c;各种玩法日渐成熟。而TikTok作为当前国外最火爆的直播平台&#xff0c;不少卖家都会定期做TikTok直播引流&#xff0c;但时常会面临着远程访问导致直播画面模糊、卡顿掉线、延迟高&#xff0c;甚至可能限流黑…

Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD

文章目录 Django ORM介绍1.使用pycharm新建一个Django项目2.修改settings.py文件中 DATABASES3.创建APP4.创建模型5.操作数据库 Django ORM介绍 Django 模型使用自带的 ORM。 对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称 ORM &#xff09;用于实现面向…

OpenHarmony内存泄漏指南 - 解决问题(综合)

本系列文章旨在提供定位与解决OpenHarmony应用与子系统内存泄露的常见手段与思路&#xff0c;将会分成几个部分来讲解。首先我们需要掌握发现内存泄漏问题的工具与方法&#xff0c;以及判断是否可能存在泄漏。接着需要掌握定位泄漏问题的工具&#xff0c;以及抓取trace、分析tr…

Golang : Bson\Json互转

代码 package bson_jsonimport ("encoding/json""errors""fmt""gopkg.in/mgo.v2/bson""os""testing" )type User struct {Name string json:"name,omitempty" bson:"name,omitempty"CSD…