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

news2024/10/6 18:25:57

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

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

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

相关文章

分布式规则引擎框架的设计

MirAIe 规则引擎是一个可扩展且可扩展的规则引擎框架,允许用户对多个活动进行分组和自动化。 过去几年,在开发MirAIe 物联网平台时,我们意识到需要一个可扩展、可扩展的规则引擎框架。规则引擎使您能够对各种操作进行分组、管理和自动化&…

git【潦草学习】

初始配置git 查询版本号 初次使用git前配置用户名与邮箱地址 git config --global user.name "your name" git config --global user.email "your email" git config -l 发现最后两行多出了用户名和邮箱,说明配置成功

对指针变量引用以及自定义类型引用的认识

#include <iostream> using namespace std; #include <iomanip>typedef int G[10]; //自定义类型void test(int* p); // void test_0(int &p); //表明p是一个int型变量的别名 void test_1(G &pG); //表明pG是一个G类型变量的别名 void test_2(int*…

PMP备考心得分享

备考PMP考试是一段充满挑战和成长的旅程。参加某机构的PMP培训课程&#xff0c;有国内PMP考培资深讲师的授课&#xff0c;以及班主任的周期监督管理&#xff0c;无疑是我备考成功的重要支撑。在这个过程中&#xff0c;我积累了许多宝贵的经验和心得&#xff0c;现在将它们分享给…

GPT-5出世,需5万张H100!英伟达GPU陷短缺风暴

随着人工智能技术的不断突破&#xff0c;自然语言处理领域也掀起了一波又一波的革命。从GPT-3.5的惊艳登场&#xff0c;到紧随其后的GPT-4的惊世震人&#xff0c;人们仿佛置身于科幻电影中&#xff0c;亲历了一场场技术的奇迹。然而&#xff0c;这场奇迹背后却逐渐显现出一道不…

解决问题:ModuleNotFoundError: No module named ‘mmcv._ext‘,及安装mmcv-full的详细教程

解决问题**ModuleNotFoundError: No module named ‘mmcv._ext’**之前得先搞懂mmcv和mmcv-full的关系。 mmcv 和 mmcv-full 都是针对 PyTorch 的计算机视觉基础库,两者的主要区别是: mmcv 包含了 mmcv 的核心组件,例如运行器、回调函数、可视化工具等,打包体积较小。mmcv-fu…

K8S系列文章之 自动化运维利器 Fabric

Fabric 主要用在应用部署与系统管理等任务的自动化&#xff0c;简单轻量级&#xff0c;提供有丰富的 SSH 扩展接口。在 Fabric 1.x 版本中&#xff0c;它混杂了本地及远程两类功能&#xff1b;但自 Fabric 2.x 版本起&#xff0c;它分离出了独立的 Invoke 库&#xff0c;来处理…

bigemap国土管理行业应用

由于国营企业单位&#xff0c;管理土地&#xff0c;必须要有这样的软件套图 客户之前用的谷歌&#xff0c;后来不能访问了&#xff0c;通过其他途径搜索到我们 客户使用软件一般都用于套坐标以及空间规划图&#xff0c;方便于项目选址和居民建房报建在卫星图上找到用地范围&am…

远程调试MySQL内核

1 vscode 需要安装remote-ssh插件 安装成功后&#xff0c;登录&#xff1a; 默认远程服务器的登录 ssh rootip注意&#xff0c;Linux需要设置root远程登录&#xff1b; 2 安装debug扩展 C\C extemsion Pack C\Cgdb debugger beyond用于进程attach 3 设置Attach进程 {// …

MyBatis源码剖析之Mapper代理方式细节

MyBatis是一个流行的Java持久层框架&#xff0c;它提供了多种方式来执行数据库操作&#xff0c;其中之一就是通过Mapper代理方式。通过Mapper代理方式&#xff0c;开发者可以编写接口&#xff0c;然后MyBatis会动态地生成接口的实现类&#xff0c;从而避免了繁琐的SQL映射配置。…

前端主题切换方案——CSS变量

前言 主题切换是前端开发中老生常谈的问题&#xff0c;本文将介绍主流的前端主题切换实现方案——CSS变量 CSS变量 简介 编写CSS样式时&#xff0c;为了避免代码冗余&#xff0c;降低维护成本&#xff0c;一些CSS预编译工具&#xff08;Sass/Less/Stylus&#xff09;等都支…

Java基础入门篇——Java注释、关键字和标识符(二)

目录 一、注释 1.1注释介绍 1.2单行注释 1.3多行注释 1.4文档注释 1.5javadoc注释标签语法 二、关键字 三、字面量 3.1什么是标识符&#xff1f; 3.2标识符命名规则 四、总结 一、注释 在Java中&#xff0c;注释是用来向代码添加解释、说明和文档信息的文本。Java…

网工这行最大的内卷,就是养了一批“HCIE”

下午好&#xff0c;我是老杨。 这段时间&#xff0c;我个人工作上的事儿挺多&#xff0c;一直在处理。 手底下的一个重要项目组&#xff0c;想招个新人&#xff0c;面了几批都不满意&#xff0c;难搞。 前两天刚定下人选&#xff0c;现下和你聊上几句。 上回说过&#xff0…

Killing LeetCode [82] 删除排序链表中的重复元素 II

Description 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 Intro Ref Link&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/ Difficulty&#xff1a;Medium T…

怎么在树莓派环境上搭建web网站,并发布到外网可访问,今天教给大家

怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f; 文章目录 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;概述使用 Raspberry Pi Imager 安装 Raspberry Pi OS测试 web 站点安装静态样例站点 将web站点发布到公网安装 Cpolarcpo…

OpenStack监控工具

OpenStack是一个开源的云计算管理平台项目&#xff0c;是一系列软件开源项目的组合。由NASA和Rackspace合作研发并发起&#xff0c;以Apache许可证&#xff08;Apache软件基金会发布的一个自由软件许可证&#xff09;授权。 OpenStack为私有云和公有云提供可扩展的弹性的云计算…

mac电脑三维建模 Rhino 7中文 7.32

Rhino 7特别功能介绍 • 不受约束的自由形式 3D 建模工具&#xff0c;如仅在成本高出 20 到 50 倍的产品中发现的工具。为您可以想象的任何形状建模。 • 设计、原型、工程、分析和制造从飞机到珠宝的任何东西所需的准确性。 • 与您的所有其他设计、绘图、CAM、工程、分析、…

git使用(常见用法)

一.下载git git官方下载跳转 安装简单,有手就行 二. git的简单使用 1. 连接远程仓库 #初始化 git init #配置账户 git config --global user.name “输入你的用户名” git config --global user.email “输入你的邮箱” git config --list #--q退出 #配置验证邮箱 ssh-key…

vue2 引用swiper

参考引用 &#xff1a; vue使用swiper实现轮播图一页多张图片效果_swiper多张图片排列的轮播_空空的博客-CSDN博客 vue2 使用swiper_vue2使用swiper__NIXIAKF的博客-CSDN博客 常见的属性&#xff1a;Swiper 中常见的属性以及方法_swiper-wrapper_超勇的.的博客-CSDN博客 1、…

8月16日起!亚马逊新商品上架需更新产品类型的274个属性!

亚马逊美国站发布公告称为了帮助买家更轻松地搜索产品&#xff0c;改善买家的购买决策提高卖家的销量&#xff0c;8月16日起受影响的200种产品类型的274个属性在上架前需更新属性&#xff0c;以下是公告内容&#xff1a; 自2023年8月16日起&#xff0c;200种产品类型的274个属…