我们必须阅读大量有关开发分析模型和从数据块中找到信息/见解的文献。通常,此活动可以在您的系统上独立运行,而无需强迫与其他计算机进行交互。但是,随着企业面临日益激烈的竞争,保持敬业度过的成本以及已实现利润的负斜率,产品化已不是什么时髦的词汇,尚待时日。它正在发生,并且将继续存在。福布斯》的这篇文章重点介绍了Salesforce和Uber等一些巨头如何利用它。
作为数据分析师/科学家,很可能希望您在集群或推荐解决方案之外创建自助服务产品或Web应用程序。如果您是产品经理,希望通过Amazon,Spotify和Netflix等推荐功能来扩展现有产品,则必须将统计模型链接到您的应用程序。
基于这种背景和认真,让我向您介绍API –应用程序流程接口。API是网关和通道,两个不同的应用程序/代码/平台/工具/软件可以通过它们相互进行对话和交换信息。API是从您的计算机调用另一台计算机上的函数的工具。我知道,如果您是应用程序开发人员,那么阅读此书到现在已经带来了熟悉的微笑。是的,API对开发人员而言并不是什么新鲜事物。但是,对于崭露头角的数据科学家来说,可能是这样。不知不觉中,如果您已经将python / R代码与任何数据库连接来直接提取数据,或者已将Tableau仪表板设置为自动刷新Google Analytics(分析)数据,则已经使用过。像URL一样用网页或HTML响应,而API则通过发送数据或更改数据库中的数据来响应。
R和Python都提供了多个预先存在的API软件包,例如R平台的googleAnalyticsR和RSiteCatalyst以及Python的googleanalytics和omn??iture,以通过连接到各自的工具来帮助导入数据。但是,对于自定义要求,您将必须编写一个。Rserve,rApache和Plumber是R中的一些软件包,可用于自定义API。在本文中,我将专注于通过Plumber在R中创建API ,然后简要介绍Docker设置。
水管工
在R中,可以使用Plumber软件包创建API。Plumber允许您通过仅以特殊注释(以#*或#'开头)修饰现有R代码来创建API。
以下代码将分为两部分。首先是模型的创建,其次是端点的创建(端点是生成对API请求的响应的逻辑)。@ get,@ post,@ put,@ delete,@ head是5个管道工注释,它们指示如果服务器收到带有相应路径的HTTP请求,则调用R函数。
示例代码框架:
注意:模型创建可以单独保存在.rds文件中,可以在预测代码文件中调用该文件,但是我将它们组合在一起。
-------------------------------------------------- -------------------------------------
#将文件另存为sample_model.R #在虹膜数据集上创建回归模型
irisData <-iris reg_model <
-lm(Petal.Length?Petal.Width,data = irisData)
#现在已经创建了模型,通过基于浏览器的“花瓣宽度”输入。这也称为定义“端点”。由于我们正在接受输入,因此GET将很有用。
#* @get / petal_length_prediction
Forecast_length < -function (width_of_petal){
#转换为数字
width_of_petal <-as.numeric(width_of_petal)
#预测的输入数据帧
input_data <-data.frame(Petal.Width = as.numeric(width_of_petal) ))
#预测
Forecast(model,input_data)
}
-------------------------------------------------- -------------------------------------
对plumb()函数使用一个单独的代码文件,该文件会将先前的R文件sample_model.R转换为service。此代码将接受HTTP请求并将其转换为可执行的R代码。
-------------------------------------------------- -------------------------------------
#将文件另存为plumb.R
图书馆(水管工)
new_plumb <-plumb(“ sample_model.R”)
#Port 80是计算机从中发送/接收基于Web客户端的通信,来自Web服务器的消息以及发送/接收HTML页面或数据的默认端口。
#0.0.0.0是“没有特定地址”的占位符。在服务器的上下文中,这意味着本地计算机上的所有IPv4地址
#在端口80上启动API服务
new_plumb $ run(端口= 80,主机=“ 0.0.0.0”)
-------------------------------------------------- -------------------------------------
运行plumb.R文件后,您应该看到
>`启动服务器以监听端口80`
现在打开浏览器,并访问API,点击:
http://127.0.0.1/petal_length_prediction?width_of_petal = 1
瞧!
浏览器应显示“ 3.3135”作为预测的花瓣长度。
这种方法可以帮助您在R中创建API,但是除非有兴趣将您的系统用作服务器,始终保持80端口开放并允许所有传入请求,否则该方法将无用。
因此,输入Docker:将有助于将此代码托管在服务器计算机上。
DOCKER
Docker的徽标很好地概述了它的含义。将服务器计算机视为商船。商船有望运送成千上万种产品。容器通过带来统一性消除了这种复杂性。从外部看,它们都是相同的,以提供统一的存储和运输,但是在内部,它们都承载不同的产品并达到各自的目的。Docker是容器盒的同义词。就像商船一样,现在Linux服务器可以托管数十个应用程序,而不管其技术要求如何。
“ Docker是一种虚拟化工具,可帮助开发人员轻松地打包,运输和运行任何应用程序,使其成为轻便,可移植,自给自足的容器,几乎可以在任何地方运行。” 它是软件的标准单元,可以打包代码及其所有依赖项(类,库,CSS等),因此该应用程序可以在计算环境中快速可靠地运行,并可以传输到另一个环境。
要创建Docker容器,需要Docker映像。按照Techtarget的要求,Docker映像包含将应用程序作为容器运行所需的元素-例如代码,配置文件,环境变量,库和运行时间。如果将映像部署到Docker环境,则可以将其作为Docker容器执行。Docker run命令将根据给定的映像创建一个容器。Docker映像也是可重用的资产,可以部署在任何主机上。
为了在创建Docker的道路上启动,首先必须将其安装在系统上。使用以下mac和Windows链接进行安装。从初学者开始,我将专注于使用已经创建并管理的Docker映像来创建容器。您可以在此找到一些预配置的Docker映像,这些映像最适合我们的任务-Rocker项目和hub.docker。在这里,r-ver和trestletech / plumber是很好的开始。我们将使用的图像是trestletech /水管工。此图像已预安装了管道工。因此,即使您的系统上没有预装R,也不必担心。
因此,一旦安装了Docker,请打开PowerShell(windows)并运行以下命令。因此,一旦安装了Docker,请打开PowerShell(windows)并运行以下命令
-------------------------------------------------- -------------------------------------
#此命令将创建一个容器
docker pull tr??estletech / plumber
-------------------------------------------------- -------------------------------------
现在已经创建了容器,我们将需要复制R文件,设置API控制器并创建与端口80的桥接。因此,为了补充此Docker映像,我们将需要Dockerfile。Dockerfile是一个文本文档,其中包含用户可以在命令行上调用以组装映像的所有命令。
-------------------------------------------------- -------------------------------------
#example Dockerfile
FROM trestletech / plumber #指定基本容器
RUN R -e'install.packages (c(“ package_name”))'#如果需要包含其他任何软件包,请#
在指定目录中复制分析模型并评分R脚本/ newdir
运行mkdir / newdir
COPY sample_model.R / newdir
COPY plumb.r / newdir
WORKDIR / newdir
#现在公开端口80进行通信
EXPOSE 80
#现在我们指定启动容器时发生的情况。因此,我们将plumb.r文件设置为容器ENTRYPOINT [“ Rscript”,“ plumb.r”] 的入口点
-------------------------------------------------- -------------------------------------
要使用此Dockerfile构建映像,请在Powershell中输入以下命令。请参阅此页面以获取有关Dockerfile构建的更多信息
-------------------------------------------------- -------------------------------------
docker build -t demoplumb。
#(这里。表示当前目录– Dockerfile的存储目录)
-------------------------------------------------- -------------------------------------
该过程完成后,可以通过以下命令运行容器:
-------------------------------------------------- -------------------------------------
泊坞窗运行--rm -p 80:80 demoplumb
-------------------------------------------------- -------------------------------------
以下命令停止容器
-------------------------------------------------- -------------------------------------
码头工人停止$(docker ps -a -q)
-------------------------------------------------- -------------------------------------
如果要测试o / p,请转到浏览器窗口并键入
http://127.0.0.1/petal_length_prediction?width_of_petal = 1
预期的o / p应为'3.3135',作为预测的花瓣长度。
即使到现在,整个设置对于您的计算机来说也是本地的。如果您希望互联网上的每个人都访问您的API,则必须在Web服务器上安装此Dockers容器,例如AWS-Amazon Elastic Container Service(ECS)或Google-Google Kubernetes Engine(GKE)。
关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!