Preparar dados antes de gerar previsões
Ao aplicar um modelo a novos dados, é importante garantir que o esquema dos dados de entrada esteja alinhado com as expectativas do modelo dos dados de entrada.
De maneira mais específica, você precisa verificar se os tipos de dados das colunas de entrada são os mesmos definidos na assinatura do modelo. Primeiro, vamos obter os dados nos quais você deseja gerar previsões.
Trabalhar com dados em tabelas Delta
Para aplicar um modelo a novos dados no Microsoft Fabric, você deve armazenar esses novos dados como uma tabela Delta em uma lakehouse.
Dica
Saiba mais sobre como ingerir dados em um lakehouse do Microsoft Fabric.
Você pode armazenar um dataframe df
como um Delta lake new_table
em um lakehouse usando o seguinte código:
df.write.format("delta").save(f"Tables/new_table")
Quando quiser ler dados de uma tabela Delta, você pode usar o seguinte código:
df = spark.read.format("delta").load(f"Tables/new_table")
Entender os tipos de dados na assinatura do modelo
Ao acompanhar um modelo de machine learning e definir a assinatura no arquivo MLmodel
, você tem duas opções para descrever as entradas e saídas esperadas de um modelo. A assinatura de um modelo pode ser:
- Baseada em coluna – ideal para dados tabulares organizados por colunas.
- Baseado em tensor – ideal para dados de entrada que você deseja passar como matrizes (imagens, por exemplo).
No Microsoft Fabric, é comum trabalhar com dados tabulares, por isso é mais frequente usar assinaturas baseadas em colunas. O uso de assinaturas baseadas em coluna facilita o alinhamento das colunas de entrada reais com as colunas de entrada esperadas do modelo.
Ao definir a assinatura do modelo, você precisa usar tipos de dados do MLflow para especificar o esquema dos dados. Os tipos de dados mais usados são:
- Boolean: Dados lógicos (
True
ouFalse
) - Datetime: Dados datetime de 64b (por exemplo
2023-10-23 14:30:00
). - Double: Números de ponto flutuante de 64b (por exemplo
3.14159265359
). - Float: Números de ponto flutuante de 32b (por exemplo
3.14
). - Integer: Números inteiros de 32b com sinal (por exemplo
42
). - Long: Números inteiros de 64b com sinal (por exemplo
1234567890
). - String: Dados de texto (por exemplo
Amsterdam
).
Definir os tipos de dados dos dados de entrada
Depois de ingerir os dados em um delta lake e entender a assinatura do modelo, você precisa garantir que os tipos de dados dos dados sejam compatíveis com a entrada esperada pelo modelo.
Você pode trabalhar com seus dados em um notebook para verificar se os tipos de dados de cada coluna correspondem ao esperado e fazer alterações, se necessário.
Para listar os tipos de dados de cada coluna de um dataframe df
, use o seguinte código:
df.dtypes
Se você quiser alterar o tipo de dados de uma coluna específica, poderá usar o seguinte código:
from pyspark.sql.types import IntegerType, DoubleType
df = df.withColumn("S1", df["S1"].cast(IntegerType()))
df = df.withColumn("S2", df["S2"].cast(DoubleType()))
Quando você definir os tipos de dados dos dados de entrada para se alinharem com as entradas esperadas do modelo, poderá salvar os dados em uma nova tabela Delta. Agora, a nova tabela está pronta para ser utilizada na geração de previsões em lote.