【发布时间】:2020-05-17 21:12:15
【问题描述】:
从研究来看,只有 Single-Linkage Hierarchical Clustering 才能获得最优的聚类。这也称为 SLINK。这些库最初以 C++ 发布,现在以 Python/R 发布。
到目前为止,按照文档中的步骤,我设法想出了:
import pandas as pd
from scipy.cluster.hierarchy import dendrogram, linkage
from scipy.spatial.distance import pdist
## generating random numbers from 20 to 90, and storing them in a dataframe. This is a 1-dimensional data
np.random.seed(1)
df = pd.DataFrame(np.random.randint(20,90,size=(100,1)), columns = list('A'))
df = df.sort_values(by=['A'])
df = df.values
df[:,0].sort()
## getting condensed distance matrix
d = pdist(df_final, metric='euclidean')
## running the SLINK algorithm
Z = linkage(d, 'single')
我知道 Z 是“编码为链接矩阵的层次聚类”(如文档中所述),但我想知道如何返回原始数据集并区分由此结果计算的聚类?
我可以通过 Scikit-Learn 聚类实现聚类结果,但我认为 Scikit-Learn 聚类算法不是最优的,因此我转向了这个 SLINK 算法。如果有人可以帮助我,将不胜感激。
【问题讨论】:
标签: python r cluster-analysis