我正在使用 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 变量,这可以正常工作。
有人可以提出解决这个问题的方法吗?