首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AgglomerativeClustering科学工具学习连接

AgglomerativeClustering科学工具学习连接
EN

Stack Overflow用户
提问于 2015-10-21 13:25:48
回答 2查看 1.4K关注 0票数 1
代码语言:javascript
运行
复制
I have a matrix x=  
[[0,1,1,1,0,0,0,0],
[1,0,1,1,0,0,0,0],
[1,1,0,1,0,0,0,0],
[1,1,1,0,0,0,0,0],
[0,0,0,0,0,1,1,1],
[0,0,0,0,1,0,1,1],
[0,0,0,0,1,1,0,1],
[0,0,0,0,1,1,1,0],]

调用AgglomerativeClustering后,我期望将数据划分为两个集群,(0-3)和(4-7),即labels_=0,0,0,0,1,1,1,1,但在labels_列表中为0、0、0、1、0、0、0、1

我的代码如下所示:s=AgglomerativeClustering(affinity='precomputed',n_clusters=2,linkage='complete) s.fit(x)

代码中有错误吗?为什么集群不像预期的那样

EN

回答 2

Stack Overflow用户

发布于 2016-03-29 15:32:37

在我看来,在尝试了几个例子之后,AgglomerativeClustering将“亲和力”矩阵解释为一个距离矩阵,尽管我在任何地方都找不到这个矩阵。这意味着你的0和1应该换。

此外,它似乎只考虑矩阵的上三角部分(其他一切都是多余的)。

我认为将x定义为:

代码语言:javascript
运行
复制
x=  
[[0,0,0,0,1,1,1,1],
[ 0,0,0,0,1,1,1,1],
[ 0,0,0,0,1,1,1,1],
[ 0,0,0,0,1,1,1,1],
[ 0,0,0,0,0,0,0,0],
[ 0,0,0,0,0,0,0,0],
[ 0,0,0,0,0,0,0,0],
[ 0,0,0,0,0,0,0,0],]

会给你预期的结果。

票数 1
EN

Stack Overflow用户

发布于 2015-10-24 14:49:26

错误在于如何指定连接矩阵。根据您的描述,我假设您的矩阵表示点之间的链接,其中0/1表示没有链接/链接。然而,该算法将其视为成对距离的矩阵,这就是为什么您会得到意想不到的结果。

你可以用简单的变换把你的亲和矩阵转换成一种距离矩阵。

代码语言:javascript
运行
复制
>>> x = np.array(x)
>>> s.fit(np.exp(-x))
>>> s.labels_
array([1, 1, 1, 1, 0, 0, 0, 0])

更好的做法是对用于生成此关联矩阵的数据使用实际的距离度量。

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

https://stackoverflow.com/questions/33260582

复制
相关文章

相似问题

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