49、基于归一化感知器的输入向量分类(matlab)

1、基于归一化感知器的输入向量分类的原理及流程

归一化感知器是一种分类算法,其原理基于感知器算法,但是在输入向量上进行了归一化处理,以提高算法的性能和稳定性。

流程如下:

  1. 输入向量归一化:对每个输入向量进行归一化处理,将其值缩放到一定的范围内,通常是将每个特征值除以其范数(模长)。
  2. 初始化参数:初始化权重向量和偏置项。
  3. 计算预测值:根据当前的权重向量和偏置项,计算输入向量的预测值。
  4. 判断分类结果:根据预测值判断输入向量的分类结果。
  5. 更新参数:根据分类结果和真实标签之间的差异,更新权重向量和偏置项。
  6. 重复步骤3至步骤5:迭代计算,直至收敛或达到设定的迭代次数。

通过归一化感知器,可以更加准确地区分不同的类别,在处理高维度数据时也可以有效防止输入向量之间的差异对分类结果的影响。

2、归一化感知器的输入向量分类说明

解决问题

2 输入硬限制神经元被训练为将 5 个输入向量分类为两个类别。

说明

一个输入向量比其他输入向量大得多,使用 LEARNPN 进行训练还是很快的。

 3、输入数据

说明

X 中的五个列向量中的每一个都定义了一个二元素输入向量,行向量 T 定义了向量的目标类别。
4 个输入向量的幅值远远小于绘图左上角的第五个向量。
感知器必须将 X 中的 5 个输入向量正确分类为由 T 定义的两个类别。

代码

X = [ -0.5 -0.5 +0.3 -0.1 -40; ...-0.5 +0.5 -0.5 +1.0 50];
T = [1 1 0 0 1];
figure(1)
plotpv(X,T);

视图效果

dda9aaeb403d4ee5bd61c8704c2a1ada.png

 3、创建网络

说明

PERCEPTRON 用 LEARPN 规则创建一个新网络,相对于 LEARNP(默认值),该网络对输入向量大小的巨大变化不太敏感。
用输入数据和目标数据对该网络进行配置,得到其权重和偏置的初始值。

代码

net = perceptron('hardlim','learnpn');
net = configure(net,X,T);

4、将神经元的最初分类尝试添加到绘图中

说明

初始权重设置为零,因此任何输入都会生成相同的输出,而且分类线甚至不会出现在图上。

代码

hold on
linehandle = plotpc(net.IW{1},net.b{1});

视图效果

825ba266c56f4ecf889ca3f3d04e4dfb.png

5、 返回新网络对象(它作为更好的分类器执行)、网络输出和误差

说明

ADAPT 返回一个新网络对象(它作为更好的分类器执行)、网络输出和误差。此循环允许网络自适应,绘制分类线,并继续进行直到误差为零。
用 LEARNP 进行训练只需要 3 轮,而用 LEARNPN 求解同样的问题需要 32 轮。因此,当输入向量大小有巨大变化时,LEARNPN 的表现优于 LEARNP。
 

代码

E = 1;
while (sse(E))[net,Y,E] = adapt(net,X,T);linehandle = plotpc(net.IW{1},net.b{1},linehandle);drawnow;
end

视图效果

88793d7e86cb43d4b16dbc18fa91528b.png

 6、对输入向量 [0.7; 1.2] 进行分类

说明

此新点及原始训练集的绘图显示了网络的性能。为了将其与训练集区分开来,将其显示为红色。

代码

x = [0.7; 1.2];
y = net(x);
% figure(2)
plotpv(x,y);
circle = findobj(gca,'type','line');
circle.Color = 'red';

视图效果

b2bf43b59c53492e8e9588a087781f7e.png

 7、将训练集和分类线添加到绘图中

代码

hold on;
plotpv(X,T);
plotpc(net.IW{1},net.b{1});
hold off;

视图效果

b92453f580ab4e138a4501f433c905d9.png

 8、局部放大

说明

感知器正确地将我们的新点(红色)分类为类别“零”(用圆圈表示)而不是“一”(用加号表示)。尽管存在离群值,感知器仍能在短得多的时间内正确学习

代码

axis([-2 2 -2 2]);

视图效果

49dc8728b6a14471a47660843dba77a9.png

9、总结

在MATLAB中实现基于归一化感知器的输入向量分类可以按照以下步骤进行:

  1. 数据准备:准备包含特征值和标签的训练数据集。确保特征值已经进行了归一化处理。

  2. 参数初始化:初始化权重向量和偏置项,可以随机初始化或者设置为零向量。

  3. 训练模型:利用训练数据集训练归一化感知器模型。通过迭代计算,更新权重向量和偏置项,直至模型收敛或达到设定的迭代次数。

  4. 预测分类:利用训练好的感知器模型对测试数据集进行分类预测,计算准确率或者其他评估指标。

以下是一个简单的示例代码,演示如何在MATLAB中实现归一化感知器的输入向量分类:

% 准备训练数据集 
X_train = ...; % 特征值矩阵,已进行归一化处理 
Y_train = ...; % 标签向量% 初始化参数 
W = zeros(size(X_train, 2), 1); % 权重向量 
b = 0; % 偏置项 % 训练模型 
max_iter = 1000; % 最大迭代次数 
alpha = 0.1; % 学习率 
for iter = 1:max_iter for i = 1:size(X_train, 1) y_pred = sign(dot(W, X_train(i, :)) + b); if y_pred ~= Y_train(i) W = W + alpha * Y_train(i) * X_train(i, :)';b = b + alpha * Y_train(i);end 
end 
end 
% 预测分类 
X_test = ...; % 测试数据集特征值矩阵
Y_test = ...; % 测试数据集标签向量 
correct = 0;
for i = 1:size(X_test, 1) 
y_pred = sign(dot(W, X_test(i, :)) + b); 
if y_pred == Y_test(i) correct = correct + 1;endend 
accuracy = correct / size(X_test, 1); 
disp(['Accuracy: ', num2str(accuracy)]);

以上代码演示了如何使用MATLAB实现基于归一化感知器的输入向量分类。在实际应用中,可以根据具体的数据集和问题进行参数调整和优化,以获得更好的分类结果。

10、源代码

 代码

%% 归一化感知器规则
%说明:2 输入硬限制神经元被训练为将 5 个输入向量分类为两个类别。
%一个输入向量比其他输入向量大得多,使用 LEARNPN 进行训练还是很快的。
%% 输入数据
%说明:X 中的五个列向量中的每一个都定义了一个二元素输入向量,行向量 T 定义了向量的目标类别。
%4 个输入向量的幅值远远小于绘图左上角的第五个向量。
%感知器必须将 X 中的 5 个输入向量正确分类为由 T 定义的两个类别。
X = [ -0.5 -0.5 +0.3 -0.1 -40; ...-0.5 +0.5 -0.5 +1.0 50];
T = [1 1 0 0 1];
figure(1)
plotpv(X,T);
%% 创建网络
%PERCEPTRON 用 LEARPN 规则创建一个新网络,相对于 LEARNP(默认值),该网络对输入向量大小的巨大变化不太敏感。
%用输入数据和目标数据对该网络进行配置,得到其权重和偏置的初始值。
net = perceptron('hardlim','learnpn');
net = configure(net,X,T);
%% 将神经元的最初分类尝试添加到绘图中
%初始权重设置为零,因此任何输入都会生成相同的输出,而且分类线甚至不会出现在图上。
hold on
linehandle = plotpc(net.IW{1},net.b{1});
%% 返回新网络对象(它作为更好的分类器执行)、网络输出和误差
%ADAPT 返回一个新网络对象(它作为更好的分类器执行)、网络输出和误差。此循环允许网络自适应,绘制分类线,并继续进行直到误差为零
%用 LEARNP 进行训练只需要 3 轮,而用 LEARNPN 求解同样的问题需要 32 轮。因此,当输入向量大小有巨大变化时,LEARNPN 的表现优于 LEARNP。E = 1;
while (sse(E))[net,Y,E] = adapt(net,X,T);linehandle = plotpc(net.IW{1},net.b{1},linehandle);drawnow;
end
%% 对输入向量 [0.7; 1.2] 进行分类。
%此新点及原始训练集的绘图显示了网络的性能。为了将其与训练集区分开来,将其显示为红色。
x = [0.7; 1.2];
y = net(x);
% figure(2)
plotpv(x,y);
circle = findobj(gca,'type','line');
circle.Color = 'red';
%% 将训练集和分类线添加到绘图中
hold on;
plotpv(X,T);
plotpc(net.IW{1},net.b{1});
hold off;
%% 局部方法
%感知器正确地将我们的新点(红色)分类为类别“零”(用圆圈表示)而不是“一”(用加号表示)。尽管存在离群值,感知器仍能在短得多的时间内正确学习
axis([-2 2 -2 2]);

 

 

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

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

相关文章

手机远程控制另一台手机的全新使用教程(安卓版)

看完这篇文章,你可以了解到安卓手机如何远程控制安卓手机,以及苹果手机如何远程控制安卓手机。 如果想要用安卓手机远程管控苹果手机,或者苹果手机远程管控另一台苹果手机,请点击查看视频《手机远程管控另一台手机的全新使用教程…

如何提高搜索点击率:五个利用ChatGPT创造吸引眼球标题的小技巧

在当今信息爆炸的时代,如何让自己的文章在海量信息中脱颖而出,是每个内容创作者都在思考的问题。尤其是当读者面对无数个搜索结果时,标题成为吸引他们点击的第一步。那么,如何才能写出吸引眼球的标题,从而提高搜索点击…

凯迪正大对电缆导体检测的重要性及其实施项目分享

电缆导体电缆的核心组成部分其性能直接影响到电缆的传输效率和使用寿命,所以对电缆导体进行定期检测确保其质量和性能对于保障电力设施的安全运行具有重要意义。今天就分享一下凯迪正大在电缆导体检测方面的心得总结,欢迎大家讨论并补充。 一、电缆导体…

论文学习_Towards Practical Binary Code Similarity Detection: Vulnerability

论文名称发表时间发表期刊期刊等级研究单位Towards Practical Binary Code Similarity Detection: Vulnerability 2023年ACM Transactions on Software Engineering and MethodologyCCF A信息工程研究所 1. 引言 重复性漏洞简介:开源库中的重复性漏洞,也称为 1-day 漏洞,由…

数字化工厂生产管理看板系统如何优化生产流程

在当今高度数字化的时代,制造业正经历着深刻的变革,数字化工厂生产管理看板系统作为一种创新的工具,正在为优化生产流程发挥着关键作用。 数字化工厂生产管理看板系统是一个集数据采集、分析、展示和决策支持于一体的综合性平台。生产管理看板…

SaaS行业的发展与前景

随着互联网技术的飞速发展,云计算逐渐成为新一代信息技术的重要方向。作为云计算的一种服务模式,SaaS(Software as a Service,软件即服务)已经深入到企业级应用和个人消费市场,成为全球软件产业的新趋势。在…

Linux上搭建邮件服务

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 Linux上搭建邮件服务 前言电子邮件的工作原理和基本组成部分1. 电子邮件的工作原理2. 电子邮件的…

【软件测试】概念篇

🎃🎃🎃个人主页🎃🎃🎃 🎃🎃🎃【软件测试专栏】🎃🎃🎃 🎃🎃🎃上一篇文章:认识测试&…

性能测试中关注的指标

性能测试中我们会关注很多的性能指标,会通过观测的性能指标来决定性能测试是否继续执行、性能测试是否通过等等内容,但是每次说到要监控什么指标的时候,往往就纠结在服务器的CPU利用率、可用内存数、磁盘IO、网络吞吐等,这些都是ISO25010定义的资源特性中给出的例子,其实对…

音乐创作与制作软件:Studio One 6.6.1中文版安装激活使用指南

音乐创作与制作软件:Studio One 6.6.1 简介 StudioOne 的设计核心是易于使用。十年来,它已将久经考验的录音棚模型与当今以节拍和循环为导向的制作过程无缝地结合在一起,因此您可以比以往更快地将音乐创意带入声音现实。高效的单屏幕界面可…

嵌入式Linux:开发平台搭建

目录 简介 1. JTAG工具的使用 2. 使用串口工具 3. 安装交叉编译工具 4.NFS文件的使用 简介 嵌入式开发平台的搭建,也即安装交叉编译工具链。 交叉编译是在一种平台上编译出能运行于另一种平台上的程序。 例如在X86平台上编译出能运行于ARM平台上的程序。 由于嵌入式设备…

04-Mysql 索引,事务

MySQL 索引介绍 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据十分庞大的时候,索引可以大大加快查询的速度。这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行…

PointCloudLib-特征(Features)-基于转动惯量和偏心率的描述符

基于转动惯量和偏心率的描述符 在本教程中,我们将学习如何使用 pcl::MomentOfInertiaEstimation 类来获取基于 偏心率和转动惯量。此类还允许提取云的轴对齐和定向边界框。 但请记住,提取的 OBB 不是最小可能的边界框. 理论入门 特征提取方法的思路如下。 首先计算点云的…

鸿蒙开发:1.环境搭建和入门

环境搭建 安装HUAWEI DevEco Studio 简介 HUAWEI DevEco Studio是基于IntelliJ IDEA Community开源版本打造, 为运行在HarmonyOS和OpenHarmony系统上的应用和服务提供一站式的开发平台。 特点 1.高效智能代码编辑:支持ArkTS、JS、C/C等语言的代码高亮、…

GNU、Unix、Linux、Makefile、GCC、GDB 之间的关系

1.1 Makefile Makefile 是一个用于自动化编译和构建过程的文本文件,尤其在软件开发项目中被广泛使用。它定义了一系列规则,说明了如何将源代码文件编译成可执行文件、库或者其他目标文件。Makefile 的核心作用在于它能够管理源代码文件之间的依赖关系&am…

Python多线程技巧心得详解

概要 多线程是一种能够并发执行代码的方法,可以提高程序的执行效率和响应速度。本文将详细介绍 Python 中多线程的概念、使用场景、基本用法以及实际应用,可以更好地掌握多线程编程。 什么是多线程? 多线程是一种在单个进程内并发执行多个线程的技术。每个线程共享相同的内…

笔记101:OSQP求解器的底层算法 -- ADMM算法

前言1:这篇博客仅限于介绍拉格朗日乘子法,KKT条件,ALM算法,ADMM算法等最优化方法的使用以及简版代码实现,但不会涉及具体的数学推导;不过在下面我会给出具体数学推导的相关文章和截图,供学有余力…

图书馆书籍管理系统

项目名称与项目简介 图书馆书籍管理系统 本项目是一个计算机管理系统,也就是将传统手工的管理方式转变为智能化、标准化、规范化的管理管理模式,对图书馆中所有的图书、文献资料、音像资料、报刊、期刊等各种类型的资料实现采编、收集图书信息、检索、归…

探讨数字化背景下VSM(价值流程图)的挑战和机遇

在信息化、数字化飞速发展的今天,各行各业都面临着前所未有的挑战与机遇。作为源自丰田生产模式的VSM(价值流程图),这一曾经引领制造业革命的工具,在数字化背景下又将如何乘风破浪,应对新的市场格局和技术变…

Java中的方法重载

方法重载(Method Overloading)是Java中面向对象编程的重要特性之一。它允许一个类中有多个方法名称相同但参数列表不同的方法,从而实现不同的功能。本文将深入探讨方法重载的概念、规则及其应用场景,并通过示例代码展示其实际用法…