Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # def silhouette_score_adj(distances, n_clusters, labels, nearest_other_cluster_mode='min'):
- # for i in range(n_clusters):
- # mask_i = labels==i
- # n_i = mask_i.sum()
- # assert n_i > 0
- # # intra-cluster distance for each sample in i-cluster
- # a = distances[mask_i][:,mask_i].reshape(n_i,n_i).mean(0)
- # other_cluster_numbers = list(range(n_clusters))
- # other_cluster_numbers.remove(i)
- # if nearest_other_cluster_mode == 'mean':
- # bs = []
- # for j in other_cluster_numbers:
- # mask_j = labels==j
- # n_j = mask_j.sum()
- # assert n_j > 0
- # b = distances[mask_i][:,mask_j].reshape(n_i, n_j).mean(1)
- # bs.append(b)
- # bs = np.stack(bs, axis=1).min(1)
- # else:
- # bs = distances[mask_i][:,~mask_i].reshape(n_i, -1).min(1)
- # s = (bs - a) / (np.stack([bs,a], axis=1).max(1))
- # return s.mean()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement