Наука о данных
Концепции предварительной обработки данных с помощью Python
Надежный метод подготовки данных для оценщиков машинного обучения

В этой статье мы рассмотрим некоторые важные методы предварительной обработки данных. Это очень важный шаг - визуализировать данные и преобразовать их в подходящую форму, чтобы оценки (алгоритм) хорошо подходили с хорошей точностью.
Темы для обсуждения:
- Стандартизация
- Масштабирование с разреженными данными и выбросами
- Нормализация
- Категориальное кодирование
- Вменение
Стандартизация
Стандартизация - это процесс, который имеет дело со средним значением и стандартным отклонением точек данных. В качестве исходных данных значения варьируются от очень низких до очень высоких. Итак, чтобы избежать низкой производительности в модели, мы используем стандартизацию. В нем говорится, что среднее значение становится равным нулю, а стандартное отклонение становится единицей.
Формула стандартизации показана ниже:
z = (feature_value - среднее) / стандартное отклонение

Когда мы используем алгоритм для подбора наших данных, он предполагает, что данные центрированы и порядок дисперсии всех функций одинаков, в противном случае оценщики не будут предсказывать правильно.
В библиотеке sklearn есть метод стандартизации набора данных с помощью StandardScaler в классе предварительной обработки.
Мы используем команду import, чтобы использовать эту функцию в Python.
#Before modeling our estimator we should always some preprocessing scaling. # Feature Scaling from sklearn.preprocessing import StandardScaler sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)
Масштабирование с использованием разреженных данных и выбросов
Масштабирование с использованием разреженных данных.
Масштабирование данных - это еще один способ сделать значения признаков в некотором диапазоне от «0» до «1». Это можно сделать двумя способами: MinMaxScaler и MaxAbsScaler.
Пример с питоном
import numpy as np
X_train = np.array([[ 1., 0., 2.], [ 2., 0., -1.], [ 0., 2.,
-1.]])
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X_train)
print(X_train_minmax)
#output:
array([[0.5, 0. , 1. ],
[1. , 0. , 0. ],
[0. , 1. , 0. ]])
Как мы видим, входное значение находится в диапазоне от «0» до «1».
Создание масштабирования разреженного центра обработки данных - не лучшая идея, поскольку это может изменить его структуру. Итак, хорошо масштабировать исходные входные данные, которые имеют значения в разных масштабах.
Масштабирование с использованием выбросов:
Когда необработанные данные имеют много выбросов, масштабирование со средним значением и дисперсией не подходит для этих данных. Итак, мы должны использовать более надежный метод, такой как межквартильный метод (IQR), потому что на выбросы влияют среднее значение и дисперсия. Диапазон IQR составляет от 25% до 75%, в котором медиана удаляется и масштабируется квантильный диапазон.
RobustScaler принимает некоторые параметры для масштабирования.
- Первый параметр - это
with_centering, который центрирует данные перед масштабированием, если он истинен. - Второй параметр -
with_scaling, если он истинен, то он масштабирует данные в диапазоне квантилей.
Пример с питоном
from sklearn.preprocessing import RobustScaler
X = [[ 1., 0., 2.], [ 2., 0., -1.], [ 0., 2., -1.]]
transformer = RobustScaler().fit(X)
transformer.transform(X)
#output:
array([[ 0., 0., 2.],
[ 1., 0., 0.],
[-1., 2., 0.]])
Нормализация
При этом процесс масштабирования заключается в приведении значений к их единичной норме. Примером такой нормализации является MinMaxScaler. Этот процесс полезен, когда мы имеем дело с квадратичной формой в парных формах, он может быть основан на ядре или скалярном произведении.
Это также полезно на основе модели векторного пространства, то есть векторов, связанных с образцами текстовых данных, для облегчения фильтрации данных.
Происходит два типа нормализации, как показано ниже:
- Нормализовать: масштабирование входных векторов до единичной нормы. Параметр norm используется для нормализации всех ненулевых значений. Он принимает три аргумента: L1, L2 и max, где L2 - норма по умолчанию.
- Нормализатор: он также выполняет ту же операцию, но в этом процессе метод подгонки является необязательным.
Пример с Python:
from sklearn.preprocessing import normalize
X = [[ 1., 0., 2.], [ 2., 0., -1.], [ 0., 2., -1.]]
X_normalized = normalize(X, norm=’l2')
print(X_normalized)
#output:
array([[ 0.4472136 , 0. , 0.89442719],
[ 0.89442719, 0. , -0.4472136 ],
[ 0. , 0.89442719, -0.4472136 ]])
Пример с нормализатором:
from sklearn.preprocessing import Normalizer
X = [[ 1., 0., 2.], [ 2., 0., -1.], [ 0., 2., -1.]]
normalizer = preprocessing.Normalizer().fit(X)
normalizer.transform(X)
#output:
array([[ 0.4472136 , 0. , 0.89442719],
[ 0.89442719, 0. , -0.4472136 ],
[ 0. , 0.89442719, -0.4472136 ]])
Нормализатор полезен в конвейере обработки данных вначале.
Когда мы используем разреженный ввод, важно преобразовать его, а не формат CSR, чтобы избежать множественных копий памяти. CSR сжат. Разреженные строки находятся в scipy.sparse.csr_matrix.
Категориальная кодировка
Когда мы получаем некоторый набор необработанных данных, тогда некоторые столбцы не имеют непрерывных значений, а находятся в некоторых категориях двоичных и множественных категорий. Итак, чтобы преобразовать их в целочисленное значение, мы используем методы кодирования. Ниже приведены некоторые методы кодирования:
- Получить макеты:. Он используется для получения нового столбца функций с 0 и 1, кодирующими категории, с помощью библиотеки панд.
- Label Encoder: используется для кодирования двоичных категорий в числовые значения в библиотеке sklearn.
- One Hot Encoder. Библиотека sklearn предоставляет еще одну функцию для преобразования класса категорий в новые числовые значения 0 и 1 с новыми столбцами функций.
- Хеширование. Это более полезно, чем горячее кодирование в случае больших размеров. Он используется, когда в объекте используется высокая мощность.
Существует множество других методов кодирования, таких как среднее кодирование, кодирование Гельмерта, порядковое кодирование, кодирование отношения вероятностей и т. д.
Пример с Python:
df1=pd.get_dummies(df['State'],drop_first=True)

Вменение
когда в необработанных данных есть некоторые пропущенные значения, поэтому преобразование отсутствующей записи в числовое значение называется вменением.
Создание случайного фрейма данных.
# import the pandas library import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4, 3), index=['a', 'c', 'e', 'h'],columns=['First', 'Second', 'Three']) df = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']) print (df)

Теперь заменяем на нулевое значение.
print ("NaN replaced with '0':")
print (df.fillna(0))

Замена отсутствующих значений на среднее.
from sklearn.impute import SimpleImputer imp = SimpleImputer(missing_values=np.nan, strategy='mean')
Sklearn предоставляет простой импьютер для нахождения значений NAN и заполнения их средним значением.
Мы можем использовать импьютер в конвейере, чтобы улучшить оценщик.
Заключение:
Предварительная обработка данных - важный шаг, который необходимо выполнить, чтобы сделать набор данных более надежным для наших оценщиков.
Надеюсь, статья вам понравилась. Свяжитесь со мной в моих LinkedIn и twitter.
Рекомендуемые статьи
2. Структуры данных Python, типы данных и объекты
3. Python: от нуля до героя с примерами
4. Полностью объясненная классификация SVM с помощью Python
5. Полностью объясненная кластеризация K-средних с использованием Python
6. Полностью объясненная линейная регрессия с помощью Python
7. Полностью объясненная логистическая регрессия с помощью Python
8. Основы временных рядов с Python