标签: h2o

如何在R中的二进制h2o GBM中为每个类获得不同的变量重要性?

我正在尝试探索使用GBM h2o进行分类问题来替换逻辑回归(GLM).我的数据中的非线性和相互作用使我认为GBM更合适.

我已经运行了基线GBM(见下文),并将AUC与逻辑回归的AUC进行了比较.GBM的表现要好得多.

在经典线性逻辑回归中,人们将能够看到每个预测变量(x)对结果变量(y)的方向和影响.

现在,我想以同样的方式评估估算GBM的变量重要性.

如何获得每个(两个)类的变量重要性?

我知道变量重要性与逻辑回归中的估计系数不同,但它有助于我理解哪个预测因子会影响哪个类.

其他人提出了类似的问题,但提供的答案对H2O对象不起作用.

任何帮助深表感谢.

example.gbm <- h2o.gbm(
  x = c("list of predictors"), 
  y = "binary response variable", 
  training_frame = data, 
  max_runtime_secs = 1800, 
  nfolds=5,
  stopping_metric = "AUC")
Run Code Online (Sandbox Code Playgroud)

r classification machine-learning gbm h2o

22
推荐指数
1
解决办法
1137
查看次数

如何将r数据帧转换为h2o对象

我是R和H2O的新手,我试图找到一种方法将r数据帧转换为h2o对象.我花了一些时间研究如何做到这一点,没有运气.其他方式是可能的,并记录如下.

prosPath = system.file("extdata", "prostate.csv", package="h2o")
prostate.hex = h2o.importFile(localH2O, path = prosPath)
prostate.data.frame <- as.data.frame(prostate.hex)
Run Code Online (Sandbox Code Playgroud)

但我想要的是完全相反的.我想将r"prostate.data.frame"数据对象转换为名为"prostate.hex"的h2o对象.提前致谢.

r machine-learning bigdata dataframe h2o

18
推荐指数
3
解决办法
2万
查看次数

阅读100,000 .dat.gz文件的最快方式

我有几十万个非常小的.dat.gz文件,我想以最有效的方式读入R.我在文件中读取然后立即聚合并丢弃数据,因此我不担心在接近流程结束时管理内存.我只是想加快瓶颈,这恰好是解压缩和读取数据.

每个数据集由366行和17列组成.这是我目前所做的可重复的例子:

构建可重现的数据:

require(data.table)

# Make dir
system("mkdir practice")

# Function to create data
create_write_data <- function(file.nm) {
  dt <- data.table(Day=0:365)
  dt[, (paste0("V", 1:17)) := lapply(1:17, function(x) rnorm(n=366))]
  write.table(dt, paste0("./practice/",file.nm), row.names=FALSE, sep="\t", quote=FALSE)
  system(paste0("gzip ./practice/", file.nm))    
}
Run Code Online (Sandbox Code Playgroud)

以下是代码申请:

# Apply function to create 10 fake zipped data.frames (550 kb on disk)
tmp <- lapply(paste0("dt", 1:10,".dat"), function(x) create_write_data(x))
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我最有效的代码来读取数据:

# Function to read in files as fast as possible
read_Fast <- function(path.gz) {
  system(paste0("gzip -d ", path.gz)) # Unzip …
Run Code Online (Sandbox Code Playgroud)

performance r data.table h2o

12
推荐指数
2
解决办法
3975
查看次数

LIM中对H2o建模的实现

我想在R中使用h2o(深度学习)创建的模型上实现LIME.为了使用模型中的数据,我创建了h2oFrames并将其转换回数据帧,然后在LIME中使用它(lime函数,因为LIME的解释函数可以'识别h2oFrame).在这里,我可以运行该功能

下一步是对测试数据使用explain函数来生成解释.这里R抛出了使用数据帧和h2oFrame的错误.

这是使用数据帧时生成的错误:

Error in chk.H2OFrame(x) : must be an H2OFrame
Run Code Online (Sandbox Code Playgroud)

这是使用h2oframe时产生的错误:

Error in UseMethod("permute_cases") : 
  no applicable method for 'permute_cases' applied to an object of class "H2OFrame"
Run Code Online (Sandbox Code Playgroud)
if(!require(pacman))  install.packages("pacman")
pacman::p_load(h2o, lime, data.table, e1071)

data(iris)
h2o.init( nthreads = -1 )
h2o.no_progress()

# Split up the data set
iris <- as.h2o(iris)

split <- h2o.splitFrame( iris, c(0.6, 0.2), seed = 1234 )
iris_train <- h2o.assign( split[[1]], "train" ) # 60%
iris_valid <- h2o.assign( split[[2]], "valid" ) # 20%
iris_test  <- …
Run Code Online (Sandbox Code Playgroud)

r dataframe h2o

12
推荐指数
1
解决办法
1833
查看次数

R:从h2o.randomForest()和h2o.gbm()绘制树

寻找一种有效的方法在rstudio,H2O的Flow或h2o的RF和GBM模型的本地html页面中绘制树,类似于下面链接中的图像.具体来说,如何通过解析h2o.download_pojo(rf1)或h2o.download_pojo(gbm1)来为下面的代码生成的对象(拟合模型)rf1和gbm2绘制树?

http://i.stack.imgur.com/3OWx1.png

# # The following two commands remove any previously installed H2O packages for R.
# if ("package:h2o" %in% search()) { detach("package:h2o", unload=TRUE) }
# if ("h2o" %in% rownames(installed.packages())) { remove.packages("h2o") }

# # Next, we download packages that H2O depends on.
# pkgs <- c("methods","statmod","stats","graphics","RCurl","jsonlite","tools","utils")
# for (pkg in pkgs) {
#   if (! (pkg %in% rownames(installed.packages()))) { install.packages(pkg) }
# }
# 
# # Now we download, install h2o package
# install.packages("h2o", type="source", repos=(c("http://h2o-release.s3.amazonaws.com/h2o/rel-turchin/3/R")))
library(h2o)

h2o.init(nthreads = …
Run Code Online (Sandbox Code Playgroud)

r data-visualization random-forest gbm h2o

11
推荐指数
1
解决办法
6435
查看次数

预测班级或班级概率?

我目前正在使用H2O作为分类问题数据集.我H2ORandomForestEstimator在python 3.6环境中测试它.我注意到预测方法的结果给出了0到1之间的值(我假设这是概率).

在我的数据集中,目标属性是数字,即True值为1,False值为0.我确保将类型转换为目标属性的类别,我仍然得到相同的结果.

然后我修改了代码,将目标列转换为asfactor()H2OFrame上的因子使用方法,结果没有任何变化.

但是当我将目标属性中的值分别更改为1和0时的True和False时,我得到了预期结果(即)输出是分类而不是概率.

  • 获得分类预测结果的正确方法是什么?
  • 如果概率是数值目标值的结果,那么在多类分类的情况下如何处理它?

python classification machine-learning random-forest h2o

10
推荐指数
2
解决办法
4171
查看次数

无法将数据框转换为h2o对象

我在Rstudio版本0.99.447中运行h2o包.我运行版本10.9.5 OSX.

我想按照本教程的步骤在R中设置一个本地集群:http://blenditbayes.blogspot.co.uk/2014/07/things-to-try-after-user-part-1-deep html的

第一步似乎不是问题.似乎是一个问题是将我的数据框转换为适当的h2o对象.

library(mlbench)
dat = BreastCancer[,-1] #reading in data set from mlbench package

library(h2o)
localH2O <- h2o.init(ip = "localhost", port = 54321, startH2O = TRUE) #sets up the cluster
dat_h2o <- as.h2o(localH2O, dat, key = 'dat') #this returns an error message
Run Code Online (Sandbox Code Playgroud)

上面的语句as.h2o导致以下错误消息

Error in as.h2o(localH2O, dat, key = "dat") : 
unused argument (key = "dat")
Run Code Online (Sandbox Code Playgroud)

如果我删除"key"参数,让数据驻留在机器生成的名称下的H2O键值存储中,则会出现以下错误消息.

Error in .h2o.doSafeREST(conn = conn, h2oRestApiVersion = h2oRestApiVersion,  
Unexpected CURL error: Empty reply from server
Run Code Online (Sandbox Code Playgroud)

这个问题和我一样,但是解决方案让我遇到了同样的错误.

有没有人有这个问题的经验?我不完全确定如何处理这个问题.

r dataframe h2o

9
推荐指数
1
解决办法
6275
查看次数

在h2o随机森林中用于"重要性"的度量是多少?

这是我的代码:

set.seed(1)

#Boruta on the HouseVotes84 data from mlbench
library(mlbench) #has HouseVotes84 data
library(h2o)     #has rf

#spin up h2o
myh20 <- h2o.init(nthreads = -1)

#read in data, throw some away
data(HouseVotes84)
hvo <- na.omit(HouseVotes84)

#move from R to h2o
mydata <- as.h2o(x=hvo,
                 destination_frame= "mydata")

#RF columns (input vs. output)
idxy <- 1
idxx <- 2:ncol(hvo)

#split data
splits <- h2o.splitFrame(mydata,           
                         c(0.8,0.1))     

train <- h2o.assign(splits[[1]], key="train")   
valid <- h2o.assign(splits[[2]], key="valid") 

# make random forest
my_imp.rf<- h2o.randomForest(y=idxy,x=idxx,
                      training_frame = train,
                      validation_frame = …
Run Code Online (Sandbox Code Playgroud)

random-forest h2o gini

9
推荐指数
1
解决办法
5673
查看次数

从R中启动多个h2o集群

我的目的是从同一台计算机/服务器上的R内启动两个或多个h2o集群/实例(不是两个或更多节点!),以使多个用户能够同时与h2o连接.此外,我希望能够单独关闭和重新启动集群,也可以从R内部.

我已经知道我无法简单地从R中控制多个h2o集群,因此我尝试从Windows 10中的命令行启动两个集群:

java -Xmx1g -jar h2o.jar -name testCluster1 -nthreads 1  -port 54321
java -Xmx1g -jar h2o.jar -name testCluster2 -nthreads 1  -port 54323
Run Code Online (Sandbox Code Playgroud)

这对我来说很好:

library(h2o)

h2o.init(startH2O = FALSE, ip = "localhost", port = 54321) 
Connection successful!

R is connected to the H2O cluster: 
H2O cluster uptime:         4 minutes 8 seconds 
H2O cluster version:        3.8.3.2 
H2O cluster name:           testCluster 
H2O cluster total nodes:    1 
H2O cluster total memory:   0.87 GB 
H2O cluster total cores:    4 
H2O cluster allowed cores: …
Run Code Online (Sandbox Code Playgroud)

windows cmd r cluster-computing h2o

9
推荐指数
1
解决办法
1769
查看次数

将h2o模型转换为非h2o模型

我知道有可能导出/导入之前训练过的h2o模型.

我的问题是 - 有没有办法将h2o模型转换为非h2o模型(仅适用于普通R)?

我的意思是我不想启动h2o环境(JVM)因为我知道预测训练模型只是简单地乘以矩阵,应用激活函数等.

当然可以手动提取权重等,但我想知道是否有更好的方法来做到这一点.

我没有看到关于此问题的SA以前的任何帖子.

r h2o

8
推荐指数
1
解决办法
689
查看次数