jpmml / jpmml-sklearn

Java library and command-line application for converting Scikit-Learn pipelines to PMML
GNU Affero General Public License v3.0
531 stars 117 forks source link

Does not support conversion between pipeline and gridsearchcv #115

Closed sin-en-2009 closed 5 years ago

sin-en-2009 commented 5 years ago

I used pipeline combined with grid search to train a model, as shown below.

    std = StandardScaler()
    model_ = LogisticRegression()
    param_range = [0.001, 0.01, 0.1, 1, 10]
    tol_range = [3e-6, 4e-6,5e-6, ]
    mapper = DataFrameMapper(list_tupe,df_out=False,input_df=True,default=False)
    from sklearn.model_selection import GridSearchCV
    pipeline = Pipeline([('mapper', mapper), ('std', std), ('clf', GridSearchCV(
        model_,scoring='roc_auc',cv=2,n_jobs=12,param_grid={'C':param_range,'tol':tol_range}
    ))])

However, the following error was reported when converting the PMML format file. Don't you support this kind of transformation?

net.razorvine.pickle.PickleException: expected zero arguments for construction o
f ClassDict (for numpy.ma.core._mareconstruct)
        at net.razorvine.pickle.objects.ClassDictConstructor.construct(ClassDict
Constructor.java:23)
        at net.razorvine.pickle.Unpickler.load_reduce(Unpickler.java:732)
        at net.razorvine.pickle.Unpickler.dispatch(Unpickler.java:200)
        at org.jpmml.sklearn.PickleUtil$1.dispatch(PickleUtil.java:77)
        at net.razorvine.pickle.Unpickler.load(Unpickler.java:122)
        at org.jpmml.sklearn.PickleUtil.unpickle(PickleUtil.java:98)
        at org.jpmml.sklearn.Main.run(Main.java:104)
        at org.jpmml.sklearn.Main.main(Main.java:94)

Exception in thread "main" net.razorvine.pickle.PickleException: expected zero a
rguments for construction of ClassDict (for numpy.ma.core._mareconstruct)
        at net.razorvine.pickle.objects.ClassDictConstructor.construct(ClassDict
Constructor.java:23)
        at net.razorvine.pickle.Unpickler.load_reduce(Unpickler.java:732)
        at net.razorvine.pickle.Unpickler.dispatch(Unpickler.java:200)
        at org.jpmml.sklearn.PickleUtil$1.dispatch(PickleUtil.java:77)
        at net.razorvine.pickle.Unpickler.load(Unpickler.java:122)
        at org.jpmml.sklearn.PickleUtil.unpickle(PickleUtil.java:98)
        at org.jpmml.sklearn.Main.run(Main.java:104)
        at org.jpmml.sklearn.Main.main(Main.java:94)
vruusmann commented 5 years ago

Closing as exact duplicate of #117

Reporting the same issue twice does not make the implementation faster.