# knn для поиска аномалий
window_size = 5
X = np.array([time_series[i:i+window_size] for i in range(len(time_series) - window_size)])
knn = NearestNeighbors(n_neighbors=5)
knn.fit(X)
distances, _ = knn.kneighbors(X)
anomaly_scores = distances[:, -1] # расстояние до самого дальнего из 5 ближайших соседей
# Нормализация оценок (выбросы и есть аномалии)
anomaly_scores = (anomaly_scores - anomaly_scores.min()) / (anomaly_scores.max() - anomaly_scores.min())
Post #87
1.09K

- ❤ 7
- 🔥 4
- 👍 1