Machine Learning Mastery R 机器学习教程(二)
如何在 R 中开始机器学习(一个周末内获得结果)
最后更新于 2019 年 12 月 13 日
如何在 R 中开始机器学习?
r 是一个庞大而复杂的平台。它也是世界上最好的数据科学家最受欢迎的平台。
在这篇文章中,您将发现一步一步的过程,您可以使用该过程开始在 R 平台上使用机器学习进行预测建模。
这些步骤既实用又简单,你可以在一个周末后建立准确的预测模型。
这个过程确实假设你是一个开发人员,知道一点机器学习,并且实际上会做工作,但是这个过程确实交付了结果。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
如何在 R 中开始机器学习图片由sebastian ter Burg提供,保留部分权利。
以错误的方式学习
以下是我认为你不应该在 r 学习机器学习的方法
- 第一步:真正精通 R 编程和 R 语法。
- 第二步:了解你可以在 r 中使用的每一种可能算法的深层理论。
- 第三步:详细学习如何在 r 中使用各个机器学习算法。
- 第四步:只轻轻一碰如何评估车型。
我认为这是错误的方式。
- 它告诉你,你需要花所有的时间学习如何使用单独的机器学习算法。
- 它没有教你在 R 中建立预测性机器学习模型的过程,你实际上可以在实践中使用它来进行预测。
可悲的是,这是我在几乎所有关于这个主题的书籍和在线课程中看到的用 R 教授机器学习的方法。
你不想成为 R 中的坏蛋,甚至不想成为 R 中的机器学习算法的坏蛋。你想成为使用 R 构建精确预测模型的坏蛋。这就是背景。
你可以花时间非常详细地学习单个机器学习算法,只要它能帮助你更可靠地建立更精确的预测模型。
良好的机器学习背景
你可以直接进入休息区,去吧。
不过在我看来,我认为如果你有一些背景,你会从中获得更多。
r 是一个高级平台,作为初学者你可以从中获得很多。但是,如果你有一点机器学习和一点编程作为基础,R 将很快成为建立精确预测模型的超级大国。
一般建议
这里有一些建议,可以让你在 r 中最大限度地开始机器学习。我认为这些对一个对机器学习感兴趣的现代开发人员来说是合理的。
懂得编程的开发者。这很有帮助,因为学习 R 的语法并不是什么大不了的事情,有时候会有点奇怪。知道由谁来创建脚本或脚本小程序(迷你脚本)来完成这个或那个任务也很有帮助。r 毕竟是一种编程语言。
对预测建模机器学习感兴趣。机器学习是一个涵盖各种有趣算法的大领域。预测建模是一个子集,它只关注构建对新数据进行预测的模型。没有解释数据之间的关系,也没有从一般数据中学习。预测建模是 R 作为机器学习平台真正闪耀的地方。
熟悉机器学习基础知识。你把机器学习理解为一个归纳问题,在这个问题中,所有的算法实际上只是试图估计一个输入空间到一个输出空间的底层映射函数。通过这个镜头,所有预测性机器学习都是有意义的,搜索好的和最好的机器学习算法、算法参数和数据转换的策略也是如此。
具体建议
我在下一节布局的方法也对你的背景做了一些假设。
你不是机器学习的绝对初学者。你可以,这种方法可能对你有用,但是如果你有一些额外的建议背景,你会从中获得更多。
你想用自上而下的方法来学习机器学习。这是我教的方法,不是从理论和原理开始,如果有时间的话,最终接触实际的机器学习,而是从端到端的项目和研究细节的目标开始,因为你需要它们来提供更好的结果。
您熟悉预测建模机器学习项目中的步骤。具体来说:
- 定义问题
- 准备数据
- 评估计法
- 改善结果
- 呈现结果
您可以在此了解有关此过程和这些步骤的更多信息:
你至少熟悉一些机器学习算法。或者你可能知道如何快速提取它们,例如使用算法描述模板方法。我认为学习机器学习算法的方式和原因的细节是一项独立的任务,而不是学习如何在像 r .这样的机器学习平台上使用这些算法。在学习的决定因素方面,它们经常被合并在书籍和课程中。
您可以在这里了解更多关于如何使用模板方法学习任何机器学习算法的信息:
如何在 R 中学习机器学习
本节展示了一个过程,您可以使用该过程开始在 R 平台上构建机器学习预测模型。
它分为两部分:
- 将机器学习项目的任务映射到 R 平台上。
- 使用标准数据集完成预测建模项目。
1.将机器任务映射到 R
你需要知道如何在 R 平台上做机器学习的具体任务。一旦你知道如何使用平台完成一个离散的任务,并可靠地得到一个结果,你就可以在一个又一个项目中一次又一次地完成它。
这个过程很简单:
- 列出预测建模机器学习项目的所有离散任务。
- 创建可靠地完成任务的方法,您可以将其复制粘贴作为未来项目的起点。
- 添加和维护秘籍是你对平台的理解和机器学习的提高。
预测建模任务
以下是您可能希望映射到 R 平台并创建配方的预测建模任务的最小列表。这并不完整,但确实涵盖了平台的大致内容:
- R 语法概述
- 准备数据
- 正在加载数据
- 使用数据
- 数据汇总
- 数据可视化
- 数据清理
- 特征选择
- 数据转换
- 评估计法
- 重采样方法
- 评估指标
- 抽查算法
- 型号选择
- 改善结果
- 算法调整
- 集成方法
- 呈现结果
- 最终确定模型
- 做出新的预测
您会注意到第一个任务是 R 语法的概述。作为一名开发人员,在做任何事情之前,您需要了解该语言的基础知识。例如赋值、数据结构、流控制以及创建和调用函数。
独立配方库
我建议创建独立的秘籍。这意味着每个配方都是一个完整的程序,拥有完成任务和产生输出所需的一切。这意味着您可以将其直接复制到未来的预测建模项目中。
你可以把秘籍存储在一个目录或者 GitHub 上。
2.小型预测建模项目
用机器学习来解决常见的预测建模任务是不够的。
同样,这也是大多数书籍和课程停止的地方。他们让你把秘籍拼凑成端到端的项目。
你需要把秘籍拼凑成端到端的项目。这将教你如何使用平台实际交付结果。我建议只使用来自 UCI 机器学习存储库的理解良好的小型机器学习数据集。
这些数据集以 CSV 下载的形式免费提供,大部分可以通过加载第三方库直接在 R 中获得。这些数据集非常适合练习,因为:
- 它们很小,意味着它们适合内存,算法可以在合理的时间内对它们进行建模。
- 它们表现良好,这意味着您通常不需要做大量的功能工程来获得良好的结果。
- 有标准,这意味着许多人以前使用过它们,你可以得到好算法的想法来尝试,以及你应该期望的好结果。
我至少推荐三个项目:
- 你好世界项目(鸢尾花)。这是对项目步骤的快速浏览,无需对广泛用作机器学习的 hello world 的数据集进行太多调整或优化(更多关于鸢尾花数据集)。
- 二进制端到端分类。完成二分类问题的每一步(例如皮马印第安人糖尿病数据集 ( csv 文件))。
- 端到端回归。通过回归问题(例如波士顿住房数据集)完成流程的每一步。
添加和维护配方
带 R 的机器学习并不仅仅局限于通过一些小的标准数据集。你需要接受更多不同的挑战。
- 标准数据集:您可以在 UCI 机器学习存储库中的其他标准数据集上练习,克服不同问题类型的挑战。
- 竞赛数据集:你可以尝试通过一些更具挑战性的数据集进行工作,比如来自过去的 Kaggle 竞赛或来自过去的 KDDCup 挑战的数据集。
- 自己的项目:理想情况下,你需要开始通过自己的项目进行工作。
一直以来,你都在寻求帮助,修改你的脚本,学习如何从机器学习中获得更多
重要的是,你要把这些知识放回你的机器学习秘籍目录中。这将让您在新项目中快速利用这些知识,并极大地提高您开发预测模型的技能和速度。
您在此过程中的成果
你可以在一个周末内完成这个过程。到那个周末结束时,你会有秘籍和项目模板,你可以用它们开始用 r 中的机器学习来建模你自己的问题。
您将从一个对 R 上的机器学习感兴趣的开发人员转变为一个有资源和能力使用 R 端到端地处理新数据集并开发要呈现和部署的预测模型的开发人员。
具体来说,你会知道:
- 如何实现 r 中一个预测建模问题的子任务
- 如何在 r 中学习新的不同的子任务?
- 如何获得 r 的帮助?
- 如何端到端地处理中小型数据集?
- 如何交付一个可以对新的未知数据进行预测的模型?
从这里,您可以开始深入了解所使用的功能、技术和算法的细节,目的是学习如何更好地使用它们,以便在更短的时间内提供更准确、更可靠的预测模型。
摘要
在这篇文章中,你发现了一个循序渐进的过程,你可以用它来学习和开始在 r。
该流程的三个高级步骤是:
- 将预测建模过程的步骤映射到 R 平台,并提供您可以重用的配方。
- 通过小型标准机器学习数据集,将秘籍组合成项目。
- 处理更多不同的数据集,最好是你自己的,并添加到你的秘籍库中。
你也发现了这个过程背后的哲学,以及为什么这个过程对你来说是最好的过程。
下一步
你想用 R 开始机器学习吗?
- 立即下载并安装 R。
- 使用上面的过程大纲,把自己限制在一个周末,尽可能地走远。
- 回电。请留言。我很想听听你怎么样了。
你对这个过程有疑问吗?留言评论,我会尽力回答。
如何使用 Caret 包估计 R 中的模型准确率
最后更新于 2020 年 8 月 15 日
当您构建预测模型时,您需要一种方法来评估模型在看不见的数据上的能力。
这通常是通过使用未用于训练模型的数据(如测试集)或使用交叉验证来估计准确性。R 中的Caret 包提供了许多方法来估计机器学习算法的准确性。
在这篇文章中,你发现了 5 种基于未知数据评估模型表现的方法。您还可以使用每种方法的 Caret 包来访问 R 中的配方,您可以立即将其复制并粘贴到自己的项目中。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
从 caret 主页将 caret 包放入 R,
估计模型准确率
我们以前在测试线束的测试选项配置中考虑过模型准确率。你可以在帖子里读到更多:评估机器学习算法时如何选择正确的测试选项。
在这篇文章中,你可以发现 5 种不同的方法,你可以用来估计模型的准确性。
它们如下,并将依次描述:
- 数据分割
- 引导程序
- k 倍交叉验证
- 重复 k 倍交叉验证
- 省去交叉验证
一般来说,我会推荐重复的 k 倍交叉验证,但每种方法都有其特点和优势,尤其是当考虑到数据量或空间和时间复杂性时。考虑哪种方法最适合你的问题。
数据分割
数据分割包括将数据划分为用于准备模型的显式训练数据集和用于评估模型在不可见数据上的表现的不可见测试数据集。
当您有一个非常大的数据集,以便测试数据集可以提供有意义的表现估计时,或者当您使用缓慢的方法并且需要表现的快速近似时,它非常有用。
以下示例分割虹膜数据集,以便 80%用于训练朴素贝叶斯模型,20%用于评估模型表现。
# load the libraries
library(caret)
library(klaR)
# load the iris dataset
data(iris)
# define an 80%/20% train/test split of the dataset
split=0.80
trainIndex <- createDataPartition(iris$Species, p=split, list=FALSE)
data_train <- iris[ trainIndex,]
data_test <- iris[-trainIndex,]
# train a naive bayes model
model <- NaiveBayes(Species~., data=data_train)
# make predictions
x_test <- data_test[,1:4]
y_test <- data_test[,5]
predictions <- predict(model, x_test)
# summarize results
confusionMatrix(predictions$class, y_test)
引导程序
Bootstrap 重采样包括从数据集中随机抽取样本(重新选择)以评估模型。总的来说,结果提供了模型表现变化的指示。通常,会执行大量的重采样迭代(数千次或趋于数千次)。
以下示例使用带有 10 个重采样的引导程序来准备朴素贝叶斯模型。
# load the library
library(caret)
# load the iris dataset
data(iris)
# define training control
train_control <- trainControl(method="boot", number=100)
# train the model
model <- train(Species~., data=iris, trControl=train_control, method="nb")
# summarize results
print(model)
k 倍交叉验证
K 折交叉验证方法包括将数据集分割成 k 个子集。对于每个子集,在模型在所有其他子集上训练的同时,保持不变。此过程一直持续到确定数据集中每个实例的准确率,并提供总体准确率估计值。
这是一种稳健的方法,用于估计准确率和 k 的大小,并调整估计中的偏差量,常用值设置为 3、5、7 和 10。
以下示例使用 10 倍交叉验证来估计虹膜数据集上的朴素贝叶斯。
# load the library
library(caret)
# load the iris dataset
data(iris)
# define training control
train_control <- trainControl(method="cv", number=10)
# fix the parameters of the algorithm
grid <- expand.grid(.fL=c(0), .usekernel=c(FALSE))
# train the model
model <- train(Species~., data=iris, trControl=train_control, method="nb", tuneGrid=grid)
# summarize results
print(model)
重复 k 倍交叉验证
将数据拆分为 k 折叠的过程可以重复多次,这称为重复 k 折叠交叉验证。最终的模型准确率作为重复次数的平均值。
以下示例使用具有 3 次重复的 10 倍交叉验证来估计虹膜数据集上的朴素贝叶斯。
# load the library
library(caret)
# load the iris dataset
data(iris)
# define training control
train_control <- trainControl(method="repeatedcv", number=10, repeats=3)
# train the model
model <- train(Species~., data=iris, trControl=train_control, method="nb")
# summarize results
print(model)
省去交叉验证
在遗漏交叉验证 (LOOCV)中,遗漏了一个数据实例,并在训练集中的所有其他数据实例上构建了一个模型。对所有数据实例重复这一过程。
以下示例演示了 LOOCV 如何在虹膜数据集上估计朴素贝叶斯。
# load the library
library(caret)
# load the iris dataset
data(iris)
# define training control
train_control <- trainControl(method="LOOCV")
# train the model
model <- train(Species~., data=iris, trControl=train_control, method="nb")
# summarize results
print(model)
摘要
在这篇文章中,你发现了 5 种不同的方法,可以用来评估你的模型在看不见的数据上的准确性。
这些方法是:数据分割、自举、k 倍交叉验证、重复 k 倍交叉验证和遗漏交叉验证。
您可以在caret 包主页和caret 包 CRAN 页面了解更多关于 R caret 包的信息。如果你想掌握 caret 包,我会推荐包的作者写的书,书名是:应用预测建模,特别是关于过拟合模型的第四章。
如何在 R 中入门机器学习算法
最后更新于 2019 年 8 月 22 日
r 是最受欢迎的应用机器学习平台。当你想认真对待应用机器学习的时候,你会发现你的方法变成了。
它非常强大,因为提供了这么多机器学习算法。一个问题是算法都是由第三方提供的,这使得它们的使用非常不一致。这让你慢了很多,因为你必须一次又一次地学习如何对数据建模,以及如何用每个包中的每个算法进行预测。
在这篇文章中,你将发现如何用 R 语言中的机器学习算法克服这个困难,用遵循一致结构的预先准备的秘籍。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
算法多,一致性差
R 生态系统是巨大的。开源第三方包提供了这种能力,让学者和专业人士能够将最强大的算法交到美国从业者手中。
我从 R 开始时遇到的一个问题是,每个算法的用法因包而异。这种不一致也延伸到了文档中,一些文档提供了有效的分类示例,但忽略了回归,而另一些文档则根本没有提供示例。
所有这一切意味着,如果你想尝试不同包中的一些不同算法,你必须花时间弄清楚如何依次用每种方法进行拟合和预测。这需要很多时间,尤其是有不稳定的例子和小插曲。
我将这些困难总结如下:
- 不一致:算法实现在模型适合数据的方式和模型用于生成预测的方式上有所不同。这意味着你必须研究每一个包和每一个算法实现,仅仅是为了把一个有效的例子放在一起,更不用说让它适应你的问题了。
- 去中心化:算法跨不同的包实现,可能很难定位哪个包提供了你需要的算法的实现,更不用说哪个包提供了最流行的实现。此外,一个包的文档可能分布在多个帮助文件、网站和简介中。这意味着你必须做大量的搜索来定位一个算法,更不用说编译一个算法列表供你选择。
- 不完整:算法文档几乎总是部分完整的。可能会也可能不会提供示例用法,如果提供了,可能会也可能不会在规范问题上演示。这意味着您没有明显的方法来快速理解如何使用实现。
- 复杂度:算法在实现和描述的复杂度上各不相同。当你从一个包裹跳到另一个包裹时,这会让你付出代价。你想专注于如何从算法及其参数中获得最大收益,而不是为了得到一个你好的世界而耗费精力去解析大量的 pdf。
构建算法秘籍
如果你有一本算法秘籍,你可以查找并在 R 中找到机器学习算法的例子,你可以复制粘贴并适应你的特定问题,你可以做得更多。
为此,秘籍方法的工作,它将必须确认一些关键原则:
- 独立:每个代码示例都必须是独立的、完整的并且可以执行。
- 只是代码:每一个配方都必须专注于对机器学习理论阐述最少的代码(这方面有很棒的书,不要把这些顾虑混在一起)。
- 简单性:每个菜谱都必须以最常见的用例来呈现,这大概就是你在查找的时候想要做的事情。您想查阅官方文档只是为了查找参数,以便从算法中获得最大收益。
- 便携:所有秘籍必须提供在一个单一的参考,可以搜索和打印,浏览和查找(一本秘籍书)。
- 一致:所有代码示例都是一致呈现的,遵循相同的代码结构和风格约定(加载数据、拟合模型、进行预测)。
一本算法秘籍会让你有能力运用 R 平台进行机器学习,解决复杂的问题。
- 你可以直接应用算法和特性。
- 你可以找到你需要的代码。
- 你一眼就能明白发生了什么。
- 你可以拥有秘籍,用你想要的方式使用和组织它们。
- 你可以充分利用算法和特性。
R 中的算法配方
我已经列出了这些秘籍的例子。
我在 R 中提供了示例机器学习方法,按算法类型或相似性分组,如下所示:
- 线性回归:普通最小二乘回归、逐步回归、主成分回归、偏最小二乘回归。
- 惩罚线性回归:岭回归、最小绝对收缩和选择算子(LASSO)和弹性
- 非线性回归:多元自适应回归 spins(MARS)、支持向量机(SVM)、k 近邻(kNN)和神经网络。
- 非线性决策树回归:分类回归树(CART)、条件决策树、模态树、规则系统、装袋 CART、随机森林、梯度提升机(GBM)和立体派。
- 线性分类 : Logistic 回归、线性判别分析(LDA)和偏最小二乘判别分析。
- 非线性分类:混合判别分析(MDA)、二次判别分析(QDA)、正则化判别分析(RDA)、神经网络、柔性判别分析(FDA)、支持向量机(SVM)、k 近邻(kNN)和朴素贝叶斯。
- 非线性决策树分类:分类回归树(CART)、C4.5、PART、装袋 CART、随机森林、梯度提升机(GBM)、增强 C5.0
我认为这些秘籍真的符合这个任务的要求。
摘要
在这篇文章中,你发现了机器学习在 R 中的流行和力量,但这种力量的代价是驾驭它所需的时间。
您发现,解决 R 中这一限制的一种方法是设计一个完整的独立机器学习算法的秘籍,您可以根据需要查找并应用于您的特定问题。
最后,您在 R 中看到了各种算法类型的机器学习算法配方示例。
如果你觉得这种方法有用,我很想听听。
如何在 R 中加载机器学习数据
最后更新于 2019 年 8 月 22 日
在处理机器学习问题时,您需要能够将数据加载到 R 中。
在这篇短文中,你将发现如何将数据文件加载到 R 中,并开始你的机器学习项目。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
保罗·米勒将你的机器学习数据载入 R 图片,版权所有。
访问您的数据
机器学习中处理数据最常见的方式是在数据文件中。
数据最初可能以各种格式和不同位置存储。例如:
- 关系数据库表
- XML 文件
- JSON 文件
- 固定宽度格式化文件
- 电子表格文件(如微软办公软件)
您需要将数据合并到一个包含行和列的文件中,然后才能在机器学习项目中使用它。表示机器学习数据集的标准格式是 CSV 文件。这是因为机器学习算法在很大程度上处理表格格式的数据(例如矩阵或输入和输出向量)。
R 中的数据集通常表示为矩阵或数据帧结构。
R 中机器学习项目的第一步是将您的数据作为矩阵或数据框加载到 R 中。
载入 CSV 数据文件
本节提供了一些方法,您可以将其复制到自己的机器学习项目中,并将其用于将数据加载到 r。
从 CSV 文件加载数据
此示例显示了从 CSV 文件加载 iris 数据集。该方法将把当前目录中没有标题(例如列名)的 CSV 文件作为数据帧加载到 R 中。
# define the filename
filename <- "iris.csv"
# load the CSV file from the local directory
dataset <- read.csv(filename, header=FALSE)
# preview the first 5 rows
head(dataset)
运行此配方,您将看到:
V1 V2 V3 V4 V5
1 5.1 3.5 1.4 0.2 Iris-setosa
2 4.9 3.0 1.4 0.2 Iris-setosa
3 4.7 3.2 1.3 0.2 Iris-setosa
4 4.6 3.1 1.5 0.2 Iris-setosa
5 5.0 3.6 1.4 0.2 Iris-setosa
6 5.4 3.9 1.7 0.4 Iris-setosa
如果您想用您的 R 脚本在本地存储数据,例如在修订控制下管理的项目中,这个方法很有用。
如果数据不在本地目录中,您可以:
- 指定本地环境中数据集的完整路径。
- 使用 setwd() 功能将当前工作目录设置为数据集所在的位置
从 CSV 网址加载数据
此示例显示了从位于 UCI 机器学习存储库上的 CSV 文件加载 iris 数据。这个方法将把一个没有标题的 CSV 文件从一个网址加载到 R 中作为数据帧。
# load the library
library(RCurl)
# specify the URL for the Iris data CSV
urlfile <-'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
# download the file
downloaded <- getURL(urlfile, ssl.verifypeer=FALSE)
# treat the text data as a steam so we can read from it
connection <- textConnection(downloaded)
# parse the downloaded data as CSV
dataset <- read.csv(connection, header=FALSE)
# preview the first 5 rows
head(dataset)
运行此配方,您将看到:
V1 V2 V3 V4 V5
1 5.1 3.5 1.4 0.2 Iris-setosa
2 4.9 3.0 1.4 0.2 Iris-setosa
3 4.7 3.2 1.3 0.2 Iris-setosa
4 4.6 3.1 1.5 0.2 Iris-setosa
5 5.0 3.6 1.4 0.2 Iris-setosa
6 5.4 3.9 1.7 0.4 Iris-setosa
如果您的数据集存储在服务器上,例如您的 GitHub 帐户上,则此方法非常有用。如果您想使用 UCI 机器学习存储库中的数据集,但不想在本地存储它们,这也很有用。
其他格式的数据
您可能以 CSV 以外的格式存储数据。
我建议您在处理 r 中的数据之前,使用标准工具和库将其转换为 CSV 格式。一旦转换,您就可以使用上面的秘籍来处理它。
摘要
在这篇短文中,您发现了如何将数据加载到 r 中。
您学习了两种加载数据的方法:
- 从本地 CSV 文件加载数据。
- 从服务器上的 CSV 文件加载数据。
下一步
你试过这些秘籍吗?
- 开始你的互动环境。
- 键入或复制粘贴上面的秘籍,并尝试它们。
- 使用 R 中的内置帮助来了解有关所用函数的更多信息。
你有问题吗?在评论里问,我会尽力回答。
如何将 R 用于机器学习
最后更新于 2019 年 8 月 22 日
r 有一大堆包,哪些最适合你的机器学习项目?
在这篇文章中,你将发现机器学习旅程中为每个子任务推荐的确切的 R 函数和包。
这很有用。为这一页添加书签。我相信你会一次又一次地回来查看。
如果你是 R 用户,知道更好的方法,在评论里分享,我会更新列表。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
尼尔·卡明斯摄,版权所有。
你应该使用什么样的 R 包?
R 有超过 6000 个第三方软件包。大量可用的软件包是 R 平台的优势之一。这也是挫折。
应该使用哪些软件包?
作为机器学习项目的一部分,您需要执行一些特定的任务。加载数据、评估计法和提高准确性等任务。您可以为每个任务使用多种技术,多个包可以提供这些技术。
考虑到有这么多不同的方法来完成一个给定的子任务,你需要发现那些最能满足你需求的函数和包。
将同类最佳的包映射到项目任务
解决这个问题的方法是创建一个机器学习项目期间您可能要处理的所有子任务的映射,并找到您可以使用的最佳包和函数。
首先列出机器学习项目中的所有子任务。你可以仔细看看应用机器学习的流程和机器学习项目检查表。
考虑到 R 是一种统计语言,它提供了许多可用于数据分析的工具,以及可用于训练和生成预测的预测模型。
使用您最喜欢的搜索引擎,您可以找到包中的所有包和功能,您可以使用它们来完成每个任务。这可能是详尽无遗的,你可以最终有许多不同的候选解决方案。
你需要将每个选项列表缩减为完成任务的一种首选方式。你可以对每一个进行实验,看看什么对你有用。你也可以仔细检查你的搜索结果,梳理出从业者最常用的功能。
接下来是从 R 包和函数到机器学习项目任务的映射,您可以使用它来开始使用 R 进行机器学习。
如何将 R 用于机器学习项目
本节列出了通用机器学习项目的许多主要子任务。每个任务都列出了您可以在 R 中用来完成任务的特定函数和父包。
所选函数的一些属性如下:
- 最小值:列表是一个项目中机器学习任务的最低值,也是你可以使用的函数和包名的最低值。实际使用列出的每个功能需要更多的作业。
- 简单:选择函数是为了简单地为任务提供直接结果。一个函数优于多个函数调用。
- 偏好:功能是根据我的偏好和最佳估计选择的。其他从业者可能有不同的选择(分享在评论里!).
任务分为三大组:
- 用于为建模准备数据的数据准备任务。
- 评估赛车的算法任务和评估预测建模算法。
- 改进结果任务,从表现良好的算法中获得更多。
1.数据准备任务
数据加载
从文件中加载数据集。
- csv:从 utils 包中读取. CSV 函数
数据清理
清理数据集以确保数据合理且一致,为分析和建模做好准备。
数据汇总
使用描述性统计数据汇总数据集。
- 汇总分配:基本包的汇总功能。
- 总结相关性:统计包中的 cor 函数
数据可视化
可视化总结数据集。
- 散点图矩阵:图形包中的成对函数。
- 直方图:来自图形包的 hist 函数。
- 密度图:来自点阵包的密度图功能。
- 方块和触须绘图:图形包中的方块绘图功能
荣誉提名:
特征选择
选择数据集中与构建预测模型最相关的要素。
Caret 包提供了一套功能选择方法,请参见评估计法任务。
荣誉提名:
- FSelector 包。
数据转换
创建数据集的转换,以便向学习算法最好地展示问题的结构。
- 规范化:自定义编写的函数
- 标准化:从基础包扩展功能。
Caret 包作为测试工具的一部分提供数据转换,请参见下一节。
2.评估计法任务
caret 包中的函数应该用于评估数据集上的模型。
caret 包支持各种表现度量和测试选项,如数据拆分和交叉验证。预处理也可以配置为测试线束的一部分。
模型评估
请注意,许多现代预测模型(如高级决策树的风格)提供了某种形式的特征选择、参数调整和内置集成。
预测模型
Caret 包提供了对所有最佳预测建模算法的访问。
3.改进结果任务
从表现良好的模型中获取最大利益的技术,以服务于做出准确的预测。
算法调整
caret 包提供算法调整,作为测试工具的一部分,并包括随机、网格和自适应搜索等技术。
模型集合
许多现代预测建模算法提供内置的集成。caret 包中提供了一套装袋和增强功能。
- 混合:来自carestenmble包的 carestenmble。
- 堆叠:从carestensemble包装中取出。
- 装袋:从到包装的装袋功能。
摘要
在这篇文章中,你发现使用 R 进行机器学习的最好方法是将特定的 R 函数和包映射到机器学习项目的任务上。
您发现了可用于机器学习项目最常见任务的特定包和函数,包括指向进一步文档的链接。
你的下一步
开始使用 R 进行机器学习。在你当前或下一个机器学习项目中使用以上建议。
我错过了一个重要的包裹吗?我错过了机器学习项目中的一个关键任务吗?留下评论,让我知道我错过了什么。
你有问题吗?给我发邮件或留言。
R 中的线性分类
最后更新于 2019 年 8 月 22 日
在这篇文章中,你将发现 3 种线性分类算法的配方
本文所有秘籍均使用数据集包中提供的鸢尾花数据集。该数据集描述了鸢尾花的测量结果,并要求对三种花卉中的一种进行分类。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
罗伯特·库塞-贝克拍摄的红色 vs 蓝色 照片,保留部分权利
逻辑回归
逻辑回归是一种分类方法,它对属于两类之一的观测值的概率进行建模。因此,通常用二分类问题(2 类)来证明逻辑回归。逻辑回归也可以用于具有两个以上类别(多项式)的问题,如本例所示。
该方法演示了虹膜数据集上的多项式逻辑回归方法。
# load the package
library(VGAM)
# load data
data(iris)
# fit model
fit <- vglm(Species~., family=multinomial, data=iris)
# summarize the fit
summary(fit)
# make predictions
probabilities <- predict(fit, iris[,1:4], type="response")
predictions <- apply(probabilities, 1, which.max)
predictions[which(predictions=="1")] <- levels(iris$Species)[1]
predictions[which(predictions=="2")] <- levels(iris$Species)[2]
predictions[which(predictions=="3")] <- levels(iris$Species)[3]
# summarize accuracy
table(predictions, iris$Species)
了解更多关于 VGAM 套餐中 vglm 功能的信息。
线性判别分析
LDA 是一种分类方法,它可以找到数据属性的线性组合,从而最好地将数据分成类。
这个秘籍演示了虹膜数据集上的线性判别分析方法。
# load the package
library(MASS)
data(iris)
# fit model
fit <- lda(Species~., data=iris)
# summarize the fit
summary(fit)
# make predictions
predictions <- predict(fit, iris[,1:4])$class
# summarize accuracy
table(predictions, iris$Species)
了解更多关于质量包的 lda 功能。
偏最小二乘判别分析
偏最小二乘判别分析是线性判别分析在输入数据降维投影(偏最小二乘)上的应用。
这个配方演示了虹膜数据集上的 PLSDA 方法。
# load the package
library(caret)
data(iris)
x <- iris[,1:4]
y <- iris[,5]
# fit model
fit <- plsda(x, y, probMethod="Bayes")
# summarize the fit
summary(fit)
# make predictions
predictions <- predict(fit, iris[,1:4])
# summarize accuracy
table(predictions, iris$Species)
了解更多关于caret 包中 plsda 功能的信息。
摘要
在这篇文章中,你发现了 3 个线性分类的方法,你可以复制并粘贴到自己的问题中。
R 中的线性回归
最后更新于 2020 年 8 月 15 日
在这篇文章中,你将发现 R 平台线性回归的 4 个方法。
你可以复制粘贴这篇文章中的秘籍,在自己的问题上做一个跳跃性的开始,或者用 r 中的线性回归来学习和练习。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
普通最小二乘回归 版权所有
本文中的每个示例都使用了 r 附带的数据集包中提供的 longley 数据集。longley 数据集描述了从 1947 年到 1962 年观察到的 7 个经济变量,用于预测每年的就业人数。
普通最小二乘回归
普通最小二乘(OLS)回归是一种线性模型,它寻求为直线/超平面找到一组系数,使平方误差之和最小。
# load data
data(longley)
# fit model
fit <- lm(Employed~., longley)
# summarize the fit
summary(fit)
# make predictions
predictions <- predict(fit, longley)
# summarize accuracy
mse <- mean((longley$Employed - predictions)²)
print(mse)
了解更多关于 lm 功能和统计包的信息。
逐步线性回归
逐步线性回归是一种利用线性回归来发现数据集中哪个属性子集导致最佳表现模型的方法。这是逐步的,因为方法的每次迭代都会对属性集进行更改,并创建一个模型来评估属性集的表现。
# load data
data(longley)
# fit model
base <- lm(Employed~., longley)
# summarize the fit
summary(base)
# perform step-wise feature selection
fit <- step(base)
# summarize the selected model
summary(fit)
# make predictions
predictions <- predict(fit, longley)
# summarize accuracy
mse <- mean((longley$Employed - predictions)²)
print(mse)
了解更多关于步骤功能和统计包的信息。
主成分回归
主成分回归(PCR)使用主成分分析(PCA)的输出来估计模型的系数,从而创建线性回归模型。当数据具有高度相关的预测因子时,聚合酶链反应是有用的。
# load the package
library(pls)
# load data
data(longley)
# fit model
fit <- pcr(Employed~., data=longley, validation="CV")
# summarize the fit
summary(fit)
# make predictions
predictions <- predict(fit, longley, ncomp=6)
# summarize accuracy
mse <- mean((longley$Employed - predictions)²)
print(mse)
了解更多关于 pcr 功能和 pls 包的信息。
偏最小二乘回归
偏最小二乘回归在问题空间的变换投影中创建了数据的线性模型。像聚合酶链反应一样,偏最小二乘法适用于预测因子高度相关的数据。
# load the package
library(pls)
# load data
data(longley)
# fit model
fit <- plsr(Employed~., data=longley, validation="CV")
# summarize the fit
summary(fit)
# make predictions
predictions <- predict(fit, longley, ncomp=6)
# summarize accuracy
mse <- mean((longley$Employed - predictions)²)
print(mse)
了解更多关于 plsr 功能和 pls 包的信息。
摘要
在这篇文章中,你发现了在 R 中创建线性回归模型并使用这些模型进行预测的 4 个方法。
库恩和约翰逊的应用预测建模的第六章为初学者提供了一个关于 R 线性回归的极好的介绍。实用回归和方差分析使用 R (PDF)由遥远提供了一个更深入的治疗。
R 中的机器学习数据集(你现在可以使用的 10 个数据集)
最后更新于 2020 年 8 月 15 日
你需要标准数据集来练习机器学习。
在这篇短文中,你将发现如何在 r 中加载标准分类和回归数据集。
这篇文章将向你展示 3 个可以用来加载标准数据集的 R 库,以及 10 个可以在 R 中用于机器学习的特定数据集。
在 R 中加载标准数据集是非常宝贵的,这样您就可以使用机器学习技术进行测试、实践和实验,并通过该平台提高您的技能。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
在理解良好的小数据集上练习
有数百个标准测试数据集,你可以用来练习和更好地进行机器学习。
其中大部分是免费托管在 UCI 机器学习资源库。这些数据集很有用,因为它们被很好地理解,表现良好,而且很小。
最后一点在练习机器学习时至关重要,因为:
- 你可以快速下载。
- 你可以很容易地记忆它们。
- 你可以在上面快速运行算法。
在帖子中了解更多关于使用 UCI 机器学习存储库中的数据集练习机器学习的信息:
访问标准数据集
您可以将标准数据集作为 CSV 文件加载到 R 中。
有一种更方便的方法来加载标准数据集。它们已经打包,可以从第三方 R 库获得,您可以从综合 R 档案网络 (CRAN)下载。
您应该使用哪些库,哪些数据集是好的开始。
如何加载标准数据集
在本节中,您将发现可以用来访问标准机器学习数据集的库。
您还将发现特定的分类和回归,您可以加载并使用它们在 r 中练习机器学习。
库:数据集
鸢尾花数据集 图片作者里克·利瑟姆,版权所有。
数据集库带有基本的 R,这意味着您不需要显式加载该库。它包括大量您可以使用的数据集。
您可以通过键入以下命令从此库中加载数据集:
data(DataSetName)
例如,要加载非常常用的虹膜数据集:
data(iris)
要查看此库中可用数据集的列表,您可以键入:
# list all datasets in the package
library(help = "datasets")
下面是这个包中您可以使用的一些重点数据集。
鸢尾花数据集
# iris flowers datasets
data(iris)
dim(iris)
levels(iris$Species)
head(iris)
您将看到:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
朗利经济回归数据
- 描述:根据经济变量预测就业人数
- 类型:回归
- 尺寸:16 个实例,7 个属性
- 输入:数字
- 输出:数字
# Longley's Economic Regression Data
data(longley)
dim(longley)
head(longley)
您将看到:
GNP.deflator GNP Unemployed Armed.Forces Population Year Employed
1947 83.0 234.289 235.6 159.0 107.608 1947 60.323
1948 88.5 259.426 232.5 145.6 108.632 1948 61.122
1949 88.2 258.054 368.2 161.6 109.773 1949 60.171
1950 89.5 284.599 335.1 165.0 110.929 1950 61.187
1951 96.2 328.975 209.9 309.9 112.075 1951 63.221
1952 98.1 346.999 193.2 359.4 113.270 1952 63.639
图书馆:mlbench
大豆数据集 图片由联合大豆委员会提供,保留部分权利。
直接从图书馆手册中获得:
人工和真实世界机器学习基准问题的集合,包括,例如,来自 UCI 知识库的几个数据集。
您可以在 mlbench CRAN 页面上了解更多关于 mlbench 库的信息。
如果未安装,您可以按如下方式安装此库:
install.packages("mlbench")
您可以按如下方式加载库:
# load the library
library(mlbench)
要查看此库中可用数据集的列表,您可以键入:
# list the contents of the library
library(help = "mlbench")
您可以使用该库中的一些亮点数据集:
波士顿住房数据
- 描述:从房屋细节预测波士顿的房价
- 类型:回归
- 尺寸:506 个实例,14 个属性
- 输入:数字
- 输出:数字
- UCI 机器学习知识库:描述
# Boston Housing Data
data(BostonHousing)
dim(BostonHousing)
head(BostonHousing)
您将看到:
crim zn indus chas nox rm age dis rad tax ptratio b lstat medv
1 0.00632 18 2.31 0 0.538 6.575 65.2 4.0900 1 296 15.3 396.90 4.98 24.0
2 0.02731 0 7.07 0 0.469 6.421 78.9 4.9671 2 242 17.8 396.90 9.14 21.6
3 0.02729 0 7.07 0 0.469 7.185 61.1 4.9671 2 242 17.8 392.83 4.03 34.7
4 0.03237 0 2.18 0 0.458 6.998 45.8 6.0622 3 222 18.7 394.63 2.94 33.4
5 0.06905 0 2.18 0 0.458 7.147 54.2 6.0622 3 222 18.7 396.90 5.33 36.2
6 0.02985 0 2.18 0 0.458 6.430 58.7 6.0622 3 222 18.7 394.12 5.21 28.7
威斯康星乳腺癌数据库
# Wisconsin Breast Cancer Database
data(BreastCancer)
dim(BreastCancer)
levels(BreastCancer$Class)
head(BreastCancer)
您将看到:
Id Cl.thickness Cell.size Cell.shape Marg.adhesion Epith.c.size Bare.nuclei Bl.cromatin Normal.nucleoli Mitoses Class
1 1000025 5 1 1 1 2 1 3 1 1 benign
2 1002945 5 4 4 5 7 10 3 2 1 benign
3 1015425 3 1 1 1 2 2 3 1 1 benign
4 1016277 6 8 8 1 3 4 3 7 1 benign
5 1017023 4 1 1 3 2 1 3 1 1 benign
6 1017122 8 10 10 8 7 10 9 7 1 malignant
玻璃鉴定数据库
# Glass Identification Database
data(Glass)
dim(Glass)
levels(Glass$Type)
head(Glass)
您将看到:
RI Na Mg Al Si K Ca Ba Fe Type
1 1.52101 13.64 4.49 1.10 71.78 0.06 8.75 0 0.00 1
2 1.51761 13.89 3.60 1.36 72.73 0.48 7.83 0 0.00 1
3 1.51618 13.53 3.55 1.54 72.99 0.39 7.78 0 0.00 1
4 1.51766 13.21 3.69 1.29 72.61 0.57 8.22 0 0.00 1
5 1.51742 13.27 3.62 1.24 73.08 0.55 8.07 0 0.00 1
6 1.51596 12.79 3.61 1.62 72.97 0.64 8.07 0 0.26 1
约翰·霍普金斯大学电离层数据库
# Johns Hopkins University Ionosphere database
data(Ionosphere)
dim(Ionosphere)
levels(Ionosphere$Class)
head(Ionosphere)
您将看到:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19
1 1 0 0.99539 -0.05889 0.85243 0.02306 0.83398 -0.37708 1.00000 0.03760 0.85243 -0.17755 0.59755 -0.44945 0.60536 -0.38223 0.84356 -0.38542 0.58212
2 1 0 1.00000 -0.18829 0.93035 -0.36156 -0.10868 -0.93597 1.00000 -0.04549 0.50874 -0.67743 0.34432 -0.69707 -0.51685 -0.97515 0.05499 -0.62237 0.33109
3 1 0 1.00000 -0.03365 1.00000 0.00485 1.00000 -0.12062 0.88965 0.01198 0.73082 0.05346 0.85443 0.00827 0.54591 0.00299 0.83775 -0.13644 0.75535
4 1 0 1.00000 -0.45161 1.00000 1.00000 0.71216 -1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -1.00000 0.14516 0.54094 -0.39330 -1.00000
5 1 0 1.00000 -0.02401 0.94140 0.06531 0.92106 -0.23255 0.77152 -0.16399 0.52798 -0.20275 0.56409 -0.00712 0.34395 -0.27457 0.52940 -0.21780 0.45107
6 1 0 0.02337 -0.00592 -0.09924 -0.11949 -0.00763 -0.11824 0.14706 0.06637 0.03786 -0.06302 0.00000 0.00000 -0.04572 -0.15540 -0.00343 -0.10196 -0.11575
V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 Class
1 -0.32192 0.56971 -0.29674 0.36946 -0.47357 0.56811 -0.51171 0.41078 -0.46168 0.21266 -0.34090 0.42267 -0.54487 0.18641 -0.45300 good
2 -1.00000 -0.13151 -0.45300 -0.18056 -0.35734 -0.20332 -0.26569 -0.20468 -0.18401 -0.19040 -0.11593 -0.16626 -0.06288 -0.13738 -0.02447 bad
3 -0.08540 0.70887 -0.27502 0.43385 -0.12062 0.57528 -0.40220 0.58984 -0.22145 0.43100 -0.17365 0.60436 -0.24180 0.56045 -0.38238 good
4 -0.54467 -0.69975 1.00000 0.00000 0.00000 1.00000 0.90695 0.51613 1.00000 1.00000 -0.20099 0.25682 1.00000 -0.32382 1.00000 bad
5 -0.17813 0.05982 -0.35575 0.02309 -0.52879 0.03286 -0.65158 0.13290 -0.53206 0.02431 -0.62197 -0.05707 -0.59573 -0.04608 -0.65697 good
6 -0.05414 0.01838 0.03669 0.01519 0.00888 0.03513 -0.01535 -0.03240 0.09223 -0.07859 0.00732 0.00000 0.00000 -0.00039 0.12011 bad
皮马印第安人糖尿病数据库
# Pima Indians Diabetes Database
data(PimaIndiansDiabetes)
dim(PimaIndiansDiabetes)
levels(PimaIndiansDiabetes$diabetes)
head(PimaIndiansDiabetes)
您将看到:
pregnant glucose pressure triceps insulin mass pedigree age diabetes
1 6 148 72 35 0 33.6 0.627 50 pos
2 1 85 66 29 0 26.6 0.351 31 neg
3 8 183 64 0 0 23.3 0.672 32 pos
4 1 89 66 23 94 28.1 0.167 21 neg
5 0 137 40 35 168 43.1 2.288 33 pos
6 5 116 74 0 0 25.6 0.201 30 neg
声纳、地雷与岩石
# Sonar, Mines vs. Rocks
data(Sonar)
dim(Sonar)
levels(Sonar$Class)
head(Sonar)
您将看到:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22
1 0.0200 0.0371 0.0428 0.0207 0.0954 0.0986 0.1539 0.1601 0.3109 0.2111 0.1609 0.1582 0.2238 0.0645 0.0660 0.2273 0.3100 0.2999 0.5078 0.4797 0.5783 0.5071
2 0.0453 0.0523 0.0843 0.0689 0.1183 0.2583 0.2156 0.3481 0.3337 0.2872 0.4918 0.6552 0.6919 0.7797 0.7464 0.9444 1.0000 0.8874 0.8024 0.7818 0.5212 0.4052
3 0.0262 0.0582 0.1099 0.1083 0.0974 0.2280 0.2431 0.3771 0.5598 0.6194 0.6333 0.7060 0.5544 0.5320 0.6479 0.6931 0.6759 0.7551 0.8929 0.8619 0.7974 0.6737
4 0.0100 0.0171 0.0623 0.0205 0.0205 0.0368 0.1098 0.1276 0.0598 0.1264 0.0881 0.1992 0.0184 0.2261 0.1729 0.2131 0.0693 0.2281 0.4060 0.3973 0.2741 0.3690
5 0.0762 0.0666 0.0481 0.0394 0.0590 0.0649 0.1209 0.2467 0.3564 0.4459 0.4152 0.3952 0.4256 0.4135 0.4528 0.5326 0.7306 0.6193 0.2032 0.4636 0.4148 0.4292
6 0.0286 0.0453 0.0277 0.0174 0.0384 0.0990 0.1201 0.1833 0.2105 0.3039 0.2988 0.4250 0.6343 0.8198 1.0000 0.9988 0.9508 0.9025 0.7234 0.5122 0.2074 0.3985
V23 V24 V25 V26 V27 V28 V29 V30 V31 V32 V33 V34 V35 V36 V37 V38 V39 V40 V41 V42 V43 V44
1 0.4328 0.5550 0.6711 0.6415 0.7104 0.8080 0.6791 0.3857 0.1307 0.2604 0.5121 0.7547 0.8537 0.8507 0.6692 0.6097 0.4943 0.2744 0.0510 0.2834 0.2825 0.4256
2 0.3957 0.3914 0.3250 0.3200 0.3271 0.2767 0.4423 0.2028 0.3788 0.2947 0.1984 0.2341 0.1306 0.4182 0.3835 0.1057 0.1840 0.1970 0.1674 0.0583 0.1401 0.1628
3 0.4293 0.3648 0.5331 0.2413 0.5070 0.8533 0.6036 0.8514 0.8512 0.5045 0.1862 0.2709 0.4232 0.3043 0.6116 0.6756 0.5375 0.4719 0.4647 0.2587 0.2129 0.2222
4 0.5556 0.4846 0.3140 0.5334 0.5256 0.2520 0.2090 0.3559 0.6260 0.7340 0.6120 0.3497 0.3953 0.3012 0.5408 0.8814 0.9857 0.9167 0.6121 0.5006 0.3210 0.3202
5 0.5730 0.5399 0.3161 0.2285 0.6995 1.0000 0.7262 0.4724 0.5103 0.5459 0.2881 0.0981 0.1951 0.4181 0.4604 0.3217 0.2828 0.2430 0.1979 0.2444 0.1847 0.0841
6 0.5890 0.2872 0.2043 0.5782 0.5389 0.3750 0.3411 0.5067 0.5580 0.4778 0.3299 0.2198 0.1407 0.2856 0.3807 0.4158 0.4054 0.3296 0.2707 0.2650 0.0723 0.1238
V45 V46 V47 V48 V49 V50 V51 V52 V53 V54 V55 V56 V57 V58 V59 V60 Class
1 0.2641 0.1386 0.1051 0.1343 0.0383 0.0324 0.0232 0.0027 0.0065 0.0159 0.0072 0.0167 0.0180 0.0084 0.0090 0.0032 R
2 0.0621 0.0203 0.0530 0.0742 0.0409 0.0061 0.0125 0.0084 0.0089 0.0048 0.0094 0.0191 0.0140 0.0049 0.0052 0.0044 R
3 0.2111 0.0176 0.1348 0.0744 0.0130 0.0106 0.0033 0.0232 0.0166 0.0095 0.0180 0.0244 0.0316 0.0164 0.0095 0.0078 R
4 0.4295 0.3654 0.2655 0.1576 0.0681 0.0294 0.0241 0.0121 0.0036 0.0150 0.0085 0.0073 0.0050 0.0044 0.0040 0.0117 R
5 0.0692 0.0528 0.0357 0.0085 0.0230 0.0046 0.0156 0.0031 0.0054 0.0105 0.0110 0.0015 0.0072 0.0048 0.0107 0.0094 R
6 0.1192 0.1089 0.0623 0.0494 0.0264 0.0081 0.0104 0.0045 0.0014 0.0038 0.0013 0.0089 0.0057 0.0027 0.0051 0.0062 R
大豆数据库
- 描述:根据作物数据预测大豆作物的问题。
- 类型:多类分类
- 尺寸:683 个实例,26 个属性
- 输入:整数(标称)
- 输出:分类,19 个类别标签
- UCI 机器学习知识库:描述
# Soybean Database
data(Soybean)
dim(Soybean)
levels(Soybean$Class)
head(Soybean)
您将看到:
Class date plant.stand precip temp hail crop.hist area.dam sever seed.tmt germ plant.growth leaves leaf.halo leaf.marg leaf.size leaf.shread
1 diaporthe-stem-canker 6 0 2 1 0 1 1 1 0 0 1 1 0 2 2 0
2 diaporthe-stem-canker 4 0 2 1 0 2 0 2 1 1 1 1 0 2 2 0
3 diaporthe-stem-canker 3 0 2 1 0 1 0 2 1 2 1 1 0 2 2 0
4 diaporthe-stem-canker 3 0 2 1 0 1 0 2 0 1 1 1 0 2 2 0
5 diaporthe-stem-canker 6 0 2 1 0 2 0 1 0 2 1 1 0 2 2 0
6 diaporthe-stem-canker 5 0 2 1 0 3 0 1 0 1 1 1 0 2 2 0
leaf.malf leaf.mild stem lodging stem.cankers canker.lesion fruiting.bodies ext.decay mycelium int.discolor sclerotia fruit.pods fruit.spots seed mold.growth
1 0 0 1 1 3 1 1 1 0 0 0 0 4 0 0
2 0 0 1 0 3 1 1 1 0 0 0 0 4 0 0
3 0 0 1 0 3 0 1 1 0 0 0 0 4 0 0
4 0 0 1 0 3 0 1 1 0 0 0 0 4 0 0
5 0 0 1 0 3 1 1 1 0 0 0 0 4 0 0
6 0 0 1 0 3 0 1 1 0 0 0 0 4 0 0
seed.discolor seed.size shriveling roots
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
4 0 0 0 0
5 0 0 0 0
6 0 0 0 0
库:应用预测建模
鲍鱼数据集 图片由 MAURO CATEB 提供,保留部分权利。
许多使用 R 的书籍还包括他们自己的 R 库,该库提供了书中使用的所有代码和数据集。
优秀的书籍应用预测建模有自己的名为应用预测建模的图书馆。
如果未安装,您可以按如下方式安装此库:
install.packages("AppliedPredictiveModeling")
您可以按如下方式加载库:
# load the library
library(AppliedPredictiveModeling)
要查看此库中可用数据集的列表,您可以键入:
# list the contents of the library
library(help = "AppliedPredictiveModeling")
您可以使用该库中的一个突出显示的数据集是:
鲍鱼数据
- 描述:根据鲍鱼测量数据预测鲍鱼年龄。
- 类型:回归或分类
- 尺寸:4177 个实例,9 个属性
- 输入:数字和分类
- 输出:整数
- UCI 机器学习知识库:描述
# Abalone Data
data(abalone)
dim(abalone)
head(abalone)
您将看到:
Type LongestShell Diameter Height WholeWeight ShuckedWeight VisceraWeight ShellWeight Rings
1 M 0.455 0.365 0.095 0.5140 0.2245 0.1010 0.150 15
2 M 0.350 0.265 0.090 0.2255 0.0995 0.0485 0.070 7
3 F 0.530 0.420 0.135 0.6770 0.2565 0.1415 0.210 9
4 M 0.440 0.365 0.125 0.5160 0.2155 0.1140 0.155 10
5 I 0.330 0.255 0.080 0.2050 0.0895 0.0395 0.055 7
6 I 0.425 0.300 0.095 0.3515 0.1410 0.0775 0.120 8
摘要
在这篇文章中,你发现你不需要收集或加载自己的数据来练习机器学习。
您已经了解了 3 个不同的库,它们提供了您可以使用的示例机器学习数据集:
- 数据集库
- mlbench 库
- 应用预测建模库
您还发现了 10 个特定的标准机器学习数据集,可以用来练习分类和回归机器学习技术。
- 鸢尾花数据集(多类分类)
- 朗利经济回归数据(回归)
- 波士顿住房数据(回归)
- 威斯康星乳腺癌数据库(二分类)
- 玻璃鉴定数据库(多级分类)
- 约翰·霍普金斯大学电离层数据库(二进制分类)
- 皮马印第安人糖尿病数据库(二分类)
- 声纳、地雷与岩石(二分类)
- 大豆数据库(多分类)
- 鲍鱼数据(回归或分类)
下一步
你试过这些秘籍吗?
- 开始你的互动环境。
- 键入或复制粘贴上面的秘籍,并尝试它们。
- 使用 R 中的内置帮助来了解有关所用函数的更多信息。
你有问题吗?在评论里问,我会尽力回答。
如何在 R 中构建机器学习算法的集成
最后更新于 2019 年 8 月 22 日
集成可以提高数据集的准确性。
在这篇文章中,你将发现如何在 r。
本案例研究将引导您完成增强、装袋和堆叠,并向您展示如何在您自己的数据集上继续提升模型的准确性。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
在 R 中构建一个机器学习算法的集成。
提高模型的准确性
为数据集找到表现良好的机器学习算法可能需要时间。这是因为应用机器学习的反复试验性质。
一旦你有了一个精确模型的候选列表,你就可以使用算法调整来从每个算法中获得最大的收益。
另一种可以用来提高数据集准确率的方法是将多个不同模型的预测组合在一起。
这被称为集合预测。
将模型预测合并到集合预测中
结合不同模型预测的三种最流行的方法是:
- 装袋。从训练数据集的不同子样本构建多个模型(通常是同一类型)。
- 升压。构建多个模型(通常是同一类型的),每个模型学习修正链中先前模型的预测误差。
- 堆叠。构建多个模型(通常类型不同)和主管模型,学习如何最好地组合主要模型的预测。
这篇文章不会解释每一种方法。它假设您通常熟悉机器学习算法和集成方法,并且您正在寻找如何使用 r 创建集成的信息。
R 语言中的集成机器学习
你可以在 r
有三种主要技术可以在 R 中创建机器学习算法的集成:Boosting、Bagging 和堆叠。在这一节中,我们将依次看每一个。
在我们开始构建集合之前,让我们定义我们的测试设置。
测试数据集
本案例研究中的所有集合预测示例都将使用电离层数据集。
这是可从 UCI 机器学习资源库获得的数据集。该数据集描述了来自大气中高能粒子的高频天线回波,以及回波是否显示结构。这个问题是一个二分类,包含 351 个实例和 35 个数字属性。
让我们加载库和数据集。
# Load libraries
library(mlbench)
library(caret)
library(caretEnsemble)
# Load the dataset
data(Ionosphere)
dataset <- Ionosphere
dataset <- dataset[,-2]
dataset$V1 <- as.numeric(as.character(dataset$V1))
请注意,第一个属性是一个因子(0,1),并且已经被转换为数字,以便与所有其他数字属性保持一致。还要注意,第二个属性是一个常量,已经被移除。
这里是电离层数据集的前几行的一个预览。
> head(dataset)
V1 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
1 1 0.99539 -0.05889 0.85243 0.02306 0.83398 -0.37708 1.00000 0.03760 0.85243 -0.17755 0.59755 -0.44945 0.60536
2 1 1.00000 -0.18829 0.93035 -0.36156 -0.10868 -0.93597 1.00000 -0.04549 0.50874 -0.67743 0.34432 -0.69707 -0.51685
3 1 1.00000 -0.03365 1.00000 0.00485 1.00000 -0.12062 0.88965 0.01198 0.73082 0.05346 0.85443 0.00827 0.54591
4 1 1.00000 -0.45161 1.00000 1.00000 0.71216 -1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -1.00000
5 1 1.00000 -0.02401 0.94140 0.06531 0.92106 -0.23255 0.77152 -0.16399 0.52798 -0.20275 0.56409 -0.00712 0.34395
6 1 0.02337 -0.00592 -0.09924 -0.11949 -0.00763 -0.11824 0.14706 0.06637 0.03786 -0.06302 0.00000 0.00000 -0.04572
V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28
1 -0.38223 0.84356 -0.38542 0.58212 -0.32192 0.56971 -0.29674 0.36946 -0.47357 0.56811 -0.51171 0.41078 -0.46168
2 -0.97515 0.05499 -0.62237 0.33109 -1.00000 -0.13151 -0.45300 -0.18056 -0.35734 -0.20332 -0.26569 -0.20468 -0.18401
3 0.00299 0.83775 -0.13644 0.75535 -0.08540 0.70887 -0.27502 0.43385 -0.12062 0.57528 -0.40220 0.58984 -0.22145
4 0.14516 0.54094 -0.39330 -1.00000 -0.54467 -0.69975 1.00000 0.00000 0.00000 1.00000 0.90695 0.51613 1.00000
5 -0.27457 0.52940 -0.21780 0.45107 -0.17813 0.05982 -0.35575 0.02309 -0.52879 0.03286 -0.65158 0.13290 -0.53206
6 -0.15540 -0.00343 -0.10196 -0.11575 -0.05414 0.01838 0.03669 0.01519 0.00888 0.03513 -0.01535 -0.03240 0.09223
V29 V30 V31 V32 V33 V34 Class
1 0.21266 -0.34090 0.42267 -0.54487 0.18641 -0.45300 good
2 -0.19040 -0.11593 -0.16626 -0.06288 -0.13738 -0.02447 bad
3 0.43100 -0.17365 0.60436 -0.24180 0.56045 -0.38238 good
4 1.00000 -0.20099 0.25682 1.00000 -0.32382 1.00000 bad
5 0.02431 -0.62197 -0.05707 -0.59573 -0.04608 -0.65697 good
6 -0.07859 0.00732 0.00000 0.00000 -0.00039 0.12011 bad
有关更多信息,请参见 UCI 机器学习存储库中电离层数据集的描述。
数据集上已发布的世界级结果见本摘要。
1.增强算法
我们可以看看两种最流行的增强机器学习算法:
- C5.0
- 随机梯度升压
以下是 r 中的 C5.0 和随机梯度提升(使用梯度提升建模实现)算法的示例。这两种算法都包含本示例中未调整的参数。
# Example of Boosting Algorithms
control <- trainControl(method="repeatedcv", number=10, repeats=3)
seed <- 7
metric <- "Accuracy"
# C5.0
set.seed(seed)
fit.c50 <- train(Class~., data=dataset, method="C5.0", metric=metric, trControl=control)
# Stochastic Gradient Boosting
set.seed(seed)
fit.gbm <- train(Class~., data=dataset, method="gbm", metric=metric, trControl=control, verbose=FALSE)
# summarize results
boosting_results <- resamples(list(c5.0=fit.c50, gbm=fit.gbm))
summary(boosting_results)
dotplot(boosting_results)
我们可以看到 C5.0 算法产生了一个更精确的模型,准确率为 94.58%。
Models: c5.0, gbm
Number of resamples: 30
Accuracy
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
c5.0 0.8824 0.9143 0.9437 0.9458 0.9714 1 0
gbm 0.8824 0.9143 0.9429 0.9402 0.9641 1 0
增强机器学习算法
了解有关 Caret 增强模型树的更多信息:增强模型。
2.装袋算法
让我们看看两种最流行的装袋机器学习算法:
- 袋装 CART
- 随机森林
下面是 r 中的袋装 CART 和随机森林算法的示例。这两种算法都包含本示例中未调整的参数。
# Example of Bagging algorithms
control <- trainControl(method="repeatedcv", number=10, repeats=3)
seed <- 7
metric <- "Accuracy"
# Bagged CART
set.seed(seed)
fit.treebag <- train(Class~., data=dataset, method="treebag", metric=metric, trControl=control)
# Random Forest
set.seed(seed)
fit.rf <- train(Class~., data=dataset, method="rf", metric=metric, trControl=control)
# summarize results
bagging_results <- resamples(list(treebag=fit.treebag, rf=fit.rf))
summary(bagging_results)
dotplot(bagging_results)
我们可以看到,随机森林产生了一个更准确的模型,准确率为 93.25%。
Models: treebag, rf
Number of resamples: 30
Accuracy
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
treebag 0.8529 0.8946 0.9143 0.9183 0.9440 1 0
rf 0.8571 0.9143 0.9420 0.9325 0.9444 1 0
R
点击此处了解更多关于脱字号装袋模型的信息:装袋模型。
3.堆叠算法
您可以使用carestensemble包组合多个脱字符模型的预测。
给定 Caret 模型列表, caretStack() 函数可用于指定更高阶的模型,以学习如何最好地将子模型的预测组合在一起。
让我们首先看一下为电离层数据集创建 5 个子模型,具体来说:
- 线性判别分析
- 分类和回归树
- 逻辑回归(通过广义线性模型或 GLM)
- k 近邻
- 具有径向基核函数的支持向量机(SVM)
下面是创建这 5 个子模型的示例。注意由carestenmble包提供的新的有用的 caretList() 功能,用于创建标准 Caret 模型的列表。
# Example of Stacking algorithms
# create submodels
control <- trainControl(method="repeatedcv", number=10, repeats=3, savePredictions=TRUE, classProbs=TRUE)
algorithmList <- c('lda', 'rpart', 'glm', 'knn', 'svmRadial')
set.seed(seed)
models <- caretList(Class~., data=dataset, trControl=control, methodList=algorithmList)
results <- resamples(models)
summary(results)
dotplot(results)
我们可以看到,SVM 以 94.66%的准确率创建了最准确的模型。
Models: lda, rpart, glm, knn, svmRadial
Number of resamples: 30
Accuracy
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
lda 0.7714 0.8286 0.8611 0.8645 0.9060 0.9429 0
rpart 0.7714 0.8540 0.8873 0.8803 0.9143 0.9714 0
glm 0.7778 0.8286 0.8873 0.8803 0.9167 0.9722 0
knn 0.7647 0.8056 0.8431 0.8451 0.8857 0.9167 0
svmRadial 0.8824 0.9143 0.9429 0.9466 0.9722 1.0000 0
R 中叠加集成子模型的比较
当我们使用叠加组合不同模型的预测时,希望子模型做出的预测具有低相关性。这将表明这些模型是有技巧的,但在不同的方面,允许一个新的分类器来找出如何从每个模型中获得最佳的改进分数。
如果子模型的预测被高度修正(> 0.75),那么它们大部分时间会做出相同或非常相似的预测,从而降低了组合预测的好处。
# correlation between results
modelCor(results)
splom(results)
我们可以看到,所有的预测对都具有普遍较低的相关性。预测之间相关性最高的两种方法是逻辑回归(GLM)和 kNN,相关系数为 0.517,这并不算高(> 0.75)。
lda rpart glm knn svmRadial
lda 1.0000000 0.2515454 0.2970731 0.5013524 0.1126050
rpart 0.2515454 1.0000000 0.1749923 0.2823324 0.3465532
glm 0.2970731 0.1749923 1.0000000 0.5172239 0.3788275
knn 0.5013524 0.2823324 0.5172239 1.0000000 0.3512242
svmRadial 0.1126050 0.3465532 0.3788275 0.3512242 1.0000000
叠加集合中子模型预测的相关性
让我们使用一个简单的线性模型来组合分类器的预测。
# stack using glm
stackControl <- trainControl(method="repeatedcv", number=10, repeats=3, savePredictions=TRUE, classProbs=TRUE)
set.seed(seed)
stack.glm <- caretStack(models, method="glm", metric="Accuracy", trControl=stackControl)
print(stack.glm)
我们可以看到,我们已经将准确率提升到了 94.99%,这比单独使用 SVM 有一点点改进。如上所述,这也是对在数据集上单独使用随机森林的改进。
A glm ensemble of 2 base models: lda, rpart, glm, knn, svmRadial
Ensemble results:
Generalized Linear Model
1053 samples
5 predictor
2 classes: 'bad', 'good'
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 3 times)
Summary of sample sizes: 948, 947, 948, 947, 949, 948, ...
Resampling results
Accuracy Kappa Accuracy SD Kappa SD
0.949996 0.891494 0.02121303 0.04600482
我们还可以使用更复杂的算法来组合预测,努力梳理出何时最好使用不同的方法。在这种情况下,我们可以使用随机森林算法来组合预测。
# stack using random forest
set.seed(seed)
stack.rf <- caretStack(models, method="rf", metric="Accuracy", trControl=stackControl)
print(stack.rf)
我们可以看到,这已经将准确率提升到了 96.26%,仅在 SVM 就有了令人印象深刻的提高。
A rf ensemble of 2 base models: lda, rpart, glm, knn, svmRadial
Ensemble results:
Random Forest
1053 samples
5 predictor
2 classes: 'bad', 'good'
No pre-processing
Resampling: Cross-Validated (10 fold, repeated 3 times)
Summary of sample sizes: 948, 947, 948, 947, 949, 948, ...
Resampling results across tuning parameters:
mtry Accuracy Kappa Accuracy SD Kappa SD
2 0.9626439 0.9179410 0.01777927 0.03936882
3 0.9623205 0.9172689 0.01858314 0.04115226
5 0.9591459 0.9106736 0.01938769 0.04260672
Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mtry = 2.
你可以在 R
不需要做 R 程序员。您可以从这篇博文中复制并粘贴示例代码来开始。使用 r 中的内置帮助研究示例中使用的函数
不需要成为机器学习专家。如果你从零开始做,创造集成会非常复杂。caret和carestensemble包允许您开始创建和尝试集成,即使您对它们的工作原理没有深入的了解。仔细阅读每种类型的集成,以便以后从中获得更多的东西。
不需要自己收集数据。本案例研究中使用的数据来自 mlbench 包。您可以像这样使用标准机器学习数据集来学习、使用和实验机器学习算法。
不需要自己编写集成代码。R 提供了一些最强大的算法来创建集成,随时可以运行。使用这篇文章中的例子立即开始。您可以随时根据您的具体情况进行调整,或者稍后使用自定义代码尝试新的想法。
摘要
在这篇文章中,你发现你可以使用机器学习算法的集成来提高模型的准确性。
您发现了可以在 R 中构建的三种类型的机器学习算法集成:
- 提升
- 制袋材料
- 堆垛
您可以将本案例研究中的代码用作 r 中当前或下一个机器学习项目的模板
下一步
你完成案例研究了吗?
- 开始你的互动环境。
- 键入或复制粘贴本案例研究中的所有代码。
- 利用 R 函数的帮助,花时间了解案例研究的每个部分。
你对这个案例研究或在 R 中使用集成有什么问题吗?留言提问,我会尽力回答。
R 中的机器学习评估指标
最后更新于 2019 年 8 月 22 日
你可以用什么标准来评估你的机器学习算法?
在这篇文章中,您将发现如何使用许多标准评估指标来评估您在 R 中的机器学习算法。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧。
R 图片中的机器学习评估指标由罗兰·唐劳提供,保留部分权利。
R 中的模型评估指标
有许多不同的度量可以用来评估你的机器学习算法
当您使用 Caret 评估模型时,使用的默认度量是用于分类问题的准确性和用于回归的 RMSE 。但是 caret 支持一系列其他流行的评估指标。
在下一节中,您将逐步了解 Caret 提供的每个评估指标。每个示例都提供了一个完整的案例研究,您可以将其复制并粘贴到项目中,以适应您的问题。
请注意,这篇文章假设您已经知道如何解释这些其他指标。如果它们对你来说是新的,不要担心,我提供了一些进一步阅读的链接,你可以从中了解更多。
评估机器学习算法的度量
在本节中,您将发现如何使用许多不同的通用评估指标来评估机器学习算法。
具体来说,本节将向您展示如何在 R:
- 准确度和卡帕值
- RMSE 和 R²
- 敏感性和特异性
- 日志丢失
准确度和卡帕值
这些是用于评估 caret 中二进制和多类类别数据集算法的默认指标。
准确度是所有实例中正确分类实例的百分比。它在二进制分类问题上比多类分类问题更有用,因为它可能不太清楚这些类的准确率是如何分解的(例如,您需要使用混淆矩阵进行更深入的研究)。在此了解更多关于准确率的信息。
Kappa 或 Cohen 的 Kappa 类似于分类准确率,除了它在你的数据集上的随机机会的基线处被归一化。这是一种更有用的度量,用于类别不平衡的问题(例如,类别 0 和 1 的 70-30 分割,通过预测所有实例都属于类别 0,可以达到 70%的准确性)。点击这里了解更多关于卡帕的信息。
在下面的例子中,使用了皮马印第安人糖尿病数据集。对于消极和积极的结果,它有 65%到 35%的分类分解。
# load libraries
library(caret)
library(mlbench)
# load the dataset
data(PimaIndiansDiabetes)
# prepare resampling method
control <- trainControl(method="cv", number=5)
set.seed(7)
fit <- train(diabetes~., data=PimaIndiansDiabetes, method="glm", metric="Accuracy", trControl=control)
# display results
print(fit)
运行这个例子,我们可以看到评估的每个机器学习算法的准确度和 Kappa 表。这包括每个指标的平均值(左)和标准偏差(标为标准差),取自交叉验证折叠和试验的总体。
您可以看到,模型的准确率约为 76%,比 65%的基线准确率高出 11 个百分点,这并不令人印象深刻。另一方面,Kappa 显示大约 46%,这更有趣。
Generalized Linear Model
768 samples
8 predictor
2 classes: 'neg', 'pos'
No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes: 614, 614, 615, 615, 614
Resampling results
Accuracy Kappa Accuracy SD Kappa SD
0.7695442 0.4656824 0.02692468 0.0616666
RMSE 和 R²
这些是用于评估 caret 中回归数据集算法的默认度量。
RMSE 或均方根误差是预测值与观测值的平均偏差。以输出变量为单位,大致了解一个算法做得好不好是很有用的。在这里了解更多 RMSE。
R² 表示为 r 的平方,也称为决定系数,为观测值的预测提供了“拟合优度”的度量。这是一个介于 0 和 1 之间的值,分别表示非拟合和完美拟合。在这里了解更多关于 R² 的信息。
在本例中,使用了长期经济数据集。输出变量是一个“使用的数字”。不清楚这是实际计数(例如,以百万计)还是百分比。
# load libraries
library(caret)
# load data
data(longley)
# prepare resampling method
control <- trainControl(method="cv", number=5)
set.seed(7)
fit <- train(Employed~., data=longley, method="lm", metric="RMSE", trControl=control)
# display results
print(fit)
运行这个例子,我们可以看到每个被评估的机器学习算法的 RMSE 和 R 平方的表格。同样,您可以看到提供了两个指标的平均值和标准偏差。
你可以看到 RMSE 是 0.38 的就业单位(无论这些单位是什么)。然而,R 平方值显示了非常适合值非常接近 1 (0.988)的数据。
Linear Regression
16 samples
6 predictor
No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes: 12, 12, 14, 13, 13
Resampling results
RMSE Rsquared RMSE SD Rsquared SD
0.3868618 0.9883114 0.1025042 0.01581824
ROC 曲线下面积
ROC 度量只适用于二进制分类问题(例如两类)。
要计算 ROC 信息,您必须将列车控制中的汇总功能更改为两类汇总。这将计算曲线下面积(AUROC),也称为曲线下面积(AUC),灵敏度和特异性。
ROC 实际上是 ROC 曲线或 AUC 下的面积。AUC 代表了一个模型区分正类和负类的能力。1.0 的区域代表了一个模型,它完美地做出了所有预测。0.5 的面积代表一个像随机一样好的模型。在这里了解更多 ROC。
ROC 可分为敏感性和特异性。二分类问题实际上是敏感性和特异性之间的权衡。
灵敏度是真阳性率也叫召回率。实际上正确预测的是正(第一)类的实例数。
特异性也叫真阴性率。是负类(第二类)中实际预测正确的实例数。在这里了解更多关于敏感性和特异性的信息。
# load libraries
library(caret)
library(mlbench)
# load the dataset
data(PimaIndiansDiabetes)
# prepare resampling method
control <- trainControl(method="cv", number=5, classProbs=TRUE, summaryFunction=twoClassSummary)
set.seed(7)
fit <- train(diabetes~., data=PimaIndiansDiabetes, method="glm", metric="ROC", trControl=control)
# display results
print(fit)
在这里,你可以看到 0.833 的“好”但不“优秀”的 AUC 评分。第一级被视为阳性,在这种情况下为“阴性”(没有糖尿病发作)。
Generalized Linear Model
768 samples
8 predictor
2 classes: 'neg', 'pos'
No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes: 614, 614, 615, 615, 614
Resampling results
ROC Sens Spec ROC SD Sens SD Spec SD
0.8336003 0.882 0.5600978 0.02111279 0.03563706 0.0560184
对数损失
对数损失或对数损失用于评估二进制分类,但它更常见于多类分类算法。具体来说,它评估计法估计的概率。在这里了解更多关于日志丢失的信息。
在这种情况下,我们看到为鸢尾花多类分类问题计算的对数损失。
# load libraries
library(caret)
# load the dataset
data(iris)
# prepare resampling method
control <- trainControl(method="cv", number=5, classProbs=TRUE, summaryFunction=mnLogLoss)
set.seed(7)
fit <- train(Species~., data=iris, method="rpart", metric="logLoss", trControl=control)
# display results
print(fit)
Logloss 被最小化,我们可以看到最优 CART 模型的 cp 为 0。
CART
150 samples
4 predictor
3 classes: 'setosa', 'versicolor', 'virginica'
No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes: 120, 120, 120, 120, 120
Resampling results across tuning parameters:
cp logLoss logLoss SD
0.00 0.4105613 0.6491893
0.44 0.6840517 0.4963032
0.50 1.0986123 0.0000000
logLoss was used to select the optimal model using the smallest value.
The final value used for the model was cp = 0.
摘要
在这篇文章中,你发现了不同的度量标准,可以用来评估你的机器学习算法在 R 中使用 caret 的表现。具体来说:
- 准确度和卡帕值
- RMSE 和 R²
- 敏感性和特异性
- 日志丢失
你可以使用这篇文章中的秘籍来评估你当前或下一个机器学习项目中的机器学习算法。
下一步
完成这篇文章中的例子。
- 打开你的 R 交互环境。
- 复制粘贴类型上面的示例代码。
- 慢慢来,了解发生了什么,使用帮助阅读函数。
你有什么问题吗?留言评论,我会尽力的。
R 中的第一个机器学习逐步项目
最后更新于 2019 年 10 月 8 日
你想用 R 做机器学习,但是入门有困难吗?
在这篇文章中,你将使用 r 完成你的第一个机器学习项目。
在本逐步教程中,您将:
- 下载并安装 R,获得 R 中最有用的机器学习包。
- 使用统计摘要和数据可视化加载数据集并了解其结构。
- 创建 5 个机器学习模型,选择最佳模型,并建立准确性可靠的信心。
如果你是一个机器学习初学者,并希望最终开始使用 R,本教程是为你设计的。
用我的新书用 R 启动你的项目,包括一步一步的教程和所有例子的 R 源代码文件。
我们开始吧!
你的第一个机器学习项目在 R-Step-Step 照片由亨利·布伦斯拍摄,版权所有。
如何在 R 中开始机器学习?
学习机器学习的最好方法是通过设计和完成小项目。
开始时,r 可能会令人生畏
r 提供了一种具有奇怪语法的脚本语言。还有数百个包和数千个函数可供选择,提供了多种方式来完成每项任务。这种感觉让人无法抗拒。
开始使用 R 进行机器学习的最好方法是完成一个项目。
- 它会强迫你安装并启动 R(至少)。
- 它会让你鸟瞰如何完成一个小项目。
- 它会给你信心,也许继续你自己的小项目。
初学者需要一个小型的端到端项目
书籍和课程令人沮丧。他们会给你很多秘籍和片段,但你永远看不到它们是如何结合在一起的。
当您将机器学习应用到自己的数据集时,您正在进行一个项目。
机器学习项目的过程可能不是线性的,但是有许多众所周知的步骤:
- 定义问题。
- 准备数据。
- 评估计法。
- 改善结果。
- 呈现结果。
有关机器学习项目步骤的更多信息,请参见本清单和更多关于流程的。
真正接受新平台或工具的最佳方式是端到端地完成机器学习项目,并涵盖关键步骤。也就是说,从加载数据,总结你的数据,评估计法和做一些预测。
如果可以做到这一点,您就有了一个可以在一个又一个数据集上使用的模板。一旦你有了更多的信心,你就可以填补空白,比如进一步的数据准备和以后改进结果任务。
你好机器学习的世界
在新工具上开始的最好的小项目是鸢尾花的分类(例如鸢尾数据集)。
这是一个很好的项目,因为它很好理解。
- 属性是数字的,所以你必须弄清楚如何加载和处理数据。
- 这是一个分类问题,允许你用一种更简单的监督学习算法来练习。
- 这是一个多类分类问题(多标称),可能需要一些专门的处理。
- 它只有 4 个属性和 150 行,这意味着它很小,很容易放入内存(和一个屏幕或 A4 页面)。
- 所有的数字属性都是以相同的单位和相同的比例表示的,不需要任何特殊的缩放或转换来开始。
让我们从你在 r 的 hello world 机器学习项目开始。
R 中的机器学习:逐步教程(从这里开始)
在本节中,我们将从头到尾完成一个小型机器学习项目。
下面是我们将要讲述的内容的概述:
- 安装 R 平台。
- 正在加载数据集。
- 汇总数据集。
- 可视化数据集。
- 评估一些算法。
- 做一些预测。
慢慢来。完成每一步。
尝试自己键入命令或复制粘贴命令来加快速度。
有任何问题,请在帖子底部留言。
1.下载安装和启动 R
如果系统上还没有安装 R 平台,请将其安装到系统上。
更新:本教程是用 R 版本 3.2.3 编写和测试的。建议您使用这个版本的 R 或更高版本。
我不想详细讨论这个问题,因为其他人已经讨论过了。这已经很简单了,尤其是如果你是一个开发人员。如果您确实需要帮助,请在评论中提问。
以下是我们在这一步中要介绍的内容:
- 下载器
- 安装程序
- 开头的人
- 安装 R 包。
1.1 下载 R
可以从R 项目网页下载 R。
当你点击下载链接时,你必须选择一个镜像。然后,您可以为您的操作系统选择 R,例如 Windows、OS X 或 Linux。
1.2 安装拆装
R is 很容易安装,我相信你能处理好。没有特殊要求。如果您有问题或需要安装帮助,请参见 R 安装和管理。
1.3 起动电阻
您可以从操作系统上使用的任何菜单系统启动 R。
对我来说,我更喜欢命令行。
打开您的命令行,更改(或创建)到您的项目目录,并通过键入以下命令启动 R:
R
您应该会在新窗口或终端中看到类似下面截图的内容。
互动环境
1.4 安装包
安装我们今天要使用的软件包。包是我们可以在 r 中使用的第三方插件或库。
install.packages("caret")
UPDATE :我们可能需要其他的包,但是 caret 应该会问我们要不要加载。如果程序包有问题,您可以通过键入以下命令来安装 caret 程序包和所有可能需要的程序包:
install.packages("caret", dependencies=c("Depends", "Suggests"))
现在,让我们加载我们将在本教程中使用的包,Caret 包。
library(caret)
caret 包为数百种机器学习算法提供了一致的接口,并为数据可视化、数据重采样、模型调整和模型比较等功能提供了有用的便利方法。这是 r 中机器学习项目的必备工具。
有关 Caret 包的更多信息,请参见Caret 包主页。
2.加载数据
我们将使用鸢尾花数据集。这个数据集之所以出名,是因为它被几乎所有人用作机器学习和统计中的“你好世界”数据集。
该数据集包含 150 个鸢尾花的观察结果。有四列以厘米为单位的花朵尺寸。第五栏是观察到的花的种类。所有观察到的花都属于三种中的一种。 你可以在维基百科上了解更多关于这个数据集的信息。
以下是我们在这一步要做的事情:
- 以简单的方式加载虹膜数据。
- 从 CSV 加载 iris 数据(可选,对于纯粹主义者)。
- 将数据分为训练数据集和验证数据集。
选择您喜欢的数据加载方式,或者尝试两种方法。
2.1 轻松加载数据
幸运的是,R 平台为我们提供了虹膜数据集。按如下方式加载数据集:
# attach the iris dataset to the environment
data(iris)
# rename the dataset
dataset <- iris
现在您已经将虹膜数据加载到 R 中,并且可以通过数据集变量进行访问。
我喜欢将加载的数据命名为“数据集”。如果您想要在项目之间复制粘贴代码,并且数据集总是具有相同的名称,这将很有帮助。
2.2 从 CSV 加载
也许你是一个纯粹主义者,你想像在自己的机器学习项目中一样,从 CSV 文件中加载数据。
- 从 UCI 机器学习资源库下载虹膜数据集(这里是直接链接)。
- 将文件保存为 iris.csv 您的项目目录。
从 CSV 文件加载数据集,如下所示:
# define the filename
filename <- "iris.csv"
# load the CSV file from the local directory
dataset <- read.csv(filename, header=FALSE)
# set the column names in the dataset
colnames(dataset) <- c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width","Species")
现在您已经将虹膜数据加载到 R 中,并且可以通过数据集变量进行访问。
2.3.创建验证数据集
我们需要知道我们创造的模型是不是好的。
稍后,我们将使用统计方法来估计我们在看不见的数据上创建的模型的准确性。我们还希望通过在实际未看到的数据上评估最佳模型,对其准确性进行更具体的评估。 也就是说,我们将保留一些算法看不到的数据,我们将使用这些数据来获得最佳模型实际上有多准确的第二个独立想法。
我们将把加载的数据集分成两部分,其中 80%用于训练模型,20%作为验证数据集保留下来。
# create a list of 80% of the rows in the original dataset we can use for training
validation_index <- createDataPartition(dataset$Species, p=0.80, list=FALSE)
# select 20% of the data for validation
validation <- dataset[-validation_index,]
# use the remaining 80% of data to training and testing the models
dataset <- dataset[validation_index,]
现在在数据集变量中有了训练数据,我们稍后将在验证变量中使用一个验证集。
注意,我们用数据集的 80%样本替换了数据集变量。这是为了让代码的其余部分更简单易读。
3.汇总数据集
现在是时候看看数据了。
在这一步中,我们将以几种不同的方式查看数据:
- 数据集的维度。
- 属性的类型。
- 偷看数据本身。
- 类属性的级别。
- 每个类中实例的细分。
- 所有属性的统计摘要。
别担心,每次看数据都是一个命令。这些是有用的命令,您可以在未来的项目中反复使用。
3.1 数据集的维度
我们可以通过 dim 函数快速了解数据包含多少实例(行)和多少属性(列)。
# dimensions of dataset
dim(dataset)
您应该会看到 120 个实例和 5 个属性:
[1] 120 5
3.2 属性的类型
了解属性的类型是个好主意。它们可以是双准确率、整数、字符串、因子和其他类型。
了解类型很重要,因为这将让您了解如何更好地总结您所拥有的数据,以及在建模之前可能需要使用哪些类型的转换来准备数据。
# list types for each attribute
sapply(dataset, class)
您应该看到所有的输入都是双准确率的,类值是一个因素:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"numeric" "numeric" "numeric" "numeric" "factor"
3.3 查看数据
事实上,关注你的数据也是一个好主意。
# take a peek at the first 5 rows of the data
head(dataset)
您应该会看到前 5 行数据:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
3.4 班级级别
类变量是一个因素。因子是具有多个类别标签或级别的类别。让我们看看级别:
# list the levels for the class
levels(dataset$Species)
请注意上面我们如何通过名称将属性称为数据集的属性。在结果中,我们可以看到该类有 3 个不同的标签:
[1] "setosa" "versicolor" "virginica"
这是一个多类或多项分类问题。如果有两个层次,那就是一个二分类问题。
3.5 等级分布
现在让我们看看属于每个类的实例(行)的数量。我们可以将此视为绝对计数和百分比。
# summarize the class distribution
percentage <- prop.table(table(dataset$Species)) * 100
cbind(freq=table(dataset$Species), percentage=percentage)
我们可以看到,每个类都有相同数量的实例(数据集的 40%或 33%)
freq percentage
setosa 40 33.33333
versicolor 40 33.33333
virginica 40 33.33333
3.6 统计汇总
最后,我们可以看一下每个属性的摘要。
这包括平均值、最小值和最大值以及一些百分位数(第 25 位、第 50 位或第 50 位或第 75 位,例如,如果我们对一个属性的所有值进行排序,则为此时的值)。
# summarize attribute distributions
summary(dataset)
我们可以看到所有的数值都有相同的刻度(厘米)和相似的范围[0,8]厘米。
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
Min. :4.300 Min. :2.00 Min. :1.000 Min. :0.100 setosa :40
1st Qu.:5.100 1st Qu.:2.80 1st Qu.:1.575 1st Qu.:0.300 versicolor:40
Median :5.800 Median :3.00 Median :4.300 Median :1.350 virginica :40
Mean :5.834 Mean :3.07 Mean :3.748 Mean :1.213
3rd Qu.:6.400 3rd Qu.:3.40 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.40 Max. :6.900 Max. :2.500
4.可视化数据集
我们现在对数据有了一个基本的概念。我们需要用一些可视化来扩展它。
我们将看两种类型的图:
- 单变量图,以更好地理解每个属性。
- 多元图,以更好地理解属性之间的关系。
4.1 单变量图
我们从一些单变量图开始,也就是每个单独变量的图。
有一种方法可以只引用输入属性和输出属性,这对可视化很有帮助。让我们设置它,并调用输入属性 x 和输出属性(或类)y。
# split input and output
x <- dataset[,1:4]
y <- dataset[,5]
假设输入变量是数字,我们可以创建每个变量的方框图和触须图。
# boxplot for each attribute on one image
par(mfrow=c(1,4))
for(i in 1:4) {
boxplot(x[,i], main=names(iris)[i])
}
这让我们对输入属性的分布有了更清晰的了解:
R 中的方框图和触须图
我们还可以创建一个物种类变量的条形图来获得类分布的图形表示(在这种情况下通常不感兴趣,因为它们是均匀的)。
# barplot for class breakdown
plot(y)
这证实了我们在上一节中学到的,实例平均分布在三个类中:
鸢尾属花卉的条形图
4.2 多元图
现在我们可以看看变量之间的相互作用。
首先,让我们看看所有属性对的散点图,并按类给点着色。此外,因为散点图显示每个类的点通常是分开的,所以我们可以在它们周围画椭圆。
# scatterplot matrix
featurePlot(x=x, y=y, plot="ellipse")
我们可以看到输入属性(趋势)和属性与类值(省略号)之间的一些明确关系:
虹膜数据的散点图矩阵
我们还可以再次查看每个输入变量的方框图和触须图,但这次为每个类细分为单独的图。这有助于梳理出类别之间明显的线性分离。
# box and whisker plots for each attribute
featurePlot(x=x, y=y, plot="box")
看到每个类值的属性有明显不同的分布是很有用的。
按类别值列出的虹膜数据的方框图和触须图
接下来,我们可以了解每个属性的分布,同样像方框图和触须图,按类值细分。有时直方图对此很有用,但在这种情况下,我们将使用一些概率密度图来为每个分布给出漂亮的平滑线条。
# density plots for each attribute by class value
scales <- list(x=list(relation="free"), y=list(relation="free"))
featurePlot(x=x, y=y, plot="density", scales=scales)
像箱线图一样,我们可以看到每个属性按类值分布的差异。我们还可以看到每个属性的类高斯分布(钟形曲线)。
按类别值划分的虹膜数据密度图
5.评估一些算法
现在是时候创建一些数据模型,并根据看不见的数据估计它们的准确性了。
以下是我们在这一步中要介绍的内容:
- 设置测试线束以使用 10 倍交叉验证。
- 建立 5 个不同的模型,通过花卉测量来预测物种
- 选择最佳型号。
5.1 测试线束
我们将进行 10 倍交叉验证来评估准确性。
这将把我们的数据集分成 10 个部分,在 9 个部分中训练,在 1 个部分中测试,并发布所有组合的训练-测试分割。我们还将对每个算法重复该过程 3 次,将不同的数据分成 10 组,以获得更准确的估计。
# Run algorithms using 10-fold cross validation
control <- trainControl(method="cv", number=10)
metric <- "Accuracy"
我们使用“准确性”这一指标来评估模型。这是正确预测的实例数除以数据集中的实例总数乘以 100 得出的百分比(例如,95%准确)。接下来,当我们运行构建并评估每个模型时,我们将使用度量变量。
5.2 构建模型
我们不知道在这个问题上哪些算法是好的,或者使用什么配置。我们从图中得到一个想法,一些类在某些维度上是部分线性可分的,所以我们通常期待好的结果。
让我们评估 5 种不同的算法:
- 线性判别分析
- 分类和回归树。
- k-最近邻。
- 具有线性核的支持向量机(SVM)。
- 随机森林
这是简单线性(LDA)、非线性(CART、kNN)和复杂非线性方法(SVM、射频)的良好混合。我们在到达运行之前重置随机数种子,以确保使用完全相同的数据分割来执行每个算法的评估。它确保结果具有直接可比性。
让我们构建五个模型:
# a) linear algorithms
set.seed(7)
fit.lda <- train(Species~., data=dataset, method="lda", metric=metric, trControl=control)
# b) nonlinear algorithms
# CART
set.seed(7)
fit.cart <- train(Species~., data=dataset, method="rpart", metric=metric, trControl=control)
# kNN
set.seed(7)
fit.knn <- train(Species~., data=dataset, method="knn", metric=metric, trControl=control)
# c) advanced algorithms
# SVM
set.seed(7)
fit.svm <- train(Species~., data=dataset, method="svmRadial", metric=metric, trControl=control)
# Random Forest
set.seed(7)
fit.rf <- train(Species~., data=dataset, method="rf", metric=metric, trControl=control)
Caret 确实支持每个模型的配置和配置调优,但是我们不会在本教程中介绍这一点。
5.3 选择最佳型号
我们现在有 5 个模型,每个模型都有准确率估计。我们需要相互比较模型,选择最准确的。
我们可以通过首先创建一个已创建模型的列表并使用 summary 函数来报告每个模型的准确性。
# summarize accuracy of models
results <- resamples(list(lda=fit.lda, cart=fit.cart, knn=fit.knn, svm=fit.svm, rf=fit.rf))
summary(results)
我们可以看到每个分类器的准确性,以及其他指标,如卡帕:
Models: lda, cart, knn, svm, rf
Number of resamples: 10
Accuracy
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
lda 0.9167 0.9375 1.0000 0.9750 1 1 0
cart 0.8333 0.9167 0.9167 0.9417 1 1 0
knn 0.8333 0.9167 1.0000 0.9583 1 1 0
svm 0.8333 0.9167 0.9167 0.9417 1 1 0
rf 0.8333 0.9167 0.9583 0.9500 1 1 0
Kappa
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
lda 0.875 0.9062 1.0000 0.9625 1 1 0
cart 0.750 0.8750 0.8750 0.9125 1 1 0
knn 0.750 0.8750 1.0000 0.9375 1 1 0
svm 0.750 0.8750 0.8750 0.9125 1 1 0
rf 0.750 0.8750 0.9375 0.9250 1 1 0
我们还可以创建模型评估结果的图表,并比较每个模型的分布和平均准确率。每种算法都有一组准确率度量,因为每种算法都被评估了 10 次(10 倍交叉验证)。
# compare accuracy of models
dotplot(results)
我们可以看到,这种情况下最准确的模型是 LDA:
虹膜数据集上机器学习算法的比较
仅 LDA 模型的结果就可以概括。
# summarize Best Model
print(fit.lda)
这很好地总结了用于训练模型的内容以及达到的平均和标准偏差(SD)准确率,特别是 97.5%的准确率+/- 4%
Linear Discriminant Analysis
120 samples
4 predictor
3 classes: 'setosa', 'versicolor', 'virginica'
No pre-processing
Resampling: Cross-Validated (10 fold)
Summary of sample sizes: 108, 108, 108, 108, 108, 108, ...
Resampling results
Accuracy Kappa Accuracy SD Kappa SD
0.975 0.9625 0.04025382 0.06038074
6.做预测
线性判别分析是最准确的模型。现在我们想了解一下我们的验证集上模型的准确性。
这将使我们对最佳模型的准确性进行独立的最终检查。保留一个验证集是很有价值的,以防在过程中出现失误,如过拟合训练集或数据泄漏。两者都会导致过于乐观的结果。
我们可以直接在验证集上运行 LDA 模型,并在混淆矩阵中总结结果。
# estimate skill of LDA on the validation dataset
predictions <- predict(fit.lda, validation)
confusionMatrix(predictions, validation$Species)
我们可以看到准确率是 100%。这是一个小的验证数据集(20%),但这个结果在我们预期的 97% +/-4%的范围内,表明我们可能有一个准确可靠的精确模型。
Confusion Matrix and Statistics
Reference
Prediction setosa versicolor virginica
setosa 10 0 0
versicolor 0 10 0
virginica 0 0 10
Overall Statistics
Accuracy : 1
95% CI : (0.8843, 1)
No Information Rate : 0.3333
P-Value [Acc > NIR] : 4.857e-15
Kappa : 1
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: setosa Class: versicolor Class: virginica
Sensitivity 1.0000 1.0000 1.0000
Specificity 1.0000 1.0000 1.0000
Pos Pred Value 1.0000 1.0000 1.0000
Neg Pred Value 1.0000 1.0000 1.0000
Prevalence 0.3333 0.3333 0.3333
Detection Rate 0.3333 0.3333 0.3333
Detection Prevalence 0.3333 0.3333 0.3333
Balanced Accuracy 1.0000 1.0000 1.0000
你可以用 R 做机器学习
完成上面的教程。最多需要 5 到 10 分钟!
不需要什么都懂。(至少现在不是)你的目标是把教程从头到尾跑一遍,得到一个结果。你不需要第一遍就明白所有的事情。边走边列出你的问题。大量使用*?函数名*帮助语法在 R 中学习你正在使用的所有函数。
你不需要知道算法是如何工作的。了解这些限制以及如何配置机器学习算法非常重要。但是关于算法的学习可以在以后进行。你需要长时间慢慢积累这些算法知识。今天,从适应平台开始。
不需要做 R 程序员。R 语言的语法可能会令人困惑。就像其他语言一样,关注函数调用(如函数())和赋值(如a<-【b】)。这会让你大受鼓舞。你是一名开发人员,你知道如何快速掌握一门语言的基础知识。开始吧,稍后再深入细节。
不需要成为机器学习专家。你可以在后面学习各种算法的好处和局限性,有很多帖子可以在后面阅读,以复习机器学习项目的步骤,以及使用交叉验证评估准确性的重要性。
那么机器学习项目中的其他步骤呢。我们没有涵盖机器学习项目的所有步骤,因为这是您的第一个项目,我们需要关注关键步骤。也就是加载数据,查看数据,评估一些算法,做一些预测。在后面的教程中,我们可以查看其他数据准备和结果改进任务。
摘要
在这篇文章中,你逐步发现了如何完成你在 r。
你发现完成一个从加载数据到做出预测的小型端到端项目是熟悉一个新平台的最佳方式。
你的下一步
你完成教程了吗?
- 完成以上教程。
- 列出你有任何问题。
- 搜索或研究答案。
记住,你可以使用*?R 中的函数名*可以获得任何函数的帮助。
你有问题吗?在下面的评论中发布它。