У меня есть размер панды данных (1280,2). Заголовок данных выглядит следующим образом:
![enter image description here](https://i.stack.imgur.com/sYVgF.png)
Я использую метод обнаружения аномалий на основе кластеризации с использованием 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 как значением. Я хотел бы представить нормальные значения данных синим цветом, а значения аномалий красным. Как я мог построить это?