【发布时间】:2019-10-13 20:03:30
【问题描述】:
我有一个大小为 (1280,2) 的熊猫数据框。数据的头部如下所示:
我正在使用基于聚类的异常检测方法,该方法使用 k-means。它创建了“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 轴作为值来绘制数据框。我想用蓝色绘制正常数据值,用红色绘制异常值。我怎么能画这个?
【问题讨论】:
标签: python-3.x matplotlib time-series outliers anomaly-detection