使用SKlearn中的SpectralClustering 中的一些小细节

在使用SKlearn中的聚类算法时需要引入 cluster 模块,使用谱聚类时(或者其他任意一个聚类算法,如KMeans)都需要先进行聚类算法的一些必要的参数设置,这里举例的谱聚类就需要配置要聚类的簇数。即n_clusters,n_neighbors,eigensolve等参数虽然都有默认设置,但是有时候还是需要自己设置的。

但是用这些算法的时候除了要注意官方文档中列出来的函数,还可以看看“source”即源码中还有没有属性“attribute”可用,有时候能大大简化你要解决问题便捷度。比如我要得到谱聚类过程中用到的亲和矩阵,在官方文档中是没有提到的,但是在源码中却有个属性“affinity_matrix_”,在使用SpectralClustering.fit(x)后可以再调用SpectralClustering.affinity_matrix_来获取亲和矩阵:

from sklearn.clustering import SpectralClustering

X = data
s = SpectralClustering(n_clusters=2,n_neighbors=10,eigensolve="arkpark")

s.fit(X) # create affinity matrix

labels = s.fit_predict(X)
or use attribute:
labels = s.labels_
# 以上两种方式都可以获取数据谱聚类预测的标签

要获取谱聚类算法执行过程中用到的亲和矩阵(affinity matrix)也使用属性 affinity_matrix_:
s.fit(X)
affinity_matrix = s.affinity_matrix_(X) # 注意要先使用fit方法才行;shape(n_samples,n_samples)

其实这里想强调的主要还不是使用标准库的情况下如何获取中间结果,而是想说有时候光看官方文档还不够,还需要我们去看源码中是怎么定义的,比如参数是怎设置的,官方文档中的方法是怎么定义的,还定义了哪些私有属性是我们可以用的但是官方文档中没有介绍的。

猜你喜欢

转载自blog.csdn.net/Hero_Never_GIVE_UP/article/details/83386518