Я работаю над конвейерами 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 Не могли бы вы помочь мне найти трансформатор, способный выполнить свою работу?