standardscaler sklearn что делает

Масштабируйте, стандартизируйте или нормализуйте с помощью Scikit-Learn

Дата публикации Mar 4, 2019

Многие алгоритмы машинного обучения работают лучше, когда функции имеют относительно одинаковый масштаб и близки к нормальному распределению.MinMaxScaler,RobustScaler,StandardScaler, а такжеNormalizerявляютсяscikit учитьсяметоды предварительной обработки данных для машинного обучения. Какой метод вам нужен, если таковой имеется, зависит от типа вашей модели и ваших значений характеристик.

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

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Как часто эти методы появляются в рабочих процессах машинного обучения, мне было трудно найти информацию о том, какой из них использовать, когда. Комментаторы часто используют терминымасштаб,гостирован, а такженормализуютвзаимозаменяемые. Тем не менее, они имеют некоторые отличия, и четыре функции scikit-learn, которые мы рассмотрим, делают разные вещи.

Сначала несколько служебных заметок:

Что означают эти термины?

Масштабкак правило, означает изменитьдиапазонценностей. Форма распределения не меняется. Подумайте о том, как масштабная модель здания имеет те же пропорции, что и оригинал, только меньше. Вот почему мы говорим, что оно нарисовано в масштабе. Диапазон часто устанавливается от 0 до 1.

Стандартизируйкак правило, означает изменение значений так, чтобы распределениестандартотклонение от среднего равно единице. Он выводит что-то очень близкое к нормальному распределению. Масштабирование часто подразумевается.

Нормализоватьможет использоваться для обозначения любой из вышеперечисленных вещей (и даже больше!). Я предлагаю вам избежатьнормализуют,потому что он имеет много определений и склонен создавать путаницу.

Если вы используете какой-либо из этих терминов в своем сообщении, я настоятельно рекомендую вам их определить.

Зачем масштабировать, стандартизировать или нормализовать?

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

Масштабирование и стандартизация могут помочь функциям получить более удобную форму для этих алгоритмов.

Четыре метода предварительной обработки scikit-learn, которые мы изучаем, соответствуют API, показанному ниже.X_trainа такжеX_testявляются обычными NumPy ndarrays или панды DataFrames.

Мы рассмотрим несколько дистрибутивов и применим к ним каждый из четырех методов scikit-learn.

Исходные данные

Я создал четыре дистрибутива с разными характеристиками. Распределения:

Все значения имеют относительно одинаковый масштаб, как видно на оси X графика оценки плотности ядра (kdeplot) ниже.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Теперь наш kdeplot выглядит так:

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

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

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Хорошо, давайте начнем масштабирование!

MinMaxScaler

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

Обратите внимание, что MinMaxScaler не уменьшает важность выбросов.

Диапазон по умолчанию для функции, возвращаемой MinMaxScaler, составляет от 0 до 1.

Вот kdeplot после применения MinMaxScaler.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

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

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

RobustScaler

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Обратите внимание, что диапазон для каждой функции после применения RobustScaler больше, чем для MinMaxScaler.

Используйте RobustScaler, если вы хотите уменьшить влияние выбросов по сравнению с MinMaxScaler.

Теперь давайте обратимся к StandardScaler.

StandardScaler

StandardScalerстандартизирует функцию путем вычитания среднего значения, а затем масштабирования до дисперсии единиц. Единица отклонения означает деление всех значений на стандартное отклонение. StandardScaler не соответствует строгому определениюмасштабЯ представил ранее.

StandardScaler приводит к распределению со стандартным отклонением, равным 1. Дисперсия также равна 1, посколькудисперсия = стандартное отклонение в квадрате, И 1 в квадрате = 1.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

На графике выше вы можете видеть, что все четыре распределения имеют среднее значение, близкое к нулю, и единичную дисперсию. Значения в аналогичном масштабе, но диапазон больше, чем после MinMaxScaler.

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

StandardScaler искажает относительные расстояния между значениями объектов, поэтому, как правило, это мой второй выбор в этом семействе преобразований.

Теперь давайте посмотрим на нормализатор.

Normalizer

Normalizerработает над строками, а не над столбцами! Я нахожу это очень не интуитивным. Эту информацию легко пропустить в документации.

По умолчанию нормализация L2 применяется к каждому наблюдению, так что значения в строке имеют единичную норму.Единица нормыс L2 означает, что если бы каждый элемент был возведен в квадрат и суммирован, сумма была бы равна 1. В качестве альтернативы, вместо нормализации L2 может быть применена нормализация L1 (так называемый такси или Манхэттен).

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Нашли ли вы хорошие варианты использования нормализатора? Если это так, пожалуйста, дайте мне знать в Twitter @discdiver.

В большинстве случаев один из других инструментов предварительной обработки будет более полезным.

Опять же, нормализатор scikit-learn работает со строками, а не со столбцами.

сравнение

Здесь приведены графики исходных дистрибутивов до и после применения MinMaxScaler, RobustScaler и StandardScaler.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Обратите внимание, что после любого из этих трех преобразований значения находятся в аналогичном масштабе. Также обратите внимание, что MinMaxScaler не искажает расстояния между значениями в каждой функции.

Заворачивать

Вотшпаргалка, которую я сделал в Google Sheetчтобы помочь вам сохранить правильность опций:

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

В этой статье вы увидели, как scikit-learn может помочь вам масштабировать, стандартизировать и нормализовать ваши данные.

Ресурсы, чтобы идти глубже:

Я надеюсь, что вы нашли это руководство полезным. Если вы это сделали, пожалуйста, поделитесь им на своем любимом канале в социальных сетях. 👏

Я пишу о Python, Docker и науке о данных. Если вас интересует какая-либо из этих тем, читайте подробнееВоти следуй за мной на Среднем. 😃

Источник

Standardize features by removing the mean and scaling to unit variance.

The standard score of a sample x is calculated as:

Standardization of a dataset is a common requirement for many machine learning estimators: they might behave badly if the individual features do not more or less look like standard normally distributed data (e.g. Gaussian with 0 mean and unit variance).

For instance many elements used in the objective function of a learning algorithm (such as the RBF kernel of Support Vector Machines or the L1 and L2 regularizers of linear models) assume that all features are centered around 0 and have variance in the same order. If a feature has a variance that is orders of magnitude larger that others, it might dominate the objective function and make the estimator unable to learn from other features correctly as expected.

This scaler can also be applied to sparse CSR or CSC matrices by passing with_mean=False to avoid breaking the sparsity structure of the data.

Parameters copy bool, default=True

If False, try to avoid a copy and do inplace scaling instead. This is not guaranteed to always work inplace; e.g. if the data is not a NumPy array or scipy.sparse CSR matrix, a copy may still be returned.

with_mean bool, default=True

If True, center the data before scaling. This does not work (and will raise an exception) when attempted on sparse matrices, because centering them entails building a dense matrix which in common use cases is likely to be too large to fit in memory.

with_std bool, default=True

If True, scale the data to unit variance (or equivalently, unit standard deviation).

Attributes scale_ ndarray of shape (n_features,) or None

New in version 0.17: scale_

var_ ndarray of shape (n_features,) or None

n_features_in_ int

New in version 0.24.

The number of samples processed by the estimator for each feature. If there are no missing samples, the n_samples_seen will be an integer, otherwise it will be an array of dtype int. If sample_weights are used it will be a float (if no missing data) or an array of dtype float that sums the weights seen so far. Will be reset on new calls to fit, but increments across partial_fit calls.

Equivalent function without the estimator API.

Further removes the linear correlation across features with ‘whiten=True’.

NaNs are treated as missing values: disregarded in fit, and maintained in transform.

Compute the mean and std to be used for later scaling.

Fit to data, then transform it.

Get output feature names for transformation.

Get parameters for this estimator.

Scale back the data to the original representation.

Online computation of mean and std on X for later scaling.

Set the parameters of this estimator.

Perform standardization by centering and scaling.

Compute the mean and std to be used for later scaling.

Parameters X of shape (n_samples, n_features)

The data used to compute the mean and standard deviation used for later scaling along the features axis.

y None

sample_weight array-like of shape (n_samples,), default=None

Individual weights for each sample.

New in version 0.24: parameter sample_weight support to StandardScaler.

Fit to data, then transform it.

Parameters X array-like of shape (n_samples, n_features)

y array-like of shape (n_samples,) or (n_samples, n_outputs), default=None

Target values (None for unsupervised transformations).

**fit_params dict

Additional fit parameters.

Returns X_new ndarray array of shape (n_samples, n_features_new)

get_feature_names_out ( input_features = None ) [source] ¶

Get output feature names for transformation.

Parameters input_features array-like of str or None, default=None

If input_features is an array-like, then input_features must match feature_names_in_ if feature_names_in_ is defined.

Returns feature_names_out ndarray of str objects

Same as input features.

get_params ( deep = True ) [source] ¶

Get parameters for this estimator.

Parameters deep bool, default=True

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns params dict

Parameter names mapped to their values.

Scale back the data to the original representation.

Parameters X of shape (n_samples, n_features)

The data used to scale along the features axis.

copy bool, default=None

Copy the input X or not.

Returns X_tr of shape (n_samples, n_features)

Online computation of mean and std on X for later scaling.

All of X is processed as a single batch. This is intended for cases when fit is not feasible due to very large number of n_samples or because X is read from a continuous stream.

The algorithm for incremental mean and std is given in Equation 1.5a,b in Chan, Tony F., Gene H. Golub, and Randall J. LeVeque. “Algorithms for computing the sample variance: Analysis and recommendations.” The American Statistician 37.3 (1983): 242-247:

Parameters X of shape (n_samples, n_features)

The data used to compute the mean and standard deviation used for later scaling along the features axis.

y None

sample_weight array-like of shape (n_samples,), default=None

Individual weights for each sample.

New in version 0.24: parameter sample_weight support to StandardScaler.

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as Pipeline ). The latter have parameters of the form __

so that it’s possible to update each component of a nested object.

Parameters **params dict

Returns self estimator instance

Perform standardization by centering and scaling.

The data used to scale along the features axis.

copy bool, default=None

Copy the input X or not.

Returns X_tr of shape (n_samples, n_features)

Источник

Может кто-нибудь объяснить мне StandardScaler?

Кто-нибудь может объяснить мне это простыми словами?

8 ответов

Идея StandardScaler заключается в том, что он преобразует ваши данные таким образом, что его распределение будет иметь среднее значение 0 и стандартное отклонение 1. Учитывая распределение данных, каждое значение в наборе данных будет вычтено из среднего значения выборки, а затем разделено по стандартному отклонению всего набора данных.

Основная идея состоит в том, чтобы нормализовать/стандартизировать ( mean = 0 и standard deviation = 1 ) ваши функции перед применением методов машинного обучения.

Пример:

Убедитесь, что среднее значение каждого объекта (столбца) равно 0:

Убедитесь, что стандартное значение каждой функции (столбца) равно 1:

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Как рассчитать это:

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Вы можете прочитать больше здесь:

StandardScaler выполняет задачу стандартизации. Обычно набор данных содержит переменные разного масштаба. Например, набор данных Employee будет содержать столбец AGE со значениями по шкале 20-70 и столбец SALARY со значениями по шкале 10000-80000.
Поскольку эти два столбца отличаются по масштабу, они стандартизированы, чтобы иметь общий масштаб при построении модели машинного обучения.

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

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

ВЫХОД

После применения StandardScaler() каждый столбец в X будет иметь среднее значение 0 и стандартное отклонение 1.

Формулы перечислены другими на этой странице.

Обоснование: некоторые алгоритмы требуют, чтобы данные выглядели так (см. Документацию sklearn).

Ниже приведен простой рабочий пример, объясняющий, как работает стандартизация. Часть теории уже хорошо объяснена в других ответах.

расчет

Результат после стандартизации

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Проверьте среднее и стандартное отклонение после стандартизации

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Источник

Предварительная обработка с помощью sklearn: полное и исчерпывающее руководство

Дата публикации Dec 13, 2018

Для начинающего ученого данных иногда бывает трудно найти свой путь через лесметоды предварительной обработки,Sklearnегобиблиотека предварительной обработкиобразует прочную основу, которая поможет вам выполнить эту важную задачу в конвейере данных. ХотяSklearnУ a довольно солидная документация, она часто упускает из виду простоту и интуицию между различными понятиями.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Эта статья предназначена для полного руководства по предварительной обработке сsklearn v0.20.0, Оно включаетвсеутилиты и классы-трансформеры, доступные в sklearn, дополненные некоторыми полезными функциями из других общих библиотек. Кроме того, статья структурирована в виделогический порядокпредставляющий порядок, в котором следует выполнять обсуждаемые преобразования.

Следующие предметы будут рассмотрены:

Обратите внимание, что этапы три и четыре могут быть выполнены взаимозаменяемыми, поскольку эти преобразования должны выполняться независимо друг от друга.

Недостающие значения

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

У меня есть пропущенные значения? Как они выражены в данных? Должен ли я удерживать образцы с пропущенными значениями? Или я должен заменить их? Если да, на какие значения их следует заменить?

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

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

Если они абсолютно случайны, они не дают никакой дополнительной информации и могут быть опущены. С другой стороны, если они не случайны, то факт отсутствия значения сам по себе является информацией и может быть выражен как дополнительная двоичная функция.

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

Давайте материализуем эту теорию с помощью нескольких примеров кодирования, используяMissingIndicator, Чтобы придать нашему коду некоторый смысл, мы создадим очень маленький набор данных с тремя функциями и пятью примерами. Данные содержат очевидные пропущенные значения, выраженные какне-числоили999,

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Посмотрите на данные, чтобы узнать, где находятся пропущенные значения. Строки или столбцы со многими не значащими пропущенными значениями могут быть удалены из ваших данных с помощью пандdropnaфункция. Давайте посмотрим на наиболее важные параметры:

Мы обновляем наш набор данных, удаляя все строки (ось= 0) столькопропущенные значения Обратите внимание, что в этом случае вместо настройкитреш1, вы также можете установитькакпараметр для‘все’, В результате наша вторая выборка отбрасывается, поскольку она состоит только из пропущенных значений. Обратите внимание, что мы сбрасываем индекс и удаляем старый столбец индекса для дальнейшего удобства.

Давайте также создадим несколько дополнительных логических функций, которые сообщают нам, если в образце отсутствует значение для определенной функции. Начните с импортаMissingIndicatorотsklearn.impute(Обратите внимание, чтоверсия 0.20.0требуется (обновить с помощью ‘Конда обновление Scikit-Learn«)).

К сожалению,MissingIndicatorне поддерживает несколько типов пропущенных значений (увидеть этот вопрос на Stackoverflow). Следовательно, почему мы должны преобразовать999значения в нашем фрейме данных дляNaN«S. Затем мы создаем, подгоняем и трансформируем объект MissingIndicator, который будет обнаруживать всеНэнв наших данных.

С помощью этого индикатора мы можем создать новый фрейм данных с логическими значениями, указывающими, имеет ли экземпляр пропущенное значение для определенной функции. Но почему у нас есть только две новые колонки, а у нас было три оригинальные функции? После удаления нашего второго образца,f2больше не было пропущенных значений. ЕслиMissingIndicatorне обнаруживает пропущенных значений в объекте, он не создает новый объект из этой функции.

Мы добавим эти новые функции позже к нашим исходным данным, а пока мы можем хранить их виндикаторпеременная

После того, как вы решили сохранить (некоторые из) пропущенных значений и создали индикаторы пропущенных значений, следующий вопрос заключается в том, следует ли заменить пропущенные значения. Большинство алгоритмов обучения работают плохо, когда пропущенные значения выражаются какне число(np.NaN) и нуждаются в какой-либо форме пропущенного значения Имейте в виду, что некоторые библиотеки и алгоритмы, такие какXGBoost,можетобрабатывать пропущенные значения и вменять эти значения автоматически путем обучения.

Вменяя ценности

Для заполнения пропущенных значений с помощью общих стратегий, Sklearn предоставляетSimpleImputer, Четыре основные стратегииозначать,most_frequent,медианаа такжепостоянная(не забудьте установитьfill_valueпараметр), В приведенном ниже примере мы вменяем пропущенные значения для нашего кадра данных X со средним значением функции.

Обратите внимание, что возвращаемые значения помещаются вNumpyмассив и мы теряем всю мета-информацию. Поскольку все эти стратегии могут быть имитированы впандмы собираемся использовать пандfillnaметод вменения пропущенных значений. Для ‘означать’Мы можем использовать следующий код. этопандреализация также предоставляет варианты для заполнения вперед (ffill) или заполните назад (bfill), которые удобны при работе с временными рядами.

Другие популярные способы вменения недостающих данных:кластеризация данных с k-ближайшим соседом(КННЫ)алгоритмилиинтерполированиезначения с использованием широкого спектра методов интерполяции. Оба метода не реализованы вsklearnБиблиотека предварительной обработки и здесь обсуждаться не будет.

Полиномиальные особенности

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

Перед обработкой пропущенных значений необходимо решить, хотите ли вы использовать полиномиальные функции или нет. Если вы, например, замените все отсутствующие значения на 0, все перекрестные продукты, использующие эту функцию, будут равны 0. Более того, если вы не замените отсутствующие значения (NaN), создание полиномиальных объектов вызовет ошибку значения вfit_transformфаза, так как вход должен быть конечным.

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

SklearnобеспечиваетPolynomialFeaturesкласс для создания полиномиальных элементов с нуля.степеньПараметр определяет максимальную степень многочлена. Например, когдастепеньустанавливается в два и X = x1, x2, созданные объекты будут 1, x1, x2, x1², x1x2 и x2².interaction_onlyПараметр позволяет функции знать, что нам нужны только функции взаимодействия, то есть 1, x1, x2 и x1x2.

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

Как и с любой другой формой проектирования объектов, важно создавать полиномиальные объекты.доделать любые функции масштабирования.

Теперь давайте объединим наши новые недостающие индикаторы и полиномиальные функции с нашими данными с пандамиCONCATметод.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

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

Перед тем, как начать преобразование данных, важно выяснить, является ли функция, над которой вы работаете, порядковой (в отличие от номинальной).Порядковый номерлучше всего описывается какфункция с естественными упорядоченными категориями и расстояниями между категориями неизвестна,

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

Давайте рассмотрим простой пример, чтобы продемонстрировать, как работают оба класса. Создайте фрейм данных с пятью записями и тремя функциями:секс,группа кровиа такжеУровень образования,

Глядя на фрейм данных, вы должны заметить, что уровень образования является единственным порядковым признаком (его можно заказать, а расстояние между категориями неизвестно) Начнем с кодирования этой функции сOrdinalEncoderучебный класс. Импортируйте класс и создайте новый экземпляр. Затем обновите функцию уровня образования путем подгонки и преобразования функции в кодировщик. Результат должен выглядеть так, как показано ниже.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Обратите внимание, что у нас есть довольно раздражающая проблема:наше отсутствующее значение закодировано как отдельный класс (3.0), Внимательное изучение документации показывает, что пока нет решения этой проблемы. Хороший знак в том, чтоsklearnразработчикиобсуждение возможностей реализации подходящего решения,

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

Чтобы решить первую проблему, мы должны обратиться к пандам.разлагать на множителиМетод предоставляет альтернативу, которая может обрабатывать пропущенные значения и учитывает порядок наших значений. Первым шагом является преобразование функции в упорядоченные пандыкатегорический, Передать списоккатегории(включая категорию для пропущенных значений) и установитеупорядоченныйпараметр дляПравда,

Замените пропущенные значения наотсутствуеткатегория.

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

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

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

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

Самый популярный способ кодирования именных функцийодин горячее кодирование, По существу,каждая категориальная особенность сNкатегории превращается вNбинарные особенности,

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

Затем подгоните и преобразуйте наши две номинальные категории. Результатом этого преобразования будет разреженная матрица, это означает, что нам придется преобразовать матрицу в массив (.toarray ()), прежде чем мы сможем вылить его в массив данных. Вы можете пропустить этот шаг, установивредкийпараметр дляЛожьпри инициализации нового экземпляра класса. Назначьте имена столбцов, и выходные данные будут готовы для добавления к другим данным (edu_levelхарактерная черта).

Сравните вывод (номиналы) к нашим исходным данным, чтобы убедиться, что все прошло правильно.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Поскольку в наших данных отсутствовали пропущенные значения, важно иметь слово о том, как обрабатывать пропущенные значения с помощьюOneHotEncoder, Отсутствующее значение может быть легко обработано как дополнительная функция. Обратите внимание, что для этого вам нужно сначала заменить отсутствующее значение на произвольное значение (например,‘отсутствует’) Если вы, с другой стороны, хотите игнорировать отсутствующее значение и создать экземпляр со всеми нулями (Ложь), вы можете просто установитьhandle_unkownпараметрOneHotEncoderвигнорировать,

Числовые особенности

Подобно тому, как категориальные данные могут быть закодированы, числовые характеристики могут быть «декодированы» в категориальные признаки. Два наиболее распространенных способа сделать этодискретизацияа такжебинаризации,

дискретизация

Дискретизация, также известная как квантование или биннинг,делит непрерывный элемент на заранее определенное количество категорий(бункеры), и, таким образом, делает данные дискретными.

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

SklearnобеспечиваетKBinsDiscretizerкласс, который может позаботиться об этом. Единственное, что вам нужно указать, это количество бункеров (n_bins) для каждой функции и как кодировать эти ячейки (порядковый,onehotилиonehot высококалорийных). НеобязательныйстратегияПараметр может быть установлен в три значения:

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

Давайте обратимся к нашему примеру для некоторых разъяснений. ИмпортироватьKBinsDiscretizerКласс и создать новый экземпляр с тремя ячейками, порядковым кодированием и единой стратегией (все ячейки имеют одинаковую ширину). Затем установите и преобразуйте все наши исходные, отсутствующие показатели и полиномиальные данные.

Если вывод не имеет смысла для вас, вызовитеbin_edges_атрибут на дискретизаторе (диск) и взгляните на разделение корзин. Затем попробуйте другую стратегию и посмотрите, как соответственно изменяются края корзины.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

бинаризации

В целом бинаризация полезна какТехника для создания новых функций, которые указывают на что-то значимое, Так же, как вышеупомянутыеMissingIndicatorиспользуется для обозначения значимых пропущенных значений.

Рассмотреть возможностьособенность 3(f3) нашего примера, и давайте создадим дополнительную двоичную функцию сПравдадля положительных ценностей иЛожьдля отрицательных значений. ИмпортироватьBinarizerкласс, создайте новый экземпляр с пороговым значением, равным нулю, и скопируйте вПравда, Затем установите и преобразуйте бинаризатор вособенность 3.На выходе получается новый массив с логическими значениями.

Кастом трансформеры

Если вы хотите преобразовать существующую функцию в преобразователь, чтобы помочь в очистке или обработке данных, вы можете реализовать преобразователь из произвольной функции с помощьюFunctionTransformer, Этот класс может быть полезен, если вы работаете сТрубопроводвsklearn, но может быть легко заменено применением лямбда-функции к функции, которую вы хотите преобразовать (как показано ниже).

Масштабирование функций

Следующим логическим шагом в нашем конвейере предварительной обработки является масштабирование наших функций. Перед применением любых преобразований масштабирования очень важноразделите ваши данные на набор поездов и набор тестов, Если вы начнете масштабирование раньше, ваши данные тренировки (и теста) могут в конечном итоге масштабироваться до среднего значения (см. Ниже), которое на самом деле не является средним значением данных поезда или теста, и пройти мимо всей причины, по которой вы масштабируете первое место.

Стандартизация

Стандартизация может кардинально улучшить производительность моделей. Например, многие элементы, используемые в целевой функции алгоритма обучения (например, ядро ​​RBF машин опорных векторов или регуляризаторы l1 и l2 линейных моделей), предполагают, что все объекты сосредоточены вокруг нуля и имеют дисперсию в том же порядке. Если у признака есть отклонение, которое на несколько порядков больше, чем у других, оно может доминировать в целевой функции и сделать оценщика неспособным учиться на других признаках правильно, как ожидалось.

В зависимости от ваших потребностей и данных, Sklearn предоставляет несколько скейлеров:StandardScaler,MinMaxScaler,MaxAbsScalerа такжеRobustScaler,

Стандартный Скалер

Sklearnего главный скалерStandardScaler, использует строгое определение стандартизации для стандартизации данных. Эточисто центрирует данныеиспользуя следующую формулу, гдеUэто среднее иsстандартное отклонение

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

ИмпортироватьStandardScalerКласс и создать новый экземпляр. Обратите внимание, что для разреженных матриц вы можете установитьwith_meanпараметр дляЛожьчтобы не центрировать значения вокруг нуля. Затем установите и преобразуйте скейлер вособенность 3,

Как и ожидалось, значение четвертого экземпляра равно нулю.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

MinMax Scaler

MinMaxScalerпревращает функциимасштабирование каждой функции до заданного диапазона, Этот диапазон можно установить, указавfeature_rangeпараметр (по умолчанию в(0,1)). Этот скейлер работает лучше для случаев, когда распределение не является гауссовым или стандартное отклонение очень мало Тем не менее, эточувствительны к выбросам, так что если в данных есть выбросы, вы можете рассмотреть другой масштабер.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

MaxAbs Scaler

MaxAbsScalerработает очень похоже наMinMaxScalerно автоматически масштабирует данные до[-1,1]диапазон на основеабсолютный максимум, Этот скейлер предназначен дляданные, которые уже центрированы в ноль или разреженные данные, Он не сдвигает / центрирует данные и, следовательно, не разрушает разреженность.

Давайте еще раз решатьособенность 3преобразовав его с помощьюMaxAbsScalerи сравнить вывод с исходными данными.

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Робаст Скалер

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

По умолчанию в скейлере используется межквартильный диапазон (IQR), который является диапазоном между 1-м и 3-м квартилями. Диапазон квантилей можно установить вручную, указавquantile_rangeпараметр при запуске нового экземпляраRobustScaler, Здесь мы преобразуемособенность 3используя квантильный диапазон от10%до90%,

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

Одним из ключевых различий между масштабированием (например, стандартизацией) и нормализацией является то, что нормализация являетсястрочная операция, в то время как масштабирование является операцией по столбцам.

Хотя есть много других способов нормализации данных,sklearnпредоставляет три нормы (значение, с которым сравниваются отдельные значения):l1,l2а такжеМаксимум, При создании нового экземпляраNormalizerкласс вы можете указать желаемую норму поднормапараметр.

Ниже формулы для доступных норм обсуждаются и реализуются в коде Python, где результатом является список знаменателей для каждого образца в наборе данныхИкс,

‘Максимум’

standardscaler sklearn что делает. Смотреть фото standardscaler sklearn что делает. Смотреть картинку standardscaler sklearn что делает. Картинка про standardscaler sklearn что делает. Фото standardscaler sklearn что делает

Максимумнорма использует абсолютный максимум и делает для образцов то, чтоMaxAbsScalerделает для функций.

l1норма использованиясумма всех значенийи, таким образом, дает равное наказание для всех параметров, обеспечивая соблюдение разреженности.

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

x_normalized = x / sqrt (сумма ((i ** 2) для i в X))

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *