随机森林实例(R语言实现)

2023-10-27

1.可以先查询一下路径(可以是数据所在的路径)

需要更改路径的话用setwd(“路径”)

2.安装需要的包并使用

install.package("包名")
library("包名")

randomForest:随机森林包

caret:常用于机器学习,数据处理,模型的结果展示。可用于数据的分割(训练集,测试集),查看混淆矩阵等等

pROC:衡量模型好坏

3.导入数据

如果用R自带的数据,以iris为例:有5个变量,3个种类

可以把Species作为因变量,用其它4个变量来预测种类

如果要调用本地的数据:

data <- read.csv("./dataset.csv",header=T)

表示导入此路径的下的一个csv文件

4.划分数据集、测试集

用createDataPartition()来划分,p=0.8表示80%的数据作为训练集,20%作为测试集,一般的训练集和测试集是比例是7:3或者8:2

将trainlist中的数作为训练集trainset,将不在trainlist中的数作为测试集testset

训练集有120行,5个变量

测试集有30行,5个变量

变量数目要保持一致

5.构建模型

R语言可以自动识别因变量的类型,如果是因子,就是做分类模型

为了复现模型,设置set.seed(数字随便写)

 as.factor():R语言可以自动识别因变量的类型,如果是因子,就是做分类模型

data:训练集

importace:变量重要性排序

na.action:处理缺失值

na.pass:略过缺失值

na.omit:删除缺失值

 

错误率:5.83%

混淆矩阵:看对角线,setosa的40个都预测正确,versicolor错了4个,virgincica错了3个 

也可以画图看一下效果

plot(rf.train,main="randomforest origin")

 

6.预测

得到预测结果:

rf.test <- predict(rf.train,newdata=testset,type="class")

查看各项指标:

> rf.cf <- caret::confusionMatrix(as.factor(rf.test),as.factor(testset$Species))
> rf.cf

 Reference
Prediction   setosa versicolor virginica
  setosa         10          0         0
  versicolor      0         10         1
  virginica       0          0         9

上方的混淆矩阵显示:第一,二个种类的预测全对,第三个错了1个,错的是把virginica预测成bersicolor

Accuracy : 0.9667          #准确率是0.9667
                 95% CI : (0.8278, 0.9992)  
    No Information Rate : 0.3333          
    P-Value [Acc > NIR] : 2.963e-13       
                                          
                  Kappa : 0.95          #越接近1说明模型效果越好

 Balanced Accuracy           1.0000            0.9750           0.9500

#在样本数量不均匀时要看这个

7.ROC和AUC

前面需要的是类别,所以type="class"

而ROC需要一个概率,所以type=“prob”

> rf.test2 <- predict(rf.train,newdata = testset,type = "prob")
> head(rf.test2)

可以看到1,0.992说明很好

画ROC曲线

由于有三个变量,所以用多分类muticlass.roc(testser$Species,rf.test2)

如果只有两个变量,二分类调用roc(testset$Species, rf.test2)

> roc.rf <- multiclass.roc(testset$Species,rf.test2)
> roc.rf 

AUC值是0.995,很理想

  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机森林实例(R语言实现) 的相关文章

随机推荐

  • stm32控制esp8266的实现STA/AP/STa+AP程序

    一 引脚定义 ATK MW8266D模块的各个引脚的详细描述 如下表所示 一 功能说明 ATK MW8266D模块支持三种工作模式 分别为 STA AP STA AP STA模式 在此模式下 ATK MW8266D模块可连接其他设备提供的无
  • 概率论与数理统计 (二)填空题

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  • qnx的触摸校准calib_校准工具使用教程

    锋影 email 174176320 qq com 环境配置 Hardware TI OMAPL138 Board OS QNX Neutrino 6 5 0 BSP bsp nto640 ti omap l138 evm trunk 20
  • 分析一波 useEffect

    useEffect 介绍 useEffect是reactHook中最重要和常用的hook之一 对比React class 的生命周期函数 可以把 useEffect Hook 看做 componentDidMount componentDi
  • 微信小程序学习之修改密码(正则表达式)

    一般在网页及APP里减到的修改密码页面会有三个编辑框 分别是 输入原密码 输入新密码 再次输入新密码 因此在微信小程序html的代码设计了如下的界面 三个编辑框及一个确定按钮 编辑框内的文字是通过html的placeholder属性实现 同
  • 自动化运维工具ansible:(二)playbook剧本的讲解与应用

    目录 一 playbook概述 1 1playbook介绍 1 2 Ansible playbook使用场景 1 3yaml基本语法规则 1 4yaml支持的数据结构 1 5示例 二 Inventory中变量 2 1inventor 变量参
  • Linux grep之正则表达式

    文章目录 6 grep之正则表达式 1 自学书上的 2 课件上的 3 总结 6 grep之正则表达式 1 自学书上的 在正则表达式中 空格和其他字符没有什么区别 正则表达式识别的字符包括 如果要使用某个字符作为文本字符就必须要使用转义字符
  • 前方高能!这是最新的一波Android大厂面试题汇总,不学则已,一学惊人

    前言 面试大厂 那就是考察你技术方向的一些专业技能 如果你面试Android岗位 那 Android 方向的专业技能就是考察很重要的一个方向 但是话说回来 即便这条是所有人都知道的共识 也不是所有人都能搞得定 有些人就是觉得自己基础差 非科
  • XML - XML学习/XML文件解析器(C++)实现

    XML XML学习 XML文件解析器 C 实现 XML概述 XML是一套定义语义标记的规则 这些标记将文档分成许多部件并对这些部件加以标识 它也是元标记语言 用于定义其他与特定领域有关的 语义的 结构化的标记语言的句法语言 XML与HTML
  • 05-java常用api类

    1 String类 String 类在 java lang 包下 所以使用的时候不需要导包 String 类代表字符串 Java 程序中的所有字符串文字 例如 abc 都被实现为此类的实例也就是说 Java 程序中所有的双引号字符串 都是
  • UE4快速导入Blender模型——Send to Unreal 插件使用

    下载地址 https github com epicgames blendertools blender安装Send to Unreal插件 设置自定义路径 打开UE4 插件 搜索 Python Editor Script Plugin 勾
  • lua小结

    1 JIT可以编译优化清单 http wiki luajit org NYI 2 lua数组的下标是从1开始的 在没有指定赋值的情况下 C语言的数组下标是从0开始的 3 逻辑表达式and or not用法 local a b and C o
  • 【Leetcode】MySQL:数据库简单题(577 员工奖金)

    577 员工奖金 1 题目描述 选出所有bonus lt 1000 的员工的name及其bonus 2 具体实现 Write your MySQL query statement below left join null select na
  • Devs--开源规则引擎介绍

    Devs Devs是一款轻量级的规则引擎 开源地址 https github com CrankZ devs 基础概念 此规则引擎的基础概念有字段 条件 规则等 其中字段组成条件 条件组成规则 并且支持多个条件通过与或组成一个规则 下面用常
  • 一短文读懂编译型与解释型编程语言

    在编程世界中 我们经常听到编译型语言和解释型语言这两个术语 它们是什么 有什么区别呢 让我们一起来探讨一下 编译型语言 编译型语言 如C Java等 是一种需要先被编译成机器代码 然后才能被执行的语言 你可以把它想象成一个笔译员 他会先把你
  • 用电器分析识别装置(2021 年全国大学生电子设计竞赛H题)

    用电器分析识别装置 2021 年全国大学生电子设计竞赛H题 摘要 1 系统方案 1 1 用电器分析识别装置的原理和结构 1 2 方案论证 1 2 1 系统供电论证和选择 1 2 2 采样方法论证和选择 1 2 3 采样芯片的型号选择 1 3
  • 爆款短视频剪辑方法技巧,这样剪辑出来的短视频更容易爆,收藏

    爆款短视频剪辑方法推荐 这样剪辑出来的短视频更容易爆 前面几篇内容 我们从定位到脚本结构 再到选题 再到互动点和内容各方面都为短视频做好了素材准备 后续我们也开始知道怎么写自己的文案了 也告诉大家什么是一个好的表现力 还有我们的景别 我们的
  • 内核对象

    内核对象 1 什么是内核对象 内核对象是内核分配的一段空间 如文件对象和进程对象等 可以用Windows提供的函数来创建相应的内核对象 创建成功后返回一个对象句柄 并且对象句柄值是进程相关的 程序不能直接操作内核对象 只能通过Windows
  • MFC学习笔记 — C++如何执行.exe文件

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 或进群 471144274 XX 版权声明 原创文章 欢迎评论和转载 转载时能告
  • 随机森林实例(R语言实现)

    1 可以先查询一下路径 可以是数据所在的路径 需要更改路径的话用setwd 路径 2 安装需要的包并使用 install package 包名 library 包名 randomForest 随机森林包 caret 常用于机器学习 数据处理