我想提取形成每个集群的原始点,我知道 HDBSCAN 没有集群中心,所以我想如果每个标签以相同的顺序对应于原始点,我可以执行以下操作,但结果是特别糟糕 !!
hd = hdscan.labels_
df['s1']=np.where(hd==0 ,df['Close'] ,np.nan)
我想提取形成每个集群的原始点,我知道 HDBSCAN 没有集群中心,所以我想如果每个标签以相同的顺序对应于原始点,我可以执行以下操作,但结果是特别糟糕 !!
hd = hdscan.labels_
df['s1']=np.where(hd==0 ,df['Close'] ,np.nan)
您可以使用 sklearn 模块中的 NearestCentroid 方法来获取 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 是缩放的数据框。您始终应该使用标准化数据进行聚类过程。