NAS解决用户哪些问题

NAS解决用户哪些问题,第1张

深度学习研究及其在生物医药领域的潜在应用

深度学习已经在各种生物学应用中取得成功。在本节中,我们回顾了在各个研究领域进行深度学习的挑战和机会,并在可能的情况下回顾将深度学习应用于这些问题的研究(表1)。我们首先回顾了生物标志物开发的重要领域,包括基因组学,转录组学,蛋白质组学,结构生物学和化学。然后,我们回顾一下药物发现和再利用的前景,包括使用多平台数据

生物标志物。生物医学的一个重要任务是将生物学数据转化为反映表型和物理状态(如疾病)的有效生物标志物。生物标志物对于评估临床试验结果[18]以及检测和监测疾病,特别是像癌症这样的异质性疾病,是至关重要的[19,20]。识别敏感特异性生物标志物对于现代转化医学来说是一个巨大的挑战[21,22]。计算生物学是生物标志物发展。事实上,从基因组学到蛋白质组学都可以使用任何数据来源;这些在下一节中讨论。

基因组学。新一代测序(NGS)技术已经允许生产大量的基因组数据。这些数据的大部分分析都可以用现代计算方法在计算机上进行。这包括基因组的结构注释(包括非编码调控序列,蛋白质结合位点预测和剪接位点)。

基因组学的一个重要分支是宏基因组学,也被称为环境,生态基因组学或社区基因组学。NGS技术揭示了未经培育且以前没有得到充分研究的微生物的自然多样性。

宏基因组学中有几个生物信息学挑战。一个主要挑战是序列数据的功能分析和物种多样性的分析。深信念网络和经常性神经网络的使用已经允许通过表型分类宏基因组学pH数据和人类微生物组数据。 与基线方法相比,这些方法并没有提高分类准确性作为强化学习,但确实提供了学习数据集的分层表示的能力[23]但是,Ditzler等强调DNN可以改善现有的宏基因组学分类算法,特别是在大数据集和适当选择网络参数的情况下。

表1 深度学习技术应用于不同类型生物医学数据的总结

应用

数据源

研究目的

DL技术

准确率

利用深度学习增强癌症诊断和分类[28]

13种不同的癌症基因表达数据集(13 different gene expression data sets of cancers)

癌症检测,癌症类型分类

稀疏和堆栈自动编码器+ Softmax回归

对于每个数据集的准确度都比基准更好

深度学习组织调节拼接代码[32](Deep Learning of the Tissue-Regulated Splicing Code)

从RNA-Seq数据分析11 019个小鼠替代外显子(11 019 mouse alternative exons profiled from RNA-Seq data)

拼接模式识别

自动编码器+ DNN(3层)+薄荷(超参数选择)

AUC优于基线准确度

深卷积神经网络注释基因表达模式的小鼠脑[30]

由Allen Institute for Brain Science的小鼠脑的四个发育阶段的ISH图像

基因表达注释

CNN(Overfeat)

AUC=0894

多模式深度学习方法的多平台癌症数据的综合数据分析[52]

卵巢癌和乳腺癌数据集(ovarian and breast cancer data sets)

聚集癌症患者

DBNs

lncRNA-MFDL:通过融合多个特征和使用深度学习鉴定人类长的非编码RNA[34]

Gencode和RefSeq的蛋白质编码和非编码序列(protein-coding and noncoding sequences from Gencode and RefSeq)

鉴定长的非编码RNA

lncRNA-MFDL(深层堆叠网络,每个单元DNN)

ACC = 971%

用于宏基因组分类的多层和递归神经网络[23]

pH微生物组测序数据集和人微生物组测序数据集(pH microbiome sequencing data set and human microbiome sequencing data set)

宏基因组分类

MLP, DBN, RNN

comparison

Multi-Level Gene/MiRNA Feature Selection using Deep Belief Nets and Active Learning[27]

来自6种癌症的MiRNA表达数据(MiRNA expression data from 6 type of cancers)

Gene/MiRNA特征选择(基因表达)

MLFS(DBN +特征选择+无监督主动学习)(MLFS (DBN + feature selection + unsupervised active learning))

F1 = 847%

成对输入神经网络用于目标配体相互作用预测[45]

sc-PDB数据库(sc-pdb:用于鉴定蛋白质中“可药用”结合位点的变化和多样性的数据库)

蛋白质 - 配体预测

PINN (SVD + Autoencoder/RBM)

AUC = 0959

非编码变量与深度学习序列模型的预测效应[49]

来自ENCODE和Roadmap Epigenomics项目的160种不同TF,125种DHS谱和104种组蛋白标记谱的690 TF结合谱

从序列中预测非编码变异效应

DeepSEA (CNN)

AUC = 0923 (histone)

通过深度学习预测DNA和RNA结合蛋白的序列特异性[48]

506 ChIP-seq实验,DREAM5 TF-DNA基序识别挑战

DNA和RNA结合蛋白的特异性分类

DeepBind(CNN)

train, AUC = 085; validation,

AUC > 07

具有双模深信道网络的蜂窝信号系统的跨物种学习[36]

来自SBV IMPROVER挑战的磷酸化蛋白质组学数据

跨物种学习(模拟细胞信号系统)

bDBN (bimodal DBN) and

sbDBN (semirestricted bimodal

DBN)

AUC = 093

表达数量性状基因(eQTL)的鉴定与阐明及其调控机制的深入研究[35]

GEUVADIS(来自从参与1000基因组项目的个体中提取的337个淋巴母细胞系的选择的RNA-Seq和全基因组范围的SNP-阵列数据的组合)

确定eQTL

MASSQTL(DNN)

AUC = 085

建立RNA结合蛋白靶点结构特征的深度学习框架[43]

源自doRiNA的24个数据集(转录后调节中的RNA相互作用数据库)

预测RNA结合蛋白的结合位点(RBP靶标识别)

DBN(多模式DBN)

AUC = 0983 on PTB HITS-CL

DeepCNF-D:通过加权深度卷积神经场预测蛋白质有序/无序区域[42]

来自CASP的CASP9, CASP10数据集(蛋白质结构预测的关键评估)

预测蛋白质有序/无序区域

DeepCNF (CRF + CNN)

AUC = 0855 on CASP9

AUC = 0898 on CASP10

用深度神经网络分割微阵列[29]

两个数据集,来自2006年Lehmussola等人的微阵列图像

微阵列分割

CNN

MAE = 025

深度学习药物引起的肝损伤[46]

四个数据集,化合物,化学结构注释DILI阳性或DILI阴性(four data sets, compounds, chemical structure annotated DILI-positive or DILI-negative properties)

药物性肝损伤预测

RNN(递归神经网络)

AUC = 0955

从头算蛋白质二级结构预测的深度学习网络方法[38]

训练,Protein Data Bank; 验证,CASP9,CASP10(蛋白质结构预测的关键评估)

从头算蛋白质二级结构预测

DNSS(多模RBM)

Q3 = 907%, Sov = 742%

蛋白质接触图预测的深层架构[39]

ASTRAL database

蛋白质接触图预测

RNN + DNN

ACC ∼ 30%

用深机器学习网络建模药物样分子的环氧化作用[47]

Accelrys代谢物数据库(AMD):389个环氧化分子,811个非氧化分子(Accelrys Metabolite Database (AMD): 389 epoxidized molecules, 811 nonepoxidized molecules)

建模分子的环氧化性质

CNN

AUC better than baseline accuracy

DNdisorder:使用增强和深度网络预测蛋白质紊乱[41]

DISORDER723, CASP9, CASP10

预测蛋白质有序/无序区域

RBM

AUC better than baseline

accuracy

Basset:用深度卷积神经网络学习可访问基因组的规则代码[50]

来自ENCODE和Epigenomics Roadmap项目的164个细胞类型的DNasel-seq数据

学习DNA序列的功能活动

CNN

AUC = 0892

a首字母缩写词:CNN=卷积神经网络,DNN=深度神经网络,RNN=递归神经网络,DBN=深信念网络,RBM=限制玻尔兹曼机器,MLP=多层感知器,MLFS=多级特征选择,PINN= 网络,CRF=条件随机场。

转录。转录组学分析利用各种类型转录物(信使RNA(mRNA),长非编码RNA(lncRNA),微小RNA(miRNA)等)丰度的变化来收集各种功能信息,从剪接代码到各种疾病的生物标志物。

转录组学数据通常从不同类型的平台(各种微阵列平台,测序平台)获得,其不同之处在于测量的基因组和信号检测方法。许多因素导致基因表达数据的变异性。因此,即使对于单个平台分析也需要标准化。 跨平台分析需要规范化技术,这可能是一个重大挑战。由于DNN具有较高的泛化能力,因此特别适合于跨平台分析。他们也能很好地处理基因表达数据的其他一些主要问题,比如数据集的大小以及对降维和选择性/不变性的需求,下面我们将回顾几个已经使用的DNN 用不同类型的基因表达数据来获得不同程度的成功。

表格数据应用程序。基因表达数据可以表示的一种方式是作为矩阵的表格形式,其包含关于转录物表达的定量信息。这些数据是高维度的,由于数据中的信噪比损失,使得统计分析成为问题。[25]

高维数据可以通过两种方式处理:

I 降维:

A特征提取,例如用SVM或随机森林算法;

B特征子集选择;

C途径分析;

II 使用对高维度较不敏感的方法,如随机森林或深层信念网络。

诸如主成分分析(PCA),奇异值分解,独立分量分析或非负矩阵分解等方法是常见的前沿方法。然而,上述方法将数据转换成许多难以用生物学解释的组件。此外,这种降维方法基于基因表达谱提取特征而不管基因之间的相互作用。通路分析可以减少变量的数量,减少错误率并保留更多的生物相关信息。[25,26]

深度学习在处理高维基质转录组学数据方面也取得了一些成功。在另一种方法中,将基因表达的特征与非编码转录物如miRNA的区域一起提取; 这是通过使用深度信念网络和主动学习来实现的,其中使用了深度学习特征提取器来减少六个癌症数据集的维度,并且胜过了基本特征选择方法[27]。主动学习与分类的应用提高了准确性,并且允许选择与癌症相关的特征(改进的癌症分类),而不仅仅基于基因表达谱。使用miRNA数据的特征选择是使用与先前选择的特征子集的目标基因的关系实施的。

在另一个深度学习应用中,Fakoor等人利用自编码器网络进行推广,并将其应用于使用从具有不同基因集合的不同类型的微阵列平台(Affimetrix家族)获得的微阵列基因表达数据的癌症分类[28]。他们通过PCA和非监督非线性稀疏特征学习(通过自动编码器)结合使用降维来构建用于微阵列数据的一般分类的特征。癌症和非癌细胞分类的结果显示出了重要的改进,特别是使用监督微调,这使得特征不那么通用,但即使对于没有跨平台标准化的数据也能获得更高的分类准确性。自动编码器的全球泛化能力有助于使用不同微阵列技术收集的数据,因此可能对来自公共领域的数据进行大规模综合分析有前途。

图像处理应用。基因表达也可以以可视形式存储为图像,例如来自微阵列的图像荧光信号或RNA原位杂交荧光或放射性信号。 在一些应用中,以图像处理性能优越著称的CNN已经显示出改善这些图像分析的潜力。

在微阵列分析中,由于斑点大小,形状,位置或信号强度的变化,检测信号和识别荧光斑点可能是具有挑战性的,并且荧光信号强度通常对应于基因或序列表达水平差。在对这个问题的深度学习技术的一个应用中,CNN被用于微阵列图像分割,并且在准确性方面显示出类似于基准方法的准确度的结果,但是训练更简单并且对计算源的要求更少。[29]

将CNN应用于基于图像的基因表达数据的另一个机会是RNA原位杂交,这是一种繁琐的技术,当允许这样的 *** 作时,能够使基因表达在一组细胞,组织切片或整个生物体中定位和可视化。这种方法促进强大的纵向研究,说明发展过程中的表达模式的变化。它被用于构建详细的Allen DevelopmentMouse Brain Atlas,其中包含超过2000个基因的表达图谱,每个基因在多个脑部分中进行说明。过去,这些手动标注是耗时的,昂贵的,有时也是不准确的。然而,最近,Zeng等人使用深度预训练CNN进行自动注释[30]。要做到这一点,神经网络模型训练原始自然原位杂交图像的不同层次的发展中国家的大脑没有关于坐标(空间信息)的确切信息;这种技术在四个发展阶段的多个大脑水平上实现了卓越的准确性。

剪接。深度学习的另一个应用领域是剪接。剪接是在真核生物中提供蛋白质生物多样性的主要因素之一;此外,最近的研究显示“拼接代码”与各种疾病之间的联系[31]。然而,现代科学仍然不能全面地理解控制剪接调控的机制。剪接调节的现代概念包括转录水平,特定信号调节序列元件(剪接增强子或沉默子)的存在,剪接位点的结构和剪接因子的状态(例如特定位点的磷酸化可能改变剪接因子活性)。所有这些因素使分析变得复杂,因为它们之间存在大量元素和复杂的非线性相互作用。现有的拼接预测软件需要高通量测序数据作为输入,并且面临着原始读取比常规基因短的问题,以及基因组中假性基因的高重复水平和存在。因此,拼接机制的分析算法很慢,需要高度的组合计算来源,深度学习可能会在这方面提供改进。在使用五个组织特异性RNA-seq数据集的一个深度学习应用中,使用隐变量来开发DNN以用于基因组序列和组织类型中的特征,并且被证明优于贝叶斯方法预测个体内和组织间的组织剪接外显子拼接的转录本百分比的变化(拼接代码度量)[32]。

非编码RNA。非编码RNA是生物学中的另一个问题,需要复杂的计算方法,如深度学习。非编码RNAs非常重要,涉及转录,翻译和表观遗传学的调控[33],但是它们仍然难以与编码蛋白质的RNA区分开来。对于短的非编码RNA,这个任务已经很好地解决了,但是对于lncRNA来说这是相当具有挑战性的。lncRNAs组成异构类,可能含有推定的复制起点(ORF),短的蛋白质样序列。开发了一种新的深层次的学习方法,称为lncRNAMFDL,用于鉴定lnc-RNAs,使用ORF,k相邻碱基,二级结构和预测的编码结构域序列等多种特征的组合[34]。该方法使用从Gencode(lncRNA)和Refseq(蛋白质编码mRNA数据)的序列数据中提取的五个单独特征,并且在人类数据集中导致971%的预测准确性。

表达量性状基因座分析。最后,数量性状基因座(QTL)分析有潜力进行深入的学习。 QTL分析鉴定含有多态性的遗传基因座,所述多态性导致复杂的多基因性状(例如,体重,药物反应,免疫应答)的表型变异。显示遗传变异的一个这样的“性状”是给定组织和/或条件中任何给定基因的表达或转录本丰度。表达QTL(eQTL)是影响转录本丰度的遗传变异的基因座。 eQTL分析已经导致了对人类基因表达调控的洞察力,但面临着许多挑战。在局部调节表达的eQTL(顺式-eQTL)相对容易用有限数量的统计测试来鉴定,但是调节基因组中其它位置的基因表达的位点(trans-eQTL)更难以检测到。最近,为了解决使用各种编码的生物特征(诸如物理蛋白质相互作用网络,基因注释,进化保守,局部序列信息以及来自ENCODE项目的不同功能元件)的反式eQTL预测问题的深度学习方法MASSQTL[35]被提出。DNN利用来自其各自交叉验证折叠的9个DNN模型,优于其他机器学习模型,并且提供了对基因表达的调控架构的基础的新机制。深解码系统也被用来对trans-eQTL特征向量进行聚类,然后通过t-SNE降维技术进行可视化。

蛋白质组学。与转录组学相比,蛋白质组学是一个相当欠发达的研究领域,数据依然稀少,用于分析的计算方法较少。即使有相似的信号编码和传输机制,人类蛋白质组学数据的缺乏以及将模型生物体结果转化为人类的困难也使分析变得复杂。

深度学习可以以多种方式使蛋白质组学受益,因为一些方法不需要像其他机器学习算法那样的大量培训案例。深度学习方法的其他优点是他们建立数据的分层表示,并从复杂的相互作用中学习一般特征,从而有利于蛋白质的蛋白质组学和网络分析。例如,使用磷酸化数据,双峰深信念网络已被用于预测大鼠细胞对相同刺激的刺激的细胞反应[36]。与传统的管线相比,开发的算法获得了相当的准确性。

结构生物学和化学。结构生物学包括蛋白质折叠分析,蛋白质动力学,分子建模和药物设计。二级和三级结构是蛋白质和RNA分子的重要特征。对于蛋白质,适当的结构测定对于酶功能预测,催化中心和底物结合的形成,免疫功能(抗原结合),转录因子(DNA结合)和转录后修饰(RNA结合)是重要的。丧失适当的结构会导致功能丧失,并且在某些情况下会导致可能导致神经退行性疾病(如阿尔茨海默病或帕金森病)的异常蛋白质的聚集。[37]

基于复合同源性的比较建模是预测蛋白质二级结构的一种可能方式,但是受现有注释良好的化合物的量限制。另一方面,机器学习从头预测是基于公认的具有公知结构的化合物的模式,但是还不够精确以至于不能实际使用。从头开始使用深度学习方法通过使用蛋白质测序数据改进了结构预测[38]。同样,深度学习已经被应用于使用ASTRAL数据库数据和复杂的三阶段方法来预测二级结构元素和氨基酸残基之间的接触和取向[39]。所使用的方法是分析偏倚和高度可变数据的有效工具。

三维结构的不变性在功能上也是重要的。然而,有几种蛋白质没有独特的结构参与基本的生物过程,如细胞周期的控制,基因表达的调控,分子信号传递。此外,最近的研究显示一些无序蛋白质的显着性[37]; 许多癌基因蛋白具有非结构域,并且错误折叠蛋白的异常聚集导致疾病发展[40]。这种没有固定三维结构的蛋白被称为固有无序蛋白(IDP),而没有恒定结构的结构域被称为固有无序区(IDR)。

许多参数将IDP / IDR与结构化蛋白质区分开来,从而使预测过程具有挑战性。这个问题可以使用深度学习算法来解决,这些算法能够考虑各种各样的特征。2013年,Eickholt和Cheng发表了一个基于序列的深度学习预测指标DNdisorder,与先进的预测指标相比,改进了对无序蛋白质的预测[41]。后来在2015年,Wang等人提出了一种新的方法,DeepCNF,使用来自蛋白质结构预测的临界评估(CASP9和CASP10)的实验数据,能够准确预测多个参数,如IDPs或具有IDR的蛋白质。DeepCNF算法通过利用众多特征,比基线单从头(从头算)预测指标执行得更好[42]。

另一类重要的蛋白质是结合单链或双链RNA的RNA结合蛋白。 这些蛋白质参与RNA的各种转录后修饰:剪接,编辑,翻译调控(蛋白质合成)和聚腺苷酸化。RNA分子形成不同类型的臂和环,需要识别和形成RNA和蛋白质之间连接的二级和三级结构。RNA的二级和三级结构是可预测的,并且已经被用于建模结构偏好偏好和通过应用深度信念网络预测RBP的结合位点[43]。深度学习框架在真正的CLIP-seq(交联免疫沉淀高通量测序)数据集上进行了验证,以显示从原始序列和结构分布中提取隐藏特征的能力,并准确预测RBP的位点。

药物发现和再利用。计算药物生物学和生物化学广泛应用于药物发现,开发和再利用的几乎每个阶段。过去数十年来,不同的研究团体和公司在全球范围内开发了大量用于计算机模拟药物发现和目标延伸的计算方法,以减少时间和资源消耗。虽然存在许多方法[44],但是还没有一个是最优的(例如,无法执行通量筛选或者通过蛋白质类别进行限制),现在一些研究表明深度学习是一个重要的考虑方法(表1)。

药物发现的重要任务之一就是预测药物靶点的相互作用。 靶标(蛋白质)通常具有一个或多个与底物或调节分子的结合位点; 这些可以用于建立预测模型。 然而,包括其他蛋白质的成分可能会给分析带来偏见。成对输入神经网络(PINN)接受具有从蛋白质序列和靶分布获得的特征的两个载体的能力被Wang等人用来计算靶标-配体相互作用[45]。神经网络的这种优势比其他代表性的靶标-配体相互作用预测方法有更好的准确性。

药物发现和评估是昂贵,耗时且具有风险; 计算方法和各种预测算法可以帮助降低风险并节省资源。一个潜在的风险是毒性; 例如,肝毒性(肝毒性)是从生产中去除药物的常见原因。用计算方法预测肝毒性可能有助于避免可能的肝毒性药物。使用深度学习,可以有效地确定原始化学结构的化合物毒性,而不需要复杂的编码过程[46]。使用CNN也可以预测诸如环氧化的性质,这意味着高反应性和可能的毒性; 这是休斯等人首次实施的。通过使用环氧化分子和氢氧化物分子的简化分子输入线入口规格(SMILES)格式数据作为阴性对照[47]。

多平台数据(Multiomics)。使用多平台数据的能力是深度学习算法的主要优势。 由于生物系统复杂,具有多个相互关联的元素,基因组学,表观基因组学和转录组学数据的系统级整合是提取最有效且有生物学意义的结果的关键。整合过程在计算上不是微不足道的,但收益是生物标志物特异性和灵敏度比单一来源方法的增加。

计算生物学中需要分析组合数据的主要领域之一是计算表观遗传学。有联合分析基因组,转录组,甲基化组特征和组蛋白修饰提供了准确的表观基因组预测。

一些研究人员已经开发出深度学习方法,可用于分析来自多个来源的数据(表1)。Alipanahi等人开发了基于深度学习的方法DeepBind(toolsgenestorontoedu/deepbind/),以在各种疾病中计算核苷酸序列结合转录因子和RNA结合蛋白的能力,并表征单点突变对结合特性的影响。DeepBind软件受CNN启发,对技术不敏感; 相反,它与从微阵列到序列的定性不同形式的数据是相容的。CPU的实现也允许用户并行化计算过程[48]。在另一个基于CNN的应用程序中,Zhou和Troyanskaya设计了DeepSEA框架来预测染色质特征和疾病相关序列变异的评估。与其他计算方法不同,他们的算法能够捕获每个结合位点的大规模上下文序列信息,用于注释从头序列变异体[49]。开发了类似的CNN管线,揭示了序列变异对染色质调控的影响,并对DNase-seq(DNase I测序)数据进行了培训和测试[50]。一种名为Bassed的深度学习软件优于基线方法,并且在所有数据集上达到平均AUC0892。最后,随着深层特征选择模型的发展,深度学习被用于识别主动增强器和促进器,该模型利用了DNN对复杂非线性相互作用进行建模的能力,并学习了高层次的广义特征[51]。模型从多平台数据中选择特征,并按照重要性进行排序。在这些应用中,深度学习方法是染色质性质的更敏感和更有力的预测因子,也是复杂生物标志物发展的关键。

癌症是一组异质性疾病的广泛名称,其中一些是由基因突变引起的,因此使用多平台数据的癌症分类可以揭示潜在的病理学。Liang等人开发了一个具有多平台数据的深层信念网络模型,用于癌症患者的聚类[52]。使用受限玻尔兹曼机对每种输入模式定义的特征进行编码。这种方法的一个优点是深层信念网络不需要具有正态分布的数据,因为其他聚类算法和遗传(生物)数据不是正态分布的。

最后,从自然语言处理的角度来看,深度学习在通过巨大的非结构化(研究出版物和专利)和结构化数据(知识注释图,如基因本体论[53]或Chembl[54])浏览时,通过检验假设的合理性。这些数据库一起形成了一个庞大的,多平台的数据集,如果结合起来,这些数据集将更加丰富和全面。

总之,现代生物数据的庞大规模,对于以人为本的分析来说太庞大而复杂。 机器学习,特别是深度学习与人类专业知识相结合,是将多个大型多平台数据库完全集成的唯一途径。 深度学习使人类能够做到以前无法想象的事情:具有数百万输入的图像识别,语音识别以及接近人类能力的语音自动化。 虽然深度学习和特别是无监督的深度学习仍处于起步阶段,特别是在生物学应用方面,但最初的研究支持它作为一种有希望的方法,尽管在实施中不受限制和挑战,但可以克服生物学数据的一些问题, 对数百万间接和相互关联的疾病机制和途径的新见解。

R语言数据对象与运算

R语言数据对象与运算 笔记整理

21 数据对象及类型

R语言创建和控制的实体被称为对象(object)

ls()命令来查看当前系统里的数据对象

R对象的名称必须以一个英文字母打头,并由一串大小写字母、数字或钟点组成

注意:R区分大小写

不要用R的内置函数名称作为数据对象的名称,如c、length等

22 数据对象类型

R语言的对象包括

数值型(numeric):实数, 可写成整数(integers)、小数(decimal fractions)、科学记数(scientific notation)

逻辑型(logical):T(true)或F(FALSE)

字符型(character):夹在" "或之间

复数型(complex):形如a+bi

原味型(raw):以二进制形式保存数据

缺省型(missing value):有些统计资料是不完整的,当一个元素或值在统计的时候是“不可得到(not available)”或“缺失值(missing value)”的时候,相关位置可能会被保留并赋予一个特定的NA(not available)值,任何NA的运算结果都是NA。

辨别和转换数据对象类型的函数:

辨别 转换

character ischaracter() as,character()

complex

double

integer

logical

NA

numeric

23 数据对象构造

R语言里的数据对象主要有六种构造:向量(vector)、矩阵(matrix)、数组(array)、列表(list)、数据框(data frames)、因子(factor)

231 向量(vector)是由有相同基本类型元素组成的序列,相当于一维数组

5个数值组成的向量x,这是一个用函数c()完成的赋值语句,这里c()可以有任意多个参数,而它输出的值则是一个把这些参数首尾相连形成的一个向量

R的赋值符号除了“<-”外,还有"->""="

例如:

> c(1,3,5,7,9) -> y

> y

[1] 2 5 8 3

> z = c(1,3,5,7,9)

> z

[1] 1 3 5 7 9

assign()函数对向量进行赋值

length():可返回向量的长度

mode()可返回向量的数据类型

正则序列 用 “:”符号,可产生有规律的正则序列(: 的运算级别最高)

函数seq()产生有规律的各种序列

seq(from,to ,by) from 给序列的起始值,to表示序列的终止值,by表示步长(by 省略时,表示步长值为1)

> seq(1,10,2)

[1] 1 3 5 7 9

> seq(1,10)

[1] 1 2 3 4 5 6 7 8 9 10

有时关注的是数列的长度,利用句法:seq(下界,by=,length=)

> seq(1,by=2,length=10)

[1] 1 3 5 7 9 11 13 15 17 19

rep(x,times,……)x表示要重复的对象,times表示重复的次数

> rep(c(1,3),4)

[1] 1 3 1 3 1 3 1 3

> rep(c(1,3),each=4)

[1] 1 1 1 1 3 3 3 3

对每个元素进行重复;

R中的内置函数:

mean()来示向量的均值

median()求是位数

var()求方差

sd()求标准差

sort()对向量排序

rev()将向量按原方向的反方向排列

rank()给求出向量的秩

prod()求向量连乘积

append()为向量添加元素

对向量运算常见函数表

函数 用途

sum() 求和

max() 求最大值

min() 求最小值

range() 求极差(全矩)

mean() 求均值

median 求中位数

var() 求方差

sd() 求标准差

sort() 排序

rev() 反排序

rank() 求秩

append() 添加

replace() 替换

match() 匹配

pmatch() 部分匹配

all() 判断所有

any() 判断部分

prod() 积

232 矩阵

矩阵(matrix)是将数据用行和列排列的长方形表格,它是二维的数组,其单元必须是相同的数据类型,通常用列来表示不同的变量,用行表示各个对象。

其句法是:

matrix(data=NA,ncol=1,byrow-=FALSE,dimnames=NULL)

data是必须的,其它几个选择参数。

nrow表示矩阵的行数

ncol表示矩阵的列数

byrow默认为FALSE,表示矩阵按列排列,如设置为T,表示按行排列;

dimnames可更改矩阵行列名字

diag()函数生成对角矩阵

diag()这个函数比较特别,当数据是向量时则生成对角矩阵,但当数据是矩阵时,则返回对角元素

也可用函数diag()生成单位矩阵

当我们生成了某个矩阵后,若要访问矩阵的某个元素或某行(列),可以利用形如A[i,j]的形式得到相应的索引矩阵

矩阵可进行相应的加减乘除运算,但运算过程中要注意行数和列数的限制条件

R里AB并不是表示矩阵相乘,只表示矩阵对应的元素相乘

矩阵相乘应用A%%B

dim()返回矩阵的行数和列数

nrow()返回矩阵的行数

ncol()返回矩阵的列数

solve()返回矩阵的逆矩阵

对矩阵运算的常见函数

函数 用途

asmatrix() 把非矩阵的转换成矩阵

ismatrix() 辨别是否矩阵

diag() 返回对角元素或生成对角矩阵

eigen() 求特征值和特征向量

solve() 求逆矩阵

chol() Choleski分解

svd() 奇异值分解

qr() QR分解

det() 求行列式

dim() 返回行列数

t() 矩阵转置

apply() 对矩阵应用函数

R语言还提供了专门针对矩阵的行或列计算的函数

如 colSUms()对矩阵各列求和 colMeans()求矩阵各列的均值

类似的有 rowSums()rowMeans()

更一般的方法:

apply()函数来对各行各列进行运算

句法是:apply(X,MARGIN,FUN,……)

X表示要处理的数据

MARGIN表示函数作用的范围

取1表示对行运用函数

取2表示对列运用函数

FUN表示要运用的函数

rbind()、cbind()将两个或两个以上的矩阵合并起来

rbind()表示按行合并,cbind()则表示按列合并

233 数组

数组(array)可以看作是带有多个下标的类型相同的元素的集合。

数组的生成函数是array(),其句法是

array(data=NA,dim=length(data),dimnames-NULL)

data表示数据,可以为空

dim 表示维数

dimnames可以更改数组难度的名称

234 列表

向量、矩阵和的单元必须是同一类型的数据,若一个数据对象需要含有不同的数据类型,可采用列表(list)这种数据对象的形式。

列表是一个对象的有序集合构成的对象,列表中包含的对象又称为它的分量(components),分量可以是不同的模式或(和)类型

语法式为:list (变量1=分量1,变量2=分量2,……)

若要访问列表的某一成分,可以用LST[[1]],LST[[2]]的形式访问

因分量可以被命名,故可以在列表名称后加$符号,再写上成分名称来访问列表分量

函数length()、mode()、names()可以分别返回列表的长度(分量的数目)、数据类型、列表里成分的名字

235 数据框

数据框(data frame)是一种矩阵形式的数据,但数据框中各列可以是不同类型的数据。数据框每列是一个变量,每行是一个观测 。

对可能列入数据框中的列表有如下的一些限制:

1.分量必须是向量(数值,字符,逻辑),因子,数值矩阵,列表或者其他数据框。

2.矩阵,列表和数据框为新的数据框提供了尽可能多的变量,因为它们各自拥有列、元素或者变量。

3.数值向量、逻辑值、因子保持原有格式,而字符向量会被强制转换成因子并且它的水平就是向量中出现的独立值。

4.在数据框中以变量形式出现的向量结构必须长度一致,矩阵结构必须有一样的行数。

R中用函数dataframe()生成数据框,其句法是:dataframe(data1,data2,……)

数据框的列名默认为变量名,也可对列名进行重新命名

也可以对数据框的行名进行修改

236 因子和有序因子

分类型数据经常要把数据分成不同的水平或因子(factor)

生成因子的命令是factor(),其句法是:factor(data,levels,labels,……)

其中data表示数据

levels是因子水平向量

labels是因子的标签向量

levels,labels是备选项,可以不选

若上面的每个因子并不表示因子的大小,要表达因子之间有大小顺序(考虑因子之间的顺序),则可以用 ordered()函数产生

24 数据的录入及编辑

c函数:c函数是把各个值联成一个向量或列表,可以形成数值型向量、字符型向量或其它类型向量

scan函数:功能类似于c函数,实际上是一种键盘输入数据函数。当输入scan(),然后按回车键,这时将等待输入数据,数据之间只要空格分开即可(c函数要用逗号分开)。输入完数据,再按回车键,这时数据录入完毕。

scan函数还可以读入外部文本文件,若现有一个文本文件,datatxt,读入这个文件的命令是:> x=scan(file="dattxt")

若原文件的数据之间有逗号等分隔符,用scan读入应该去掉这些分隔符,其命令是:> x=scan(file="dattxt",sep=",")

编辑数据

dataentry命令

xx原先未被定义,现在赋予其一个空值,这时会出现一个电子表格界面,等待输入数据:> dataentry(xx=c(NA))

当电子表格关闭后,数据会自动保存

edit命令用来编辑函数,也可用来编辑数据,但不会自动保存

fix函数与edit类似,但它可以自动保存

从外部文件读入数据

从文本文件读取:

> s1=readtable("studenttxt")

> s1

V1 V2 V3

1 class sex score

2 1 女 80

3 1 男 85

4 2 男 92

5 2 女 76

6 3 女 61

7 3 女 95

8 3 男 83

读入表格数据的命令是:readtable

忽略掉标签而直接使用默认的行标签

> s2=readtable("studenttxt",header=T)

> s2

class sex score

1 1 女 80

2 1 男 85

3 2 男 92

4 2 女 76

5 3 女 61

6 3 女 95

7 3 男 83

从网络读入数据

url可以从网页上读入正确格式的数据,要借助readtable函数

> address=>

以上就是关于NAS解决用户哪些问题全部的内容,包括:NAS解决用户哪些问题、个性化推荐是怎么做的、深度学习给生物学带来了哪些改变等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9544042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存