从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
答案 0 :(得分:0)
您可以使用sklearn2pmml.preprocessing.ExpressionTransformer
将ternary conditional expressions转换为PMML。
例如:
transformer = ExpressionTransformer("1 if X['Y'] < 1 else X[1]")