R 语言模块

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

本文列出了 机器学习 Studio (经典) 支持运行 R 代码的模块。 通过这些模块,可以更轻松地在生产环境中发布 R 模型,并使用 R 语言社区的经验来解决实际问题。

注意

适用于:机器学习 Studio (经典) 应用

可在 Azure 机器学习设计器中获取类似的拖放模块。

本文还介绍了在 Machine Language Studio (经典) R 的一些一般要求,并列出了已知问题和提示。

模块列表

" R 语言模块" 类别包括以下模块:

使用 R 时的要求

在 机器学习 Studio (经典) 中使用 R 脚本之前,请遵循以下要求:

  • 如果导入的数据使用 CSV 或其他格式,则不能直接从 R 代码读取 CSV 格式的数据。 相反, 在将数据用作 R 模块的输入之前,请使用"转换为数据集"来准备数据。

  • 将任何机器学习数据集作为输入附加到 R 模块时,该数据集将自动作为数据帧加载到 R 工作区中,并包含变量名称数据集

    但是,可以定义其他数据帧,或更改 R 脚本中默认数据集变量的名称。

  • R 模块在专用工作区中受保护且隔离的环境中运行。 在工作区中,你可以创建多个模块使用的数据框架和变量。

    但是,无法从不同的工作区加载 R 数据帧,也不能读取在不同工作区中创建的变量,即使该工作区是在 Azure 会话中打开的。 此外,不能使用具有 Java 依赖项或需要直接网络访问的模块。

R 评分任务的优化

机器学习 Studio (工作区和工作区) R 的实现包括两个主要组件。 一个组件协调脚本执行,另一个组件提供高速数据访问和评分。 评分组件经过优化,可增强可伸缩性和性能。

因此,机器学习 Studio (经典) 中的 R 工作区还支持两种类型的评分任务,每个任务都针对不同的要求进行了优化。 生成试验时,通常使用按文件评分。 在 Web 服务中评分时, (RRS) 请求响应服务进行快速评分。

R 包和版本支持

机器学习 Studio (经典) 包括 500 多个最常用的 R 包。 可以选择的 R 包取决于为试验选择的 R 版本:

  • CRAN R
  • Microsoft R Open (MRO 3.2.2 或 MRO 3.4.4)

每当创建试验时,都必须为试验中所有模块选择一个要运行的 R 版本。

每个版本的包列表

有关当前在 机器学习 中支持的包的列表,请参阅 R Packages supported by 机器学习

还可以将以下代码添加到试验中的 执行 R 脚本 模块,并运行该模块获取包含包名称和版本的数据集。 请务必在模块属性中设置 R 版本,为预期环境生成正确的列表。

data.set <- data.frame(installed.packages())
maml.mapOutputPort("data.set")

重要

Machine Language Studio 中支持的包 (经典) 频繁更改。 如果对 R 包是否受支持有任何疑问,请使用提供的 R 代码示例获取当前环境中包的完整列表。

使用 R 语言扩展试验

通过使用自定义 R 脚本或通过添加 R 程序包,您有多种方法来扩展试验。 下面是一些入门建议:

  • 使用 R 代码执行自定义数学运算。 例如,有 R 包可用于解微分方程式、生成随机数字或运行 Monte Carlo 模拟。

  • 为数据应用自定义转换。 例如,可以使用 R 包对时序数据执行内插,或执行语言分析。

  • 使用不同的数据源。 R 脚本模块支持一组额外的输入,这些输入可以包含压缩格式的数据文件。 可以使用压缩数据文件以及针对此类数据源设计的 R 包,将分层数据平展为平面数据表。 还可使用这些格式从 Excel和其他文件格式读取数据。

  • 使用自定义指标进行评估。 例如,可以导入 R 包,然后应用其指标,而不是使用 Evaluate 中提供的函数。

以下示例演示了如何在试验中安装新包和使用自定义 R 代码的整个过程。

使用 R 拆分列

有时,数据需要进行大量的操作才能提取特征。 假设你有一个文本文件,其中包含一个 ID,后跟值和备注,全部用空格分隔。 或者,假设文本文件包含 Machine Language Studio 不支持的字符 (经典) 。

有几个 R 包为此类任务提供专用函数。 splitstackshape 库包包含多个有用的函数,用于拆分多个列,即使每列具有不同的分隔符。

下面的示例演示如何安装所需的包并拆分列。 将此代码添加到执行 R 脚本模块

#install dependent packages  
install.packages("src/concat.split.multiple/data.table_1.9.2.zip", lib=".", repos = NULL, verbose = TRUE)  
(success.data.table <- library("data.table", lib.loc = ".", logical.return = TRUE, verbose = TRUE))  
  
install.packages("src/concat.split.multiple/plyr_1.8.1.zip", lib=".", repos = NULL, verbose = TRUE)  
(success.plyr <- library("plyr", lib.loc = ".", logical.return = TRUE, verbose = TRUE))  
  
install.packages("src/concat.split.multiple/Rcpp_0.11.2.zip", lib=".", repos = NULL, verbose = TRUE)  
(success.Rcpp <- library("Rcpp", lib.loc = ".", logical.return = TRUE, verbose = TRUE))  
  
install.packages("src/concat.split.multiple/reshape2_1.4.zip", lib=".", repos = NULL, verbose = TRUE)  
(success.reshape2 <- library("reshape2", lib.loc = ".", logical.return = TRUE, verbose = TRUE))  
  
#install actual packages  
install.packages("src/concat.split.multiple/splitstackshape_1.2.0.zip", lib=".", repos = NULL, verbose = TRUE)  
(success.splitstackshape <- library("splitstackshape", lib.loc = ".", logical.return = TRUE, verbose = TRUE))  
  
#Load installed library  
library(splitstackshape)  
  
#Use library method to split & concat  
data <- concat.split.multiple(maml.mapInputPort(1), c("TermsAcceptedUserClientIPAddress", "EmailAddress"), c(".", "@"))  
  
#Print column names to console  
colnames(data)  
  
#Redirect data to output port  
maml.mapOutputPort("data")  

其他资源

从介绍如何生成自定义 R 模块的本教程开始:

本文详细介绍两个评分引擎之间的差异,并说明如何在将试验部署为 Web 服务时选择评分方法:

本文中的此Azure AI 库演示如何创建自定义 R 模块,用于训练、评分和评估:

本文在 R-用户上发布,演示如何在 机器学习:

有关 R 的更多帮助

此站点提供按关键字搜索的包的分类列表:

若要获取其他 R 代码示例以及 R 及其应用程序的相关帮助,请参阅以下资源:

另请参阅