如何使用mlr封装的包装模型原样?

时间:2019-04-04 01:46:20

标签: r mlr

型号

rf.lrn.base = makeLearner("classif.randomForest", predict.type = "prob",fix.factors.prediction=TRUE)
rf.lrn <- makeFilterWrapper(rf.lrn.base,fw.method = "chi.squared", fw.perc = 0.5)
rf.lrn

调整

tune_rdesc.rf <- makeResampleDesc("CV", iters = 3L, stratify = TRUE)
rf_ps <- makeParamSet(makeDiscreteParam("fw.perc", values = seq(0, 1, 0.1)),
                         makeIntegerParam("ntree", lower = 10, upper = 50), 
                         makeIntegerParam("mtry", lower = 10, upper = 40)
                         )
Tuned_rf <- tuneParams(rf.lrn, task = classif.task,resampling = tune_rdesc.rf,par.set = rf_ps,control = makeTuneControlGrid())

包装器

fused_rf <- makeFilterWrapper(rf.lrn.base,fw.method = "chi.squared",fw.perc = Tuned_rf$x$fw.perc)

健身


rf_mod <- mlr::train(fused_rf, classif.task)
rf_mod

预测,下面给出了真值表,prob.0,prob.1,响应,从这里我可以分别访问pred_rf $ data $ prob.0和pred_rf $ data $ prob.1

pred_rf <- predict(rf_mod, newdata = Test_WOE_clean)
pred_rf$data

以下仅给出响应


randomForest <- getLearnerModel(rf_mod, more.unwrap = TRUE)
pred_rf2 <- predict(randomForest, newdata = Test_WOE_clean)
pred_rf2

现在,我想使用pmml包(预测模型标记语言)将模型转换为PMML文件

library(pmml)
rf_pmml <- pmml(model=randomForest)

以上产生错误为

Error in UseMethod("pmml") : 
  no applicable method for 'pmml' applied to an object of class "c('FilterModel', 'BaseWrapperModel', 'WrappedModel')"

但是下面没有

randomForest <- getLearnerModel(rf_mod, more.unwrap = TRUE)
rf_pmml <- pmml(model=randomForest)

与使用库(aurelius)转换为PFA(分析的便携式格式)的方式相同

另一个问题是要上传到AzureML

rf.inputdata <- as.data.frame(subset(Train_WOE_clean,select=-c(Target)))

rf.PredictT <- function(inputdata){
  predict(rf_mod,newdata=inputdata)
}

library(AzureML)
library(devtools)

#workspace 
rf.ws <- workspace(
  id = "**************",
  auth = "**************",
  api_endpoint = "https://studioapi.azureml.net"
)


rf.TWebService <- publishWebService(rf.ws,
                                    fun=rf.PredictT,
                                    name="rf_mod",
                                    inputSchema = rf.inputdata)

因此我将模型作为AzureML中的Web服务获取,我可以在那里进行预测,但是会产生错误


no applicable method for 'predict' applied to an object of class "c('FilterModel', 'BaseWrapperModel', 'WrappedModel')

我可以知道如何解决这四个问题吗

  1. pmml转换

  2. pfa转换

  3. AzureML中的错误

  4. mlr软件包未在AzureML中列为受支持的软件包,所以请让我知道如何在AzureML工作区中安装mlr软件包。

  5. 对于部署,我正在研究“在生产环境中部署R模型”,正如您所说的使用R代码进行部署,我可能知道一些研究该链接的方法。

0 个答案:

没有答案