用java实现基于感知器的数据线性分类
感知器(perceptron) 是比较简单的二分类器,通过对训练样本集的学习,从而得到判别函数权值的解,产生线性可分的样本判别函数。该算法属于非参数算法,优点是不需要对各类样本的统计性质作任何假设,属于确定性方法。
下面是算法步骤:
步骤1:初始化。设置权重w1, w2,…, wn和阈值sita的初值。初始权重可以随意赋值,取值范围通常为[-0.5, 0.5],然后通过训练样本调整
步骤2:激活。通过用输入x1( p), x2( p),…,xn ( p)以及期望输出Yd( p)来激活感知器。迭代p时的实际输出为
步骤3:权重训练。修改感知器的权重为:
wi(p+1)= wi( p)+ wi( p)
其中wi( p)=xi( p)*e( p)
步骤4:迭代。迭代p加1,回到步骤2,重复以上过程直至收敛
给出本例训练用例:
本例测试用例:
下面给出代码
public class perception {static double sita,a; //阈值 学习率static double[] w,red,diameter,weight;//鲜红值 直径 质量static int[] type; //0樱桃1车厘子public static void main(String[] args) {int y=0,e=0;//输出 输出误差init();//初始化for(int k=0;k<2000;k++) {//下面是训练过程for(int i=0;i<8;i++) {y=w[0]*red[i]+w[1]*diameter[i]+w[2]*weight[i]>sita?1:0;e=type[i]-y;w[0]+=a*red[i]*e;w[1]+=a*diameter[i]*e;w[2]+=a*weight[i]*e;}//System.out.println(w[0]+" "+w[1]+" "+w[2]);}test();//测试}public static void init() {sita=10;a=0.1;w=new double[]{0,0,0};red=new double[] {0.81,0.82,0.78,0.79,0.56,0.58,0.59,0.57};diameter=new double[] {1.02,0.98,0.99,1.01,0.85,0.86,0.83,0.84};weight=new double[] {8.85,8.67,8.75,8.80,7.32,7.33,7.29,7.31};type=new int[] {1,1,1,1,0,0,0,0};//0樱桃1车厘子}public static void test() {double[] test1= {0.60,0.8,7.45};//测试用例1double test=test1[0]*w[0]+test1[1]*w[1]+test1[2]*w[2];System.out.println("适应值"+test);if(test>sita) {System.out.println("车厘子");}else {System.out.println("樱桃");}double[] test2= {0.76,1.00,8.78};//测试用例2test=test2[0]*w[0]+test2[1]*w[1]+test2[2]*w[2];System.out.println("适应值"+test);if(test>sita) {System.out.println("车厘子");}else {System.out.println("樱桃");}}
}
PS:本人也是刚学习人工智能,这个代码是自己理解打出来的。如果您觉得对您的学习有帮助的话,请点个赞吧!欢迎在评论区指正交流。
用java实现基于感知器的数据线性分类相关推荐
- 感知器原理及线性分类技术实现
在说起感知器之前,需要先说一下神经网络的定义: 神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应. 感知器(M-P神经元模型) 感 ...
- 基于感知器的中文分词算法
http://heshenghuan.github.io/2015/12/21/%E5%9F%BA%E4%BA%8E%E6%84%9F%E7%9F%A5%E5%99%A8%E7%9A%84%E4%B8 ...
- 基于 iris 数据集采用感知器 Perceptron 实现线性二分类
基于 iris 数据集采用感知器 Perceptron 实现线性二分类 题目简述: 基于 iris 数据集(四个特征,三个类别),选取两个特征和两个类别,采用感知器 Perceptron 实现线性二分 ...
- 深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类
目录 一.基础理论 前向传递(得到输出y) 反向传递(更新权重w) 二.实现多数据分类 1.设置初始参数 2.训练 3.画图 3-1.画点 3-2.画线段 总代码 一.基础理论 这里只写公式,更加详细 ...
- TensorFlow2.0 Keras多层感知器模型imdb情感分类
# 下载 import urllib.request import os import tarfileurl = 'http://ai.stanford.edu/~amaas/data/sentime ...
- 多层感知器(MLP)详解【基于印第安人糖尿病数据】
文章目录: 1 概述 2 Pima印第安人数据集 3 导入数据和keras 4 定义模型 5 编译模型 6 训练 7 评估和预测 8 完整代码 1 概述 多层感知器是最简单的神经网络模型,用于处理机器 ...
- 机器学习练习记录(1):伪逆法、势函数、基于二次准则的H-K函数、感知器法
伪逆法 RBF(Radial Basis Function)径向基函数神经网络的学习算法 RBF网络需要学习的参数有3个:基函数的中心ci,方差σi以及隐含层与输出层间的权值Wi,根据径向基函数中心选 ...
- 基于Keras的第一个多层感知器实例:印第安人糖尿病诊断
本文将通过使用Keras构建一个简单的多层感知器,数据使用印第安人糖尿病诊断数据. 通过Keras构建深度学习模型的步骤如下: 定义模型--创建一个序贯模型并添加配置层 编译模型--指定损失函数和优化 ...
- 深度学习入门之感知器(原理+代码)
感知器的原理:感知器的原理相当简单,当线性可分的时候就是中学的时候学过的y=kx+b,只不过中学的时候k和b都是给出的,给我们x让我们去求y,看看y是在这条直线的上方还是下方.而现在没有给我们k和b, ...
最新文章
- 500分求助,delphi里用standred来配置dbf文件
- qt 启动画面显示图片_Qt程序起动画面QSplashScreen
- socks5 运行几个小时后 端口10808不通了,ss5服务正常
- windows上使用image库
- Google准备开始新一年的大扩张
- 信息学奥赛一本通C++语言——1047:判断能否被3,5,7整除
- CUDA11.1安装教程(python3.8)
- 经常和电脑、信息化设备打交道,食品保健养生非常重要!
- 测试网站集群节点的页面访问是否正常
- 学习数学到底有什么用?
- 如何成为一名Go开发人员:总共分六步
- 【分布式定时任务】定时任务实现几种方式
- 用slmgr命令激活正版Win7旗舰版系统
- LeapFTP3.1注册码
- python实现奇异值分解_奇异值分解原理及Python实例
- 《产品经理深入浅出》PART 3:产品经理专业技能
- diameter协议栈_Diameter协议摘要
- Android 亮屏流程分析
- 小学二年级计算机课游戏,小学二年级适合玩的课堂游戏
- 常用的大数据技术有哪些?
热门文章
- 「企业架构」企业架构师的TOGAF的权威指南
- SCI修改稿回答审稿人意见范文模板
- P3955 [NOIP2017 普及组] 图书管理员C++题解
- fanuc机器人刷机教程_FANUC机器人中文简易教程
- PyCharm 汉化插件
- 海康 linux java demo_Linux下调用海康SDK(java版)
- 非系统分区使用 BitLocker 加密导致软件无法安装成功解决方案
- inet_pton和inet_ntop函数的使用
- Python 学生管理系统
- 腾讯微博android sdk,腾讯微博java(android)sdk新增微博api详细介绍