[机器学习][1]--PLA算法

 
  PLA全称为,Perception Learning Algorithm,中文叫感知学习算法。今天我会简单介绍一下这个算法,并用mathematica来实现一下这个算法。
  放两个链接,里面的文章讲的不错的。
  PLA算法总结与证明
  感知器算法PLA

我自己概括一下这个算法。可以结合下面的例子看。
 
  首先,wi和threshold是要来求的,h(x)为分类用得函数,xi为以知的数据集

  化简上面的式子,本来连加是从1开始的,现在把threshold放进去,下标从0开始
 
  接下来我们的任务就是要确定w了。我们对每个数据集考虑,若带入上式时,不满足,则有下面两种情况。

  若y=1时,h(x)=-1,则此时w = w+yx
  若y=-1时,h(x)=1,则此时w = w+yx
  因为权重后可能会导致前面的点出故障,需要从头再判断
  这样把所有数据都考虑进去后,就能生成一个h(x)用来判断了。

下面我们来看一个例子

我们要预测一个人对于一个电影的喜欢程度,即对于某个固定的人来说,一部新上映的电影她是否喜欢。
 
  数据集合(一个人以往看电影的数据):
  data = {
   {1, 3, -1}, {3, 4, 1},
   {1, 2, -1}, {4, 2, 1},
   {2, 2, -1}, {3, 5, 1},
   {3, 1, -1}, {2.5, 4, 1},
   {4, 0.5, -1}, {1, 6, 1},
   {2.5, 1.5, -1}, {5, 1, 1},
   {2, 1, -1}, {6, 2, 1},
   {3, 1.5, -1}, {6, 0, 1},
   {0, 4, -1}, {3, 3, 1}
   };
 其中各个位置的解释
{x1, x2, label} -> {动作片 (数字大小表示符合程度), 大片 (数字大小表示符合程度),喜欢 (1)/不喜欢 (-1)}, 表示一个人对不同电影的喜欢程度
 
  首先,我们将data存在两个向量里。把电影类型和是否喜欢分开存

x = data[[All, {1, 2}]];
y = data[[All, 3]];


  接着把x第一位都加上一个1,因为有w0

  接着就可以进行迭代了
w = {0, 0, 0};
j = 1;
While[i <= Length[x],
 If[
  Sign[w.x[[i]]] != y[[i]],
  w = w + y[[i]]*x[[i]]; i = 1,
  i++
  ];
  Print[w];
  j++;
 ]
Print[j];
里面的j是用来看迭代次数的
上面的格式有点问题,我截一张图。

结果的部分图,可以看到最后w={-26,4.5,4.5},也就是说,当下一次输入为x1=1,x2=1时,则
{-26,4.5,4.5}.{1,1,1}=-1,所以不喜欢该电影。

上面为了得到式子一共迭代了347次(还是迭代了很多次的)

因为是二维的,所以可以在图上画出来

那条蓝色的线是{-26,4.5,4.5}.{1,x,y}=0,也就是x+y=26/4.5
在蓝色线上面的部分是1,下面是-1

画图部分的代码
temp = data[[All, {1, 2}]];
p1 = ListPlot[
   Table[Style[temp[[i]], Hue[.25*data[[i, 3]] + .75]], {i, 1,
     Length[data]}],
   AxesOrigin -> {0, 0}];
p2 = Plot[-x + (26/4.5), {x, 0, 6.5}];
Show[p1, p2]

上面就大概把PLA算法讲完了。该算法只能用来解线性的。

下面链接是自己做的一个小作品,是用来看汉字结构的,把汉字的结构具体展现出来了,希望大家可以看看多提提意见。
汉字结构
以上,所有
2017/2/8

转载于:https://www.cnblogs.com/wmn7q/p/7265517.html

[机器学习][1]--PLA算法相关推荐

  1. PLA算法(机器学习基石)

    PLA算法的机制 故事起源于一个二元分类问题(比如说银行要不要给客户发信用卡的问题) 我们的先决条件 1.我们有资料在手上(用户信息) 2.我们的资料有标签(有没有发信用卡) 3.假设我们的资料是线性 ...

  2. PLA算法实现与展示

    1.PLA算法 作为机器学习的入门基础算法,主要是要理解其产生由来.感知机模型为了应对线性可分二分类问题而设计的算法,求得一个超平面S使得所有数据能正确分类. 即使得每个数据都 f ( x ) = s ...

  3. python比c语言开发速度快多少倍_Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?...

    原标题:Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢? 作为python的忠实粉丝,看见这个题目就情不自禁想怼回去.鉴于和谐社会,我决定慢慢讲道理. 首先,相对于c语言,pyt ...

  4. 五分钟了解机器学习十大算法

    作者 | Fahim ul Haq    译者 | 刘志勇 策划 | 赵钰莹 编辑 | 程序员大白公众号 仅作学术交流,如有侵权,请联系删文 本文为有志于成为数据科学家或对此感兴趣的读者们介绍最流行的 ...

  5. 收藏 | 机器学习模型与算法最全分类汇总!

    题图 | AltumCode 机器学习模型与算法包括线性回归.对数几率回归.LASSO回归.Ridge回归.LDA.k近邻.决策树.感知机.神经网络.支持向量机.AdaBoost.GBDT.XGBoo ...

  6. 一文图解机器学习的基本算法!

    来源:软件定义世界 本文长度为2877字,建议阅读6分钟 本文为你分析如何选择机器学习的各种方法. 每当提到机器学习,大家总是被其中的各种各样的算法和方法搞晕,觉得无从下手.确实,机器学习的各种套路确 ...

  7. 【机器学习】机器学习的经典算法

    [机器学习]机器学习的经典算法 https://www.cnblogs.com/DicksonJYL/p/9517025.html 本文为整篇文章第二部分,整篇文章主要目录如下: 1:一个故事说明什么 ...

  8. 强化学习ppt_机器学习原理、算法与应用配套PPT第四部分(深度学习概论、自动编码器、强化学习、聚类算法、半监督学习等)...

    本文是SIGAI公众号文章作者雷明编写的<机器学习>课程新版PPT第四部分,包含了课程内容的深度学习概论,自动编码器,受限玻尔兹曼机,聚类算法1,聚类算法2,聚类算法3,半监督学习,强化学 ...

  9. 机器学习算法_五分钟了解机器学习十大算法

    本文为有志于成为数据科学家或对此感兴趣的读者们介绍最流行的机器学习算法. 机器学习是该行业的一个创新且重要的领域.我们为机器学习程序选择的算法类型,取决于我们想要实现的目标. 现在,机器学习有很多算法 ...

最新文章

  1. 南京大学潘天群教授:人类智能发展的宏大叙事
  2. 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )
  3. myeclipse2014下卸载,安装maven插件。
  4. 观察者模式——解耦利器
  5. 儿童节礼包!10 后都开始学编程了,你需要这个阿里技术电子书大全
  6. hi3798mv300是什么手机_华为海思电视芯片hi3798mv300 硬件参数如何?
  7. 用myeclipse搭建S2SH struts2 spring hibernate
  8. java mm_Java网络编程-你是GG还是MM?
  9. 成绩单表格html,【Web前端HTML5CSS3】15-表格
  10. Chapter 20 磁场对电流的作用
  11. oracle理论笔试题,Oracle数据库笔试题(附答案)
  12. 十大管理之项目质量管理知识点
  13. 运行Rundll.exe
  14. python、pygame开发的太空大战游戏源代码,供学习参考
  15. vs运行localhos转换为本地ip地址访问
  16. 12_STM32Cubeide开发_USB从设备串口驱动程序
  17. 51单片机PWM调速风扇转速显示转速设置
  18. 架设局域网升级服务器 用WSUS打补丁
  19. 关于URP中RendererFeature的使用及毛发效果的几种实现方式
  20. build tools

热门文章

  1. 171230 编程-井字棋(逆)的先手必胜策略
  2. windows installer正准备安装
  3. UE5学习笔记(二)——3D材质蓝图的常用节点介绍
  4. javaweb商城实现在线支付
  5. 盒马“开吃”火锅行业,海底捞们还有机会“捞钱”吗?
  6. 海底捞市值蒸发2323亿关店300家,火锅“炼金术”还灵验吗?
  7. Keil5新建工程项目
  8. 转C#操作Word辅助类(word2003)
  9. [IOI2005]Riv河流
  10. Kaggle: Tweet Sentiment Extraction 方法总结 Part 1/2: 常用方法总结