如何获得scikit病房的群集历史



我希望能够运行scikit的分层聚类算法(scikit.cluster. ward),并获得观测数据如何聚在一起的整个历史,从算法的第一次迭代(每个观测数据都是它自己的集群)到最后一次迭代(所有观测数据都在一个集群中)。scikit能做到吗?我需要的信息是,对于每次迭代,加入的簇/观测值,添加的簇/观测值,两者之间的距离。

都在ward.children中。它的每一行都告诉你哪两个特征聚集在一起,从而创建一个新的特征。因此,随着集群的增长,最终会出现2 * n_features - 1索引。

import numpy as np
from scipy.ndimage import gaussian_filter1d
n_samples, n_feat1, n_feat2 = 400, 20, 20
X = np.random.randn(n_samples, n_feat1, n_feat2)
X = gaussian_filter1d(X, sigma=2, axis=1)
X = gaussian_filter1d(X, sigma=2, axis=2)
from sklearn.feature_extraction.image import grid_to_graph
connectivity = grid_to_graph(n_feat1, n_feat2)
from sklearn.cluster import WardAgglomeration
ward = WardAgglomeration(connectivity=connectivity)
ward.fit(X.reshape(n_samples, -1))
print ward.children
array([[ 35,  15],
       [ 36,  16],
       [ 34,  14],
       [181, 180],
       [201, 200],
       [161, 160],
       [241, 240],
       [339, 338],
       [221, 220],
       [24,   4],
       ...])

有400个特征(按0-399索引)。第一次合并是在特征35和15之间,产生特征400。第二次合并在特征36和16之间,产生特征401。第三次合并在34和14之间,得到402,以此类推。

注意sklearn.cluster.Ward0.17中已弃用,将被AgglomerativeClustering取代

相关内容

  • 没有找到相关文章

最新更新