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

上篇链接

R中的数据操作

导入数据

myPath = "/my/file/path/"
mydata.hex = h2o.importFile(path = myPath, destination_frame = "mydata.hex")

.hex 文件是R中对H2O中数据的一个引用,类似一个路标,凭此可以在H2O中找到对应的数据去操作。
h2o.uploadFile() 还可以将数据上传到H2O云端。

数据操作

函数名 功能
h2o.anyFactor(mydata.hex) 判断是否包含因子
mydata.hex[,a_column_num]<-as.factor(mydata.hex[,a_column_num]) 将一列的整行数据转换成无排序的因子
mydata.R<-as.data.frame(mydata.hex) 将H2O数据转换成R的数据框格式,滞后可以用R中函数操作,R处理大量数据的能力不如H2O,所以需要确保转换的数据量R可以承受
mydata.hex<-as.h2o(mydata.R,destination_frame="mydata.hex") as.data.frame() 的逆过程
mydata.hex<-h2o.assign(data=mydata.hex,key = "myNewName") 重命名,函数将保存新的数据集,对此数据集操作不会影响原来的数据,可以用h2o.ls() 查看key
colnames/names(mydata.hex) 显示列名
min/max(mydata.hex$AGE) 最小/最大值
mydata.qs<-quantile(mydata.hex$PSA, probs = (1:10)/10) 分位数
summary(mydata.hex) 类似R中同名函数
h2o.table(mydata.hex[,c("AGE","RACE")]) To summarize data, H2O很能装,可以用table处理超过R能力的数据
runif(mydata.hex) 在数据中添加一列随机数,可以用来切分数据,但效果不如h2o.spiltFrame() 快且稳定
mydata.split<-h2o.splitFrame(data = mydata.hex, ratios= 0.75); mydata.train <- mydata.split[[1]]; mydata.test <- mydata.split[[2]]; 切分数据
mydata.hex <- h2o.getFrame(id = "mydata.hex") 得到H2O中的数据引用,也就是我们前面重命名中设置的Key
my.model <- h2o.getModel(model_id="XXXX") 获得H2O中的模型
h2o.rm(c("mydata.train","mydata.test")) 删除h2o中的对象
simpleFun <- function(x) {2*x+5} calculated<-simpleFun(mydata.hex[,"AGE"]) 可以直接使用R函数

运行模型

梯度提升模型 GBM

x 是特征向量, y 是整数或者类别

mydata.gbm <- h2o.gbm(y = 1, x = 2:5,training_frame = mydata.hex, ntrees = 10,max_depth = 3, min_rows = 2, learn_rate = 0.2, distribution= "gaussian")

看训练过程记录: mydata.gbm@model$scoring_history, 要作分类,distribution改为multinomial

广义线性模型 GLM

H2O用弹性网络惩罚拟合模型,拟合是分布式的,非常快,对于几千个非零参数的预测器效果好。

mydata.glm <- h2o.glm(y = "CAPSULE", x = c("AGE","RACE","PSA","DCAPS"),training_frame = mydata.hex, family = "binomial",nfolds = 10, alpha = 0.5)

K均值聚类

使用好方便,可以先训练K均值分类器,然后再用预测函数得到每个数据点的分类情况。

mydata.kmeans = h2o.kmeans(training_frame = mydata.hex,  k = 3, x = 1:4)
mydata.clusters = h2o.predict(object = mydata.kmeans, newdata = mydata.hex)

预测

mydata.fit = h2o.predict(object = mydata.glm, newdata = mynewdata.hex)

你可能感兴趣的:(Machine,Learning)