2017-01-17 2 views
1

У меня есть модель randomforest, которую я пытаюсь преобразовать в pmml. Я мог бы подобрать модель правильно, так как он не бросает какие-либо ошибки:PMML sklearn2pmml error in python2.7

test_pipeline = PMMLPipeline([("rforest", RandomForestClassifier())]) 
test_pipeline.fit(trainX, trainY) 

CPU times: user 1.18 s, sys: 61.6 ms, total: 1.24 s 
Wall time: 1.25 s 

Однако я получаю сообщение об ошибке при попытке вызвать метод sklearn2pmml:

sklearn2pmml(test_pipeline, "DecisionTreeIris.pmml", with_repr = True) 

Ошибка:

--------------------------------------------------------------------------- 
CalledProcessError      Traceback (most recent call last) 
<ipython-input-38-9f07cfed11da> in <module>() 
----> 1 sklearn2pmml(test_pipeline, "DecisionTreeIris.pmml", with_repr = True) 

/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/__init__.pyc in sklearn2pmml(pipeline, pmml, user_classpath, with_repr, debug) 
    89     if(debug): 
    90       print(" ".join(cmd)) 
---> 91     subprocess.check_call(cmd) 
    92   finally: 
    93     if(debug): 

/Users/dileeppatchigolla/anaconda/lib/python2.7/subprocess.pyc in check_call(*popenargs, **kwargs) 
    539   if cmd is None: 
    540    cmd = popenargs[0] 
--> 541   raise CalledProcessError(retcode, cmd) 
    542  return 0 
    543 

CalledProcessError: Command '['java', '-cp', '/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/guava-19.0.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/istack-commons-runtime-2.21.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/jaxb-core-2.2.11.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/jaxb-runtime-2.2.11.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/jcommander-1.48.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/jpmml-converter-1.2.0.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/jpmml-lightgbm-1.0.0.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/jpmml-sklearn-1.2.3.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/jpmml-xgboost-1.1.4.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/pmml-agent-1.3.4.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/pmml-model-1.3.4.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/pmml-model-metro-1.3.4.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/pmml-schema-1.3.4.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/pyrolite-4.15.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/serpent-1.16.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/slf4j-api-1.7.22.jar:/Users/dileeppatchigolla/.local/lib/python2.7/site-packages/sklearn2pmml/resources/slf4j-jdk14-1.7.22.jar', 'org.jpmml.sklearn.Main', '--pkl-pipeline-input', '/var/folders/1j/5zzgmlk16ql5mm9z6_3n0c840000gp/T/pipeline-G164OK.pkl.z', '--repr-pipeline', "PMMLPipeline(steps=[('rforest', RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n   max_depth=None, max_features='auto', max_leaf_nodes=None,\n   min_samples_leaf=1, min_samples_split=2,\n   min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,\n   oob_score=False, random_state=None, verbose=0,\n   warm_start=False))])", '--pmml-output', 'DecisionTreeIris.pmml']' returned non-zero exit status 1 

Может кто-нибудь помочь мне отладить журналы ошибок и предоставить решение?

+0

Оригинальная проблема не была решена, когда мы перешли от проблемы. Я столкнулся с проблемой снова через несколько месяцев, и на этот раз нашел причину - jdk на моем Mac имеет версию 1.6, а sklearn2pmml - минимальное требование 1.7; Я обновил jdk, и проблема исправлена. –

ответ

0

Возможно, вы используете функциональность sklearn2pmml из ноутбука IPython. Эта функция выполняет процесс Java (как видно из последней строки отчета об ошибке) и проверяет, возвращает ли этот процесс Java код выхода 0 (успех) или -1 (сбой).

Наиболее вероятной причиной возврата кода завершения -1 является то, что было выбрано какое-то исключение Java. Процесс Java печатает полную трассировку стека таких исключений в свой «стандартный» выходной поток. По-видимому, ноутбук IPython не знает, как его захватывать и передавать - вы видите только исключение «front-end» Python, а не исключение «back-end» для Java.

Ваш отчет об ошибке не содержит информации о действии (и не является воспроизводимым примером). Проверьте исходные журналы вашего IPython-ноутбука и посмотрите, что действительно было для «back-end» исключения Java. Что произойдет, если вы выполните свой скрипт Python прямо из командной строки?

+0

Да, я работал в ноутбуке IPython. Но я тоже получал ту же ошибку, когда пытался с командной строки. –

+0

Какова трассировка стека связанного исключения Java? – user1808924

+0

Я не знаю, где я могу его найти. Не могли бы вы помочь мне, как это получить? –