• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • R做机器学习简易教程

      R做机器学习简易教程

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2017年6月18日
      测试开头

      本文介绍如何利用R语言做一个完整的机器学习项目。一个小项目,端到端,遵循机器学习的实施的工作流,系统地完成项目。

      • 1 搭建R机器学习环境

        • 1.1 R软件下载和安装

        • 1.2 R机器学习包

      • 2 业务问题和数据理解

      • 3 数据准备

        • 3.1 数据处理

        • 3.2 数据探索

        • 3.3 数据分解

      • 4 数据建模

        • 4.1 交叉验证

        • 4.2 构建模型

      • 5 模型评价

      • 6 模型应用

      • 7 总结

        1 搭建R机器学习环境

        搭建R机器学习环境是一件简单而有趣的事情。

        1.1 R软件下载和安装

        R语言是跨平台,根据电脑操作系统和位数选择下载和安装合适的R软件。
        R软件下载地址:R官网。

        1.2 R机器学习包

        R做机器学习需要安装R包。R中有很多R包可以完成机器学习里面的某些任务,推荐阅读《RForML核心包》系列文章。
        本文使用caret包,安装和加载代码。

        1. if(!require('caret'))

        2. {

        3.  install.packages('caret')

        4.  require('caret')

        5. }

        caret包更详细的资料见The caret Package。

        2 业务问题和数据理解

        业务问题和数据理解,关键要解决好这些问题:

        • 为什么要做这个机器学习项目?

        • 这个机器学习项目是做什么?

        • 做这个机器学习项目需要什么数据?数据的准确性和完整性目前是什么状况?

        本文机器学习项目的目的是介绍R语言解决一个具有确定性类别的分类问题,分类是我们擅长的事情,如何把这种事情让机器来做,从而实现自动化和智能化,这富有挑战也饱含意义。
        通过这样的一个项目,给更多人如何基于R语言做机器学习项目提供一种整体思路和系统方案。
        本文选择的iris数据集,它是一个经典的公开的数据集。iris数据集详细介绍见Iris flower data set

        3 数据准备

        当知道了为什么要做这个机器学习项目和这个机器学习是要做什么后,当确定了做这个机器学习项目的数据集是什么以及在哪里后,这个时候,就到了数据准备阶段了。
        数据准备阶段是需要花费大量时间和精力去做的事情。数据准备主要包括对数据的处理、探索和分解。

        3.1 数据处理

        iris数据集是R语言自带的数据集,可以拿来直接使用。顺便说一下,R语言和R包都提供了丰富的数据集,刚开始学习,可以基于这些数据集来解决机器学习各种问题。
        数据加载
        代码

        1. data(iris)

        2. iris.data <- iris

        3.2 数据探索

        数据探索,即对数据做探索性分析,从数据源头开始认识和深入理解数据,发现数据里面所含的特性。

        数字化描述
        1 数据集结构

        R做机器学习简易教程
        使用str函数查看数据集结构,获取到如下信息
        iris数据集有150个样本和5个变量,前4个变量的类型是数值类型,第5个变量的类型是因子类型。
        因子类型的分布
        R做机器学习简易教程
        iris数据集类别变量的分布是均匀分布,各占1/3

        2 数据集预览

        获取数据Top或者Bottom记录,使用head函数或者tail函数。例如
        R做机器学习简易教程
        或者
        R做机器学习简易教程

        3 数据集摘要

        R做机器学习简易教程
        R语言使用summary函数获取数据集摘要,对于数值型变量返回5个数字化特征:最小值,第一分位数,中位数,均值,第三分位数和最大值,对于因子型变量,返回每个类别的频数。

        可视化描述
        1 单变量可视化

        单变量可视化,即针对数据集中的单个变量画图,通过图形观察和理解变量的分布情况。
        输入变量可视化

        1. input.val <- iris.data[,1:4]

        2. par(mfrow=c(1,4))

        3. for(i in 1:4) {

        4.  boxplot(input.val[,i], main=names(iris.data)[i])

        5. }

        R做机器学习简易教程
        输出变量可视化

        1. par(mfrow=c(1,1))

        2. output.val <- iris.data[,5]

        3. plot(output.val)

        R做机器学习简易教程

        2 多变量可视化

        多变量可视化,即对数据集多变量之间关系进行可视化,主要是双变量可视化。

        1. library(caret)

        2. library(ellipse)

        3. featurePlot(x=input.val, y=output.val, plot = 'ellipse')

        R做机器学习简易教程
        观察每一种类别下各种变量的box图

        1. library(caret)

        2. featurePlot(x=input.val, y=output.val, plot = 'box')

        R做机器学习简易教程

        3.3 数据分解

        为了数据建模中的模型选择,我们把数据集分解为训练数据集和验证数据集或者训练数据集-验证数据集-测试数据集。在这里我们选择了前者,按着8:2比例基于各个样本类别的情况进行了分解。
        参考代码

        1. # 获取原数据集的80%的行索引号

        2. validation.index <- createDataPartition(iris.data$Species, p=0.80, list=FALSE)

        3. # 选择20%的数据用来验证模型

        4. validation.data <- iris.data[-validation.index,]

        5. # 选择80%的数据用来训练和测试模型

        6. train.data <- iris.data[validation.index,]

        4 数据建模

        4.1 交叉验证

        为了选择最佳或者最优模型,采用一种典型的处理方法,交叉验证方法。常用10-折交叉验证。

        1. control <- trainControl(method="cv", number=10)

        2. metric <- "Accuracy"

        4.2 构建模型

        caret包实现了许多机器学习分类算法,在这里选择LDA、CART和RF算法。

        1. # a) 线性算法

        2. library(e1071)

        3. set.seed(7)

        4. lda.model <- train(Species~., data=train.data, method="lda", metric=metric, trControl=control)

        5. # b) 非线性算法

        6. library(rpart)

        7. set.seed(7)

        8. cart.model <- train(Species~., data=train.data, method="rpart", metric=metric, trControl=control)

        9. # c) advanced algorithms

        10. # Random Forest

        11. library(randomForest)

        12. set.seed(7)

        13. rf.model <- train(Species~., data=train.data, method="rf", metric=metric, trControl=control)

        5 模型评价

        分类模型的常用评价指标采用分类准确率。
        根据LDA/CART/RF模型的分类准确率选择最佳模型
        代码

        1. results.model <- resamples(list(lda=lda.model, cart=cart.model, rf=rf.model))

        2. summary(results.model)

        结果
        R做机器学习简易教程

        或者利用可视化,更加直观地做模型择优
        代码

        1. dotplot(results.model)

        结果
        R做机器学习简易教程
        针对iris数据集,LDA算法最佳。

        6 模型应用

        利用LDA算法对验证的数据集进行测试和分类,计算分类的精度和通过混淆矩阵评价分类的效果。
        代码:

        1. pred.result <- predict(lda.model, validation.data)

        2. confusionMatrix(pred.result, validation.data$Species)

        部分结果:
        R做机器学习简易教程
        关于confusionMatrix函数详细文档,参加help(confusionMatrix)。

        7 总结

        一个完整的机器学习项目,包括业务问题、数据理解、数据准备、数据建模、模型评价和模型应用,这些环节相辅相成,构成一个系统。因此,在做机器学习项目的时候,每个环节里面要做什么,为什么要做,都要清清楚楚,然后就是怎么有效地做。不断迭代,持续优化的互联网文化和精神,在做机器学习项目中,依然焕发生机。

        您在阅读中,有什么建议或者想法,请留言。
        想加入数据人圈子,请加微信luqin360。

        数据人网http://shujuren.org是数据人学习、交流和分享的平台。数据人网提供和传播优质的省时的稀缺的数据知识。

        诚邀各位数据人参与,共建共享数据知识库。

        点击【阅读原文】,进入【数据人网】

        测试结尾

        请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

        • 分享:
        作者头像
        weinfoadmin

        上一篇文章

        R语言机器学习与数据挖掘核心技术与应用
        2017年6月18日

        下一篇文章

        免费公开课|1小时教你用R 语言完成漂亮的数据可视化
        2017年7月7日

        你可能也喜欢

        3-1665801675
        R语言学习:重读《R数据科学(中文版)》书籍
        28 9月, 2022
        6-1652833487
        经典铁死亡,再出新思路
        16 5月, 2022
        1-1651501980
        R语言学习:阅读《R For Everyone 》(第二版)
        1 5月, 2022

        搜索

        分类

        • R语言
        • TCGA数据挖掘
        • 单细胞RNA-seq测序
        • 在线会议直播预告与回放
        • 数据分析那些事儿分类
        • 未分类
        • 生信星球
        • 老俊俊的生信笔记

        投稿培训

        免费

        alphafold2培训

        免费

        群晖配置培训

        免费

        最新博文

        Nature | 单细胞技术揭示衰老细胞与肌肉再生
        301月2023
        lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
        301月2023
        如何快速批量修改 Git 提交记录中的用户信息
        261月2023
        logo-eduma-the-best-lms-wordpress-theme

        (00) 123 456 789

        weinfoadmin@weinformatics.cn

        恒诺新知

        • 关于我们
        • 博客
        • 联系
        • 成为一名讲师

        链接

        • 课程
        • 事件
        • 展示
        • 问答

        支持

        • 文档
        • 论坛
        • 语言包
        • 发行状态

        推荐

        • iHub汉语代码托管
        • iLAB耗材管理
        • WooCommerce
        • 丁香园论坛

        weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

        • 关于我们
        • 博客
        • 联系
        • 成为一名讲师

        要成为一名讲师吗?

        加入数以千计的演讲者获得100%课时费!

        现在开始

        用你的站点账户登录

        忘记密码?

        还不是会员? 现在注册

        注册新帐户

        已经拥有注册账户? 现在登录

        close
        会员购买 你还没有登录,请先登录
        • ¥99 VIP-1个月
        • ¥199 VIP-半年
        • ¥299 VIP-1年
        在线支付 激活码

        立即支付
        支付宝
        微信支付
        请使用 支付宝 或 微信 扫码支付
        登录
        注册|忘记密码?