def dbscan_tests(features, ftype='mean', eps=0.7, min_samples=2): if ftype == 'min': D = facedist.min_dist(features) elif ftype == 'max': D = facedist.max_dist(features) elif ftype == 'meanmin': D = facedist.meanmin_dist(features) else: D = facedist.mean_dist(features) print D.shape nrow = len(features) dense_distances = np.zeros((nrow, nrow), dtype=np.double) for ii in range(nrow): for jj in range(ii + 1, nrow): nn = ii + jj * (jj - 1) / 2 rd = D[nn] dense_distances[ii, jj] = rd dense_distances[jj, ii] = rd del D db = DBSCAN(eps=eps, min_samples=min_samples, metric='precomputed').fit(dense_distances) labels = db.labels_ unique, counts = np.unique(labels, return_counts=True) return np.asarray((unique, counts)).T, labels, None
def hdbscan_tests(features, ftype='mean', min_cluster_size=2): if ftype == 'min': D = facedist.min_dist(features) elif ftype == 'max': D = facedist.max_dist(features) elif ftype == 'meanmin': D = facedist.meanmin_dist(features) else: D = facedist.mean_dist(features) print D.shape nrow = len(features) dense_distances = np.zeros((nrow, nrow), dtype=np.double) for ii in range(nrow): for jj in range(ii + 1, nrow): nn = ii + jj * (jj - 1) / 2 rd = D[nn] dense_distances[ii, jj] = rd dense_distances[jj, ii] = rd del D db = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, metric='precomputed').fit(dense_distances) labels = db.labels_ probabilities = db.probabilities_ pers = db.cluster_persistence_ unique, counts = np.unique(labels, return_counts=True) return np.asarray((unique, counts)).T, labels, probabilities, pers
def dbscan_tests(features, ftype='mean', eps=0.7, min_samples=2): if ftype=='min': D = facedist.min_dist(features) elif ftype=='max': D = facedist.max_dist(features) elif ftype=='meanmin': D = facedist.meanmin_dist(features) else: D = facedist.mean_dist(features) #print D.shape db = DBSCAN(eps=eps, min_samples=min_samples, metric='precomputed').fit(D) labels = db.labels_ unique, counts = np.unique(labels, return_counts=True) return np.asarray((unique, counts)).T, labels, None
def agglo_tests(features, ftype='mean', num_cluster=8, metric='precomputed'): if ftype=='min': D = facedist.min_dist(features) elif ftype=='max': D = facedist.max_dist(features) elif ftype=='meanmin': D = facedist.meanmin_dist(features) else: D = facedist.mean_dist(features) #print D.shape Hclustering = AgglomerativeClustering(n_clusters=num_cluster, affinity=metric, linkage='average') Hclustering.fit(D) labels = Hclustering.labels_ unique, counts = np.unique(labels, return_counts=True) return np.asarray((unique, counts)).T, labels, None
def hdbscan_tests(features, ftype='mean', min_cluster_size=2): if ftype=='min': D = facedist.min_dist(features) elif ftype=='max': D = facedist.max_dist(features) elif ftype=='meanmin': D = facedist.meanmin_dist(features) else: D = facedist.mean_dist(features) #print D.shape db = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, metric='precomputed').fit(D) labels = db.labels_ probabilities = db.probabilities_ pers = db.cluster_persistence_ unique, counts = np.unique(labels, return_counts=True) return np.asarray((unique, counts)).T, labels, probabilities, pers