Удаление статистических выбросов
Удаление верхних N% данных — полезный способ избавиться от явно ошибочных значений, однако у него есть недостаток: одинаковая доля точек удаляется всегда, даже если данные корректны. Распространённая альтернатива — удалять значения, которые отклоняются от среднего более чем на три стандартных отклонения. Для этого нужно вычислить среднее и стандартное отклонение нужного столбца, определить верхнюю и нижнюю границы и применить их как маску к DataFrame. Этот метод удаляет только те значения, которые действительно сильно отличаются от остальных, и отсекает меньше точек, если данные расположены близко друг к другу.
Это упражнение является частью курса
Конструирование признаков для машинного обучения в Python
Инструкции к упражнению
- Вычислите стандартное отклонение и среднее значение столбца
ConvertedSalaryв DataFrameso_numeric_df. - Рассчитайте верхнюю и нижнюю границы как значения, отстоящие от среднего на три стандартных отклонения в обоих направлениях.
- Отфильтруйте DataFrame
so_numeric_df, оставив только те строки, в которыхConvertedSalaryнаходится в пределах отlowerдоupper.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Find the mean and standard dev
std = so_numeric_df['ConvertedSalary'].____
mean = so_numeric_df['ConvertedSalary'].____
# Calculate the cutoff
cut_off = std * 3
lower, upper = mean - cut_off, ____
# Trim the outliers
trimmed_df = so_numeric_df[(so_numeric_df['ConvertedSalary'] < ____) \
& (so_numeric_df['ConvertedSalary'] > ____)]
# The trimmed box plot
trimmed_df[['ConvertedSalary']].boxplot()
plt.show()