我使用此功能从以下链接获得距离:https://sourceforge.net/projects/gower-distance-4python/files/。我的数据(df
)使得每一行都是一笔交易,每一列都是要素。由于它包含大量分类数据,因此我使用行距转换了数据以测量“相似性” ...我希望这是正确的(如下所示):
D = gower_distances(df)
distArray = ssd.squareform(D)
hierarchal_cluster=scipy.cluster.hierarchy.linkage(distArray, method='ward', metric='euclidean', optimal_ordering=False)
然后我从上方将hierarchical_cluster绘制成树状图:
plt.title('Hierarchical Clustering Dendrogram (truncated)')
plt.xlabel('sample index or (cluster size)')
plt.ylabel('distance')
dendrogram(
hierarchal_cluster,
truncate_mode='lastp', # show only the last p merged clusters
p=15, # show only the last p merged clusters
leaf_rotation=90.,
leaf_font_size=12.,
show_contracted=True # to get a distribution impression in truncated branches
)
我没有显示它,因为我没有足够的特权点,但是在树状图上我可以看到单独的颜色。
区分它们的主要区别是什么?
我怎么找到这个?
如何使用PCA提取有用的功能?
是否可以将“ hierarchal_cluster”传递到PCA函数中?
像下面的东西..?
pca = PCA().fit(hierarchal_cluster.T)
plt.plot(np.arange(1,len(pca.explained_variance_ratio_)+1,1),pca.explained_variance_ratio_.cumsum())
答案 0 :(得分:0)
我希望您知道PCA仅适用于连续数据吗?自从您提到以来,有许多分类功能。从您编写的内容来看,可能会出现混合数据。
处理混合数据时的常见做法是将连续和分类特征/变量分开。然后找到连续(或数值)特征的数据点之间的欧几里得距离,以及分类特征的汉明距离[1]。
这将使您能够分别查找连续特征和分类特征之间的相似性。现在,在您进行此操作的同时,将PCA应用于连续变量以提取重要特征。并将Multiple Correspondence Analysis
MCA应用于分类特征。之后,您可以将获得的相关功能组合在一起,并应用任何聚类算法。
从本质上讲,我建议在聚类之前进行特征选择/特征提取。
[1] Huang,Z.,1998。k-means算法的扩展,用于使用分类值对大型数据集进行聚类。数据挖掘和知识发现,第2卷第3期,第283-304页。
答案 1 :(得分:0)
引用scipy有关Ward关联的文档:
仅当使用欧几里德成对度量标准时,才正确定义方法“质心”,“中位数”和“病房”。如果将y作为预先计算的成对距离传递,则用户有责任确保这些距离实际上是欧几里得距离,否则产生的结果将是错误的。
所以您不能将Ward链接与Gower一起使用!