当前位置: 首页 > news >正文

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

相关文章:

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

1.案例背景 1.1自组织竞争网络概述 前面案例中讲述的都是在训练过程中采用有导师监督学习方式的神经网络模型。这种学习方式在训练过程中,需要预先给网络提供期望输出,根据期望输出来调整网络的权重,使得实际输出和期望输出尽可能地接近。但是在很多情况下,在人们认知的过程中…...

golang mongodb

看代码吧 package main// 链接案例 https://www.mongodb.com/docs/drivers/go/current/fundamentals/connection/#connection-example // 快速入门 https://www.mongodb.com/docs/drivers/go/current/quick-start/ import ("context""fmt""log"…...

docker中的jenkins去配置sonarQube

docker中的jenkins去配置sonarQube 1、拉取sonarQube macdeMacBook-Pro:~ mac$ docker pull sonarqube:8.9.6-community 8.9.6-community: Pulling from library/sonarqube 8572bc8fb8a3: Pull complete 702f1610d53e: Pull complete 8c951e69c28d: Pull complete f95e4f8…...

企业如何实现自己的AI垂直大模型

文章目录 为什么要训练垂直大模型训练垂直大模型有许多潜在的好处训练垂直大模型也存在一些挑战 企业如何实现自己的AI垂直大模型1.确定需求2.收集数据3.准备数据4.训练模型5.评估模型6.部署模型 如何高效实现垂直大模型 ✍创作者:全栈弄潮儿 🏡 个人主页…...

Maven可选依赖和排除依赖简单使用

可选依赖 可选依赖指对外隐藏当前所依赖的资源 在maven_04_dao的pom.xml,在引入maven_03_pojo的时候&#xff0c;添加optional <dependency><groupId>com.rqz</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT&…...

“深入探索JVM:Java虚拟机的工作原理解析“

标题&#xff1a;深入探索JVM&#xff1a;Java虚拟机的工作原理解析 摘要&#xff1a;本文将深入探索Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;从类加载、内存管理、垃圾回收、即时编译器等方面进行详细解析&#xff0c;帮助读者更好地理解JVM的内部机制。…...

Prometheus-各种exporter

文章目录 一、 nginx-prometheus-exporter1 nginx 配置1.1 Nginx 模块支持1.2 Nginx 配置文件配置2 部署 nginx-prometheus-exporter2.1 二进制方式部署2.1.1 解压部署2.1.2 配置 systemd2.1.3 添加 prometheus 的配置2.1.4 Dashborad2.2 docker-compose 方式部署3 可配置的指标…...

小程序的 weiui的使用以及引入

https://wechat-miniprogram.github.io/weui/docs/quickstart.html 网址 1.点进去&#xff0c;在app.json里面配置 在你需要的 页面的 json里面配置&#xff0c;按需引入 然后看文档&#xff0c;再在你的 wxml里面使用就好了...

git目录初始化,并拉取最新代码

现有C:\data目录&#xff0c;将目录初始化&#xff0c;并拉取代码在这里插入代码片 https://gitlab.arsbaibaodun.com/bcx_v5_app/baoan-hangyedcjg.git 1、 git init生成 .git 目录即目录初始化完成&#xff0c;可以进行拉取代码 代码成功拉取到了data目录&#xff0c;默认…...

运筹调度算法工程式招聘情况:技能要求、薪资、工作地

目录 一、前言二、岗位信息三、总结 一、前言 前一段时间&#xff0c;常看到运筹学的老师们在朋友圈转发下面的图片。今天忽然想起这件事&#xff0c;顺势查了一下“调度算法工程师”在Boss直聘上的岗位信息&#xff0c;也整理一下招聘企业所需的“调度”技能。 二、岗位信息…...

css2-BFC是什么?

1、BFC是什么&#xff1f; 在页面布局时&#xff0c;经常会出现以下几种情况&#xff1a; 这个元素高度怎末没了&#xff1f; 这两栏布局怎末没法自适应&#xff1f; 这两个元素的间距怎末有点奇怪的样子&#xff1f; … 原因就是元素之间互相影响&#xff0c;导致了意料之外的…...

Flutter Dart语言(04)库操作

0 说明 该系列教程主要是为有一定语言基础 C/C的程序员&#xff0c;快速学习一门新语言所采用的方法&#xff0c;属于在C/C基础上扩展新语言的模式。 1 自定义库 & 系统自定义库 引入代码如下所示&#xff1a; import xxx.dart; //自定义库引入&#xff0c;xxx为本…...

通向架构师的道路之漫谈使用ThreadLocal改进你的层次的划分

一、什么是ThreadLocal 早在JDK 1.2的版本中就提供java.lang.ThreadLocal&#xff0c;ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal很容易让人望文生义&#xff0c;想当然地认为是一个“本地线…...

springboot全局统一返回处理

文章目录 前言一、统一的返回格式二、全局异常处理三、全局返回处理(装逼用的)总结 前言 项目中一般都会有规定好的接口返回格式,无论成功与失败,一般格式都是不变的,这样是为了方便前后端统一处理,今天就来说下前后端统一处理的较为优雅的方式; 一、统一的返回格式 一般而言…...

C/C++面试经历(一)

目录 1. 说说你对C与C的认识&#xff1f; 2. 说说C的三大特性&#xff1f; 3. 说说C的重载&#xff1f; 4. C语言为什么不支持重载&#xff1f; 5. 说说类的默认成员函数&#xff1f; 6. 类的构造函数为什么不支持虚函数&#xff1f; 7. 说说你对指针和引用的理解&…...

【PostgreSQL】系列之 一 用户创建和授权(三)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…...

Python连接Hive实例教程

一 Python连接hive环境实例 经在网络查询相关的教程&#xff0c;发现有好多的例子&#xff0c;发现连接底层用的的驱动基本都是pyhive和pyhs2两种第三方库的来连接的 hive,下面将简介windows 10 python 3.10 连接hive的驱动程序方式&#xff0c;开发工具&#xff1a;pycharm …...

Jest和Mocha对比:两者之间有哪些区别?

目录 什么是单元测试&#xff1f; Jest和Mocha介绍 Jest Jest的特点&#xff1a; Jest的使用限制 Mocha Mocha的特点 使用Mocha的限制 Jest和Mocha的全面比较 我们应该使用哪个测试框架&#xff1f; 结论 什么是单元测试&#xff1f; 所谓单元测试&#xff0c;是对软…...

Oracle:merge into用法

文章目录 merge into使用场景merge into语法测试表普通模式 merge使用注意点 merge into MERGE 是 Oracle9i 新增的语法&#xff0c;根据源表对目标表进行匹配查询&#xff0c;匹配成功时更新&#xff0c;不成功时插入 比单独的 update insert 的方式效率要更高&#xff0c;尤…...

【数据结构OJ题】消失的数字

原题链接&#xff1a;https://leetcode.cn/problems/missing-number-lcci/ 目录 1. 题目描述 2. 思路分析 3.代码实现 1. 题目描述 2. 思路分析 方法一&#xff1a;排序遍历&#xff08;下一个数不等于上一个数1&#xff0c;这个下一个数就是消失的数字&#xff09;。 时…...

linux 隔离内核

1、 编辑grub gedit /etc/default/grub 2、修改 GRUB_CMDLINE_LINUX_DEFAULT"quiet splash isolcpus1,3"&#xff08;这里表示1和3两个cpu被隔离,cpu序号从0开始&#xff09; or GRUB_CMDLINE_LINUX"isolcpus1,3" 3、update sudo update-grub 4、查看…...

IO学习-有名管道

1&#xff0c;要求实现AB进程对话 A进程先发送一句话给B进程&#xff0c;B进程接收后打印 B进程再回复一句话给A进程&#xff0c;A进程接收后打印 重复1.2步骤&#xff0c;当收到quit后&#xff0c;要结束AB进程 运行结果&#xff1a;...

小研究 - 基于 SpringBoot 微服务架构下前后端分离的 MVVM 模型(三)

本文主要以SpringBoot微服务架构为基础&#xff0c;提出了前后端分离的MVVM模型&#xff0c;并对其进行了详细的分析以及研究&#xff0c;以此为相关领域的工作人员提供一定的技术性参考。 目录 6 互联网应用开发架构分析 6.1 微服务架构与单体架构 6.1.1 系统更改部署 6.1…...

应用在多媒体手机中的低功率立体声编解码器

多媒体手机一般是指可以录制或播放视频的手机。多媒体的定义是多种媒体的综合&#xff0c;一般是图像、文字、声音等多种结合&#xff0c;所以多媒体手机是可以处理和使用图像文字声音相结合的移动设备。目前流行的多媒体概念&#xff0c;主要是指文字、图形、图像、声音等多种…...

Teams Room视频会议室方案

需求背景&#xff1a; 适合在40平米的会议室参加Teams视频会议&#xff0c;会议桌周围可以坐20人&#xff0c;要求&#xff1a; 1&#xff0c;操作简单&#xff0c;一键入会Teams Room&#xff1b; 2&#xff0c;任何人带上自己的笔记本电脑&#xff0c;可以分享电脑画面&#…...

C# 委托、事件、特性程序

委托和事件 public partial class Form1 : Form { public Form1() { InitializeComponent(); Man man new Man("小明"); Roommate[] roommates { new Roommate("小张"), new Roommate("小朱"), …...

MapTR论文笔记

MAPTR: STRUCTURED MODELING AND LEARNING FOR ONLINE VECTORIZED HD MAP CONSTRUCTION 目的 传统高精地图 通过一些离线的基于 SLAM 的方法生成&#xff0c;需要复杂的流程以及高昂的维护费用。基于 bev 分割的建图方法&#xff0c;缺少向量化 实例级的信息&#xff0c;比如…...

JS进阶-Day4

&#x1f954;&#xff1a;流水不争先争滔滔不绝 JS进阶-Day1——点击此处&#xff08;作用域、函数、解构赋值等&#xff09; JS进阶-Day2——点击此处&#xff08;深入对象之构造函数、实例成员、静态成员等&#xff1b;内置构造函数之引用类型、包装类型等&#xff09; JS进…...

【C语言】初阶完结练习题

&#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;C语言初阶 ✨其他专栏&#xff1a;代码小游戏 &#x1f91d;希望作者的文章能对你有所帮助&#xff0c;有不足的地方请在评论…...

c++类与对象详解

c类与对象详解 对象类方法自定义类型类的特性this类的六个默认成员函数static成员友元内部类 对象 在C中&#xff0c;对象是类的实例。定义对象的语法为&#xff1a; <class_name> object_name;其中&#xff0c;class_name 是定义类时指定的类名&#xff0c;object_nam…...