Expression translator should support multi-dimensional array indexing syntax
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comience con org.jpmml.python.ExpressionTranslator, identificado en el stack trace, y reproduzca el fallo utilizando el ejemplo de ExpressionTransformer con X["c2"][0]. Trace el procesamiento del parser de StringSlicingExpression y confirme que la conversión a PMML acepta la indexación de arrays multidimensionales; la pipeline indicada debería traducirse sin IllegalArgumentException.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hi, I have a scanrio where I need to use an array as a input column to my pipeline.
I'd reduced a minimal example of the issue I'm having:
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
from sklearn.compose import ColumnTransformer
from sklearn2pmml.preprocessing import ExpressionTransformer
df = pd.DataFrame({'c1': [1, 2, 3], 'c2': [[1,2], [1,2], [3,1]]})
pipeline = make_pipeline(
ColumnTransformer(
transformers=[
(f'get_item_0_from_c2_array', ExpressionTransformer('X["c2"][0]'), ['c2'])
]
),
LogisticRegression(),
)
pipeline.fit(df, [0, 0, 1])
pipeline.predict(df)
The above pipeline works fine in my jupyter notebook. But converting it to a PMML gives an error:
import sklearn2pmml
pmml_pipeline = sklearn2pmml.PMMLPipeline(steps=[
('pipeline',pipeline)
])
sklearn2pmml.sklearn2pmml(pmml_pipeline, './pipeline.pmml', debug=True)
Gives the error:
java.lang.IllegalArgumentException: Python expression 'X["c2"][0]' is either invalid or not supported
at org.jpmml.python.ExpressionTranslator.translate(ExpressionTranslator.java:36)
at org.jpmml.python.ExpressionTranslator.translate(ExpressionTranslator.java:23)
at sklearn2pmml.preprocessing.ExpressionTransformer.encodeFeatures(ExpressionTransformer.java:51)
at sklearn.Transformer.encode(Transformer.java:70)
at sklearn.compose.ColumnTransformer.encodeFeatures(ColumnTransformer.java:63)
at sklearn.Transformer.encode(Transformer.java:70)
at sklearn.Composite.encodeFeatures(Composite.java:119)
at sklearn.Composite.encodeModel(Composite.java:135)
at sklearn.pipeline.PipelineClassifier.encodeModel(PipelineClassifier.java:86)
at sklearn.Estimator.encode(Estimator.java:103)
at sklearn2pmml.pipeline.PMMLPipeline.encodePMML(PMMLPipeline.java:233)
at org.jpmml.sklearn.Main.run(Main.java:217)
at org.jpmml.sklearn.Main.main(Main.java:143)
Caused by: org.jpmml.python.ParseException: Encountered unexpected token: "]" "]"
at line 1, column 10.
Was expecting one of:
":"
at org.jpmml.python.ExpressionTranslator.generateParseException(ExpressionTranslator.java:2110)
at org.jpmml.python.ExpressionTranslator.jj_consume_token(ExpressionTranslator.java:1973)
at org.jpmml.python.ExpressionTranslator.StringSlicingExpression(ExpressionTranslator.java:956)
at org.jpmml.python.ExpressionTranslator.PrimaryExpression(ExpressionTranslator.java:637)
at org.jpmml.python.ExpressionTranslator.UnaryExpression(ExpressionTranslator.java:597)
at org.jpmml.python.ExpressionTranslator.MultiplicativeExpression(ExpressionTranslator.java:538)
at org.jpmml.python.ExpressionTranslator.AdditiveExpression(ExpressionTranslator.java:494)
at org.jpmml.python.ExpressionTranslator.ComparisonExpression(ExpressionTranslator.java:434)
at org.jpmml.python.ExpressionTranslator.NegationExpression(ExpressionTranslator.java:389)
at org.jpmml.python.ExpressionTranslator.LogicalAndExpression(ExpressionTranslator.java:359)
at org.jpmml.python.ExpressionTranslator.LogicalOrExpression(ExpressionTranslator.java:338)
at org.jpmml.python.ExpressionTranslator.IfElseExpression(ExpressionTranslator.java:319)
at org.jpmml.python.ExpressionTranslator.Expression(ExpressionTranslator.java:312)
at org.jpmml.python.ExpressionTranslator.translateExpressionInternal(ExpressionTranslator.java:306)
at org.jpmml.python.ExpressionTranslator.translate(ExpressionTranslator.java:34)
... 12 more
- Lenguaje dominante
- Java
- Estrellas
- 3
- Forks
- 0
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de jpmml/jpmml-python
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
jpmml/jpmml-python#2 ·
Todos los issues de jpmml/jpmml-python
Issues similares
-
agent-java community triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
elastic/apm-agent-java#4594 ·
Los mantenedores suelen responder en 1 día
-
area/plugin good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
kestra-io/plugin-soda#137 ·
-
area/plugin good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
kestra-io/plugin-aws#816 ·
Los mantenedores suelen responder en 2 días
-
area/plugin good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
kestra-io/plugin-kestra#200 ·
Los mantenedores suelen responder en 1 día
-
bug untriaged
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
opensearch-project/search-relevance#618 ·
Los mantenedores suelen responder en 3 días