如何在 PMML 文件中生成 ifelse 转换器?
How to generate an ifelse transformer in a PMML file?
从 python,我想在 PMML 管道中添加一个转换 (X1, Y) -> X2,例如:
if Y < -1:
X2 = X1
else:
X2 = X1
有没有 python 变压器可以做到这一点?
我想过使用 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
您可以使用 sklearn2pmml.preprocessing.ExpressionTransformer
将 ternary conditional expressions 翻译成 PMML。
例如:
transformer = ExpressionTransformer("1 if X['Y'] < 1 else X[1]")
从 python,我想在 PMML 管道中添加一个转换 (X1, Y) -> X2,例如:
if Y < -1:
X2 = X1
else:
X2 = X1
有没有 python 变压器可以做到这一点?
我想过使用 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
您可以使用 sklearn2pmml.preprocessing.ExpressionTransformer
将 ternary conditional expressions 翻译成 PMML。
例如:
transformer = ExpressionTransformer("1 if X['Y'] < 1 else X[1]")