感知器(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实现基于感知器的数据线性分类相关推荐

  1. 感知器原理及线性分类技术实现

    在说起感知器之前,需要先说一下神经网络的定义: 神经网络是由具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应. 感知器(M-P神经元模型)  感 ...

  2. 基于感知器的中文分词算法

    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 ...

  3. 基于 iris 数据集采用感知器 Perceptron 实现线性二分类

    基于 iris 数据集采用感知器 Perceptron 实现线性二分类 题目简述: 基于 iris 数据集(四个特征,三个类别),选取两个特征和两个类别,采用感知器 Perceptron 实现线性二分 ...

  4. 深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类

    目录 一.基础理论 前向传递(得到输出y) 反向传递(更新权重w) 二.实现多数据分类 1.设置初始参数 2.训练 3.画图 3-1.画点 3-2.画线段 总代码 一.基础理论 这里只写公式,更加详细 ...

  5. TensorFlow2.0 Keras多层感知器模型imdb情感分类

    # 下载 import urllib.request import os import tarfileurl = 'http://ai.stanford.edu/~amaas/data/sentime ...

  6. 多层感知器(MLP)详解【基于印第安人糖尿病数据】

    文章目录: 1 概述 2 Pima印第安人数据集 3 导入数据和keras 4 定义模型 5 编译模型 6 训练 7 评估和预测 8 完整代码 1 概述 多层感知器是最简单的神经网络模型,用于处理机器 ...

  7. 机器学习练习记录(1):伪逆法、势函数、基于二次准则的H-K函数、感知器法

    伪逆法 RBF(Radial Basis Function)径向基函数神经网络的学习算法 RBF网络需要学习的参数有3个:基函数的中心ci,方差σi以及隐含层与输出层间的权值Wi,根据径向基函数中心选 ...

  8. 基于Keras的第一个多层感知器实例:印第安人糖尿病诊断

    本文将通过使用Keras构建一个简单的多层感知器,数据使用印第安人糖尿病诊断数据. 通过Keras构建深度学习模型的步骤如下: 定义模型--创建一个序贯模型并添加配置层 编译模型--指定损失函数和优化 ...

  9. 深度学习入门之感知器(原理+代码)

    感知器的原理:感知器的原理相当简单,当线性可分的时候就是中学的时候学过的y=kx+b,只不过中学的时候k和b都是给出的,给我们x让我们去求y,看看y是在这条直线的上方还是下方.而现在没有给我们k和b, ...

最新文章

  1. 500分求助,delphi里用standred来配置dbf文件
  2. qt 启动画面显示图片_Qt程序起动画面QSplashScreen
  3. socks5 运行几个小时后 端口10808不通了,ss5服务正常
  4. windows上使用image库
  5. Google准备开始新一年的大扩张
  6. 信息学奥赛一本通C++语言——1047:判断能否被3,5,7整除
  7. CUDA11.1安装教程(python3.8)
  8. 经常和电脑、信息化设备打交道,食品保健养生非常重要!
  9. 测试网站集群节点的页面访问是否正常
  10. 学习数学到底有什么用?
  11. 如何成为一名Go开发人员:总共分六步
  12. 【分布式定时任务】定时任务实现几种方式
  13. 用slmgr命令激活正版Win7旗舰版系统
  14. LeapFTP3.1注册码
  15. python实现奇异值分解_奇异值分解原理及Python实例
  16. 《产品经理深入浅出》PART 3:产品经理专业技能
  17. diameter协议栈_Diameter协议摘要
  18. Android 亮屏流程分析
  19. 小学二年级计算机课游戏,小学二年级适合玩的课堂游戏
  20. 常用的大数据技术有哪些?

热门文章

  1. 「企业架构」企业架构师的TOGAF的权威指南
  2. SCI修改稿回答审稿人意见范文模板
  3. P3955 [NOIP2017 普及组] 图书管理员C++题解
  4. fanuc机器人刷机教程_FANUC机器人中文简易教程
  5. PyCharm 汉化插件
  6. 海康 linux java demo_Linux下调用海康SDK(java版)
  7. 非系统分区使用 BitLocker 加密导致软件无法安装成功解决方案
  8. inet_pton和inet_ntop函数的使用
  9. Python 学生管理系统
  10. 腾讯微博android sdk,腾讯微博java(android)sdk新增微博api详细介绍