Предварительная обработка данных играет решающую роль в рабочих процессах машинного обучения. Одним из распространенных методов предварительной обработки является горячее кодирование, которое преобразует категориальные переменные в двоичные векторы. В этой статье мы рассмотрим различные методы выполнения горячего кодирования столбцов в Pandas, популярной библиотеке манипулирования данными на Python.
Метод 1: функция get_dummies() Pandas
import pandas as pd
# Create a sample DataFrame
data = {'Color': ['Red', 'Blue', 'Green', 'Red', 'Blue']}
df = pd.DataFrame(data)
# Perform one-hot encoding
encoded_df = pd.get_dummies(df['Color'])
# Combine the encoded DataFrame with the original DataFrame
df_encoded = pd.concat([df, encoded_df], axis=1)
print(df_encoded)
Метод 2: OneHotEncoder от Scikit-learn
from sklearn.preprocessing import OneHotEncoder
import pandas as pd
# Create a sample DataFrame
data = {'Color': ['Red', 'Blue', 'Green', 'Red', 'Blue']}
df = pd.DataFrame(data)
# Initialize the OneHotEncoder
encoder = OneHotEncoder()
# Fit and transform the data
encoded_data = encoder.fit_transform(df[['Color']]).toarray()
# Create a DataFrame from the encoded data
encoded_df = pd.DataFrame(encoded_data, columns=encoder.get_feature_names_out(['Color']))
# Combine the encoded DataFrame with the original DataFrame
df_encoded = pd.concat([df, encoded_df], axis=1)
print(df_encoded)
Метод 3: использование функции pandas.get_dummies() с префиксом
import pandas as pd
# Create a sample DataFrame
data = {'Color': ['Red', 'Blue', 'Green', 'Red', 'Blue']}
df = pd.DataFrame(data)
# Perform one-hot encoding with prefix
encoded_df = pd.get_dummies(df['Color'], prefix='Color')
# Combine the encoded DataFrame with the original DataFrame
df_encoded = pd.concat([df, encoded_df], axis=1)
print(df_encoded)
Метод 4. Использование функции pandas.DataFrame.replace()
import pandas as pd
# Create a sample DataFrame
data = {'Color': ['Red', 'Blue', 'Green', 'Red', 'Blue']}
df = pd.DataFrame(data)
# Define the mapping for one-hot encoding
mapping = {'Red': [1, 0, 0], 'Blue': [0, 1, 0], 'Green': [0, 0, 1]}
# Replace the values with the mapping
for column in df.columns:
df[column] = df[column].replace(mapping)
print(df)
Метод 5. Использование функции pandas.Categorical()
import pandas as pd
# Create a sample DataFrame
data = {'Color': ['Red', 'Blue', 'Green', 'Red', 'Blue']}
df = pd.DataFrame(data)
# Convert the column to categorical
df['Color'] = pd.Categorical(df['Color'])
# Perform one-hot encoding
encoded_df = pd.get_dummies(df['Color'])
# Combine the encoded DataFrame with the original DataFrame
df_encoded = pd.concat([df, encoded_df], axis=1)
print(df_encoded)
Горячее кодирование – это мощный метод предварительной обработки категориальных переменных. В этой статье мы рассмотрели пять различных методов выполнения горячего кодирования столбцов в Pandas. Эти методы обеспечивают гибкость и позволяют выбрать тот, который лучше всего соответствует вашим потребностям. Преобразуя категориальные переменные в двоичные векторы, вы можете повысить производительность моделей машинного обучения и извлечь ценную информацию из ваших данных.