基于自组织竞争网络的患者癌症发病预测(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     2

  23 至 40 列

     2     2     2     2     2     1     1     2     2     1     1     2     2     2     2     1     2     1


Y =

     0     0     1     1     1     1     1     1     1     1     1     1     1     1     1     1     0     1     1     1
     1     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1     0     0     0


yc =

     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代码)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis安装以及配置隧道连接(centOs)

目录 1.centOs安装Redis 2. Redis 启动和停⽌ 3. 操作Redis 2.Xshell配置隧道 1.centOs安装Redis #使⽤yum安装Redis yum -y install redis 2. Redis 启动和停⽌ #查看是否启动 ps -ef|grep redis#启动redis: redis-server /etc/redis.conf &#停⽌Redis redis-cli sh…

TabR:检索增强能否让深度学习在表格数据上超过梯度增强模型?

这是一篇7月新发布的论文,他提出了使用自然语言处理的检索增强Retrieval Augmented技术,目的是让深度学习在表格数据上超过梯度增强模型。 检索增强一直是NLP中研究的一个方向,但是引入了检索增强的表格深度学习模型在当前实现与非基于检索的…

Docker入门——保姆级

Docker概述 ​ —— Notes from WAX through KuangShen 准确来说,这是一篇学习笔记!!! Docker为什么出现 一款产品:开发—上线 两套环境!应用环境如何铜鼓? 开发 – 运维。避免“在我的电脑…

QGraphicsView实现简易地图3『局部加载-地图缩放』

前文链接:QGraphicsView实现简易地图2『瓦片经纬度』 第一篇文章提到过,当地图层级较大时,暴力全加载地图会造成程序卡顿,因此需要实现地图的局部加载。 实现思路:以地图窗口(以下称为视口)为地…

如何搭建WordPress博客网站,并且发布至公网上?

如何搭建WordPress博客网站,并且发布至公网上? 文章目录 如何搭建WordPress博客网站,并且发布至公网上?概述前置准备1 安装数据库管理工具1.1 安装图形图数据库管理工具,SQL_Front 2 创建一个新数据库2.1 创建数据库2.…

(树) 剑指 Offer 32 - III. 从上到下打印二叉树 III ——【Leetcode每日一题】

❓剑指 Offer 32 - III. 从上到下打印二叉树 III 难度:中等 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推…

langchain-ChatGLM源码阅读:参数设置

文章目录 上下文关联对话轮数向量匹配 top k控制生成质量的参数参数设置心得 上下文关联 上下文关联相关参数: 知识相关度阈值score_threshold内容条数k是否启用上下文关联chunk_conent上下文最大长度chunk_size 其主要作用是在所在文档中扩展与当前query相似度较高…

0基础学习VR全景平台篇 第78篇:全景相机-拍摄VR全景

新手入门圆周率科技,成立于2012年,是中国最早投身嵌入式全景算法研发的团队之一,亦是全球市场占有率最大的全景算法供应商。相继推出一体化智能屏、支持一键高清全景直播的智慧全景相机--Pilot Era和Pilot One,为用户带来实时畅享…

wordpress 打开缓慢处理

gravatar.com 头像网站被墙 追踪发现请求头像时长为21秒 解决方案一 不推荐,容易失效,网址要是要稳定为主,宁愿头像显示异常,也不能网址打不开 网上大部分搜索到的替换的CDN网址都过期了,例如:gravatar.du…

LangChain+ChatGLM整合LLaMa模型(二)

开源大模型语言LLaMa LLaMa模型GitHub地址添加LLaMa模型配置启用LLaMa模型 LangChainChatGLM大模型应用落地实践(一) LLaMa模型GitHub地址 git lfs clone https://huggingface.co/huggyllama/llama-7b添加LLaMa模型配置 在Langchain-ChatGLM/configs/m…

Python读取及生成pb文件,pb与jsonStr互转,pb与dictJson互转,打包.exe/.sh并转换,很完美跨平台

Python读取及生成pb文件,pb与jsonStr互转,pb与dictJson互转,打包.exe/.sh并转换,很完美跨平台 1. 效果图2. 命令行:proto文件转.class(绝对路径或相对路径)3. 序列化、反序列化api4. pb转json&a…

Python爬虫异常处理心得:应对网络故障和资源消耗

作为一名专业的爬虫代理,我知道在爬取数据的过程中,遇到网络故障和资源消耗问题是再正常不过了。今天,我将与大家分享一些关于如何处理这些异常情况的心得和技巧。不论你是在处理网络不稳定还是资源消耗过大的问题,这些技巧能够帮…

聊聊 Docker 和 Dockerfile

目录 一、前言 二、了解Dockerfile 三、Dockerfile 指令 四、多阶段构建 五、Dockerfile 高级用法 六、小结 一、前言 对于开发人员来说,会Docker而不知道Dockerfile等于不会Docker,上一篇文章带大家学习了Docker的基本使用方法:《一文…

vue 老项目 npm install 报错Python,c++等相关错误

​​​ 老项目npm install 下载依赖包报错 解决方法: //下载python 1、 npm install --global --production windows-build-tools//配置环境 : 也可暂时不用配置,能用就不用配置(npm config set python "D:\Python27\python.exe&q…

一键开启ChatGPT“危险发言”

‍ ‍ 大数据文摘授权转载自学术头条 作者:Hazel Yan 编辑:佩奇 随着大模型技术的普及,AI 聊天机器人已成为社交娱乐、客户服务和教育辅助的常见工具之一。 然而,不安全的 AI 聊天机器人可能会被部分人用于传播虚假信息、操纵舆…

8.7工作总结

一、我们想自定义一个titileBar出现如下这种情况,发现他原来的titileBar还未隐藏。 后来我尝试修改主题使得他没有主题noActionBar发现也不行,后来我参考原先我看过的项目使用了如下代码 this.getActionBar().hide();发现会报这个错误java.lang.NullPoi…

HTTPS-RSA握手

RSA握手过程 HTTPS采用了公钥加密和对称加密结合的方式进行数据加密和解密 RSA握手是HTTPS连接建立过程中的一个关键步骤,用于确保通信双方的身份验证和生成对称加密所需的密钥 通过RSA握手过程,客户端和服务器可以协商出一个共享的对称密钥,…

使用pg_prewarm缓存PostgreSQL数据库表

pg_prewarm pg_prewarm 直接利用系统缓存的代码,对操作系统发出异步prefetch请求,在应用中,尤其在OLAP的情况下,对于大表的分析等等是非常耗费查询的时间的,而即使我们使用select table的方式,这张表也并不可能将所有…

SpringCloud实用篇1——eureka注册中心 Ribbon负载均衡原理 nacos注册中心

目录 1 微服务1.1 微服务的演变1.2 微服务1.3 SpringCloud1.4 小结 2 服务拆分及远程调用2.1 服务拆分2.2 服务拆分案例2.3 实现远程调用2.4 提供者与消费者 3 Eureka注册中心3.1 Eureka的结构和作用3.2 搭建eureka-server3.3 服务注册3.4 服务发现 4 Ribbon负载均衡4.1 负载均…

rust基础

这是笔者学习rust的学习笔记(如有谬误,请君轻喷) 参考视频: https://www.bilibili.com/video/BV1hp4y1k7SV参考书籍:rust程序设计语言:https://rust.bootcss.com/title-page.htmlmarkdown地址:h…