R语言机器学习之构建并操作Task(1)(mlr3包系列)

2022-08-21 17:16:29 浏览数 (1)

‍在“mlr3”包中,Task主要就是指学习任务,它可以直接从data.frame(),data.table()和Matrix()这三种数据对象中创建。这里,“mlr3”主要提供7种学习任务,包括:

(1)TaskClassif (针对分类数据的分类算法);

(2)TaskRegr (针对定量数据的回归算法);

(3)TaskSurv(包含有时间信息的生存分析算法,该方法在mlr3proba包中);

(4)TaskDens(非监督学习算法,估计密度,由mlr3proba包提供);

(5)TaskClust(非监督学习算法,由mlr3cluster包提供);

(6)TaskRegrST(针对时空数据的回归算法,由mlr3spatiotempcv包提供);

(7)TaskOrdinal(等级回归算法,由mlr3ordinal包提供,但是这个包目前正处于开发中,还无法使用)。

在这里我们主要关注TaskClassif,TaskRegr和TaskClust这三大类学习任务,考虑到生存分析在医学研究中的应用十分广泛,后续我也将简单介绍一下TaskSurv。

接下来进入R语言学习部分:

代码语言:javascript复制
library(mlr3)
# 选取mtcars数据集的前3列作为练习数据
data = mtcars[, 1:3]

接下来,我们使用TaskRegr$new()来创建新的回归任务,这里主要有三个参数id,backend和target:id用来设定这个学习任务的id,相当于“身份证”;backend是指用于创建学习任务的数据集,这里就是data这个数据;target是指回归分析的因变量,这里我们将mpg作为因变量,也称响应变量。

代码语言:javascript复制
task_mtcars = TaskRegr$new(id ="cars", backend = data, target = "mpg")
print(task_mtcars) #查看任务信息

从上图中,我们不难看出新建的任务中目标变量是mpg,特征变量是cyl和disp(关于不同变量的信息请使用?mtcar查阅)

接下来,我们详细看一下这个task_mtcars任务的具体信息

代码语言:javascript复制
task_mtcars$nrow # 获取任务数据集的行数
#[1] 32
task_mtcars$ncol # 获取任务数据集的列数
#[1] 32
task_mtcars$data() # 获取数据集的完整数据
代码语言:javascript复制
head(task_mtcars$row_ids) #查看前六行的id
#[1] 1 2 3 4 5 6
task_mtcars$feature_names # 查看特征变量(可以认为是自变量)的变量名
#[1] "cyl"  "disp"
task_mtcars$target_names # 查看目标变量(可以认为是因变量)的变量名
task_mtcars$data(rows = c(1, 5, 10), cols ="mpg") #提取第1,5和10行的mpg列数据
代码语言:javascript复制
#    mpg
代码语言:javascript复制
#1: 21.0
代码语言:javascript复制
#2: 18.7
代码语言:javascript复制
#3: 19.2
代码语言:javascript复制
summary(as.data.table(task_mtcars)) ## 使用as.data.table()可以将mlr3的任务集转化为数据框
代码语言:javascript复制
print(task_mtcars$col_roles) #获取列的角色信息

从图中我们不难看出,列的角色(roles)主要由7部分组成:$feature,$target, $name, $order, $stratum, $group和$weight,也就是说一个列可以有很多个角色,比如既作为feature,又作为weight(权重)使用。

关于如何使用mlr3包构建机器学习任务以及如何操作task对象的内容就先讲到这里,下期我还会带大家熟悉一下如何构建并操作task对象。敬请期待!

0 人点赞