Hello Mat

 找回密码
 立即注册
查看: 7027|回复: 1

自组织SOM竞争神经网络

[复制链接]

1294

主题

1520

帖子

110

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22633
发表于 2017-11-26 13:56:03 | 显示全部楼层 |阅读模式
自组织SOM神经网络:
视频1:链接:http://pan.baidu.com/s/1mhI2NUg 密码:gzjk
视频2:链接:http://pan.baidu.com/s/1jICbyQi 密码:jyb0
视频资料:
链接:http://pan.baidu.com/s/1gfw83Xx 密码:7n9u
链接:http://pan.baidu.com/s/1hsalU8c 密码:rxvs

自组织SOM神经网络
       自组织SOM神经网络是一种以无导师学习学习方式进行网络,具有自组织功能的神经网络。网络通过自身训练,自动对输入模式进行分类。
       在网络结构上,自组织竞争网络一般是有输入和竞争层构成的单层网络,网络没有掩藏层,输入和竞争层之间的神经元实现双向链接,同时竞争层各神经元之间还存在横向连接。
       自组织竞争网络的基本思想是网络竞争层各个神经元竞争对输入模式的响应机会,最后仅一个神经元成为竞争的胜者,并对那些与获胜神经元有关的各连接权值朝向更有利于竞争的方向调整。获胜神经元表示输入模式的分类。
       SOM网络模型层结构图:
       中,输出层就是竞争层,因此SOM模型只有两层,竞争层之间的相互连接竞争输出。
       由于SOM算法是一种无导师的聚类法,它能将任意维输入模式在输出层映射成一维或者二维离散图形,并保持其拓扑结构不变,即在无导师的情况下,通过对输入模式的自组织学习,在竞争层将分类结果表示出来,此外,网络通过对输入模式的反复学习,可以使连接权值空间分布密度与输入模式的概率分布趋于一致,即链接权向量分布能反映输入模式的统计特征。
SOM依据拓扑方程排列神经元,SOM拓扑结构:
q  Gridtop()网格拓扑结构;
q  Hextop()六角形拓扑结构;
q  Randtop()随机拓扑结构;
神经元之间的距离通过距离函数计算,如:
q  Dist()
q  Boxdist()
q  Linkdist()
q  Mandist()
SOM的癌症样本分类预测
       对一个样本库进行分析,该样本库含60个人的114种基因表达水平,其中前20个是癌症病人的基因表达水平的样本(其中可能有子类),其后的是20个正常人的基因表达信息样本,其余的20个是待检测的样本(未知它们是否正常)。
       需要设法找出描述癌症与正常样本在基因表达水平上的区别,预测检测样本是癌症还是正常样本。
       在竞争层中神经元之间相互竞争,最终只有一个或者几个神经元获胜,以适应当前的输入样本。竞争胜利的神经元就代表着当前输入样本的分布模式。
编写程序如下:
  1. %% 患者癌症和正常样本SOM分类
  2. clc % 清屏
  3. clear all; % 删除workplace变量
  4. close all; % 关掉显示图形窗口
  5. format short
  6. % Initial

  7. %% 录入输入数据
  8. % 载入数据并将数据分成训练和预测两类
  9. load gene.mat;
  10. data=gene;
  11. P=data(1:40,:); % 前20个是癌症,后20个是正常样本
  12. T=data(41:60,:); % 待检测样本

  13. % 转置后符合神经网络的输入格式
  14. P=P';
  15. T=T';
  16. % 归一化操作
  17. [Pn,Ps]=mapminmax(P);
  18. [Tn,Ts]=mapminmax(T);
  19. % 取输入元素的最大值和最小值Q:
  20. % Q=minmax(P);
  21. Q=minmax(Pn);

  22. %% 网络建立和训练
  23. % 利用newc( )命令建立竞争网络:
  24. % Q为训练数据最大最小值
  25. % 2代表竞争层的神经元个数,也就是要分类的个数
  26. % 0.1代表学习速率
  27. net=newc(Q,2,0.1)

  28. % 初始化网络及设定网络参数:
  29. net=init(net);
  30. % 训练迭代次数
  31. net.trainparam.epochs=200;
  32. % 训练网络:
  33. % net=train(net,P);
  34. net=train(net,Pn)

  35. %% 网络的效果验证

  36. % 将原数据回带,测试网络效果:
  37. % a=sim(net,P);
  38. a=sim(net,Pn);
  39. % 使用变换函数vec2ind(),将单值向量组变换成下标向量
  40. % a:为n个元素值为1所在的行下标值构成的一个行向量。
  41. % ac:为m行n列的向量矩阵x,x中的每个列向量i,除包含一个1外,其余元素均为0。
  42. ac=vec2ind(a) % 分类标记

  43. %% 网络作分类的预测
  44. % 下面将后20个数据带入神经网络模型中,观察网络输出:
  45. % sim( )来做网络仿真
  46. % Y=sim(net,T)
  47. Y=sim(net,Tn)
  48. % 得到预测的可能性结果
  49. Yc=vec2ind(Y)
复制代码
运行程序结果输出如下:
  1. ac =
  2.   Columns 1 through 10
  3.      1     2     1     1     1     1     1     1     1     1
  4.   Columns 11 through 20
  5.      1     1     2     1     1     1     2     1     1     2
  6.   Columns 21 through 30
  7.      2     2     2     2     2     2     2     1     2     2
  8.   Columns 31 through 40
  9.      2     2     1     2     2     2     2     1     2     1

  10. Y =
  11.   Columns 1 through 10
  12.      0     0     1     1     0     1     1     1     0     1
  13.      1     1     0     0     1     0     0     0     1     0
  14.   Columns 11 through 20
  15.      1     1     1     1     1     1     0     1     0     1
  16.      0     0     0     0     0     0     1     0     1     0

  17. yc =
  18.   Columns 1 through 10
  19.      2     2     1     1     2     1     1     1     2     1
  20.   Columns 11 through 20
  21.      1     1     1     1     1     1     2     1     2     1
复制代码
从预测结果可看出,预测结果能够较好的反映数据的类,即癌症样本和正常样本。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

0

主题

22

帖子

1

金钱

新手上路

Rank: 1

积分
23
发表于 2019-8-31 11:42:36 | 显示全部楼层
很棒的分享,希望博主坚持下去
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-4-26 22:02 , Processed in 0.244064 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表