问题是哪个应该先出现:a)聚类或b)降维算法?
换句话说,我可以应用像 t-SNE 这样的伪(因为它不是真的)降维方法,然后使用聚类算法来提取聚类,还是应该在原始高维空间上执行聚类并仅用于给节点上色?
以下代码是一个很好的开始方式还是我完全错了?
adjMat = g.get_adjacency(attribute='weight') #get the adjacency matrix from a really large graph
adjMat = np.array(adjMat.data)
adjMat = adjMat.T #use the incoming interaction vectors
#initiate the t-SNE algorithm
tsne = manifold.TSNE() #set dimensionality reduction algorithm
manifoldCoords = tsne.fit_transform(adjMat)
#initiate clustering algorithm
clusteralgorithm = clusterAlgs.KMeans() #set clustering algorithm
linear_clusters = clusteralgorithm.fit_predict(manifoldCoords) #extract clusters
最佳答案
执行降维然后聚类总是更好。
这背后的原因是 high dimensional space behave in a strange way 中的距离。另一个有趣的现象是最近点和最远点之间的比率接近 1。
我建议你阅读这个 question ,虽然它询问了欧几里德距离,但你可以找到很多有趣的信息。
关于python - 使用 t-SNE 降维执行聚类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37932928/