首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用t-SNE降维执行聚类

使用t-SNE降维执行聚类
EN

Stack Overflow用户
提问于 2016-06-21 06:37:51
回答 2查看 2.3K关注 0票数 3

问题是应该首先考虑哪一个: a)聚类还是b)降维算法?换句话说,我是否可以应用一种伪(因为它不是真正的)降维方法,如t-SNE,然后使用聚类算法来提取聚类,或者是否应该在原始的高维空间上执行聚类,并仅用于给节点着色?下面的代码是一个好的开始方式,还是我完全错了?

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2016-07-17 16:54:15

先进行降维再进行聚类总是更好。

这背后的原因是在high dimensional space behave in a strange way中的距离。另一个有趣的现象是最近点和最远点之间的比率接近1。

我建议你阅读这篇question,虽然它问的是欧几里德距离,但你可以找到很多有趣的信息。

票数 3
EN

Stack Overflow用户

发布于 2016-06-21 14:26:33

首先降维,然后聚类,这是很常见的。很简单,因为聚类高维数据是困难的,而降维使其更容易处理。

只要您没有忘记集群本质上是不可靠的(所以不要相信结果,而要研究它们),您就应该没问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37932928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档