基于自组织竞争网络的患者癌症发病预测(matlab代码)

1.案例背景

1.1自组织竞争网络概述

        前面案例中讲述的都是在训练过程中采用有导师监督学习方式的神经网络模型。这种学习方式在训练过程中,需要预先给网络提供期望输出,根据期望输出来调整网络的权重,使得实际输出和期望输出尽可能地接近。但是在很多情况下,在人们认知的过程中没有预知的正确模式,也就是常说的“无师自通”。在这种无监督无期望输出的情况下,基于有导师学习的神经网络往往是无能为力的。自组织神经网络可以通过对客观事件的反复观察、分析与比较,自行提示其内在规律,并对具有共同特征的事物进行正确的分类。此种网络更与人脑中生物神经网络的学习模式类似,即可以通过自动寻找样本中的内在规律和本质属性,自组织、自适应地改变网络参数与结构,这也是自组织名称的由来。自组织神经网络的学习规则大都采用竞争型的学习规则。
        竞争型神经网络的基本思想是网络竞争层的各个神经元通过竞争来获得对输人模式的响应机会,最后仅有一个神经元成为竞争的胜利者,并将与获胜神经元有关的各连接权值向着更有利于其竞争的方向调整。自组织竞争网络自组织、自适应的学习能力进一步拓宽了神经网络在模式分类和识别方面的应用。

        1.2竟争网络结构和学习算法

        竞争型神经网络有很多具体形式和不同的学习算法,本案例只介绍一种比较简单的网络结构和学习算法,其网络结构如图21-1所示。竞争网络可分为输入层和竞争层。假定输入层由N个神经元构成,竞争层有M个神经元。网络的连接权值为且满足约束条件

        在竞争层中,神经元之间相互竞争,最终只有一个神经元获胜,以适应当前的输入样本。竞争胜利的神经元就代表着当前输人样本的分类模式。竞争型网络的输入样本为二值向量,各元素取值0或者1。竞争层神经元j的状态的计算方式如下:

        式(21-1)中,xi为输入样本向量的第i个元素。根据竞争机制,竞争层中具有最大加权值的神经元k赢得竞争胜利,输出为

1.3癌症和基因理论概述

        癌症(cancer),医学上称之为恶性肿瘤(malignant neoplasm),是机体在环境污染、化学污染(化学毒素)、电离辐射、自由基毒素﹑微生物(细菌、真菌、病毒等)及其代谢毒素、遗传特性、内分泌失衡、免疫功能紊乱等各种致癌物质﹑致癌因素的作用下导致身体正常细胞发生癌变的结果,常表现为:局部组织的细胞异常增生而形成的局部肿块。癌症是机体正常细胞在多原因、多阶段与多次突变所引起的一大类疾病。癌细胞的特点是;无限制、无止境地增生,使患者体内的营养物质被大量消耗;癌细胞释放出多种毒素,使人体产生--系列症状;癌细胞还可转移到全身各处生长繁殖,导致人体消瘦、无力、贫血、食欲不振、发热以及严重的脏器功能受损等。与恶性肿瘤相对的良性肿瘤容易清除干净,一般不转移、不复发,对器官,组织只有挤压和阻塞作用,但癌症(恶性肿瘤)却会破坏组织、器官的结构和功能,引起坏死出血合并感染,患者最终由于器官功能衰竭而死亡。
        人体基因组图谱好比是一张能说明构成每一个人体细胞脱氧核糖核酸(DNA)的30亿个碱基对精确排列的“地图”。科学家们认为,通过对每一个基因的测定,人们将能够找到新的方法来治疗和预防许多疾病,如癌症和心脏病等。基因有两个特点,一是能忠实地复制自己,以保持生物的基本特征;二是基因能够“突变”,突变绝大多数会导致疾病,另外的一小部分是非致病突变。非致病突变给自然选择带来了原始材料,使生物可以在自然选择中被选择出最适合自然的个体。
        通过使用基因芯片分析人类基因组,可找出致病的遗传基因。癌症、糖尿病等,都是遗传基因缺陷引起的疾病。医学和生物学研究人员将能在数秒钟内鉴定出最终会导致癌症等的突变基因。借助一小滴测试液,医生们能预测药物对病人的功效,可诊断出药物在治疗过程中的不良反应,还能当场鉴别出病人受到了何种细菌、病毒或其他微生物的感染。利用基因芯片分析遗传基因,将使10年后对糖尿病的确诊率达到50%以上。
        未来人们在体检时,由搭载基因芯片的诊断机器人对受检者取血,转瞬间体检结果便可以显示在计算机屏幕上。利用基因诊断,医疗将从千篇一律的“大众医疗”时代,进步到依据个人遗传基因而异的“定制医疗”时代。

2模型建立

1.2模型建立

        本案例中给出了一个含有60个个体基因表达水平的样本。每个样本中测量了114个基因特征,其中前20个样本是癌症病人的基因表达水平的样本(其中还可能有子类),中间的20个样本是正常人的基因表达信息样本,余下的20个样本是待检测的样本(未知它们是否正常)。以下将设法找出癌症与正常样本在基因表达水平上的区别,建立竞争网络模型去预测待检测样本是癌症还是正常样本。
本案例程序中使用的gene.mat是一个60×114的矩阵,即共有60组样本数据,每个样本中包括114个元素。利用newc()函数创建一个自竞争网络。由于需要区分的类别数目为2,因此,竞争层神经元的数目也为2。为了加快学习速度,将学习速率设置为0.1。

1.3 MATLAB实现

        本例中用到的关键函数为建立一个竞争层网络函数 net()其调用格式如下:
net = newc(PR,S,KLR,CLR)

        其中, PR为R个输入元素的最大值和最小值的设定值;S为神经元的数目;KLS为Kohonen学习速率,默认为0.01;CLR为Conscience学习速率,默认为0.001;net为函数返回值,一个新的竞争层。
        由于原始数据是60个个体的集合,本案例中将样本分为训练和预测样本,既前40个为训练样本,后20个为预测样本,代码实现如下:

 

%% Matlab神经网络43个案例分析%% 清空环境变量
clc
clear%% 录入输入数据
% 载入数据并将数据分成训练和预测两类
load gene.mat;
data=gene;
P=data(1:40,:);
T=data(41:60,:);% 转置后符合神经网络的输入格式
P=P';
T=T';
% 取输入元素的最大值和最小值Q:
Q=minmax(P);%% 网络建立和训练
% 利用newc( )命令建立竞争网络:2代表竞争层的神经元个数,也就是要分类的个数。0.1代表学习速率。
net=newc(Q,2,0.1)% 初始化网络及设定网络参数:
net=init(net);
net.trainparam.epochs=20;
% 训练网络:
net=train(net,P);%% 网络的效果验证% 将原数据回带,测试网络效果:
a=sim(net,P);
ac=vec2ind(a)% 这里使用了变换函数vec2ind(),用于将单值向量组变换成下标向量。其调用的格式为:
%  ind=vec2ind(vec)
% 其中,
% vec:为m行n列的向量矩阵x,x中的每个列向量i,除包含一个1外,其余元素均为0。
% ind:为n个元素值为1所在的行下标值构成的一个行向量。%% 网络作分类的预测
% 下面将后20个数据带入神经网络模型中,观察网络输出:
% sim( )来做网络仿真
Y=sim(net,T)
yc=vec2ind(Y)

        运行结果如下:

ac =1 至 22 列1     1     1     1     1     1     1     1     1     1     1     1     2     1     1     1     2     1     1     2     2     223 至 40 列2     2     2     2     2     1     1     2     2     1     1     2     2     2     2     1     2     1Y =0     0     1     1     1     1     1     1     1     1     1     1     1     1     1     1     0     1     1     11     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0yc =2     2     1     1     1     1     1     1     1     1     1     1     1     1     1     1     2     1     1     1

        由表21-1可知,自竞争网络成功地对40个训练样本进行了聚类,对数据分类的错误率为9/40=22.5%,此模型基本达到了预期的精度要求,并可判断出:癌症输入样本的激活神经元编号为1,正常输人样本的激活神经元编号为2。也就是说,激活了编号为1的神经元的样本属于癌症患者样本,激活了编号为2的神经元的样本属于正常样本。从表21-2可以看出,在20个待检测样本中,1号、2号,17号样本被划分为正常样本,其余17个待检测样本都划分为癌症样本。
        由以上例子,我们可以看出,自组织竞争网络可以看做一个模式识别器,其竞争层每个神经元都代表一个类别。再输人一个新的输人向量时,可以应用sim()函数进行仿真。

4.案例扩展

        从本案例可以拓展的方面如下:
        ①利用基本竞争型网络进行分类,需要首先设定输入向量的类别总数,再由此确定神经元的个数。但是如果利用SOM网络进行分类却不需要这样,SOM网络会自动将差别很小的样本归为一类,差别不大的样本激发的神经元位置也是相邻的。

        ②本案例需要注意的是,重新运行上述代码,可能结果就会不一致,这里因为每次激发的神经元不一样,但是,相似的类激发的神经元总是临近的,差别很大的类激发的神经元相差也比较远。
        ③经过训练,可以看到自竞争网络在很少的训练次数下就能达到较好的效果,并且在处理无监督的数据时,可以指定网络输出的分类。
        ④本例中的预测效果经对患者的随访发现,预测率较高。这对癌症预防有很积极的意义。

完整代码下载链接:

基于自组织竞争网络的患者癌症发病预测(matlab代码)

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

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

相关文章

第八篇: K8S Prometheus Operator实现Ceph集群企业微信机器人告警

Prometheus Operator实现Ceph集群企业微信告警 实现方案 我们的k8s集群与ceph集群是部署在不同的服务器上,因此实现方案如下: (1) ceph集群开启mgr内置的exporter服务,用于获取ceph集群的metrics (2) k8s集群通过 Service Endponit Ser…

【VALSE2023】0610 胡瀚《视觉自监督学习年度进展评述》

from: https://www.bilibili.com/video/BV1J44y1w79r 文章目录 自监督学习年度进展技术进展趋势一:掩码图像建模的改进技术进展二:发现掩码图像建模对**大模型**比较友好技术进展三:针对**小模型**的掩码图像建模训练技术进展四&a…

Unity Shader编辑器工具类ShaderUtil 常用函数和用法

Unity Shader编辑器工具类ShaderUtil 常用函数和用法 Unity的Shader编辑器工具类ShaderUtil提供了一系列函数,用于编译、导入和管理着色器。本文将介绍ShaderUtil类中的常用函数和用法。 编译和导入函数 CompileShader 函数签名:public static bool C…

web前端转正工作总结范文5篇

web前端转正工作总结(篇1) 来到__有限公司已经三个月了,目前的工作是前端开发,我是一名应届毕业生,之前没有过工作经验,在刚来到__这个大家庭的时候,我就被这里的工作气氛深深地吸引&#xff0…

Elastic的下载

文章目录 ElasticSearch的下载扩展1(ElasticSearch 与 JDK 版本 适配)扩展2(访问 http://192.168.1.200:9200 没有显示信息)扩展3(免密登录) ElasticSearch的下载 官方下载网址:https://www.el…

在 Ubuntu 上安装 Docker 桌面

Ubuntu 22.04 (LTS) 安装 Docker 桌面 要成功安装 Docker Desktop,您必须: 满足系统要求拥有 64 位版本的 Ubuntu Jammy Jellyfish 22.04 (LTS) 或 Ubuntu Impish Indri 21.10。对于非 Gnome 桌面环境,必须安装 gnome-terminal:…

数字孪生技术的实用价值体现在哪?

随着科技的不断进步,数字孪生技术已成为引领未来发展的重要驱动力。数字孪生是将现实世界与数字世界紧密结合的技术,通过创建虚拟的物理模型,实时模拟和分析真实世界中的物体和过程,让数字孪生在各个领域都展现出了巨大的潜力&…

nvm下载node导致npm报错无法使用

有个依赖库需要更新下node,用nvm下载后项目跑不起来了,npm -v 还报错 其实一开始是npm下载不来,然后换了淘宝镜像后还是报错 然后就只能手动下载下了 进入node.js官网 https://nodejs.org/en/download 下载后注意要安装在你nvm目录中&#x…

Dockerfile构建LNMP镜像

建立工作目录 [rootlocalhost ~]# mkdir lnmp [rootlocalhost ~]# cd lnmp/ 编写Dockerfile文件 [rootlocalhost lnmp]# vim Dockerfile [rootlocalhost lnmp]# ll 总用量 4 -rw-r--r--. 1 root root 774 8月 3 14:54 Dockerfile [rootlocalhost lnmp]# vim Dockerfile #基础…

【Spring Boot】(三)深入理解 Spring Boot 日志

文章目录 前言一、日志文件的作用二、Spring Boot 中的日志2.1 查看输出的日志信息2.2 日志格式二、Spring Boot 中的日志2.1 查看输出的日志信息2.2 日志格式 三、自定义日志输出3.1 日志框架3.2 日志对象的获取3.3 使用日志对象打印日志 四、日志级别4.1 日志级别的作用4.2 日…

人到中年不得已,保温杯里泡枸杞--送程序员

目录 一:你现在身体的体能状况如何?你有身体焦虑吗? 二:如何保持规律性运动? 三:你有哪些健康生活的好习惯? 大厂裁员,称35岁以后体能下滑,无法继续高效率地完成工作&…

Gof23设计模式之组合模式

1.定义 ​组合模式又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 2.结构 组合模式主要包含三种…

无涯教程-Perl - endgrent函数

描述 此功能告诉系统您不再希望使用getgrent从groups文件中读取条目。 语法 以下是此函数的简单语法- endgrent返回值 此函数不返回任何值。 Perl 中的 endgrent函数 - 无涯教程网无涯教程网提供描述此功能告诉系统您不再希望使用getgrent从groups文件中读取条目。 语法以…

STM32——LED内容补充(寄存器点灯及反转的原理)

文章目录 点灯流程开时钟配置IO关灯操作灯反转宏定义最后给自己说 本篇文章使用的是STM32F103xC系列的芯片,四个led灯在PE2,PE3,PE4,PE5上连接 点灯流程 1.开时钟 2.配置IO口 (1)清零指定寄存器位 (2)设置模式为推挽输…

最新2024届【海康威视】内推码【GTK3B6】

最新2024届【海康威视】内推码【GTK3B6】 【内推码使用方法】 1.请学弟学妹们登录校招官网,选择岗位投递简历; 2.投递过程中填写内推码完成内推步骤,即可获得内推特权。 内推码:GTK3B6 内推码:GTK3B6 内推码&…

【广州华锐视点】海上石油钻井VR在线实训平台

随着科技的不断发展,VR元宇宙平台已经成为了越来越多领域的培训工具。在海上石油钻井实训中,VR元宇宙平台也能够发挥重要的作用,为学员提供更加真实、直观的培训体验。 首先,VR元宇宙平台可以模拟真实的海上钻井作业环境。通过VR眼…

【嵌入式学习笔记】嵌入式入门6——定时器TIMER

1.定时器概述 1.1.软件定时原理 使用纯软件(CPU死等)的方式实现定时(延时)功能有诸多缺点,如CPU死等、延时不精准。 void delay_us(uint32_t us) {us * 72;while(us--); }1.2.定时器定时原理 使用精准的时基&#…

uniapp点击图片放大预览

阐述 有些时候我们在用uniapp显示图片时&#xff0c;有的不宜全部显示到屏幕上&#xff0c;uniapp提供了一个非常好用的api。 实现方式如下&#xff1a; <template><view class"content"><image class"logo" src"/static/images/a.…

Unity限制在一个范围内移动

Unity限制在一个范围内移动 这个例子中&#xff0c;我们学习Vector3.ClampMagnitude的用法&#xff0c;限制小球在范围内移动。 在地图上放了一个小球&#xff0c;让他移动&#xff0c;但是不想让他掉下去&#xff0c;限制在一个球星范围内&#xff0c;就好像绳子拴住了一样&…

ChatGPT 作为 Python 编程助手

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 简单的数据处理脚本 我认为一个好的起点是某种数据处理脚本。由于我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本&#xff0c;这似乎是一个合理的起点。 目标 首先&#xff0c;我想尝试…