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

Сюжетная коробка

import seaborn as sns

sns.set(style="whitegrid")
data =  [0.,1,12,15,11,0.,20.,31.,34,22,70,22,26.],
    
ax = sns.boxplot(data)

Но это мало что объясняло. Позвольте мне отметить детали

Сначала мы отсортируем список, затем

Таким образом, отсортированный выше массив

[ 0. ,0. ,1., 11., 12., 15., 20., 22., 22., 26., 31., 34., 70.]

Q2 =›Это медиана всех данных (что равно 20 )

Q1 =›Это медиана данных от наименьшего значения (1-е место в отсортированном списке) до Q2 (которое равно 11.)

Q3 =›Это медиана данных от наибольшего значения (последнее в отсортированном списке) до Q3 (которое равно 26)

IQR =›Разница между Q3 и Q1 (Q3-Q1, т.е. 26–11 = 15 )

Затем мы вычисляем

Q1- 1.5*IQR =›Все, что меньше этого значения в данных, будет считаться выбросом.

Q3+ 1,5*IQR =›Все данные, превышающие это значение, будут считаться выбросами.

Пример 70 является исключением, поскольку

Q3+ 1,5*IQR => 23 + 1,5*15 => 45,5

Так что 70 › 45,5 Так что это будет считаться выбросом.

Аналогично

Q1- 1,5 * IQR => 11- 1,5 * 15 => -11,5

Все, что меньше 11,5 в наших данных, будет считаться выбросом.

Если все еще путаете, посмотрите это видео для более глубокой информации.

Надежный масштабатор

У нас есть много вариантов для масштабирования наших данных в scikit Learn. Подобно MinMaxScaler, в котором мы вычитаем минимальное значение, а затем делим каждое значение на максимальное значение.

Но почему Надежный скалер?

Одним из вариантов является Robust Scaler, он отличается от других тем, что

у него 2 шага

  • Вычесть медиану из данных
  • разделить каждое значение на IQR(Q3-Q1)

Но все же почему???

В Robust Scaler, как вы видите, мы делим каждое значение на IQR(15), а не на максимальное значение(70), как MinMaxScaler, а затем на 70. сделает 0 для большинства значений. Таким образом, мы удаляем эффект выбросов при масштабировании.

Выполнение

from sklearn.preprocessing import RobustScaler
data =  [0.,1,12,15,11,0.,20.,31.,34,22,70,22,26.]
transformer = RobustScaler().fit(data)
scaledData = transformer.transform(data)

Чтобы узнать больше о скейлерах, посетите это

Спасибо …

Если вам нравится, пожалуйста, аплодируйте, и если у вас есть какие-либо предложения по улучшению, пожалуйста, напишите мне по адресу [email protected]