Caret 模型随机森林转化为 PMML 错误

2023-12-06

我想使用 pmml 库导出 Caret 随机森林模型,以便我可以使用它在 Java 中进行预测。 这是我收到的错误的重现。

data(iris)
require(caret)
require(pmml)
rfGrid2 <- expand.grid(.mtry = c(1,2))
fitControl2 <- trainControl(
  method = "repeatedcv",
  number = NUMBER_OF_CV, 
  repeats = REPEATES)

model.Test <- train(Species ~ .,
  data = iris,
  method ="rf",
  trControl = fitControl2,
  ntree = NUMBER_OF_TREES,
  importance = TRUE,  
  tuneGrid = rfGrid2)

print(model.Test)
pmml(model.Test)

Error in UseMethod("pmml") : 
  no applicable method for 'pmml' applied to an object of class "c('train', 'train.formula')"

我在谷歌上搜索了一段时间,发现实际上很少有关于导出到 PMML 的信息,一般 pmml 库有随机森林:

methods(pmml)
 [1] pmml.ada          pmml.coxph        pmml.cv.glmnet    pmml.glm          pmml.hclust       pmml.itemsets     pmml.kmeans      
 [8] pmml.ksvm         pmml.lm           pmml.multinom     pmml.naiveBayes   pmml.nnet         pmml.randomForest pmml.rfsrc       
[15] pmml.rpart        pmml.rules        pmml.svm 

它使用直接随机森林模型,但不是经过插入符号训练的模型。

library(randomForest)
iris.rf <- randomForest(Species ~ ., data=iris, ntree=20)
# Convert to pmml
pmml(iris.rf)
# this works!!!
str(iris.rf)

List of 19
 $ call           : language randomForest(formula = Species ~ ., data = iris, ntree = 20)
 $ type           : chr "classification"
 $ predicted      : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
...

str(model.Test)
List of 22
 $ method      : chr "rf"
 $ modelInfo   :List of 14
  ..$ label     : chr "Random Forest"
  ..$ library   : chr "randomForest"
  ..$ loop      : NULL
  ..$ type      : chr [1:2] "Classification" "Regression"
...

您不能调用pmml方法与train or train.formula类型(即这是你的类型model.Test目的)。

插入符文档train方法表示您可以访问最佳模型finalModel场地。您可以调用pmml然后该对象上的方法。

rf = model.Test$finalModel
pmml(rf)

不幸的是,事实证明 Caret 使用“矩阵接口”指定 RF 模型(即通过设置x and y字段),不使用更常见的“公式界面”(即通过设置formula场地)。 AFAIK,“pmml”包不支持导出此类 RF 模型。

因此,看起来您最好的选择是使用两级方法。首先,使用 Caret 包为您的数据集找到最合适的 RF 参数化。其次,使用具有此参数化的“公式界面”手动训练最终的 RF 模型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Caret 模型随机森林转化为 PMML 错误 的相关文章

随机推荐

  • 如何获取一组 mysql 总行数的百分比?

    下面我有一个查询 将从用户代理表和 IP 地址链接表中获取站点最常见的用户代理 SELECT count as num string FROM useragent ip left join useragents on useragent i
  • 龙卷风框架(FacebookGraphMixin)

    我想尝试使用 Tornado Framework 将应用程序请求从我的 Facebook 应用程序发送到用户 我正在关注http www tornadoweb org documentation auth html但我不知道如何解决这个错误
  • 在 Node.js 跨平台中下载和解压缩文件的最简单方法?

    只是寻找一个简单的下载和解压解决方案 zip or tar gz任何操作系统上 Node js 中的文件 不确定这是否是内置的 或者我必须使用单独的库 有任何想法吗 只需寻找几行代码 这样当下一个 zip 文件出现时我想在节点中下载 这是理
  • Angular2 Dart - 获取 Angular2 组件内的文本

    我有一个item我在其他组件中使用的组件 项目组件通常如下所示
  • R 中均值的分组条形图

    我有一个数据集 学习者 其中包含学生测试成绩 学习者 literacy total 他们的年级 即1 2 3 12年级 和他们的性别 学习者 性别 我想创建一个条形图 其中 x 轴上有成绩 y 轴上有平均分数 每个成绩有两列 一列用于男性
  • 如何在 django 上自动创建超级用户?

    我要自动运行manage py createsuperuser on django但似乎无法设置默认密码 我怎样才能得到这个 它必须独立于 django 数据库 从 Django 3 0 开始 您可以使用默认值createsuperuser
  • 将 JPanel 与 Eclipse 的 WindowBuilder 重叠

    我正在使用 WindowBuilder Pro 进行 eclipse 并且我希望有两个彼此完美重叠的 Jpanels 然后我就可以根据组合框的选择来切换它们的可见性 当我尝试在 GUI 构建器中实现此目标时 第一个面板被第二个面板取代 请给
  • 如何处理应用程序被HOME按钮最小化

    前几天出现了一个问题 我有一个监听 GPS 位置的应用程序 监听器是一个始终工作的后台服务 该服务在应用程序级别保存数据 每个活动都会读取该数据 因此 当我按下后退按钮时 我能够捕获此事件 并且可以停止服务 但是当我按下 HOME 按钮时
  • CocoaPods 文件夹不存在/权限错误

    我是 CocoaPods 的新手 我尝试过运行 pod install 在我的 Mac 上安装我的 Pod 但我收到文件夹权限错误 Users username Library Caches CocoaPods 该文件夹甚至不存在 难道是我
  • 如何从 Google 地图 API 函数中获取 javascript lat/lng 变量

    我需要从邮政编码获取纬度 经度 因此我使用 Google 地图 地理编码 API 我无法从地理编码脚本中运行的函数中获取 lat lng 变量 我正在使用的代码如下
  • ADODBAPI 与数据库的打开连接数

    我想数一下没有 当前与 ms access 数据库打开的连接数 例如 两个应用程序正在使用同一个数据库 那么我怎样才能得到这个计数呢 pypyodbc 中是否有 ms access 函数或任何设施 使用adodbapi 我怎么能得到no 与
  • 这是我的 javascript 来调整 iframe 的大小并需要一些编辑

    这是我的 iframe 它位于带有按钮的 div 内 function myFunction var url document getElementById myFrame getAttribute src var newUrl url s
  • 外部函数:从 C 脚本使用 .dll 的替代方法

    这是一个伴随问题外部函数 在 C 脚本中引用头文件来编译 dll 该堆栈溢出问题是使用 Modelica 外部函数调用 c 脚本 然后 该 c 脚本使用 dll 中包含的 c 函数 以下是我尝试过的最初首选方法和我不喜欢的工作尝试 初步尝试
  • 推力启动配置

    我正在尝试对用 Thrust 编码的算法进行一些实验 我想知道每个块的线程数对我的算法性能的影响 是否可以限制推力 使其每个块使用的线程数不超过 X 个 Thrust 不提供任何直接设置每个块的线程数或特定内核调用中使用的块数的能力 这些东
  • 以本机 Excel 语言动态显示工作日名称?

    我正在尝试为国际用户群开发一个 Excel 财务模板 以他们的母语将工作日名称显示为字符串 即 今天 MON 对于英文 Excel 版本 这很简单 Text Now DDD 但是 我很难找到适用于所有 Excel 语言的通用解决方案 通过我
  • 异步等待块主 UI

    我正在使用新的异步等待功能从 C 中的后台工作人员升级 在下面的代码中 我尝试使用ContinueWith方法复制多个任务的执行 Task t1 new Task gt Thread Sleep 10000 make the Task th
  • FileUtils 未显示在 selenium WebDriver 中导入屏幕截图功能的预定义类的建议

    我不允许在程序中使用 FileUtils 并且这样做时会显示错误 甚至没有建议导入这个预定义的类 我尝试搜索解决方案 但发现是导入该类 但就我而言 甚至建议也没有显示导入任何类 将鼠标悬停在 FileUtils 上会显示创建 FileUti
  • 如何在java中的另一个xml文档中插入一个xml节点作为第一个子节点?

    例如 根
  • 如何绘制简单的有向图

    我可以画一个简单的有向力图 如下所示
  • Caret 模型随机森林转化为 PMML 错误

    我想使用 pmml 库导出 Caret 随机森林模型 以便我可以使用它在 Java 中进行预测 这是我收到的错误的重现 data iris require caret require pmml rfGrid2 lt expand grid