Создайте преобразователь предварительной обработки sklearn для замены выбросов с оценкой IQR в python - PullRequest
0 голосов
/ 16 июня 2020

Я работаю над конвейерами sklearn и ищу способ использовать следующее ограничение IQR в качестве преобразователя конвейера.

import math
def round_down(n, decimals=0):
    multiplier = 10 ** decimals
    return math.floor(n * multiplier) / multiplier

# We clean outliers by replacing values above the IQR score by the max score
Meal1_Q1 = consumption_train.Meal1.quantile(0.25)
Meal1_Q3 = consumption_train.Meal1.quantile(0.75)
if Meal1_Q3 > 0:
    Meal1_IQR = Meal1_Q3 - Meal1_Q1
    # Meal1_Max= (Meal1_Q3 + 1.5 * Meal1_IQR).round(0)
    Meal1_Max= (Meal1_Q3 + 1.5 * Meal1_IQR)
    Meal1_Max=round_down (Meal1_Max)
    consumption_train["Meal1"].values[consumption_train["Meal1"]>Meal1_Max] = Meal1_Max
else:

Цель в основном состоит в том, чтобы иметь преобразователь, который может определять максимальный балл IQR (макс = 3-й квартиль плюс 1,5 * IQR) в прогнозе (обед 1 - это заголовок переменной в y_train) и затем замените любое значение больше max на max (плюс, в идеале, округлите в конце).

Я проверил здесь, но не нашел подходящего: https://scikit-learn.org/stable/data_transforms.html Не могли бы вы помочь мне найти трансформатор, способный выполнить свою работу?

...