小陈回来了,之前和大家介绍了很多与孟德尔随机化和全基因组关联研究有关的方法,接下来的时间里,我会带大家系统地学习如何使用R语言的”mlr3”进行机器学习的相关研究,希望能给大家带来帮助。
由于R语言的快速发展,原先的“mlr”包已经越来越难维护,因此作者对该包进行了重写,这里作者融入了“R6”,“future”和“data.table”的特征,使得”mlr3”这个包更好用。今天,我先带大家简单过一个流程。
代码语言:javascript复制install.packages("mlr3") # 安装mlr3这个包
library(mlr3) # 加载mlr3这个包
这里提醒一下,“mlr3”只是一个基础包,它还有很多扩展包,如:mlr3benchmark,mlr3cluster,mlr3data,mlr3db ,mlr3filters,mlr3fselect,mlr3hyperband,mlr3learners,mlr3measures,mlr3misc,mlr3oml,mlr3pipelines,mlr3proba,mlr3shiny,mlr3spatiotempcv,mlr3tuning,mlr3verse,mlr3viz。这些扩展的R包需要我们单独安装并加载。
代码语言:javascript复制task = tsk("iris") # 使用内置的鸢尾花数据集进行测试,创建任务集
learner = lrn("classif.rpart") # 创建学习器并使用calssif.rpart算法
lrn()学习器只提供五种基础的算法:classif.debug,classif.featureless,classif.rpart,regr.featureless和regr.rpart,前三种是分类算法,后两种是回归算法。
代码语言:javascript复制learner$train(task, row_ids = 1:120) # 选取前120条数据作为训练集
learner$model # 查看训练的模型
上图是使用rpart算法分类后的结果,带*的表示终末节点,从上图可以看出,最佳的分类变量是Petal.Length。
依据该变量,当Petal.Length < 2.45时,有50个都属于setosa这类。
在Petal.Length >= 2.45中,如果Petal.length < 4.95,那么有49个可以分到versicolor这一类,如果Petal.length >= 4.95,则将其分为virginica这类。
这就是训练出来的分类模型,可以看出来,在训练集中的120个样本中最后有3个样本被错误分类了。
代码语言:javascript复制predictions = learner$predict(task, row_ids= 121:150) # 对后30条数据进行预测
predictions # 查看预测结果
代码语言:javascript复制data.frame(predictions$truth,predictions$response)# 更直观查看预测结果
代码语言:javascript复制predictions$score(msr("classif.acc"))# 计算模型的预测准确性
这里我们可以看出预测准确性为83.33%,其实咱们也可以直接看预测的结果来算。
在30个预测对象中,有25个被准确预测出来了,因此准确率就是25/30 = 0.8333。
从这里我们可以看到,机器学习主要可以分为四大步:(1)数据预处理;(2)选择合适的模型;(3)划分数据集并训练;(4)在验证集中验证结果并评估模型的效力。不过,选择合适的模型可能需要重复很多上述步骤才能最终确定。
关于mlr3包的简介就先讲到这里,希望能给大家一个比较感性的认识。