设为首页 收藏本站
查看: 1520|回复: 0

[经验分享] 使用Microsoft R Server进行机器学习和模型发布(2)

[复制链接]

尚未签到

发表于 2017-12-8 12:33:34 | 显示全部楼层 |阅读模式
  本文中用到的所有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":
DSC0000.png


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




  • RTVS for R Client on Windows: R 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万行记录,加载完毕后我们可以打印出来看看数据结果,包含日期,航空公司,机场,出发时间,到达时间等信息:
DSC0001.png



4. 你也可以使用rxSummary函数快速方便的生成文件汇总信息:  rxSummary(~., data = flight_mrs, blocksPerRead = 2)
DSC0002.png



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

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


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

  ROC和AUC通常用来衡量一个二元分类器的好坏。
  ROC为接收者操作特征曲线(receiver operating characteristic curve)
  AUC曲线下面积 (Area under the Curve of ROC)
  8 .在这个实例中,也提供了使用决策树Decision Tree进行分析和预测,产生的结果可以直接进行对比:
DSC0005.png




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

  如上图所示,微软为了帮助开发人员和运维人员在远端服务器端开发,调测,测试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")
DSC0007.png



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

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



  REMOTE> pause()
  > date()
  [1] "Thu May 18 22:57:02 2017"
  > resume()


  REMOTE>




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



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

library(RevoScaleR)

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-422114-1-1.html 上篇帖子: Install and Run NATS Streaming Server 下篇帖子: sql server 读取excel里的数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表