Nip*_*oon 6 python k-means scikit-learn
我使用python scikit-learn库在5000多个样本上拟合了k-means算法.我希望最接近集群中心的50个样本作为输出.我该如何执行此任务?
Fre*_*Foo 12
如果km是k-means模型,则到j阵列中每个点的'th centroid 的距离X是
d = km.transform(X)[:, j]
Run Code Online (Sandbox Code Playgroud)
这给出了一系列len(X)距离.最靠近质心的50的指数j是
ind = np.argsort(d)[::-1][:50]
Run Code Online (Sandbox Code Playgroud)
所以最接近质心的50个点是
X[ind]
Run Code Online (Sandbox Code Playgroud)
(或者argpartition如果你最近有足够的NumPy,请使用,因为这样会快得多).
对@snarly答案的更正。
表演之后d = km.transform(X)[:, j],
d具有到的距离元素centroid(j),而不是相似之处。
因此,为了提供最接近的值top 50 indices,您应该删除“ -1”,即
ind = np.argsort(d)[::][:50]
(通常,d对距离得分按升序排序。)
另外,也许做事更短
ind = np.argsort(d)[::-1][:50]
可能
ind = np.argsort(d)[:-51:-1]。
| 归档时间: |
|
| 查看次数: |
5480 次 |
| 最近记录: |