更新... 所以我会以其他方式解决我的问题,然后将代码留在下面.....
另一件事是,我仍然想知道是否可以将数据框(表中具有系数)转换为模型对象,例如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表;
但是,如果我在使用自变量,这意味着每次更改输入时都需要手动执行此操作……所以这完全没有效率。...
任何人都有解决方案吗?还是有其他方法可以实现我的目标? 谢谢!!