上篇链接
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函数 |
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
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均值分类器,然后再用预测函数得到每个数据点的分类情况。
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)