Я хотел бы создать конвейер PMML, такой как
PMMLPipeline([
("clt", ColumnTransformer([
("cl", Pipeline([
("std", StandardScaler()),
("pca", PCA(4) ),
("kmeans", KMeans(5) )
]), clVars),
("id", "passthrough", idVars)
])
),
("et", ExpressionTransformer("X[0]+X[1]")
),
("lr", LinearRegression()
)
])
Кто-нибудь знает, возможно ли использовать оценки в sklearn.compose.ColumnTransformer?
При следующей настройке:
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
Я подгонял каждый шаг (clt, et, lr) по отдельности.
Затем создание PMMLPipeline завершается неудачно с:
java.lang.IllegalArgumentException: Tuple contains an unsupported value (Python class sklearn.cluster.k_means_.KMeans)
at org.jpmml.sklearn.CastFunction.apply(CastFunction.java:43)
at com.google.common.collect.Lists$TransformingRandomAccessList$1.transform(Lists.java:612)
at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47)
at sklearn.pipeline.Pipeline.encodeFeatures(Pipeline.java:68)
at sklearn2pmml.decoration.Alias.encodeFeatures(Alias.java:56)
at sklearn.compose.ColumnTransformer.encodeFeatures(ColumnTransformer.java:63)
at sklearn.pipeline.Pipeline.encodeFeatures(Pipeline.java:81)
at sklearn2pmml.pipeline.PMMLPipeline.encodePMML(PMMLPipeline.java:196)
at org.jpmml.sklearn.Main.run(Main.java:145)
at org.jpmml.sklearn.Main.main(Main.java:94)
Иесли я пытаюсь применить свой подогнанный ColumnTransformer к кадру данных pandas, я получу либо AttributeError: 'ColumnTransformer' object has no attribute 'predict'
, используя predict
, либо массив с 5 столбцами, которые не содержат clVars, а также результат kmeans и 3 столбца, которые соответствуют idVars, используяtransform
.Отсюда и мои сомнения: s