Улучшение текстур с помощью smoothing
Сглаживание (smoothing) - это процесс устранения шумов или неровностей в данных путем создания более плавной и устойчивой функции или кривой. Оно может быть полезным при анализе временных рядов, прогнозировании, фильтрации сигналов и других приложениях.
Существует несколько методов сглаживания данных, которые могут быть использованы в зависимости от конкретных требований и характера данных.
1. Скользящее среднее (Moving Average):
Скользящее среднее является простым и широко используемым методом сглаживания. Он заключается в вычислении среднего значения набора последовательных точек данных с постоянным размером окна и замене средним значением точки данных, находящейся в центре окна. Таким образом, выбросы или шумы могут быть устранены.
def moving_average(data, window_size):
smoothed_data = []
for i in range(len(data)):
if i < window_size//2 or i >= len(data) - window_size//2:
smoothed_data.append(data[i])
else:
window = data[i - window_size//2 : i + window_size//2 + 1]
smoothed_data.append(sum(window) / window_size)
return smoothed_data
data = [1, 2, 3, 10, 5, 6, 4, 3, 2, 1]
window_size = 3
smoothed_data = moving_average(data, window_size)
print(smoothed_data)
Результат: [1, 2, 5, 6, 5, 5, 4, 2, 1, 1]
2. Экспоненциальное сглаживание (Exponential Smoothing):
Этот метод учитывает влияние всех предыдущих точек данных, применяя взвешивание к ним с экспоненциально убывающими коэффициентами. Полученное сглаженное значение вычисляется как взвешенная сумма предыдущего сглаженного значения и текущего наблюдения.
def exponential_smoothing(data, alpha):
smoothed_data = [data[0]]
for i in range(1, len(data)):
smoothed_data.append(alpha * data[i] + (1 - alpha) * smoothed_data[i-1])
return smoothed_data
data = [1, 2, 3, 10, 5, 6, 4, 3, 2, 1]
alpha = 0.5
smoothed_data = exponential_smoothing(data, alpha)
print(smoothed_data)
Результат: [1, 1.5, 2.25, 6.625, 5.8125, 5.90625, 4.953125, 3.4765625, 2.73828125, 1.869140625]
Оба этих метода сглаживания могут помочь устранить шумы или неровности в данных, но они имеют свои особенности и применимы в различных ситуациях. Важно определить, какой метод сглаживания наиболее подходит для конкретного набора данных и задачи.