内容

0.1介绍

ClassifyR是一个框架旨在分类和功能的规则是使用由下表所示。一个完全工作的例子显示了如何将现有的分类器框架。函数可以有任意数量的其他参数设置后的参数是强制性的。

0.2k最近的邻居

有一个实现的k最近邻居算法在包。其函数形式资讯(火车、测试、cl k = 1, l = 0,概率= FALSE,使用。所有= TRUE)。它接受一个矩阵或者一个data.frame变量作为输入,但是ClassifyR调用转换、特征选择和分类器函数DataFrame,核心Bioconductor数据容器S4Vectors。它还预计训练数据的第一个参数,这是第二个参数的类和测试数据是第三。因此,一个包装器DataFrame创建参数重新排序。

setGeneric (“kNNinterface函数(measurementsTrain…) standardGeneric (“kNNinterface”)) setMethod (“kNNinterface”、“DataFrame”,函数(measurementsTrain, classesTrain measurementsTest,…verbose = 3) {splitDataset < - .splitDataAndOutcomes (measurementsTrain classesTrain) trainingMatrix < - as.matrix (splitDataset[[“测量”]])测试< -测试(、isNumeric滴= FALSE)如果(!requireNamespace(“阶级”,悄悄地= TRUE))停止(“包的类不能被发现。请安装它。”)如果(verbose = = 3)消息(“拟合k最近的邻居数据分类和预测类。”)类::资讯(as.matrix (measurementsTrain) as.matrix (measurementsTest) measurementsTest,…)})

如果函数只发出一个进展消息详细的是3。介绍性的冗长水平解释装饰图案。.splitDataAndOutcomes是一个内部函数ClassifyR这确保结果没有测量当模型发生了培训。如果classesTrain是一个系数向量,那么功能没有影响。如果classesTrain角色的名字列在吗measurementsTrain列就会从表中删除,返回作为一个独立的变量。的参数传递给捕捉任何选项然而,,如k(考虑的邻居数量)l(最低投票给一个明确的决定),例如。函数也是防守并删除任何非数字输入表的列。

ClassifyR还接受一个矩阵和一个MultiAssayExperiment作为输入。提供便利的方法将它们转换成这些输入DataFrame。通过这种方式,只有DataFrame版本的kNNinterface的分类。

setMethod (“kNNinterface”、“矩阵”,函数(measurementsTrain, classesTrain、measurementsTest…) {kNNinterface (DataFrame (measurementsTrain check.names = FALSE), classesTrain, DataFrame (measurementsTest check.names = FALSE),…)}) setMethod (“kNNinterface”、“MultiAssayExperiment”,函数(measurementsTrain measurementsTest,目标=名字(measurementsTrain) classesTrain,…) {tablesAndClasses < - .MAEtoWideTable (measurementsTrain,目标,classesTrain) trainingTable < - tablesAndClasses[[“数据表”]]类< - tablesAndClasses[["结果"]]testingTable < - .MAEtoWideTable (measurementsTest,目标).checkVariablesAndSame (trainingTable testingTable) kNNinterface (trainingTable,类、testingTable…)})

矩阵方法是更换输入矩阵,ClassifyR预计存储功能行和样本的列(在生物信息学惯例),和铸造DataFrame分派到kNNinterface方法DataFrame,进行分类。

的转换MultiAssayExperiment是更复杂的。ClassifyR有一个内部函数.MAEtoWideTable把一个MultiAssayExperiment一个宽DataFrame目标指定的化验,包括转换。默认情况下,它还可以过滤结果表只包含数值变量。内部效度函数.checkVariablesAndSame检查至少有1列后过滤,训练和测试表有相同数量的变量。

0.3验证实施

创建一个数据集与10样本和特征两个类之间有着明显的差别。运行leave-out-out交叉验证。

类< -因子(代表(c(“健康”、“疾病”),每个= 5),水平= c(“健康”、“疾病”))< -测量矩阵(c (rnorm (50, 10), rnorm (50, 5)), ncol = 10) colnames(测量)< -粘贴(“样本”,1:10)rownames(测量)< -粘贴(mRNA, 1:10)图书馆(ClassifyR) knnParams < ModellingParams (selectParams = NULL, trainParams = trainParams (kNNinterface) predictParams = NULL) CVparams < - CrossValParams (“Leave-k-Out”,离开= 1)分类< - runTests(测量、类CVparams knnParams)分类
# #一个类的对象“ClassifyResult”。# # # #特点:特征值最近的邻居# # # #标识符名字k交叉验证离开1 # #特点:10的功能标识符长度的列表。# #预测:一个数据帧的10行。# #性能措施:没有计算。
cbind(预测(分类),称= actualOutcomes(分类)
类已知# # 1 # #样本子集mRNA 1 1疾病健康# # 2 mRNA 2 2疾病健康# # 3 mRNA 3 3健康健康# # 4 mRNA 4 4疾病健康# # 5 mRNA 5 5疾病健康# # 6 mRNA 6 6疾病疾病# # 7 mRNA 7 7健康疾病# # 8 mRNA 8 8 # # 9 mRNA 9 9疾病疾病# # 10 mRNA 10 10健康疾病

而不是指定一个函数PredictParams因为一个函数并训练和预测。像预期的那样容易的任务,正确分类器预测所有样品。

0.4附录:规则对输入变量的新功能

这个论点详细的从发送小牛这些功能,所以他们必须处理它,即使没有显式地使用它。在ClassifyR框架,详细的是一个数字表示的数量进展信息被打印出来。如果详细的为0,没有任何进展消息打印出来。如果是1,只有一个消息打印每10交叉验证完成。如果是2,除了信息打印时是1,每次打印一条消息的一个阶段分类(转换、特征选择、培训、预测)。如果是3,除了值1和2的信息打印出来,进展消息是印刷在分类函数本身。

每个包含的版本转换、选择、培训和预测函数通常为(1)实现一个数字矩阵的特性的行和列的样本(在生物信息学数据存储大会)和长度相同的系数向量矩阵的列数,(2)一个DataFrame的列是自然特性,可能是不同的数据类型(即分类和数字),和行样品,和类规范和(3)MultiAssayExperiment哪个商店示例类信息colData槽的DataFrame列名“阶级”。的输入(1和3)DataFrame,他们被转换成一个,因为其他数据类型可以存储为一个DataFrame没有信息丢失和转换,选择和分类函数接受一个DataFrame包含代码的实际计算。至少,一个新的函数必须有一个方法了DataFrame作为输入样本的类存储在名为“类”的列或作为一个因素提供向量。虽然不是必需的,但是提供一个版本的一个函数,它接受一个数字矩阵的伴随因素向量和另一个版本,接受一个MultiAssayExperiment是可取的关于输入数据提供灵活性。看到现有功能的代码在包的例子,如果想要实现小说classification-related函数使用ClassifyR