Обработка выбросов
В этом упражнении вы научитесь обрабатывать выбросы — точки данных, которые настолько отличаются от остальных, что требуют особого подхода по сравнению с «обычными» значениями. Для их обнаружения вы используете результат предыдущего упражнения — процентное изменение во времени. Сначала вы напишете функцию, которая заменяет выбросы медианным значением всего временного ряда.
Это упражнение является частью курса
Машинное обучение для данных временных рядов на Python
Инструкции к упражнению
- Определите функцию, которая принимает серию данных и выполняет следующие действия:
- Вычисляет абсолютное значение отклонения каждой точки от среднего по серии, затем формирует булеву маску для точек, отстоящих от среднего более чем на три стандартных отклонения.
- Использует эту булеву маску для замены выбросов медианой всего ряда.
- Примените эту функцию к данным и визуализируйте результаты с помощью предоставленного кода.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
def replace_outliers(series):
# Calculate the absolute difference of each timepoint from the series mean
absolute_differences_from_mean = np.abs(series - np.mean(series))
# Calculate a mask for the differences that are > 3 standard deviations from zero
this_mask = absolute_differences_from_mean > (np.____(series) * ____)
# Replace these values with the median accross the data
series[this_mask] = np.____(series)
return series
# Apply your preprocessing function to the timeseries and plot the results
prices_perc = prices_perc.____
prices_perc.loc["2014":"2015"].plot()
plt.show()