Variablenkodierung: Diese Technik kann für die Verwendung in bestimmten Kategorien verwendet werden
Analysieren Sie die Daten, wir kommen häufig aus verschiedenen Kategorien, die Merkmale oder Attribute darstellen, die nicht aus einer natürlichen Zahl bestehen können. Nicht bekannt, hauptsächlich aufgrund der von der Maschine gelernten Algorithmen(maschinelles Lernen) erfordern, dass die eingegebenen Daten sejam-numerisch sind. Wichtig ist, dass Sie eine effiziente Methode zum Kodieren von Texten in verschiedene Kategorien benötigen, um die Informationen zu minimieren oder zu maximieren. Weitere Informationen: One-Sizzling-Codierung, Etikettenkodierung e Zählkodierung. Das Verstehen und Anwenden angemessener technischer Grundlagen ist eine Garantie für die präzise Analyse und Modellierung leistungsfähiger Maschinen.
import pandas as pd # Dados fictícios
dados = {
'id_venda': [1, 2, 3],
'marca': ['Chevrolet', 'Chevrolet', 'Volkswagen'],
'modelo': ['Celta', 'Onix', 'Gol'],
'cor': ['Preto', 'Branco', 'Branco'],
'ano_fabricacao': [2019, 2020, 2021],
'preco': [50000, 60000, 55000]
}
# Criação do DataFrame
df = pd.DataFrame(dados)
df.head()
Vamos usar o dataframe ficticio acima para explicar as alterações que cada
ferramenta de enconding faz nos dados.
One-Sizzling-Codierung
Eine der beliebtesten Techniken zur Codierung verschiedener Kategorien ist One-Sizzling Encoding. Es umfasst eine Reihe neuer Binärdateien für jede einzelne Kategorie in verschiedenen Originalkategorien. Jede Beobachtung erhielt den Wert 1 in einer Spalte, die ihrer Kategorie entspricht, und 0 in allen anderen Spalten.
One-Sizzling Encoding wird häufig bei Problemen verwendet, da es keine natürliche Reihenfolge zwischen Kategorien wie Textklassifizierung oder Gefühlsanalyse gibt. Dennoch ist es eine technische Umgehung, dass die von der Maschine gelernten Algorithmen eine größere Bedeutung für die Kategorien mit den meisten Werten haben und dass alle Binärspalten von der Type her unabhängig behandelt werden müssen.
def one_hot_encoding(data_dict):
# Converter o dicionário em DataFrame
dataframe = pd.DataFrame(data_dict)# Filtrar apenas as colunas categóricas
categorical_cols = dataframe.select_dtypes(embrace=['object'])
# Criar cópia do DataFrame unique
dataframe_encoded = dataframe.copy()
# Iterar sobre as colunas categóricas
for col in categorical_cols:
# Iterar sobre os valores únicos da coluna
for worth in dataframe_encoded[col].distinctive():
# Criar nova coluna com o nome do valor único
new_col = f"{col}_{worth}"
# Atribuir 1 para as linhas em que o valor está presente, caso contrário, atribuir 0
dataframe_encoded[new_col] = dataframe_encoded[col].apply(lambda x: 1 if x == worth else 0)
# Remover as colunas categóricas originais
dataframe_encoded.drop(categorical_cols, axis=1, inplace=True)
return dataframe_encoded
dados_one_hot_enconding = one_hot_encoding(dados)
dados_one_hot_enconding.head()
Antes de aplicar o One-Sizzling Encoding, tínhamos três colunas em nosso
DataFrame unique: "marca", "modelo" e "cor". Cada uma dessas colunas
continha várias categorias únicas. Ao utilizar o One-Sizzling Encoding,
transformamos essas categorias em colunas separadas.Agora, em vez de ter apenas as colunas originais, temos uma nova coluna
para cada categoria presente nas colunas anteriores. Essas novas colunas
são criadas adicionando o nome da coluna unique seguido pelo valor único
da categoria.
A função "def one_hot_encoding(dados)" usada acima é só pra tentar explicar
melhor como é o processo interno de uma transformação one_hot_encondig, mas
na prática podermos encontrar bibliotecas e funções otimizadas para isso,
conforme mostrado aba
# Aplicar o One-Sizzling Encoding usando a função get_dummies()
import pandas as pd
df_encoded = pd.get_dummies(df)# Aplicar o One-Sizzling Encoding usando a função OneHotEncoder do sklearn.
from sklearn.preprocessing import OneHotEncoder
# Criar uma instância do OneHotEncoder
encoder = OneHotEncoder(sparse=False)
# Ajustar e transformar os dados
df_encoded = encoder.fit_transform(df[categorical_cols])
Nein, One-Sizzling Encoding kann zu einer erheblichen Erweiterung der Dimensionierung seit jeher führen, insbesondere in verschiedenen Kategorien in mehreren exklusiven Kategorien. Dies kann zu Problemen führen und erfordert eine sorgfältige Anpassung der Dimensionalität in Verbindung mit den Daten.
Etikettenkodierung
Eine weitere Codierungstechnik ist die Etikettenkodierung. Nach dieser Methode ist jede einzelne Kategorie für einen numerischen Wert bestimmt. Da jede Kategorie eine einzige interne Nummer erhält, ist es möglich, dass eine unterschiedliche Kategorie durch aufeinanderfolgende Zahlenwerte repräsentiert wird.
O Label Encoding ist nützlich, wenn Kategorien eine bestimmte Reihenfolge haben. Zum Beispiel für verschiedene Werte wie „Klein“, „Mittel“, „Groß“ oder „Label Encoding“ mit den Werten 0, 1 und 2. Diese Technik ist relativ einfach zu implementieren und kann in der Zeit des Waffenraums effizient sein.
def label_encoder(dataframe):
dataframe_encoded = dataframe.copy() # Criar uma cópia do DataFrame uniquefor col in dataframe_encoded.columns: # Iterar sobre cada coluna do DataFrame
unique_values = dataframe_encoded[col].distinctive() # Obter os valores únicos da coluna
encoding_dict = {worth: i for i, worth in enumerate(unique_values)} # Criar dicionário de codificação
# O dicionário de codificação mapeia cada valor único para um número inteiro correspondente
dataframe_encoded[col] = dataframe_encoded[col].map(encoding_dict) # Codificar os valores da coluna
return dataframe_encoded # Retornar o DataFrame com as colunas codificadas
dados_label_enconding = label_encoder(df)
dados_label_enconding.head()
Nota se que cada categoria das variaveis foram substituidads por um
número diferente.A função def label_encoder(dataframe): foi usada apenas para mostrar
detalhadamente como funciona o processo de transformação usando
Label Encoding, mas assim como one-hot-Encoding temos funções prontas
e otimizadas para isso, como podemos mostrar abaixo.
from sklearn.preprocessing import LabelEncoder
import pandas as pd
encoder = LabelEncoder()
df = encoder.fit_transform(df)
Es ist jedoch wichtig, dass das Label Encoding in eine bestimmte Kategorie eingeführt werden muss, da es bei der Interpretation der von der Maschine ausgeführten Algorithmen zu Fehlern kommen kann. Wichtig ist, dass Sie darauf achten müssen, die Label-Kodierung anzuwenden und die Artwork der Kategorien zu berücksichtigen, damit Ihr Modell nicht endgültig ist.
Anzahl/Frequenzkodierung
Rely Encoding ist eine various Technik zur Codierung verschiedener Kategorien. Diese Methode wird durch jede einzelne Kategorie ersetzt, die nicht mit den Daten verknüpft ist. Wenn beispielsweise die Kategorie „A“ drei Mal vorhanden ist, werden alle Instanzen durch die Kategorie „A“ durch den Wert 3 ersetzt.
Frequency Encoding ersetzt außerdem jede Kategorie durch ihre Eigenschaft (oder Frequenz) in Bezug auf die Gesamtzahl der Beobachtungen. Während wir mit der absoluten Anzahl von Ereignissen rechnen, ist es eine technische Berechnung, die sich auf jede Kategorie bezieht, die nicht mit den Daten zusammenhängt. Dies kann dazu führen, dass die Anzahl der Beobachtungen in eine Kategorie oder die Gesamtzahl der Beobachtungen aufgeteilt wird. Es ist notwendig, die Verbreitung in Bezug auf die Kategorien zu erfassen, und es kann in Fällen nützlich sein, in denen mehr Informationen vorhanden sind, als dass es absolut ansteckend wäre.
def count_encoding(dataframe):
encoded_dataframe = dataframe.copy()for col in encoded_dataframe.columns:
count_map = encoded_dataframe[col].value_counts().to_dict()
encoded_dataframe[col] = encoded_dataframe[col].map(count_map)
return encoded_dataframe
def frequency_encoding(dataframe):
encoded_dataframe = dataframe.copy()
for col in encoded_dataframe.columns:
frequency_map = (encoded_dataframe[col].value_counts() / len(encoded_dataframe)).to_dict()
encoded_dataframe[col] = encoded_dataframe[col].map(frequency_map)
return encoded_dataframe
dados_count_enconding = count_encoding(df)
dados_frequency_enconding = frequency_encoding(df)
dados_count_enconding.head()
dados_frequency_enconding.head()
Es kann besonders nützlich sein, wenn die Kategorien regelmäßig und informativ für die Analyse sind. Beispielsweise kann es sich bei der Ansteckung mit der Anzahl der freigegebenen Produkte um einen relevanten Indikator handeln, sobald jedes Produkt freigegeben wurde.
Rely/Frequency Encoding ist einfach zu implementieren und kann mit einer Dimensionierung von mehr als einem Jahr erstellt werden. Es ist jedoch nicht erforderlich, die Anzahl der Spalten/Kategorien wie One-Sizzling Encoding zu erweitern. Dies ist jedoch nicht der Fall, diese Technik kann nicht für alle Situationen geeignet sein, insbesondere wenn die Kategorien related sind oder wenn diese Kategorien mit der höchsten Werthäufigkeit eingehen, und zwar aufgrund von Informationen.
Vergleich und Überlegungen zum Abschluss
Um eine für verschiedene Kategorien geeignete Kodifizierungstechnik zu verwenden, ist es wichtig, die Artwork der Kategorien, die Reihenfolge oder die Beziehung zwischen ihnen zu berücksichtigen, da sie sich auf die Dimensionalität der einzelnen Kategorien auswirken und sich auf die verschiedenen Kategorien beziehen.
Das One-Sizzling-Encoding ist wirksam für verschiedene Kategorien, unabhängig von einer bestimmten Reihenfolge und für verschiedene Medienmengen in Kategorien, während Label Encoding nur dann verwendet wird, wenn eine inerente Reihenfolge und eine unterschiedliche Anzahl von Kategorien vorhanden ist. Die Anzahl/Frequenz-Kodierung kann nützlich sein, wenn die Häufigkeit der Kategorien informativ ist, um sie zu analysieren und zu variieren, und zwar in einer hohen Anzahl von Kategorien.
Im Großen und Ganzen gibt es keine allgemeingültige Kodifizierungstechnik, sondern nur einige Vorteile und Einschränkungen. Wichtig ist, dass es sich im Wesentlichen um einen Problemkontext und das Experimentieren mit verschiedenen Techniken handelt, um festzustellen, ob sie in jedem Fall angemessener sind.
Fazit
Eine aus verschiedenen Kategorien geeignete Kodifizierung ist unerlässlich, um eine genaue Analyse und Modellanalyse der Maschinenleistung zu gewährleisten. In diesem Artikel haben wir die drei folgenden Techniken erkundet: One-Sizzling-Encoding, Label-Encoding und CountFrequency-Encoding. Jede Technik verfügt über besondere Merkmale und ist für verschiedene Situationen geeignet.
Bei der Anwendung dieser Techniken ist es von grundlegender Bedeutung, die Natur der verschiedenen Kategorien zu berücksichtigen, ihre Beziehung zu allen, die Quantität der Kategorien und ihre Auswirkungen auf die Dimensionierung der einzelnen Kategorien. Eine Schulung der Technik kann zu einem Unterschied führen, der nicht vom Modell abhängt und die Qualität der gewonnenen Erkenntnisse gewährleistet.
Wichtig ist, dass Sie in diesen Kategorien auf die Bedeutung der entsprechenden Kodifizierung achten und mit verschiedenen Techniken experimentieren, um die beste Lösung für Ihr spezifisches Downside zu finden.