mlr3系列机器学习教程1–mlr3介绍.

news2025/1/4 19:47:05

mlr3包是既往mlr包的升级,mlr3包为大量的机器学习技术提供了一个通用的技术接口。mlr3不单单是一个包,而是一个生态系列,包括一系列机器学习的R包。
在这里插入图片描述
我们下导入mlr3包,使用R自带的汽车数据来做个简单的演示

library(mlr3)
library(mlr3verse)
data("mtcars", package = "datasets")
head(mtcars,6)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
这是R语言自带的一个汽车数据,有许多品牌的汽车型号,马力,油耗等相关数据。我们先对变量缩减一下,变量太多增大运算量
mtcars_subset = subset(mtcars, select = c("mpg", "cyl", "disp"))
str(mtcars_subset)
## 'data.frame':    32 obs. of  3 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...

使用mlr3做机器学习的第一步就是建立任务, 使用task函数为数据建立任务,意思大概就是把数据打包在任务里面。我们要汽车重量mpg和其他两个参数”cyl”, “disp”的关系,需要建立一个回归模型,因此使用as_task_regr函数来建立,target填的是结局变量,该id参数是可选的,并指定用于绘图和摘要的任务的标识符;如果省略,数据的变量名将用作id.

task_mtcars = as_task_regr(mtcars_subset, target = "mpg", id = "cars")
task_mtcars
## <TaskRegr:cars> (32 x 3)
## * Target: mpg
## * Properties: -
## * Features (2):
##   - dbl (2): cyl, disp

我们可以使用mlr3viz包进行图形可视化,列出mpg和其他变量关系

library("mlr3viz")
library(GGally)
autoplot(task_mtcars, type = "pairs")

在这里插入图片描述
得出变量间的相关系数,下面我们把数据进行7:3划分

splits = partition(task_mtcars, ratio = 0.7)
splits
## $train
##  [1]  1  4  5  9 10 25 27 30 32  6  7 12 13 14 15 16 22 23 29 18 19 20 28
## 
## $test
## [1]  2  3  8 21 11 17 24 31 26

这样就得出了验证集和预测集。 建立任务后第二部就是定义一个学习器(Learner),其实就等于选哪个R包来分析,学习器将数据传给模型进行训练并返回结果,就等于把数据传给R包,R包得出结果在返回来,回归模型使用的是 regr.rpart等于使用rpart包来分析。

在这里插入图片描述

learner_rpart = lrn("regr.rpart")

把数据放入学习器,列出一个模型的数据,这里使用的是rpart包进行预测的

learner_rpart$train(task_mtcars, row_ids = splits$train)
learner_rpart
## <LearnerRegrRpart:regr.rpart>: Regression Tree
## * Model: rpart
## * Parameters: xval=0
## * Packages: mlr3, rpart
## * Predict Types:  [response]
## * Feature Types: logical, integer, numeric, factor, ordered
## * Properties: importance, missings, selected_features, weights

第三部就可以进行预测了,row_ids这里控制着我们取哪部分数据进行预测,splits$test取的是验证集,等于学习器中放入建模集数据,然后使用验证集来预测

predictions = learner_rpart$predict(task_mtcars, row_ids = splits$test)
predictions
## <PredictionRegr> for 9 observations:
##     row_ids truth response
##           2  21.0 16.73750
##           3  22.8 28.18571
##           8  24.4 28.18571
## ---                       
##          24  13.3 16.73750
##          31  15.0 16.73750
##          26  27.3 28.18571
生成9个预测值对应验证集9个数据,如果需要建模集的数据来预测
predictions = learner_rpart$predict(task_mtcars, row_ids = splits$train)
predictions
## <PredictionRegr> for 23 observations:
##     row_ids truth response
##           1  21.0 16.73750
##           4  21.4 16.73750
##           5  18.7 16.73750
## ---                       
##          19  30.4 28.18571
##          20  33.9 28.18571
##          28  30.4 28.18571

这里对应着建模集的数据数。如果你不喜欢这种row_ids来取数据,也可以使用传统的方法预测,我们先生成一个新数据

mtcars_new<-mtcars[c(1,3,4,8,10,21,27,30),]

生成预测值,truth就是我们数据中的Y值,也就是mpg的值,response是预测值,row_ids任务自己生成的ID

predictions = learner_rpart$predict_newdata(mtcars_new)
predictions
## <PredictionRegr> for 8 observations:
##     row_ids truth response
##           1  21.0 16.73750
##           2  22.8 28.18571
##           3  21.4 16.73750
## ---                       
##           6  21.5 28.18571
##           7  26.0 28.18571
##           8  19.7 16.73750

我们可以对预测值进一步可视化

predictions = learner_rpart$predict(task_mtcars, splits$test)
autoplot(predictions)

在这里插入图片描述
上面学习器rpart不能求出标准误,如果我们想进一步求出标准误就得换个学习器(任务不用换),其实就是换个R包来分析

library(mlr3learners)
learner_lm = lrn("regr.lm", predict_type = "se")
learner_lm
## <LearnerRegrLM:regr.lm>
## * Model: -
## * Parameters: list()
## * Packages: mlr3, mlr3learners, stats
## * Predict Types:  response, [se]
## * Feature Types: logical, integer, numeric, character, factor
## * Properties: loglik, weights

从上可知,这个学习器只要用3个R包, mlr3, mlr3learners, stats,其实就是主要用mlr3learners包,把数据放入学习器,就是把数据放入R包,并分析,就是重复刚才上面的过程

learner_lm$train(task_mtcars, splits$train)
learner_lm$predict(task_mtcars, splits$test)
## <PredictionRegr> for 9 observations:
##     row_ids truth response        se
##           2  21.0 22.68033 0.9822678
##           3  22.8 27.26798 1.1418700
##           8  24.4 26.35702 1.3155846
## ---                                 
##          24  13.3 14.84427 0.9238524
##          31  15.0 15.99769 1.0635741
##          26  27.3 27.95062 1.1319728
predictions=learner_lm$predict(task_mtcars, splits$test)

解读和刚才差不多,就是多了标准误se.也可以把数据提取出来绘图

bc<-predictions$data
bc1<-data.frame(row_ids=bc[["row_ids"]],truth=bc[["truth"]],response=bc[["response"]],se=bc[["se"]])
head(bc1,6)
##   row_ids truth response        se
## 1       2  21.0 22.68033 0.9822678
## 2       3  22.8 27.26798 1.1418700
## 3       8  24.4 26.35702 1.3155846
## 4      21  21.5 26.98316 1.1783833
## 5      11  17.8 22.50143 0.9170841
## 6      17  14.7 12.72575 1.4961354

进行转换后得到转换好的数据我们也可以使用ggplot绘图。本节就先介绍到这里啦。

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

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

相关文章

Nodejs一、初识

零、文章目录 Nodejs一、初识 1、初识 Node.js &#xff08;1&#xff09;回顾与思考 浏览器中的 JavaScript 的组成部分 为什么 JavaScript 可以在浏览器中被执行 为什么 JavaScript 可以操作 DOM 和 BOM 浏览器中的 JavaScript 运行环境 JavaScript 能否做后端开发&#…

HTMLCSS Day07 CSS Flex布局

文章目录 1.flex布局2.flex布局属性容器属性元素属性 3.flex弹性盒模型3.1.主轴3.2.沿主轴的排列处理3.3.flex-flow属性3.4.justify-content属性3.5.align-items属性3.6.align-content3.7 项目属性3.8.order3.9.flex-grow3.10.flex-shrink3.11.flex-basis3.12.flex3.13.align-s…

干翻Mybatis源码系列之第十篇:Mybatis拦截器基本开发、基本使用和基本细节分析

给自己的每日一句 不从恶人的计谋&#xff0c;不站罪人的道路&#xff0c;不坐亵慢人的座位&#xff0c;惟喜爱耶和华的律法&#xff0c;昼夜思想&#xff0c;这人便为有福&#xff01;他要像一棵树栽在溪水旁&#xff0c;按时候结果子&#xff0c;叶子也不枯干。凡他所做的尽…

使用终极 GUI 框架 NiceGUI 提升你的 Python 应用程序

介绍 随着机器学习和深度学习网站应用程序的快速增长&#xff0c;开发人员一直在寻找新的 Web 框架&#xff0c;以便更轻松地构建这些网站应用程序。 数据科学应用程序的普及程度已经上升&#xff0c;因此新的框架也在增加。开发人员创建了许多新的框架&#xff0c;这些框架被证…

【压缩技巧】如何把文件压缩成RAR?如何解压?

在生活及工作中&#xff0c;我们经常需要压缩文件使其更方便存储或传送。 压缩文件的格式有很多种&#xff0c;RAR是其中一种常见的格式&#xff0c;也是WinRAR软件独有的压缩格式。所以想要把文件压缩成RAR&#xff0c;就可以通过WinRAR来操作。 压缩方法如下&#xff1a; 1…

数组的原型方法-es6

数组的原型方法-es6Array.form()Array.of() find() 和 findIndex()copyWithin()fill()entries(),keys()和values()includes()flat()和flatMap()扩展运算符at()reduce()和reduceRight()some()判断数组中是否存在满足条件的项 18、Array.form() Array.from方法用于将两类对象转…

linuxOPS系统服务_linux高级命令

find命令 find 路径 [选项 选项的值] … 选项作用-name根据文件的名称进行-type按文件类型进行搜索&#xff0c;f代表普通文件&#xff0c;d代表文件夹 find命令查找文件 示例1 查找一个文件 案例1 ,在linux整个系统中查找 test.txt文件 find / -name test.txt -type f案例…

《Opencv3编程入门》学习笔记—第六章

《Opencv3编程入门》学习笔记 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 第六章 图像处理 一、线性滤波&#xff1a;方框滤波、均值滤波、高斯滤波 &#xff08;一&#xff09;平滑处理 平滑处理也称模糊处理&#xff0c;是一种简单且使用频率…

像拿快递一样取文件的FileCodeBox

本文大约完成于 2月中旬&#xff0c;镜像中途有过更新&#xff1b; 什么是 FileCodeBox &#xff1f; FileCodeBox 中文名是 文件快递柜&#xff0c;取文件像取快递一样&#xff0c;支持通过匿名口令分享文本&#xff0c;文件。 很多时候&#xff0c;我们都想将一些文件或文本传…

流量卡和手机上显示的流量对不上,这是怎么回事呢?

很多朋友反映&#xff0c;自己购买的流量卡和手机上显示的流量对不上&#xff0c;这到底是怎么回事呢&#xff1f;小编认为&#xff0c;如果出现这种情况&#xff0c;无非有两种因素&#xff1a; ​ 一、买了不正规的流量卡&#xff0c;也就是大家所说的物联卡。 物联卡的特点…

低压电源系统中防雷浪涌保护器的布局方案

低压电源系统是工业、商业和住宅领域中广泛应用的电力系统&#xff0c;其供电电压一般在1000V以下。由于雷击和浪涌等自然灾害的存在&#xff0c;低压电源系统需要防雷浪涌保护器来保护系统不受损坏。本文将详细介绍低压电源系统中防雷浪涌保护器的布置位置与规范。 防雷浪涌保…

AUTOSAR】UDS协议的代码分析与解读(八)----UDS安全访问27h和通讯控制28h

8.9 安全访问 Security Access (27h) 由于保密、排放或安全的原因&#xff0c; 安全访问服务提供一种方法以方便访问受限制的数据或诊断服务。 支持安全访问的ECU应该实现种子和密钥的合理算法&#xff0c;该算法应在特定文档中记录&#xff0c;而只有特定的少数 人可以访问该文…

FasterTransformer 003: CMAKELIST in gemm_test

cmake -DSM60 -DCMAKE_BUILD_TYPERelease .. -DCMAKE_BUILD_TYPE cmake编译类型通常默认为debug&#xff0c;但是在编译软件时&#xff0c;一般都需要使用release版本的&#xff0c;debug太慢了。设置为release版本可以在cmake文件里进行&#xff0c;也可以在运行cmake命令时使…

深度学习实践篇[17]:模型压缩技术、模型蒸馏算法:Patient-KD、DistilBERT、DynaBERT、TinyBERT

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

观点碰撞燃爆会场,2023开放原子全球开源峰会区块链分论坛圆满落幕!

2023开放原子全球开源峰会区块链分论坛活动现场 6月13日&#xff0c;由开放原子开源基金会主办&#xff0c;XuperCore开源项目承办&#xff0c;北京百度网讯科技有限公司、招商银行、联通数字科技有限公司、杭州趣链科技有限公司等协办的2023开放原子全球开源峰会区块链分论坛在…

《低代码指南》不能“生成代码”的低代码平台,为什么推进阻力那么大?

为什么现在低代码平台推进阻力那么大? “在踏出一步之前,首先考虑能否退回去” 现在低代码平台,功能性能这些先不说,能不能提升效率,提升多少,暂不讨论。光“平台和环境锁定”这一点,就是整个行业最大的技术推广障碍。道理很简单,平台有几百个,但是如果选了一个,…

c++11 标准模板(STL)(std::basic_ios)(一)

定义于头文件 <ios>template< class CharT, class Traits std::char_traits<CharT> > class basic_ios : public std::ios_base 类 std::basic_ios 提供设施&#xff0c;以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios 对…

汽车IVI中控开发入门及进阶(八):视频相关的一些知识点

前言: 视频最早的渊源来源于电视。做汽车仪表/IVI中控,尤其是IVI信息娱乐部分,都要涉及到视频这个知识点,各种概念很多,首先需要明确一条主线,那就是SDTV标清电视->HDTV高清电视->UHDTV超高清电视的一个发展脉络,BT601/656是SDTV标清电视接口,BT1120则对应HDTV高…

SpringCloud:什么是SpringCloud?①

一、什么是SpringCloud 像“云朵”一样聚集起来管理服务。它的定位就是&#xff1a;服务群组间的通讯管理。 二、Spring&#xff0c;SpringBoot以及SpringCloud之间的关系。 Spring是一种引擎式的底层核心-- bean容器思想。后面均是基于它延伸的高级产品。 SpringBoot 专注单体…

为什么中国大公司不开发 Linux 桌面应用?

我们Linux平台C端的业务&#xff0c;也就是给大家提供的Linux的个人版本。目前真的是靠爱发电了&#xff0c;逃&#xff09; 更爱的是&#xff0c;我们不只是提供了X64平台&#xff0c;更是提供了Arm&#xff0c;MIPS64平台的二进制包。 估计国内在Linux平台首发新功能的桌面应…