Выброс.Без правильного обнаружения и обработки выброса, ваша модель будет плохой, особенно для регрессионного типа соревнования.Выбросы влияют на данные значительно.Вот мой способ борьбы с выбросами. для неизменяемого (можно проверить выброс в элементах в режиме один за другим), обнаружить : если data - data.mean () / data.std ()> 3,Вы должны быть уверены, что это постороннее.дескриптор: замените его на mode (), или mean () или median (), основываясь на понимании данных.если вы знаете, что у неизменяемого есть линейная связь с другой переменной, вы можете применить агрегированное среднее значение, режим, медиану.
для мульти-переменной (все функции работают вместе, чтобы найти некоторые особенности выпадающими). IЯ тоже изучаю путь.Ключевой проблемой является то, что данные поезда / теста должны быть разделены.в противном случае передача данных будет счастливой.Возможный режим: если у вас есть X1, X2, X3, Y в поезде, X1, X2, X3 в тесте.чтобы обнаружить выбросы X (i), вы можете использовать X (i) как new_y, остальные X (j) s имеют new_x.и использовать функции statemodels.api, как показано ниже:
import statsmodels.api как sm
X_od = data [X1] # предполагая, что мы хотим найти выбросы данных [X1] Y_od = data [[X2, X3]] lm = sm.OLS (X_od, Y_od) .fit () #it - это регрессия OLS-линии
print (lm) outliers_test = lm.outlier_test () # используется остаточная ошибка для обнаружения выбросов print(outlier_test.query ('"unadj_p" <0,05)) # если значение unad p меньше 5%, мы знаем, что есть выбросы. </p>