Рубрики
Без рубрики

Обнаружение и удаление выбросов в Python – легко понять гид

Здравствуйте, читатели! В нашей серии обработки и анализа данных сегодня мы посмотрим на обнаружение и удаление выбросов в Python.

Автор оригинала: 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 1

Любая точка данных, которая лежит ниже нижней границы, и над верхней границей рассматривается как выброс.

Давайте теперь будем реализовать 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

Как видно выше, вариабельная «ветряная скорость» содержит выбросы, которые лежат над нижней границей.

Удаление выбросов

Сейчас самое время лечить выбросы, которые мы обнаружили, используя 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. Оставайтесь настроиться и до тех пор, до тех пор, пока, счастливое обучение !! 🙂.