如何在R

时间:2018-07-13 03:51:32

标签: r model h2o glm predict

更新... 所以我会以其他方式解决我的问题,然后将代码留在下面.....

另一件事是,我仍然想知道是否可以将数据框(表中具有系数)转换为模型对象,例如glm ... ??

================================================ ==

所以我正在R中学习h2o包,并且在从h2o对象获取模型时遇到问题:

因此,我经历了h2o培训课程,并获得了“适合”我的S4对象, 通过子集这个“适合”的对象,我可以获得模型和系数表; 问题是,我该如何像通常在glm中一样使用“系数表”作为模型?

代码如下:

#using dataset germancredit as sample

data("GermanCredit")
#ease for demo
Sub_German=GermanCredit[  ,c("amount","present_residence","duration","age")]    
target=ifelse(GermanCredit$credit_risk=="good",0,1)

data=cbind(Sub_German,target)


library(h2o)

localH2O = h2o.init()

dth2o = as.h2o(data)  


# h2o.glm  
fit = h2o.glm(y="target", training_frame=dth2o,  seed=17,
              family="binomial", nfolds=2, alpha=1, lambda_search=TRUE) # summary(fit)


model_fit_h2o= fit@model
class(model_fit_h2o)
# [1] "list"

model_fit_coe_table= model_fit_h2o$coefficients_table
class(model_fit_coe_table)
# [1] "H2OTable"   "data.frame"


# predict
dt_h2o_pred= predict(fit, type='response', dth2o)
class(dt_h2o_pred)
# [1] "H2OFrame"

# convert to dataframe and get p1 as predicted probability for '1'
dt_h2o_pred_df=as.data.frame(dt_h2o_pred) 
dt_h2o_num=dt_h2o_pred_df$p1
class(dt_h2o_num)
# [1] "numeric"

如此可见,如何将这个“ model_fit_coe_table”转换为模型对象? 我通常使用的是glm,如下所示:

# glm ------
model = glm(target ~ ., family = binomial(link='logit'),  data = data)
summary(model)

# Select a formula-based model by AIC
m_step = step(model, direction="both", trace=FALSE)
model_fin = eval(m_step$call)
class(model_fin)
# ("glm" "lm")


#predicted proability
dt_pred = predict(model_fin, type='response', data)

在这种情况下,我可以对glm类型的“ model_fin”应用“ predict”函数。

诚然,我想我可以手动创建一个物流函数,例如 f(x)= ax1 + bx2 + cx3 .... + cont,使用h2o对象的coef表;

但是,如果我在使用自变量,这意味着每次更改输入时都需要手动执行此操作……所以这完全没有效率。...

任何人都有解决方案吗?还是有其他方法可以实现我的目标? 谢谢!!

0 个答案:

没有答案