В области науки о данных и машинного обучения кодирование категориальных переменных является важным шагом в подготовке данных для обучения модели. Однако как насчет числовых характеристик? Хотя pd.get_dummies() из библиотеки pandas обычно используется для быстрого кодирования категориальных переменных, его также можно использовать для кодирования числовых функций. В этой статье мы рассмотрим различные методы и предоставим примеры кода для кодирования числовых функций с помощью pd.get_dummies().
Метод 1: группирование
Биннинг — это метод, который преобразует числовые характеристики в категориальные переменные на основе заранее определенных интервалов или интервалов. Этот метод полезен, когда числовой признак имеет широкий диапазон и мы хотим уловить нелинейные зависимости.
import pandas as pd
# Create a numerical feature
data = {'temperature': [25, 32, 18, 20, 28]}
df = pd.DataFrame(data)
# Define bins for temperature ranges
bins = [0, 20, 25, 30, 35]
# Perform binning using pd.cut()
df['temperature_bin'] = pd.cut(df['temperature'], bins)
# Encode the temperature_bin feature using pd.get_dummies()
encoded_df = pd.get_dummies(df['temperature_bin'], prefix='temperature')
# Concatenate the original dataframe with the encoded features
df_encoded = pd.concat([df, encoded_df], axis=1)
print(df_encoded)
Метод 2: Квантильное кодирование
Квантильное кодирование преобразует числовые характеристики в категориальные переменные на основе квантилей. Этот метод сохраняет порядковый номер между исходными числовыми значениями, что делает его полезным, когда важно ранжирование значений.
import pandas as pd
# Create a numerical feature
data = {'income': [3000, 5000, 8000, 10000, 20000]}
df = pd.DataFrame(data)
# Encode income using quantiles
df['income_quantile'] = pd.qcut(df['income'], q=3, labels=['low', 'medium', 'high'])
# Encode the income_quantile feature using pd.get_dummies()
encoded_df = pd.get_dummies(df['income_quantile'], prefix='income')
# Concatenate the original dataframe with the encoded features
df_encoded = pd.concat([df, encoded_df], axis=1)
print(df_encoded)
Метод 3: масштабирование и объединение признаков
Этот метод сочетает в себе масштабирование и объединение признаков для кодирования числовых признаков. Это может быть полезно, когда числовой признак имеет широкий диапазон и мы хотим уловить как линейные, так и нелинейные зависимости.
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
# Create a numerical feature
data = {'price': [50, 100, 150, 200, 250]}
df = pd.DataFrame(data)
# Scale the price feature using MinMaxScaler
scaler = MinMaxScaler()
df['price_scaled'] = scaler.fit_transform(df[['price']])
# Perform binning on the scaled feature
bins = [0, 0.33, 0.67, 1]
df['price_bin'] = pd.cut(df['price_scaled'], bins)
# Encode the price_bin feature using pd.get_dummies()
encoded_df = pd.get_dummies(df['price_bin'], prefix='price')
# Concatenate the original dataframe with the encoded features
df_encoded = pd.concat([df, encoded_df], axis=1)
print(df_encoded)
В этой статье мы рассмотрели различные методы кодирования числовых объектов с помощью pd.get_dummies(). Мы обсудили такие методы, как биннинг, квантильное кодирование и сочетание масштабирования признаков с биннингом. Используя эти методы, мы можем эффективно преобразовать числовые характеристики в категориальные переменные, что позволяет нам использовать их в моделях машинного обучения. Не забудьте выбрать подходящий метод в зависимости от характера ваших данных и взаимосвязей, которые вы хотите зафиксировать.