【问题标题】:pmml in R generating improper variable namesR中的pmml生成不正确的变量名
【发布时间】:2015-07-09 04:14:13
【问题描述】:

我正在使用 R 中的 pmml 包为使用 glm 函数获得的逻辑回归模型生成 PMML,如下所示:

library(pmml)
var <- sample(c(1,2,3),100,replace = TRUE)
var_cat <- sample(c(1,2,3,4),100,replace = TRUE)
y <- sample(c(0,1),100,replace = TRUE)
df <- data.frame(y = as.factor(y),var = as.factor(var), var_cat = as.factor(var_cat))
model <- glm(y ~ ., data = df, family = binomial)
pmmlOutput <- pmml(model)

此 PMML 的 PPMatrix 部分如下所示:

<PPMatrix>
   <PPCell value="2" predictorName="var" parameterName="p1"/>
   <PPCell value="3" predictorName="var" parameterName="p2"/>
   <PPCell value="_cat2" predictorName="var" parameterName="p3"/>
   <PPCell value="2" predictorName="var_cat" parameterName="p3"/>
   <PPCell value="_cat3" predictorName="var" parameterName="p4"/>
   <PPCell value="3" predictorName="var_cat" parameterName="p4"/>
   <PPCell value="_cat4" predictorName="var" parameterName="p5"/>
   <PPCell value="4" predictorName="var_cat" parameterName="p5"/>
</PPMatrix>

第一个变量及其级别显示为 (var,2) 和 (var,3)。但是,第二个变量有两行,变量名称和级别在错误的位置拆分。

它不是得到 (var_cat,2),而是被拆分为 (var,_cat2),如下所示:

<PPCell value="_cat2" predictorName="var" parameterName="p3"/>

这似乎只发生在有重叠的变量名(在本例中为 var 和 var_cat)时。但是,如果仅存在 var_cat 变量,这将正常工作。

有人可以提出解决此问题的方法吗?

【问题讨论】:

  • 我得到了同样的东西,pmml 版本 1.4.2。看起来像一个错误。我想只是避免重叠的变量名。 packageDescription("pmml") 给你一个支持地址...

标签: r pmml


【解决方案1】:

很遗憾,你是对的;您在 R 代码中发现了一个错误。

它有效地找到值的方式假设不同的变量 名称不是另一个的子字符串。

由于 varsubstringvar_cat,因此您会收到此错误。请注意,var_catcat 也可能会给您带来同样的问题。另一方面,var_cat1不是substringvar_cat2,所以应该可以。

目前,最简单的方法是命名变量,以便 变量名不是另一个的子字符串。幸运的是我们正在计划 在接下来的几周内发布一个新版本,我将尝试包含一个修复 在那个版本中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 2015-02-11
    • 2015-03-30
    • 2012-07-25
    • 2019-04-01
    • 2012-10-24
    • 2014-05-30
    • 1970-01-01
    相关资源
    最近更新 更多