R语言机器学习之caret包详解(二:模型的训练以及调参)

news2024/11/25 2:40:59

R语言机器学习之caret包详解(二:模型的训练以及调参)

  • 前言
  • caret包模型调优的策略、示例、以及一些小tips

前言

在之前的博客中我们详细介绍过了数据的拆分策略、各种数据处理的方法、各种交叉验证的方法,并且以示例介绍了R函数createDataPartition、trainControl

caret包模型调优的策略、示例、以及一些小tips

下面我们来介绍模型的训练以及调参。以下图片是caret包模型调优的策略。

在这里插入图片描述
我们该如何理解上面的图片?下面我们举一个例子来说明。
我们使用caret包来对k近邻方法进行调参,数据选用的鸢尾花数据集!

> data(iris)
> TrainData <- iris[,1:4]
> TrainClasses <- iris[,5]
> 
> knnFit1 <- train(TrainData, TrainClasses,
+                  method = "knn",
+                  preProcess = c("center", "scale"),
+                  tuneGrid = expand.grid(k = c(2,5,8)),
+                  trControl = trainControl(method = "cv"))
> 

对于我所选择的method = “knn”其调优参数只有k,我们指定的调优参数k2、5、8,针对每类调优参数train函数会在训练集的基础上进行十折交叉验证(默认情况下)。以下是各类调优参数在十折交叉验证下的结果!

> results
  k  Accuracy Kappa AccuracySD    KappaSD
1 2 0.9400000  0.91 0.07336700 0.11005049
2 5 0.9400000  0.91 0.05837300 0.08755950
3 8 0.9466667  0.92 0.05258738 0.07888106

results:其中的Accuracy Kappa都是在十次结果的基础上取的平均值(十折交叉验证)!
当然对于调优参数很多的,它会按照全排列形成一系列的组合!
在这里插入图片描述
在这里我们使用kknn包实现k近邻算法。

> knnFit2 <- train(TrainData, TrainClasses,
+                  method = "kknn",
+                  preProcess = c("center", "scale"),
+                  tuneGrid = expand.grid(kmax = c(2, 5, 8), distance = c(1,2),
+                                          kernel = 'optimal'),
+                  trControl = trainControl(method = "cv"))

> results
  kmax distance  kernel  Accuracy Kappa AccuracySD    KappaSD
1    2        1 optimal 0.9333333  0.90 0.07027284 0.10540926
2    2        2 optimal 0.9466667  0.92 0.05258738 0.07888106
3    5        1 optimal 0.9533333  0.93 0.05488484 0.08232726
4    5        2 optimal 0.9466667  0.92 0.05258738 0.07888106
5    8        1 optimal 0.9533333  0.93 0.05488484 0.08232726
6    8        2 optimal 0.9466667  0.92 0.05258738 0.07888106

一些小的tips

tips:函数set.seed用在train函数之前有一些作用:它可以保证我们使用相同的数据进行交叉验证(保证两个模型使用相同的重抽样信息),从而更好的决定调优参数,我举例来说明!

fitControl <- trainControl(## 10-fold CV
                           method = "repeatedcv",
                           number = 10,
                           ## repeated ten times
                           repeats = 10)
set.seed(825)
gbmFit1 <- train(Class ~ ., data = training, 
                 method = "gbm", 
                 trControl = fitControl,
                 ## This last option is actually one
                 ## for gbm() that passes through
                 verbose = FALSE)

gbmGrid <-  expand.grid(interaction.depth = c(1, 5, 9), 
                        n.trees = (1:30)*50, 
                        shrinkage = 0.1,
                        n.minobsinnode = 20)


set.seed(825)

gbmFit2 <- train(Class ~ ., data = training,
                 method = 'gbm',
                 trControl = fitControl,
                 tuneGrid = gbmGrid,
                 verbose = FALSE)



index1 = gbmFit1$control$index
index2 = gbmFit2$control$index
> identical(index1, index2)
[1] TRUE

由于set.seed函数的设置,以上代码gbmFit1、gbmFit2中交叉验证重抽样的信息相同!

一些小tips

metric:回归问题中通常使用RMSE R方 MAE作为衡量模型效果的指标;分类问题中通常使用Accuracy Kappa作为衡量模型效果的指标。如果在某些问题下,以上指标不能满足caret也提供了许多函数defaultSummary,这里不一一介绍!

一些小tips

caret包主要是进行机器学习方法调参,那么可不可以直接使用某些参数拟合模型,直接跳过调参?答案当然是可以的!请看以下代码!

> fitControl = trainControl(method = 'none', classProbs = TRUE)
> set.seed(123)
> gbmFit4 = train(Class ~ ., data = training, 
+                 method = 'gbm',
+                 trControl = fitControl,
+                 verbose = FALSE,
+                 tuneGrid = data.frame(
+                         interaction.depth = 4,
+                         n.trees = 100,
+                         shrinkage = .1,
+                         n.minobsinnode = 20),
+                 metric = 'ROC')
> gbmFit4
Stochastic Gradient Boosting 

157 samples
 60 predictor
  2 classes: 'M', 'R' 

No pre-processing
Resampling: None 

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

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

相关文章

传统文化,运用好了,能生财!

千年以来&#xff0c;五行是中华民族文化的瑰宝&#xff0c;历代先贤智慧的结晶。五行学说是中国传统文化重要组成部分&#xff0c;是中国古代哲学思想的重要内容。古人认为&#xff0c;万物由五种相关的基本物质木、火、土、 金、水构成&#xff0c;这就是五行。 五行思想强调…

NFTScan 浏览器再升级:优质数据服务新体验来袭

当前&#xff0c;高质量的 NFT 数据服务已成为区块链用户和开发者的必需。为满足用户数据需求&#xff0c;NFTScan 主站近日进行全面升级&#xff0c;优化了数据服务板块的页面结构&#xff0c;实现更清晰简洁的布局和交互。 NFTScan 的改版充分考虑用户和开发者的数据体验&am…

【python】TCP socket服务器 Demo

目录 一、单线程服务器 二、多线程服务器 三、多线程服务器&#xff08;发送和接收分离&#xff09; 一、单线程服务器 说明&#xff1a;只能连接一个客户端 import socket,binascii# 创建一个 TCP 套接字 server_socket socket.socket(socket.AF_INET, socket.SOCK_STRE…

【C++基础】4、变量

文章目录 【 1、变量的定义 】【 2、变量的声明 】示例 【 3、左值和右值 】 变量&#xff1a;相当于是程序可操作的数据存储区的名称。在 C 中&#xff0c;有多种变量类型可用于存储不同种类的数据。C 中每个变量都有指定的类型&#xff0c;类型决定了变量存储的大小和布局&am…

文末送书!谈谈原型模式在JAVA实战开发中的应用(附源码+面试题)

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;蓝桥云课认证讲师。 本文讲解了 Java 设计模式中的原型模式&#xff0c;并给…

python3

#安装python3 brew install python3 看到下图表示安装python3成功: #将python3 加入环境变量 export PATH$PATH:/opt/homebrew/bin/#查看python 版本 python3 --version#查看pip 版本 pip3 --version#更新python源 pip3 config set global.index-url https://pypi.tuna.tsing…

免费电商api接口,分享给你「建议收藏」

API&#xff08;应用程序编程接口&#xff09; ​ API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组…

高忆管理;三天翻倍!地产“三仙”狂飙

9月6日&#xff0c;一度全部成为“仙股”的三家闻名香港上市房企&#xff0c;融创我国、我国恒大、碧桂园大涨。其间两家已顺利摘掉“仙股”帽子。 截至发稿&#xff0c;融创我国涨20.25%&#xff0c;报1.9港元/股&#xff0c;总市值报104亿港元&#xff0c;不到三个交易日股价…

[LeetCode周赛复盘] 第 361 场周赛20230906

[LeetCode周赛复盘] 第 361 场周赛20230906 一、本周周赛总结2843. 统计对称整数的数目1. 题目描述2. 思路分析3. 代码实现 2844. 生成特殊数字的最少操作1. 题目描述2. 思路分析3. 代码实现 2845. 统计趣味子数组的数目1. 题目描述2. 思路分析3. 代码实现 2846. 边权重均等查…

提升客户体验,你只需要做到这一点

自动回复是指由特定事件或操作触发的自动响应&#xff0c;例如在即时通讯工具上接收消息&#xff0c;它用于通知发件人他们的消息已被收到。不仅可以在WhatsApp&#xff0c;Messenger等渠道上设置自动回复&#xff0c;如果您使用了像SaleSmartly&#xff08;SS客服&#xff09;…

任意文件读取及漏洞复现

文章目录 渗透测试漏洞原理任意文件读取1. 任意文件读取概述1.1 漏洞成因1.2 漏洞危害1.3 漏洞分类1.4 任意文件读取1.4.1 文件读取1.4.2 任意文件读取1.4.3 权限问题 1.5 任意文件下载1.5.1 一般情况1.5.2 PHP实现1.5.3 任意文件下载 2. 任意文件读取攻防2.1 路径过滤2.1.1 过…

无需麻烦验证,文字验证码一键通过

前言 文字验证码&#xff0c;简单易用&#xff0c;安全可靠&#xff01;不需要麻烦的图形识别。这种验证方式不仅方便快捷&#xff0c;而且能有效防止恶意攻击和机器人访问。无需担心复杂操作&#xff0c;只需几秒钟就能完成验证过程。保护您的个人信息和数据安全&#xff0c;…

PG 的状态机和peering过程

首先来解释下什么是pg peering过程&#xff1f; 当最初建立PG之后&#xff0c;那么需要同步这个pg上所有osd中的pg状态。在这个同步状态的过程叫做peering过程。同样当启动osd的时候&#xff0c;这个osd上所有的pg都要进行peering过程&#xff0c;同步pg的状态。peering过程结…

【K 均值聚类】02/5:简介

一、说明 k-mean算法是一种聚类算法&#xff0c;它的主要思想是基于数据点之间的距离进行聚类。K-means聚类是一种无监督的机器学习算法。让我们再解释一下这句话。聚类分析的目标是将数据划分为同类聚类。每个聚类中的点彼此之间比其他聚类中的点更相似。 无监督机器学习是在没…

k8s集群中集群方式安装nacos

1、前提条件 一个k8s集群&#xff0c;其中有三个master 节点&#xff0c;这三个节点的标签名称为etcd 三个master节点的ip 分别为&#xff1a;192.165.187.170 、192.165.187.171、192.165.187.172一个mysql 数据库&#xff0c; 数据库的ip 为&#xff1a;192.165.187.180 用户…

Java虚拟机整型数加载指令学习

JVM中 int 类型数值&#xff0c;根据 取值范围将 入栈的 字节码指令 就分为4类&#xff1a; 取值 -1~5 采用 iconst 指令&#xff1b; 取值 -128~127 采用 bipush 指令&#xff1b; 取值 -32768~32767 采用 sipush指令&#xff1b; 取值 -2147483648~2147483647 采用 ldc 指令。…

pyppeteer模块常用方法

目录 await page.方法 设置相关 setUserAgent(str) setCookie&#xff08;cookie1, cookie2.......&#xff09; 页面相关 goto(url) reload() goBack()/goForward() 执行js evaluate(js_str) 截图 screenshot(dict) 保存pdf pdf(dict) 获取内容 content() co…

Fragment的创建分析

之前的文章讨论了Fragment的销毁流程&#xff0c;初始状态为resume&#xff0c;然后经历pause -> stop -> destroyView -> destroy -> detach这么几个流程&#xff08;本篇文章基于Support27.1.1来分析的&#xff09;。清楚了Fragment的销毁&#xff0c;那也来看看…

《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3架构升级

架构升级 GPU 支持 早在 Milvus 1.x 版本,我们就曾经支持过 GPU,但在 2.x 版本中由于切换成了分布式架构,同时出于对于成本方面的考虑,暂时未加入 GPU 支持。在 Milvus 2.0 发布后的一年多时间里,Milvus 社区对 GPU 的呼声越来越高,再加上 NVIDIA 工程师的大力配合——为…

CTFHUB ICS(1)

1.异常的工程文件 把文件拖到kali里面去了 unzip 文件名解压文件 文件很多&#xff0c;我们先进到解压的文件夹里面 strings $(find . | xargs) | grep flag linux命令的作用是在当前目录及子目录下递归查找文件,提取文件中的字符串,然后用grep过滤 find . - 在当前目录及递…