Transformar dados com operadores
Enquanto muitos operadores no Estruturador de Dados são intuitivos e fáceis de usar, outros exigem uma compreensão mais profunda para usá-los completamente.
Usar um operador de codificação one-hot
Alguns modelos de machine learning, como regressão linear, exigem que todas as variáveis de entrada e saída sejam numéricas e não ofereçam suporte a variáveis categóricas. Dados categóricos se referem a variáveis que são divididas em várias categorias que não carregam uma ordem ou valor numérico.
Em uma codificação one-hot, cada categoria em um recurso é representada como um vetor binário de 1 e 0.
Por exemplo, se você tiver uma variável animal de estimação com os valores cão, gato e pássaro, três novas variáveis serão criadas (uma para cada tipo de animal de estimação). Para cada ponto de dados, ele marca 1 para o animal de estimação que representa e 0 para os outros. Assim, se um ponto de dados representa um cão, ele é codificado como [1, 0, 0]. Se for um gato, é [0, 1, 0], e se for um pássaro, é [0, 0, 1].
Observação
A codificação one-hot pode levar a um aumento da dimensionalidade, que é quando o número de recursos no conjunto de dados se torna muito grande. Esse é particularmente o caso quando a variável categórica tem muitos valores exclusivos.
Vamos criar um dataframe com base no exemplo de animal de estimação acima e usar o Estruturador de Dados para gerar o código para codificação one-hot.
import pandas as pd
# Sample dataset with 50 data points, including duplicates
data = {'pet': ['dog', 'dog', 'cat', 'cat', 'bird', 'bird']*8 + ['bird', 'cat']}
df = pd.DataFrame(data)
print(df.head(10))
As etapas a seguir mostram como usar o operador da codificação one-hot para a variável pet
.
Iniciar o Estruturador de Dados em um notebook do Microsoft Fabric para o dataframe
df
.Selecione a variável
pet
.No painel Operações, selecione Fórmulas e Codificação one-hot.
Escolha Aplicar.
Selecione + Adicionar código ao notebook na barra de ferramentas acima da grade do Estruturador de Dados. Isso gera uma função que pode ser executada no pipeline de dados.
Usar o operador binarizador de vários rótulos
A codificação one-hot é usada quando cada ponto de dados pertence exatamente a uma categoria. Por outro lado, o operador binarizador de vários rótulos é usado quando cada ponto de dados pode pertencer a várias categorias.
O operador binarizador de vários rótulos permite dividir dados categóricos em uma nova coluna para cada categoria usando um delimitador de divisão de texto, em que cada nova coluna contém um número um em linhas que correspondem a essa categoria e, caso contrário, 0.
Para fins de treinamento, vamos criar um dataframe sobre a categoria de alimentos e usar o Estruturador de Dados para gerar o código para o binarizador de vários rótulos.
import pandas as pd
#Sample data
data = {
'food': ['Pasta', 'Burger', 'Ice Cream', 'Salad'],
'category': ['Italian|Fine dining', 'American|Fast Food', 'Dessert', 'Healthy']
}
# Create DataFrame
restaurant = pd.DataFrame(data)
Em seguida, as etapas a seguir mostram como usar o operador binarizador de vários rótulos para a variável category
.
Iniciar o Estruturador de Dados em um notebook do Microsoft Fabric para o dataframe
restaurant
.Selecione a variável
category
.No painel Operações, selecione Fórmulas e, em seguida, Binarizador de vários rótulos.
Digite | como o delimitador.
O resultado é um dataframe com variáveis para cada categoria, como Americana, Sobremesa, Fast Food, Saudável e Italiana. Cada item alimentar é marcado com 1 ou 0 nessas colunas para mostrar a que categorias pertence. Por exemplo, tanto a Pizza quanto o Hambúrguer se enquadram em várias categorias.
Escolha Aplicar.
Selecione + Adicionar código ao notebook na barra de ferramentas acima da grade do Estruturador de Dados. Isso gera uma função que pode ser executada no seu pipeline de pré-processamento.
Usar operador de escala mín.–máx.
Escala mín.–máx. ou normalização mín.-máx. é o processo de transformação de um recurso numérico. Esse processo escala o intervalo dos seus dados, preservando a forma da distribuição original e as relações entre as variáveis.
Ele garante que a significância de um recurso seja determinada por seu valor relativo, não pelo seu valor absoluto. Em outras palavras, os recursos não são considerados mais importantes simplesmente porque têm escalas maiores.
Ele pega cada valor em seus dados, subtrai o valor mínimo desses dados e, em seguida, divide pelo intervalo dos dados (o valor máximo menos o valor mínimo).
O resultado é que seus dados são redimensionados para um intervalo de 0 a 1 normalmente, o que pode ser útil para certos tipos de algoritmos de aprendizado de máquina, particularmente aqueles que usam medidas de distância como K-Vizinho mais próximo.
Vamos considerar um dataframe que representa as notas de alunos em uma classe. O dataframe tem três colunas: Student
, Math_Grade
, English_Grade
e Hours_Studied
.
import pandas as pd
# Sample data
data = {
'Student': ['Bob', 'Mark', 'Anna', 'David', 'Sam'],
'Math_Grade': [85, 90, 78, 92, 88],
'English_Grade': [80, 85, 92, 88, 90],
'Hours_Studied': [250, 500, 355, 245, 199]
}
df = pd.DataFrame(data)
print(df)
A saída é:
Student Math_Grade English_Grade Hours_Studied
0 Bob 85 80 250
1 Mark 90 85 500
2 Anna 78 92 355
3 David 92 88 245
4 Sam 88 90 199
Agora, vamos aplicar o dimensionador mín.-máx. às variáveis, Math_Grade
, English_Grade
e Hours_Studied
usando o Estruturador de Dados. Para isso, você precisa usar o operador Escala de valores mín./máx. na categoria Numérica.
Acima, as notas são dimensionadas para se enquadrarem no intervalo de [0, 1]
, com a nota mínima mapeada para 0 e a nota máxima mapeada para 1. Outras notas são dimensionadas proporcionalmente dentro desse intervalo. Você também pode ajustar o intervalo mínimo e máximo.
Se você usar recursos como Math_Grade
, English_Grade
e Hours_Studied
em um algoritmo de aprendizado de máquina baseado em distância, como K-Vizinho mais próximo, sem primeiro dimensioná-los, poderá encontrar alguns problemas.
O recurso Hours_Studied
poderia potencialmente dominar os outros recursos devido ao seu maior intervalo de valores. Isso poderia levar a um modelo que depende fortemente de Hours_Studied
, ignorando Math_Grade
e English_Grade
. Portanto, é importante dimensionar seus dados nesses casos para garantir que todos os recursos recebam a mesma importância.
Para saber mais sobre normalização de dados para modelos de machine learning, consulte Transformações de dados.