Как создать преобразователь ifelse в файле PMML? - PullRequest
0 голосов
/ 25 июня 2019

Из python я хотел бы добавить в конвейер PMML преобразование (X1, Y) -> X2, например:

if Y < -1:
    X2 = X1
else:
    X2 = X1 

Есть ли какой-нибудь питон-преобразователь, который бы это сделал?

Я думал об использовании RuleSetClassifier, но он не может принимать переменную в качестве вывода (https://github.com/jpmml/sklearn2pmml/issues/162).

Вручную, я добавил в файл PMML:

<DerivedField name="X2" optype="continuous" dataType="double">
    <Apply function = "if">
        <Apply function="lessThan">
            <FieldRef field="Y"/>
            <Constant dataType="double">1</Constant>
        </Apply>
        <Constant dataType="integer">1</Constant>
        <FieldRef field="X1"/>
    </Apply>
</DerivedField>

и, похоже, работает, но я бы предпочел избежать ручного взлома.

Моя среда:

System:
    python: 3.7.1 (default, Dec 14 2018, 19:28:38)  [GCC 7.3.0]
executable: /opt/anaconda3/envs/python_3.7.1_eb/bin/python
   machine: Linux-4.14.114-83.126.amzn1.x86_64-x86_64-with-glibc2.10

BLAS:
    macros: HAVE_CBLAS=None, NO_ATLAS_INFO=-1
  lib_dirs: /usr/lib64/atlas
cblas_libs: cblas

Python deps:
       pip: 19.1.1
setuptools: 41.0.1
   sklearn: 0.21.2
     numpy: 1.16.4
     scipy: 1.3.0
    Cython: None
    pandas: 0.24.2

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете использовать sklearn2pmml.preprocessing.ExpressionTransformer для перевода троичных условных выражений в PMML.

Например:

transformer = ExpressionTransformer("1 if X['Y'] < 1 else X[1]")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...