График обнаружения аномалий временных рядов - PullRequest
1 голос
/ 28 мая 2019

У меня есть размер панды данных (1280,2). Заголовок данных выглядит следующим образом: enter image description here

Я использую метод обнаружения аномалий на основе кластеризации с использованием k-средних. Он создает 'k' похожих кластеров точек данных. Точки данных, которые выходят за пределы этих групп, отмечены как аномалии.

def getDistanceByPoint(data, model):
distance = pd.Series()
for i in range(0,len(data)):
    Xa = np.array(data.loc[i])
    Xb = model.cluster_centers_[model.labels_[i]-1]
    distance.set_value(i, np.linalg.norm(Xa-Xb))
return distance
kmeans = KMeans(n_clusters=9).fit(data) 
outliers_fraction = 0.01
distance = getDistanceByPoint(data, kmeans)
number_of_outliers = int(outliers_fraction*len(distance))
threshold = distance.nlargest(number_of_outliers).min()
(0:normal, 1:anomaly) 
df['anomaly1'] = (distance >= threshold).astype(int)

Я хочу построить график данных с осью X по прошествии времени и осью Y как значением. Я хотел бы представить нормальные значения данных синим цветом, а значения аномалий красным. Как я мог построить это?

...