コード例 #1
0
 def run_affinity_propagation(affinities):
     smin = np.min(affinities)
     smax = np.max(affinities)
     candidate_preferences = np.linspace(smin, smax, 10)
     ap = AffinityPropagation(affinity='precomputed')
     for preference in candidate_preferences:
         ap.preference = preference
         ap.fit(affinities)
         indices = ap.cluster_centers_indices_
         if indices is not None and len(indices) > 1:
             break
     return ap
コード例 #2
0
 def run_affinity_propagation(self, affinities, leaves):
     affinities_list = squareform(affinities)
     preference = np.median(affinities_list)
     branching_factor = np.inf
     while branching_factor > self.max_branching_factor:
         ap = AffinityPropagation(affinity='precomputed')
         ap.preference = preference
         ap.fit(affinities)
         if leaves:
             branching_factor = 0
         else:
             branching_factor = max(Counter(ap.labels_).values())
             #branching_factor = affinities.shape[0]//len(ap.cluster_centers_indices_)
         preference += (np.max(affinities_list) - np.min(affinities_list))/500
         print('branching factor = {0}'.format(branching_factor))
     print('labels')
     print(Counter(ap.labels_))
     return ap.cluster_centers_indices_, ap.labels_