jpmml / jpmml-r

Java library and command-line application for converting R models to PMML
GNU Affero General Public License v3.0
33 stars 8 forks source link

R pmml from glm scorecard #11

Closed Phiranuphon closed 5 years ago

Phiranuphon commented 5 years ago

I tried to generate the scorecard from glm model but it didnt work. It worked perfectly fine on tree model like rpart.

here is my script:

library(r2pmml)
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)

mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
mylogit_SC<-r2pmml::as.scorecard(mylogit)
pmml_mylogit<-r2pmml(mylogit_SC,"pmml_mylogit_sc.pmml")

I got these error messages:

org.jpmml.rexp.Main run
SEVERE: Failed to convert
java.lang.IllegalArgumentException
    at org.jpmml.rexp.RExpUtil.getFactorLevels(RExpUtil.java:77)
    at org.jpmml.rexp.GLMConverter.encodeSchema(GLMConverter.java:59)
    at org.jpmml.rexp.ModelConverter.encodePMML(ModelConverter.java:69)
    at org.jpmml.rexp.Converter.encodePMML(Converter.java:39)
    at org.jpmml.rexp.Main.run(Main.java:149)
    at org.jpmml.rexp.Main.main(Main.java:97)

Exception in thread "main" java.lang.IllegalArgumentException
    at org.jpmml.rexp.RExpUtil.getFactorLevels(RExpUtil.java:77)
    at org.jpmml.rexp.GLMConverter.encodeSchema(GLMConverter.java:59)
    at org.jpmml.rexp.ModelConverter.encodePMML(ModelConverter.java:69)
    at org.jpmml.rexp.Converter.encodePMML(Converter.java:39)
    at org.jpmml.rexp.Main.run(Main.java:149)
    at org.jpmml.rexp.Main.main(Main.java:97)
Error in .convert(tempfile, file, converter, converter_classpath, verbose) : 
  1
In addition: Warning message:
running command '"java" -cp "C:/Program Files/R/R-3.4.2/library/r2pmml/java/guava-25.1-jre.jar;C
vruusmann commented 5 years ago

I tried to generate the scorecard from glm model but it didnt work. java.lang.IllegalArgumentException at org.jpmml.rexp.RExpUtil.getFactorLevels(RExpUtil.java:77)

The glm model must be trained using only categorical features (In R speak - "factors"). Your glm model contains non-factor terms in the formula, as clearly indicated by the failing RExpUtil#getFactorLevels(...) method.