def find_spectral_alphas(self, n_alphas, max_log_alpha, n_alphas_to_return):
self.create_affinity_matrix(max_log_alpha, n_alphas)
affinity = self.affinity_matrix
spectral = cluster.SpectralClustering(n_clusters=n_alphas_to_return, affinity='precomputed')
alphas = np.concatenate(([0],np.logspace(-1,max_log_alpha,n_alphas)))
spectral.fit(affinity)
labels = spectral.labels_
best_alphas = list()
for i in range(n_alphas_to_return):
idx = np.where(labels==i)[0]
if not(0 in idx): #because we don't want to include the cluster that includes alpha=0
affinity_submatrix = affinity[idx][:, idx]
sum_affinities = np.sum(affinity_submatrix, axis=0)
exemplar_idx = idx[np.argmax(sum_affinities)]
best_alphas.append(alphas[exemplar_idx])
return np.sort(best_alphas), alphas, affinity[0,:], labels
评论列表
文章目录