Preparación de datos antes de generar predicciones
Siempre que aplique un modelo a nuevos datos, lo más importante es asegurarse de que el esquema de los datos de entrada se alinee con las expectativas del modelo de los datos de entrada.
En concreto, deberá comprobar que los tipos de datos de las columnas de entrada sean los mismos que se definen en la firma del modelo. En primer lugar, obtengamos los datos en los que desea generar predicciones.
Trabajar con datos en tablas Delta
Para aplicar un modelo a los nuevos datos de Microsoft Fabric, debería almacenar los nuevos datos como una tabla Delta en un almacén de lago.
Sugerencia
Obtenga más información sobre cómo ingerir datos en un almacén de lago de Microsoft Fabric.
Puede almacenar un dataframe df
de PySpark como un new_table
de almacén de lago Delta en un almacén de lago con el código siguiente:
df.write.format("delta").save(f"Tables/new_table")
Cuando quiera leer datos de una tabla Delta, use el código siguiente:
df = spark.read.format("delta").load(f"Tables/new_table")
Descripción de los tipos de datos en la firma del modelo
Al realizar un seguimiento de un modelo de Machine Learning y definir la firma en el archivo MLmodel
, tiene dos opciones para describir las entradas y salidas esperadas de un modelo. La firma de un modelo puede ser:
- Basado en columnas: ideal para datos tabulares organizados por columnas.
- Basado en tensores: ideal para datos de entrada que desee pasar como matrices, como imágenes.
En Microsoft Fabric, es probable que trabaje con datos tabulares, por lo que es más común trabajar con firmas basadas en columnas. Tener firmas basadas en columnas facilita la alineación de las columnas de entrada reales con las columnas de entrada esperadas del modelo.
Al definir la firma del modelo, es necesario usar tipos de datos de MLflow para especificar el esquema de los datos. Los tipos de datos más usados son:
- Booleano: Datos lógicos (
True
oFalse
) - Datetime: Datos datetime de 64 b (por ejemplo:
2023-10-23 14:30:00
). - Double: Números de punto flotante de 64 b (por ejemplo:
3.14159265359
). - Float: Números de punto flotante de 32 b (por ejemplo:
3.14
). - Entero: Números enteros con signo de 32 b (por ejemplo:
42
). - Long: Números enteros con signo de 64 b (por ejemplo:
1234567890
). - Cadena: Datos de texto (por ejemplo:
Amsterdam
).
Establecer los tipos de datos de los datos de entrada
Después de ingerir los datos en un lago Delta y comprender la firma del modelo, deberá asegurarse de que los tipos de datos de los datos sean compatibles con la entrada esperada del modelo.
Trabaje con los datos de un cuaderno para comprobar que los tipos de datos de cada columna sean los esperados y realizar cambios si fuera necesario.
Para enumerar los tipos de datos de cada columna de un dataframe df
, use el código siguiente:
df.dtypes
Si desea cambiar el tipo de datos de una columna específica, use el código siguiente:
from pyspark.sql.types import IntegerType, DoubleType
df = df.withColumn("S1", df["S1"].cast(IntegerType()))
df = df.withColumn("S2", df["S2"].cast(DoubleType()))
Al establecer los tipos de datos de los datos de entrada para alinearse con las entradas esperadas del modelo, guarde los datos en una nueva tabla Delta. La nueva tabla ya está lista para usarse para generar predicciones por lotes.