pyFTSex/service/exponential_smoothing.py
2024-08-15 12:15:32 +04:00

33 lines
1.6 KiB
Python

import numpy as np
import matplotlib.pyplot as plt
def exponential_smoothing(series, alpha):
"""
Функция для экспоненциального сглаживания временного ряда.
:param series: Вектор временного ряда.
:param alpha: Коэффициент сглаживания (0 <= alpha <= 1).
:return: Сглаженный временной ряд.
"""
# Создаем вектор той же длины, что и исходный временной ряд, заполненный нулями
result = np.zeros_like(series)
# Первый элемент сглаженного ряда равен первому элементу исходного ряда
result[0] = series[0]
for t in range(1, len(series)):
# Каждый следующий элемент сглаженного ряда рассчитывается как взвешенная сумма текущего элемента исходного ряда
# и предыдущего элемента сглаженного ряда
result[t] = alpha * series[t] + (1 - alpha) * result[t - 1]
return result
if __name__ == "__main__":
# Пример использования функции
series = [10, 8, 6, 4, 5, 6, 8, 10] # Исходный временной ряд
alpha = 0.5 # Коэффициент сглаживания
smoothed_series = exponential_smoothing(series, alpha)
print(smoothed_series)
plt.plot(series)
plt.plot(smoothed_series)
plt.show()