使用Microsoft R Server进行机器学习和模型发布(2)

本文中用到的所有demo我都已经发布到了Github,需要的同学可以自行下载:

https://github.com/kingliantop/azurelabs/tree/master/RServerDemo

Microsoft R客户端的安装

Microsoft R客户端是一个免费的用于数据科学分析的高性能的工具。他基于开源的R语言构建,所以你可以使用任何开源的R packages,另外R client也支持微软的强大的ScaleR语言,包括使用mrsdeploy package远程执行。

1. 首先,下载安装Microsoft R client for windows,介绍地址如下:

https://msdn.microsoft.com/en-us/microsoft-r/r-client-install-windows

下载安装地址:http://aka.ms/rclient/

2. 当然,如果你使用Linux,也可以下载安装R client for Linux

https://msdn.microsoft.com/en-us/microsoft-r/r-client-install-linux

下载地址: http://aka.ms/rclientlinux.

3. 在安装过程中,如果你需要运行一些预先训练的模型,记得勾选"pre-trained models":

R IDE的安装

安装了Microsoft R 客户端以后,你可以选择安装你喜欢的R IDE安装,例如带有R插件的Visual Studio,或者RStudio

  • RTVS for R Client on WindowsR Tools for Visual Studio (RTVS) 是一个集成开发环境,你可以使用Visual Studio免费版本,R Tools也支持,安装完成后后,如果你的机器上有多个R环境,可以配置Microsoft R作为默认客户端 .
  • RStudio for R Client支持 Windows or Linux平台, RStudio 是一个非常流行的R IDE. 在安装完RStudio后他会自己查找R客户端,但如果你有多个R环境,可以指定Microsoft R作为 C:\Program Files\Microsoft\R Client\R_SERVER\bin\x64 作为客户端路径

在本例中,我们使用RStudio免费版,下载RStudio然后安装:https://www.rstudio.com/

使用Microsoft R进行机器学习

1. 在这个测试案例中,我们用R语言来预测航班的延迟。测试数据集中有天气数据,航班数据,我们可以用这些历史数据来构建模型,预测是否在未来的天气情况下,航班将会延迟。这个案例是一个机器学习中的分类问题,属于监管学习,二分法中,结果0认为航班按时起飞,结果1代表航班延迟超过15分钟起飞。

2. 在我的Github上下载myfight.r, 并且在RStudio中打开,我们首先导入和加载测试数据,测试数据放在Microsoft的RTVS仓库下,选中需要执行的段,使用Ctrl+回车即可执行:

github <- "https://raw.githubusercontent.com/Microsoft/RTVS-docs/master/examples/MRS_and_Machine_Learning/Datasets/"

inputFileFlightURL <- paste0(github, "Flight_Delays_Sample.csv")

inputFileWeatherURL <- paste0(github, "Weather_Sample.csv")

#Create a temporary directory to store the intermediate XDF files.

td <- tempdir()

outFileFlight <- paste0(td, "/flight.xdf")

outFileWeather <- paste0(td, "/weather.xdf")

outFileOrigin <- paste0(td, "/originData.xdf")

outFileDest <- paste0(td, "/destData.xdf")

outFileFinal <- paste0(td, "/finalData.xdf")

#Import the flight data.

flight_mrs <- rxImport(

inData = inputFileFlightURL, outFile = outFileFlight,

missingValueString = "M", stringsAsFactors = FALSE,

# Remove columns that are possible target leakers from the flight data.

varsToDrop = c("DepDelay", "DepDel15", "ArrDelay", "Cancelled", "Year"),

# Define "Carrier" as categorical.

colInfo = list(Carrier = list(type = "factor")),

# Round down scheduled departure time to full hour.

transforms = list(CRSDepTime = floor(CRSDepTime/100)),

overwrite = TRUE

)

3. 总共有大约74万行记录,加载完毕后我们可以打印出来看看数据结果,包含日期,航空公司,机场,出发时间,到达时间等信息:

4. 你也可以使用rxSummary函数快速方便的生成文件汇总信息:

rxSummary(~., data = flight_mrs, blocksPerRead = 2)

5. 后面以类似的方式导入天气数据,并进行数据预处理,在此不再赘述。然后将航班数据和天气数据进行合并关联,并进行数据的清晰,转换等操作,为下一步的分析做准备。

6. 分割数据,80%用来做机器学习进行寻来你,20%用来做测试,进行训练。

7. 然后使用逻辑回归模型算法进行预测,最后使用新的数据集合进行验证,计算ROC和AUC来评估算法的好坏并用可视化的方式进行展现:

ROC和AUC通常用来衡量一个二元分类器的好坏。

ROC为接收者操作特征曲线(receiver operating characteristic curve)

AUC曲线下面积 (Area under the Curve of ROC)

8 .在这个实例中,也提供了使用决策树Decision Tree进行分析和预测,产生的结果可以直接进行对比:

在服务器端运行和调试你的R脚本

一般情况下,比较小的数据量我们本地的笔记本及开发环境就可以,但一旦数据量比较大,运算周期比较长,我们怎么开发测试学习模型昵?如果你有一个远端的R服务器,运算能力比较强,那么利用微软提供的免费的mrsdeploy扩展包,就可以快速的将你的R脚本再远端执行。

如上图所示,微软为了帮助开发人员和运维人员在远端服务器端开发,调测,测试R脚本,提供了一个叫做mrsdeploy 的扩展包,借助于这个包,你可以将你的代码在远端执行和部署。Mrsdeploy提供了两种连接云端R服务器的过程,一个是基于服务器用户名密码的认证的remoteLogin() ,另外一个使用Azure AD来做认证的remoteLoginAAD(). 基本语法如下:

remoteLogin( https://YourHostEndpoint, session = TRUE, diff = TRUE, commandline = TRUE username = NULL, password = NULL, )

remoteLoginAAD( endpoint, authuri = https://login.windows.net, tenantid = "<AAD_DOMAIN>", clientid = "<NATIVE_APP_CLIENT_ID>", resource = "<WEB_APP_CLIENT_ID>", session = TRUE, diff = TRUE, commandline = TRUE )

本例中我们使用remoteLogin来登陆远端服务,用户名密码就是你在前文中用Admin Utility创建的用户名和密码。

1. 使用remoteLogin登陆,端口是12800,用户名密码是Admin Utility创建的本地管理员密码,例如我的登陆函数如下,登陆成功后remoteLogin会自动对比本地和远端R package并给出差异报告:

remoteLogin("42.159.238.196:12800",username="admin",password="XXXXXXXX")

2. 连接成功后,可以看到提示符就变变成"remote",即当前是在远端的R server操作,可以做个简单的测试,可以看到一切运行正常:

3. 使用pause()和resume()函数即可在本地模式和远端模式之间切换,pause从远端模式切换回本地模式,resume从本地切换回远端模式:


REMOTE> pause()

> date()

[1] "Thu May 18 22:57:02 2017"

> resume()

 

REMOTE>

4. 在正式执行脚本之前,你会看到提示,本地的packages和服务器端的packages不一致,如果你的一些脚本需要这些package,可以使用install.packages进行安装:

5. 比较重要的一点是,如果你连接到远端服务器,执行一些脚本,会发现所有ScaleR相关的脚本都会执行有问题,这是因为默认情况下,mrsdeploy和RevoScaleR库并没有被加载,那么你可能需要手工加载一下:

library(mrsdeploy)

library(RevoScaleR)

6. 对于上例中测试过的flight例子,我们可以在远端之前创建的Microsoft R Server上执行学习和运算:

时间: 2024-10-10 10:01:01

使用Microsoft R Server进行机器学习和模型发布(2)的相关文章

突破R内存限制的企业级大数据挖掘利器:Microsoft R Server 快速上手

R语言是一款非常优秀的数据挖掘工具,拥有顶尖的数据处理.数据挖掘课数据可视化.是数据从业者必备的一把利器.但是其基于内存的诟病也一直被人所嫌弃,虽然这几年很多优秀的扩展包极大提升了R语言的性能,但是在面对企业级大数据挖掘面前,也会显得力不从心. 现在我们也不用担心R语言这个问题了,自从微软收购了商业版R以后,就进行了很多的整合和优化,之前只面向高校学生免费试用,现在,我们企业界的数据从业者也可以免费下载Microsoft R Server ,利用MRS处理大数据,MRS对开源R100%兼容,能充

转:访问 Microsoft SQL Server 元数据的三种方法

上海微创软件有限公司 肖桂东 适用读者:Microsoft SQL Server 中.高级用户 元数据简介 元数据 (metadata) 最常见的定义为"有关数据的结构数据",或者再简单一点就是"关于数据的信息",日常生活中的图例.图书馆目录卡和名片等都可以看作是元数据.在关系型数据库管理系统 (DBMS) 中,元数据描述了数据的结构和意义.比如在管理.维护 SQL Server 或者是开发数据库应用程序的时候,我们经常要获取一些涉及到数据库架构的信息:某个数据库中

Microsoft SQL Server 自定义函数整理大全

01.去除字符串中的html标记及标记中的内容 [叶子函数分享一]去除字符串中的html标记及标记中的内容 --1.创建函数 create function [dbo].[clearhtml] (@maco varchar(8000)) returns varchar(8000) as begin     declare @i int     while 1 = 1     begin        set @i=len(@maco)        set @maco=replace(@maco

Microsoft SQL Server 自定义函数整理大全(下)

34.字符串转成16进制函数 /**************************** 字符串转成16进制 作者:不得闲 QQ: 75492895 Email: [email protected] ****************************/ --创建函数(suiyunonghen(不得闲)) Create Function VarCharToHex(@Str Varchar(400)) returns varchar(800) as begin declare @i int,@

无法创建链接服务器 &quot;xxx&quot; 的 OLE DB 访问接口 &quot;OraOLEDB.Oracle&quot; 的实例。 (Microsoft SQL Server,错误: 7302)

出现这个错误,有两个最常见的两个原因 1.注册表 <1>按下WIN+R,打开“运行”窗口,输入“regedit”,回车 <2>在打开的注册表编辑器的左侧按如下路径依次展开: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers 在Providers下面一般来说是看不到OraOLEDB.Oracle这一项的,于是新建这一项. 在Providers上面右键选择New -> Key,

Azure机器学习入门(四)模型发布为Web服务

接Azure机器学习(三)创建Azure机器学习实验,下一步便是真正地将Azure机器学习的预测模型发布为Web服务.要启用Web服务发布任务,首先点击底端导航栏的运行即"Run"按钮运行新的收入预测实验.实验开始运行之后,底端导航栏的发布Web服务即"Publish Web Service"按钮就变为有效,如下图所示. 图 即将发布Web服务地Azure 机器学习实验 此时,点击设计模式下底端导航栏的发布Web服务即"Publish Web Servic

Microsoft SQL Server 数据库

1. master 数据库 master 数据库记录 SQL Server 系统的所有系统级别信息.它记录所有的登录帐户和系统配置设置.master 数据库是这样一个数据库,它记录所有其它的数据库,其中包括数据库文件的位置.master 数据库记录 SQL Server 的初始化信息,它始终有一个可用的最新 master 数据库备份. 2. tempdb 数据库 tempdb 数据库保存所有的临时表和临时存储过程.它还满足任何其它的临时存储要求,例如存储 SQL Server 生成的工作表.te

Microsoft SQL Server on Linux 踩坑指南

微软用 SQL Server 在 2016 年的时候搞了一个大新闻,宣传 Microsoft ?? Linux 打得一众软粉措手不及.但是这还是好事情,Linux 上也有好用的 SQL Server 啦,但是从预览版开始 SQL Server on Linux 的配置要求蜜汁高,大部分云主机用户都望而却步.另外,SQL Server on Linux 对于文件系统有限制,仅支持 Ext3 以及 XFS 文件格式系统,对于某些云服务商默认提供的云镜像限制 Ext3 文件格式系统的用户而言也是足够让

无需密码攻击 Microsoft SQL Server

最近的一次渗透测试里,在我们捕获的一些数据包中发现了一些未经加密的 Microsoft SQL Server(MSSQL) 流量.起初,我们认为这样就可以直接嗅探到认证凭证,然而,MSSQL 加密了认证的流量,这就意味着我们需要先解密才能获取到认证凭证.如果安装的是一个自签名证书,就很容易进行破解. 不幸的是,破解 MSSQL 加密不在授权范围之内,我们不得不先放下好奇心完成对客户的渗透测试.不过,因为心里总想着一件事以至于无法继续正常进行工作,我们可以在没有用户凭证的情况下攻击 SQL Ser