Коробчатая диаграмма дает очень хорошее представление о данных, а также сообщает о выбросах. Давайте посмотрим, как.
Сюжетная коробка
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]