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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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