나는 weka에 방법이 있다고 가정하고 있지만 결코 weka 라이브러리를 사용하지 않았습니다. sklearn k-means을 기꺼이 사용하면 매우 편리합니다.
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# create a dataset
ds = np.random.random((50, 2))
ds_anomaly = np.asarray([[-1,1], [1,-1]])
ds = np.concatenate((ds,ds_anomaly))
일단 클러스터 센터 (이 경우 2) kmeans.cluster_centers_에서 검색 할 수 있습니다, 맞춤를 호출 kmeans. 데이터 집합에 할당 된 레이블은 kmeans.labels_에서 검색 할 수 있습니다.
kmeans = KMeans(n_clusters=2)
kmeans.fit(ds)
# appropriate cluster labels of points in ds
data_labels = kmeans.labels_
# coordinates of cluster centers
cluster_centers = kmeans.cluster_centers_
colors = ['b', 'g']
plt.scatter(ds[:, 0], ds[:, 1],
c=[colors[i] for i in data_labels], s=1)
plt.scatter(cluster_centers[:, 0], cluster_centers[:, 1], color = "k")
plt.show()
결과를 플롯하고 이형을 직접 찾을 수 있습니다. 
또는 데이터 분석을 수행하고 예외를 얻을 수 있습니다. 다음은 np.percentile을 사용하여 다른 값을 찾는 아주 기본적인 예제입니다. 보다 복잡한 기능으로 변칙 기능 (좋은 결과가 필요한 경우)을 변경할 수 있습니다. 예상대로 결과 값 ([[-1, 1], [1, -1]])
def anomalies(data):
perc = np.percentile(data, 99)
return data[np.where(data>perc)[0]]
for idx, c in enumerate(kmeans.cluster_centers_):
c_anomaly = anomalies(ds[np.where(kmeans.labels_==idx)])
print(c_anomaly)
plt.scatter(c_anomaly[:, 0], c_anomaly[:, 1], c="r", marker="o")
plt.show()
이고; 
면책 조항 : 초기화에 따라 클러스터 센터는 이상 가까이 endup 수 있습니다. 다른 알고리즘을 사용하여 이상 탐지를 수행하거나 k 값 및 클러스터 초기화 패턴을 선택할 때주의해야합니다.
안녕하세요, SO! 질문을 개선하고 논픽션으로 기각되는 것을 피하기 위해 [How to ask] (https://stackoverflow.com/help/how-to-ask)를 참조하십시오. – rll