Saltar al contenido

Error de gráfico: no se pudo convertir la cadena en flotante

Un Usuario hizo la siguiente pregunta

Queridos todos, queridos

Intentamos crear una canalización de entrenamiento simple (en una cuenta de prueba) como en la imagen de arriba usando una plantilla de productor de Python, pero obtenemos un error como se muestra a continuación.

“Error de gráfico: operator.com.sap.system.python3Operator: python3operator1: Error al ejecutar la recuperación registrada de los puertos [‘input’]: el cable no se pudo convertir a flotar: ‘RL’ [file ‘/home/vflow/.local/lib/python3.6/site-packages/numpy/core/_asarray.py”

We are not sure how to convert the data(string to float) as said in error message(highlighted in bold).

Correction: The data has a mix of numeric and string columns from the file in GCP cloud storage. The data read operator seems to work but fails on the first python operator.

The output is string type in ‘toString Converter’ operator, the input is string in python operator and its output is blob.

We tried ‘toNumberConverter’ after ‘toString Converter’ operator, but it it is not suitable as the input to python operator is ‘string’ and cannot be connected. We also tried all documents and searched for answer but couldn’t find one, hope someone can help.

PS: the code and docker file is given below(docker file created/activated successfully).

Thank you.

Chitra T

# Code in Python operator
def on_input(data):
    
    import pandas as pd
    import numpy as np
    from io import StringIO
    import io
    from sklearn.linear_model import LinearRegression
    df_data = pd.read_csv(io.StringIO(data), sep=",")

    # x = df_data[["HALFMARATHON_MINUTES"]]# y_true = df_data["MARATHON_MINUTES"]
    X = df_data.drop (['SalePrice'], ais = 1) Y = df_data['SalePrice']
        
    lm = Regresión lineal () lm.fit (X, Y) y_pred = lm.predict (X) mse = np.mean ((y_pred - Y) ** 2) rmse = np.sqrt (mse) rmse = round (rmse, 2) # crear y enviar el blob del modelo al puerto de salida -Artifact El operador productor usará esto para # colocar el modelo y crear un ID de fabricación de pickle artifact model_blob = pickle.dumps (lm) api.send ("modelBlob", model_blob ) api.set_port_callback ("entrada", on_input) ***************************** DOCKER **** *** * *********************** Desde $ com.sap.sles.base EJECUTAR python3.6 -m pip --no-cache-dir install - usuario pandas EJECUTAR python3.6 -m pip --no-cache-dir install --user numpy EJECUTAR python3.6 -m pip --no-cache-dir install --user sklearn


python-producer-pipeline.jpg
(26,1 kB)

1 respuesta

  • Para mí, no parece haber un problema con el puerto de entrada, sino con el procesamiento dentro del código Python.

    Es difícil solo por la lectura, pero apuesto a que el conjunto de datos de entrada asignado a `X` contiene columnas / columnas no numéricas. Luego intente eliminarlo antes de proporcionar el conjunto de datos para la idoneidad de Line Backup ().