Как извлечь кластеры из алгоритма HDBSCAN - PullRequest
1 голос
/ 06 мая 2020

Я хотел бы извлечь исходные точки, которые образуют каждый кластер, я знаю, что HDBSCAN не имеет центров кластеров, поэтому я подумал, что если каждая метка соответствует исходной точке в том же порядке, я могу сделать следующее, но результаты действительно плохие !!

  hd = hdscan.labels_
  df['s1']=np.where(hd==0 ,df['Close'] ,np.nan)

1 Ответ

0 голосов
/ 24 июля 2020

Вы можете использовать метод NearestCentroid из модуля sklearn, чтобы получить кластер HDBSCAN. В моем случае я использовал следующую функцию для получения центров кластеров:

from sklearn.neighbors.nearest_centroid import NearestCentroid

def get_cluster_centers(self, clustering_df= None, metrics_by_col='CLUSTER_NO'):
    model_cols=['CREATEDTTM','LAT_GEOCODER','LNG_GEOCODER']
    clf = NearestCentroid()
    clf.fit(clustering_df[model_cols],clustering_df[metrics_by_col])
    centers_df=pd.DataFrame(clf.centroids_,columns=model_cols)
    centers_df['classes']=clf.classes_
    centers_df.set_index('classes', inplace= True)
    return centers_df

clustering_df - это масштабированный фрейм данных. Вы всегда должны использовать нормализованные данные для процесса кластеризации.

...