Обнаружение и замена выбросов - PullRequest
0 голосов
/ 25 февраля 2020

На мой взгляд, существует несколько способов обработки выбросов набора данных

> -> Delete data
> -> Transforming using log or Bin
> -> using mean  median
> -> Test separately

У меня есть набор данных из примерно 50000 наблюдений, и каждое наблюдение имеет довольно много значений выбросов (некоторые переменные имеют небольшое количество выбросов, некоторые имеют 100-200 выбросов), поэтому исключение данных - это не то, что я ищу, так как это приводит к потере огромного куска данных.

Я где-то читал, что использование среднего и медианного значения для искусственных выбросов, но в моем Я думаю, что выбросы являются естественными

enter image description here

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

median = X.median()
std =X.std()
outliers = (X - median).abs() > std
X.outliers = np.nan
X.fillna(median, inplace = True)

он действительно снизил переоснащение только одной регрессии модели logisti c, но все равно дает 100% для случайного леса и форма графика изменилась с enter image description here на этот enter image description here Так что я действительно запутался, какую технику использовать? Я попытался заменить 5-й и 95-й процентили данных, но это не сработало. Должен ли я хранить данные в каждом столбце от 1 до 10? Также я должен нормализовать или стандартизировать свои данные перед применением любой модели? Любое руководство будет оценено

1 Ответ

0 голосов
/ 25 февраля 2020

Проверьте достоверную статистику.

Я бы предложил проверить метод / винсоризацию Хубера, которые вы также имеете в Python.

Для проверки гипотез у вас есть Уилкоксон подписал рейтинговый тест, и я думаю, что тест Манна-Уитни

...