Expression translator should support multi-dimensional array indexing syntax
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Iniziare con org.jpmml.python.ExpressionTranslator, identificato nello stack trace, e riprodurre il problema utilizzando l’esempio ExpressionTransformer con X["c2"][0]. Tracciare la gestione di StringSlicingExpression da parte del parser e confermare che la conversione PMML accetti l’indicizzazione di array multidimensionali; la pipeline segnalata dovrebbe essere tradotta senza IllegalArgumentException.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- Java
- Stelle
- 3
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di jpmml/jpmml-python
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
jpmml/jpmml-python#2 ·
Tutte le issue di jpmml/jpmml-python
Issue simili
-
human-required sync-failed
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Azure/osdu-spi-file#63 ·
I maintainer di solito rispondono entro 1 giorno
-
frontend quick win
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
CodeForPhilly/benefit-decision-toolkit#571 ·
I maintainer di solito rispondono entro 1 giorno
-
approved
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
checkstyle/checkstyle#22129 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Add Hardcharger JDBC driverForse già presa @prmoore77 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno