Python 返回kmeans聚类中最远的离群值?

Python 返回kmeans聚类中最远的离群值?,python,scikit-learn,cluster-analysis,Python,Scikit Learn,Cluster Analysis,在sklearn-kmeans聚类之后,有没有简单的方法返回最远的异常值 本质上,我想为一堆集群列出最大的异常值。不幸的是,由于分配的原因,我需要使用sklearn.cluster.KMeans。Sascha基本上在注释中给出了它,但是如果X表示您的数据,并且model是KMeans的实例,您可以按照到它们中心的距离对X的值进行排序 X[np.argsort(np.linalg.norm(X - model.cluster_centers_[model.labels_], axis=1))]

在sklearn-kmeans聚类之后,有没有简单的方法返回最远的异常值


本质上,我想为一堆集群列出最大的异常值。不幸的是,由于分配的原因,我需要使用sklearn.cluster.KMeans。

Sascha基本上在注释中给出了它,但是如果
X
表示您的数据,并且
model
KMeans
的实例,您可以按照到它们中心的距离对
X
的值进行排序

X[np.argsort(np.linalg.norm(X - model.cluster_centers_[model.labels_], axis=1))]
或者,由于您知道每个点都被指定给其中心使到该点的欧几里德距离最小的簇,因此您可以通过一个步骤进行拟合和排序

X[np.argsort(np.min(KMeans(n_clusters=2).fit_transform(X), axis=1))]

K-means不太适合于“异常值”检测

k-均值倾向于将异常值作为一个单元素聚类。然后,异常值具有最小的可能距离,并且不会被检测到

当数据中存在异常值时,K-means不够稳健。实际上,在使用k-means之前,您可能希望删除异常值


请使用kNN、LOF或LoOP之类的工具。

展示一些自己的尝试和想法。这里甚至没有一行代码!你所需要的就是
X
kmeans.cluster\u centers\u
kmeans.labels\u
(文档中的属性)和一点numpy(比如
np.argsort
和co.)。是的,我就是这样做的,我的意思是,有没有一个函数可以用来返回距离,而不是事后计算距离?你应该提到并展示它!这里有
kmeans.惯性
(平方!)。阅读文档有什么问题?
惯性
给出了平方距离的总和,这在这里似乎没有什么帮助
KMeans.transform()
给出了各个距离。