Автор оригинала: Pankaj Kumar.
Здравствуйте, читатели! В нашей серии обработки данных и анализа данных сегодня мы посмотрим на Обнаружение и удаление выбросов в питоне.
Итак, давайте начнем!
Что такое выбросы в Python?
Перед погружением глубоко в концепцию Выбросы Давайте понять происхождение необработанных данных.
Необработанные данные, которые подаются в систему, обычно генерируются от опросов и извлечения данных из действий в реальном времени в Интернете. Это может привести к изменению данных в данных, и существует вероятность ошибки измерения при записи данных.
Это когда выбросы вступают в сцену.
Оформление – это точка или набор точек данных, которые лежат от остальных значений данных набора данных Отказ То есть это точка данных, которые отображаются вдали от общего распределения значений данных в наборе данных.
Выбросы возможны только в непрерывных значениях. Таким образом, обнаружение и удаление выбросов применимы только к значениям регрессии.
В основном, выбросы, по-видимому, расходятся от общего правильного и хорошо структурированного распределения элементов данных. Это можно считать как Ненормальное распределение, которое появляется вдали от класса или население.
Поняв концепцию выбросов, давайте сейчас сосредоточимся на необходимости удаления выбросов в предстоящем разделе.
Почему необходимо удалить выбросы от данных?
Как обсуждалось выше, выбросы являются точками данных, которые лежат вдали от обычного распределения данных и приводит к тому, что ниже воздействие на общее распределение данных:
- Влияет на общую стандартную вариацию данных.
- Манипулирует общее среднее значение данных.
- Преобразует данные в перекошенную форму.
- Это вызывает смещение в оценке точности модели обучения машины.
- Влияет на распределение и статистику набора данных.
Из-за вышеуказанных причин необходимо обнаружить и избавиться от выбросов до моделирования набора данных.
Обнаружение выбросов – IQR подход
Выбросы в наборе данных могут быть обнаружены методами ниже:
- Z-счет
- Рассеянные участки
- Межструйный диапазон (IQR)
В этой статье мы реализуем метод IQR для обнаружения и лечения выбросов.
IQR – аббревиатура для межступного диапазона Отказ Он измеряет статистическую дисперсию значений данных как мера общего распространения.
IQR эквивалентен разницей между первым квартилем (Q1) и третьим квартилью (Q3) соответственно.
Здесь Q1 относится к первому квартилю I.e. 25% и Q3 относится к третьему квартилю I.e. 75%.
Мы будем использовать Boxplots для обнаружения и визуализации выбросов, присутствующих в наборе данных.
Коробки изображают распределение данных с точки зрения квартилей и состоит из следующих компонентов
- Q1-25%
- Q2-50%
- Q3-75%
- Нижняя граница/усы
- Верхний усы/граница
Любая точка данных, которая лежит ниже нижней границы, и над верхней границей рассматривается как выброс.
Давайте теперь будем реализовать BoxPlot для обнаружения выбросов в приведенном ниже примере.
Пример :
Первоначально мы импортировали набор данных в окружающую среду. Вы можете найти набор данных здесь Отказ
import pandas import numpy BIKE = pandas.read_csv("Bike.csv")
Кроме того, мы сегрегировали переменные в числовые и категорические значения.
numeric_col = ['temp','hum','windspeed'] categorical_col = ['season', 'yr', 'mnth', 'holiday', 'weekday', 'workingday', 'weathersit']
Мы применяем BoxPlot, используя BoxPlot () Функция
на числовых переменных, как показано ниже:
BIKE.boxplot(numeric_col)
Как видно выше, вариабельная «ветряная скорость» содержит выбросы, которые лежат над нижней границей.
Удаление выбросов
Сейчас самое время лечить выбросы, которые мы обнаружили, используя BoxPlot в предыдущем разделе.
Используя IQR, мы можем следовать приведенному ниже подходу для замены выбросов в нулевое значение:
- Рассчитайте первый и третий квартиль (Q1 и Q3).
- Кроме того, оцените межквартирный диапазон, IQR-Q1 Отказ
- Оцените нижнюю границу, ниже * 1.5
- Оцените верхнюю границу, Верхний * 1.5.
- Замените точки данных, которые лежат за пределами нижней и верхней границы с Нулевое значение Отказ
for x in ['windspeed']: q75,q25 = np.percentile(BIKE.loc[:,x],[75,25]) intr_qr = q75-q25 max = q75+(1.5*intr_qr) min = q25-(1.5*intr_qr) BIKE.loc[BIKE[x] < min,x] = np.nan BIKE.loc[BIKE[x] > max,x] = np.nan
Таким образом, мы использовали numpy.percentile () Метод
Для расчета значений Q1 и Q3. Кроме того, мы заменили выбросы с numpy.nan
как нулевые значения.
Заменив выбросы NAN, давайте теперь проверьте сумму нулевых значений или отсутствующих значений, используя код ниже:
BIKE.isnull().sum()
Сумма подсчета нулевых значений/выбросов в каждом столбце набора данных:
season 0 yr 0 mnth 0 holiday 0 weathersit 0 temp 0 hum 0 windspeed 5 cnt 0 dtype: int64
Теперь мы можем использовать любую из приведенных ниже методов для лечения нулевых значений:
- Вмешивает недостающие значения со средним, средним или навязчивым значениями.
- Снимите нулевые значения (если пропорция сравнительно меньше)
Здесь мы бросили бы нулевые значения, используя Pandas.dataframe.dropna ()
функция
BIKE = BIKE.dropna(axis = 0)
Обработавшись к выбросам, давайте теперь проверяем наличие отсутствующих или нулевых значений в наборе данных:
BIKE.isnull().sum()
Выход-
season 0 yr 0 mnth 0 holiday 0 weathersit 0 temp 0 hum 0 windspeed 0 cnt 0 dtype: int64
Таким образом, все выбросы, присутствующие в наборе данных, были обнаружены и обработаны (удалены).
Заключение
По этому, мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если вы столкнетесь с любым вопросом.
Для более таких постов, связанных с Python. Оставайтесь настроиться и до тех пор, до тех пор, пока, счастливое обучение !! 🙂.