在看H2O,把阅读官方booklet和API了解到的一些东西随手记了下来,以为备忘,遂成此小文。

概述

  • H2O 是一款针对智能应用的机器学习和深度学习的开源程序集。PayPal/思科/Nielsen等等也是其使用者。
  • 它丧心病狂地提供了包括R / Python / Scala / Java / JavaScript等在内的诸多语言接口
  • 支持单机和分布式运行。
  • 算法包括:广义线性模型,朴素贝叶斯,PCA,K均值聚类等。

下载

  • 安装前需要先行安装JAVA。
  • h2o可以直接通过CRAN下载得到,但CRAN中的版本有时滞后,且在实际操作时速度慢,可以直接在官网下载安装包.
  • 既可以通过网页与H2O交互 也可以通过包括R在内的各种语言接口与H2O交互。

初始化

library(h2o)
h2o.init(ip = 'localhost', port = 54321, nthreads = -1, max_men_size = '4g')
  • 此ip和port连接了本机的服务器,不填默认也为此。
  • nthread默认值-2,表示用2个CPU核心,-1表示主机上有多少用多少,正数表示一个特定数。
  • max_mem_size定义给h2o的内存空间,一般4倍的数据大小能够获得最好的运行效果。它的值必须是1024的整数倍,最小2M,默认值是1g(32bit JAVA版本),1/4的内存大小(64bit JAVA版本).
  • 对于分布式的系统,可以用h2o.clusterInfo()来查看集群信息。

备数据

  • H2O是个独立的程序,R接口只是H2O 的一层皮,当数据被传给H2O以后,所有的数据操作都是在H2O上进行的。
  • 用H2O可以处理数以千计的factor levels。
H2O:"R,你用table秀一下这些信息"
R:"臣妾做不到啊……"
//话说我得有多无聊,大晚上编这种段子。。。
  • 圈子不同,偏要强融

    • as.data.frame()H2O->R
    • as.h2o() R->H2O
    • 一定要记得确保转换的目标具有足够大的内存空间。
    • 可以用str.H2OFrame() 查看下其中元素信息确保转换正确。

模型

监督学习

  • 广义线性模型 GLM: 返回参数与误差分布,一统possion/linear/logistic以及众多l1l1,l2l2 规则化的统计模型。
  • 分布式随机森林 DRF:返回每个预测器的重要性权值,对噪声数据鲁棒性好。
  • 梯度提升GBM:三个臭皮匠顶个诸葛亮,如今十分强大的算法。
  • 深度学习:不一定是有监督的
  • 朴素贝叶斯:常用在文本分类上。

无监督学习

  • K均值
  • 异常检测:使用深度学习的自编码器
    合起来毕业论文写完一半……

模型构建

  • 网格搜索调参

一个例子

数据导入

# Import dataset and display summary
library(h2o)
h2o.init()
airlinesURL = "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"
airlines.hex = h2o.importFile(path = airlinesURL, destination_frame = "airlines.hex")
summary(airlines.hex)

数据清洗

# View quantiles and histograms
#high_na_columns = h2o.ignoreColumns(data = airlines.hex)
quantile(x = airlines.hex$ArrDelay, na.rm = TRUE)
h2o.hist(airlines.hex$ArrDelay)# Find number of flights by airport
originFlights = h2o.group_by(data = airlines.hex, by = "Origin", nrow("Origin"),gb.control=list(na.methods="rm"))
originFlights.R = as.data.frame(originFlights)# Find number of flights per month
flightsByMonth = h2o.group_by(data = airlines.hex, by = "Month", nrow("Month"),gb.control=list(na.methods="rm"))
flightsByMonth.R = as.data.frame(flightsByMonth)# Find months with the highest cancellation ratio
which(colnames(airlines.hex)=="Cancelled")
cancellationsByMonth = h2o.group_by(data = airlines.hex, by = "Month", sum("Cancelled"),gb.control=list(na.methods="rm"))
cancellation_rate = cancellationsByMonth$sum_Cancelled/flightsByMonth$nrow_Month
rates_table = h2o.cbind(flightsByMonth$Month, cancellation_rate)
rates_table.R = as.data.frame(rates_table)# Construct test and train sets using sampling
airlines.split = h2o.splitFrame(data = airlines.hex,ratios = 0.85)
airlines.train = airlines.split[[1]]
airlines.test = airlines.split[[2]]# Display a summary using table-like functions
h2o.table(airlines.train$Cancelled)
h2o.table(airlines.test$Cancelled)

模型训练

# Set predictor and response variables
Y = "IsDepDelayed"
X = c("Origin", "Dest", "DayofMonth", "Year", "UniqueCarrier", "DayOfWeek", "Month", "DepTime", "ArrTime", "Distance")
# Define the data for the model and display the results
airlines.glm <- h2o.glm(training_frame=airlines.train, x=X, y=Y, family = "binomial", alpha = 0.5)
# View model information: training statistics, performance, important variables
summary(airlines.glm)

模型预测

# Predict using GLM model
pred = h2o.predict(object = airlines.glm, newdata = airlines.test)
# Look at summary of predictions: probability of TRUE class (p1)
summary(pred$p1)

下篇中将看心情介绍一些数据处理中的常用函数以及简单说明一些其他模型的用法。

饿了只好去睡觉……

H2O with R 简明使用手记·上篇相关推荐

  1. H2O with R 简明使用手记·下篇

    上篇链接 R中的数据操作 导入数据 myPath = "/my/file/path/" mydata.hex = h2o.importFile(path = myPath, des ...

  2. R语言学习手记 (1)

    R语言学习手记 (1) 经管的会计和财管都会学数据统计与分析R语言这门课,加上我也有点兴趣,就提前选了这门课,以下的笔记由老师上课的PPT.<R语言编程艺术>和<R语言数据科学> ...

  3. R语言︱H2o深度学习的一些R语言实践——H2o包

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...

  4. 使用R语言的正确姿势,R包干货奉献

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.在线绘图.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞 ...

  5. R用户的福音︱TensorFlow:TensorFlow的R接口

    ------------------------------------------------------------ Matt︱R语言调用深度学习架构系列引文 R语言︱H2o深度学习的一些R语言实 ...

  6. 碎片︱R语言与深度学习

    笔者:受alphago影响,想看看深度学习,但是其在R语言中的应用包可谓少之又少,更多的是在matlab和python中或者是调用.整理一下目前我看到的R语言的材料: ---------------- ...

  7. 【R 数据科学】R语言进行数据科学整理最有用的包大全

    一.数据科学工作流程 1.1 数据导入 1.2 数据整理 1.3 反复理解数据 1.4 数据可视化 1.5 数据转换 1.6 统计建模 1.7 作出推断(比如预测) 1.8 沟通交流 1.9 自动化分 ...

  8. mxnet:结合R与GPU加速深度学习

    转载于统计之都,http://cos.name/tag/dmlc/,作者陈天奇 ------------------------------------------------------------ ...

  9. sparklyr包:实现Spark与R的接口+sparklyr 0.5

    本文转载于雪晴数据网 相关内容: sparklyr包:实现Spark与R的接口,会用dplyr就能玩Spark Sparklyr与Docker的推荐系统实战 R语言︱H2o深度学习的一些R语言实践-- ...

最新文章

  1. Matlab-绘制日期图
  2. 光有面罩不是能防护的
  3. Linux日常命令使用记录
  4. 领扣(LeetCode)寻找旋转排序数组中的最小值 个人题解
  5. 小鱼便签_同样是写便签,这样更酷
  6. 举例说明计算机在六个方面的应用,第六章 计算机应用基础简答题答案.doc
  7. java 多线程 8 : 线程通信
  8. ROS 教程之 navigation : 用 move_base 控制自己的机器人(1)
  9. 会计基础第二次模拟题(3)
  10. God of War Ascension / 战神4, 再一次迎来新导演!
  11. Windows XP无线零配置服务
  12. C语言:使用函数统计指定数字的个数
  13. 「POI2012」约会 Rendezvous
  14. (14)树莓派B+使用L298N驱动控制四驱车并实现一个简单的web控制端
  15. 如何让3ds Max 2016导入smd文件
  16. ad 新建一个componen的类_Glyphs智能母件:字体设计师的好帮手 Glyphs smart Component: a good helper font designer...
  17. mysql 聚簇索引和非聚簇索引
  18. Oracle sql创建序列sequence
  19. python爬虫登录12306失败_使用python爬虫模拟12306登录方法
  20. html怎么写点击后弹出提示框 是否确认,基于JS+HTML实现弹窗提示是否确认提交功能...

热门文章

  1. FLIP:Scaling Language-Image Pre-training via Masking
  2. win7添加ftp到计算机,技术编辑帮你win7系统FTP地址添加到资源管理器的收藏夹下的设置步骤...
  3. MAC电脑 系统 恢复出厂设置
  4. 任正非解释华为鸿蒙系统,比Android/iOS还要快,看任正非怎么说华为鸿蒙系统
  5. 解决gitlab-runner一直处于等待中
  6. Testin发布众测平台 助开发者发现质量缺陷建立质量体系
  7. JVM内存模型(一篇足以)
  8. bde oracle 商友的流程_怎么用BDE连接Oracle?(100分)
  9. 24. 两两交换链表中的节点-两两反转链表-LeetCode
  10. Python数据分析-时间序列预测法