Перейти к содержимому

Категориальные данные

Предварительная обработка данных — важный этап любого проекта машинного обучения. Она включает очистку и преобразование сырых данных в формат, пригодный для анализа алгоритмами машинного обучения. Python предлагает обширный набор методов предварительной обработки, которые помогают улучшить качество данных и производительность моделей. В этой главе рассматриваются базовые шаги предварительной обработки с основным акцентом на подготовку данных для работы с категориальными переменными.

Импорт данных

Первый шаг в любой задаче предварительной обработки данных — это импорт данных. Библиотека pandas для Python предоставляет простой способ чтения данных из различных форматов файлов. Функция read_csv() может быть использована для чтения данных из CSV-файла.

python
import pandas as pd
df = pd.read_csv('data.csv')

Очистка данных

Очистка данных — важный аспект предварительной обработки. Она включает выявление и обработку пропущенных данных, выбросов и аномалий. Библиотека Pandas предоставляет несколько методов для очистки данных, таких как fillna(), dropna() и replace().

python
# Fill missing values with a default
df['column'] = df['column'].fillna(0)

# Drop rows with any missing values
df = df.dropna()

# Replace specific values
df['column'] = df['column'].replace('old_value', 'new_value')

Преобразование данных

Преобразование данных — это процесс конвертации сырых данных в формат, подходящий для анализа. К наиболее часто используемым методам преобразования данных относятся масштабирование, кодирование и нормализация.

Масштабирование

Масштабирование используется для приведения признаков набора данных к одному масштабу. Этот метод полезен, когда признаки имеют разные диапазоны значений. Наиболее часто используемыми методами масштабирования являются StandardScaler и MinMaxScaler.

Кодирование

Кодирование — это процесс преобразования категориальных переменных в числовые значения. Наиболее часто используемыми методами кодирования являются порядковое кодирование (Ordinal Encoding) и кодирование одним горячим вектором (One-Hot Encoding).

python
from sklearn.preprocessing import OrdinalEncoder, OneHotEncoder
import pandas as pd

# Ordinal Encoding (for ordered categories)
encoder = OrdinalEncoder()
df['category'] = encoder.fit_transform(df[['category']])

# One-Hot Encoding (for unordered categories)
ohe = OneHotEncoder(sparse_output=False, handle_unknown='ignore')
encoded_array = ohe.fit_transform(df[['category']])
# Convert the numpy array back to a DataFrame with proper column names
encoded_df = pd.DataFrame(encoded_array, columns=ohe.get_feature_names_out(['category']))

Примечание о утечке данных: Всегда обучайте кодировщики только на тренировочных данных, а затем применяйте их к тренировочным и тестовым данным. Это предотвращает влияние информации из тестовой выборки на модель.

Обработка неизвестных категорий: Используйте handle_unknown='ignore' в OneHotEncoder, чтобы избежать ошибок, если тестовая выборка содержит категории, не встречавшиеся при обучении.

Нормализация

Нормализация — это процесс масштабирования числовых признаков в фиксированный диапазон, обычно [0, 1]. Стандартизация, в свою очередь, преобразует признаки так, чтобы их среднее значение было равно нулю, а стандартное отклонение — единице. Этот метод полезен, когда признаки имеют разные единицы измерения или когда алгоритмы предполагают нормальное распределение данных.

Отбор признаков

Отбор признаков — это процесс выбора наиболее релевантных признаков для модели машинного обучения. Он включает выявление наиболее значимых предикторов и удаление наименее важных. Наиболее часто используемым методом отбора признаков является SelectKBest.

python
# Prepare features (X) and target (y) from the dataframe
X = df.drop('target', axis=1)
y = df['target']

from sklearn.feature_selection import SelectKBest, f_classif

# Select the top 3 features based on ANOVA F-value
selector = SelectKBest(score_func=f_classif, k=3)
X_new = selector.fit_transform(X, y)

Заключение

В этой главе были рассмотрены ключевые шаги предварительной обработки, включая очистку данных, преобразование и отбор признаков. Применяя эти методы, вы можете улучшить качество данных и оптимизировать производительность модели, особенно при подготовке наборов данных для анализа категориальных переменных. Правильная работа с категориальными данными с помощью соответствующего кодирования и предотвращение утечки данных обеспечивают надежность и воспроизводимость конвейеров машинного обучения.

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.