标签: hierarchical-clustering

Python快速集群模块中的距离度量

我想用fastcluster模块进行层次聚类.当我的默认(欧几里德)距离度量,它工作正常:

import fastcluster
import scipy.cluster.hierarchy
distance = spatial.distance.pdist(data)
linkage = fastcluster.linkage(distance,method="complete")
Run Code Online (Sandbox Code Playgroud)

但问题是当我想使用"余弦相似度"作为距离度量时:

distance = spatial.distance.pdist(data,'cosine')
linkage = fastcluster.linkage(distance,method="complete")
Run Code Online (Sandbox Code Playgroud)

输出是:

Traceback (most recent call last):
  File "C:\djcode\mysite\mysite\scipytest.py", line 52, in <module>
    linkage = fastcluster.linkage(distance,method="complete")
  File "C:\Python33\lib\site-packages\fastcluster.py", line 245, in linkage
    linkage_wrap(N, X, Z, mthidx[method])
FloatingPointError: NaN dissimilarity value.
Run Code Online (Sandbox Code Playgroud)

python hierarchical-clustering scipy

9
推荐指数
0
解决办法
2224
查看次数

在恢复的集群的层次结构上使用精确调用度量

背景:我们是两个学生打算使用分层凝聚聚类算法撰写关于逆向工程名称空间的论文.我们有一些链接方法和其他调整到我们想要尝试的算法.我们将在流行的GitHub存储库上运行该算法,并将创建的集群与最初存在的名称空间进行比较.我们的工作将密切关注的作品这个文件.在论文中,作者提到使用"精确度回忆度量"来测量聚类算法的准确性.然而,更密切地关注度量及其来源,它似乎专注于扁平(非分层)集群.

问题: 有没有办法使用精确回忆度量来衡量恢复群集层次结构的准确性?如果没有,还有哪些其他选择?

cluster-analysis hierarchical-clustering precision-recall

9
推荐指数
0
解决办法
197
查看次数

是否有一种根据Jaccard相似性对图表进行聚类的有效方法?

有没有一种有效的方法来使用Jaccard相似性来集群图中的节点,使得每个集群至少具有K节点?

节点之间的Jaccard相似ij:
我们S是集合的邻居iT是集合邻居j.然后之间的相似性ij由下式给出 |(S ? T)| / |(S ? T)|.

algorithm cluster-analysis hierarchical-clustering graph-algorithm

8
推荐指数
1
解决办法
524
查看次数

R中的空间聚类(简单示例)

我有这么简单 data.frame

 lat<-c(1,2,3,10,11,12,20,21,22,23)
 lon<-c(5,6,7,30,31,32,50,51,52,53)
 data=data.frame(lat,lon)
Run Code Online (Sandbox Code Playgroud)

想法是基于距离找到空间聚类

首先,我绘制地图(lon,lat):

plot(data$lon,data$lat)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

很明显我有三个基于点位置之间距离的聚类.

为此目的,我在R中尝试了这个代码:

d= as.matrix(dist(cbind(data$lon,data$lat))) #Creat distance matrix
d=ifelse(d<5,d,0) #keep only distance < 5
d=as.dist(d)
hc<-hclust(d) # hierarchical clustering
plot(hc)
data$clust <- cutree(hc,k=3) # cut the dendrogram to generate 3 clusters
Run Code Online (Sandbox Code Playgroud)

这给出了:

在此输入图像描述

现在我尝试使用簇中的颜色绘制相同的点

plot(data$x,data$y, col=c("red","blue","green")[data$clust],pch=19)
Run Code Online (Sandbox Code Playgroud)

结果如下

在此输入图像描述

这不是我想要的.

实际上,我想找到像这样的情节

在此输入图像描述

谢谢你的帮助.

r hierarchical-clustering spatial geospatial

8
推荐指数
3
解决办法
2万
查看次数

通过阈值将SciPy层次树状图切割成簇

我正在尝试使用SciPy的dendrogram方法根据阈值将数据切割成多个簇.但是,一旦我创建了树形图并检索它color_list,列表中的条目就少于标签.

或者,我尝试使用fcluster我确定的相同阈值dendrogram; 但是,这不会产生相同的结果 - 它给了我一个集群而不是三个集群.

这是我的代码.

import pandas
data = pandas.DataFrame({'total_runs': {0: 2.489857755536053,
1: 1.2877651950650333, 2: 0.8898850111727028, 3: 0.77750321282732704, 4: 0.72593099987615461, 5: 0.70064977003207007, 
6: 0.68217502514600825, 7: 0.67963194285399975, 8: 0.64238326692987524, 9: 0.6102581538587678, 10: 0.52588765899448564,
11: 0.44813665774322564, 12: 0.30434031343774476, 13: 0.26151929543260161, 14: 0.18623657993534984, 15: 0.17494230269731209,
16: 0.14023670906519603, 17: 0.096817318756050832, 18: 0.085822227670014059, 19: 0.042178447746868117, 20: -0.073494398270518693,
21: -0.13699665903273103, 22: -0.13733324345373216, 23: -0.31112299949731331, 24: -0.42369178918768974, 25: -0.54826542322710636,
26: -0.56090603814914863, 27: -0.63252372328438811, 28: -0.68787316140457322, 29: -1.1981351436422796, 30: …
Run Code Online (Sandbox Code Playgroud)

python hierarchical-clustering dendrogram scipy

8
推荐指数
1
解决办法
1万
查看次数

Scikit-learn凝聚聚类连通矩阵

我试图使用sklearn的凝聚聚类命令执行约束聚类.为了使算法受约束,它请求"连接矩阵".这被描述为:

连通性约束是通过连接矩阵强加的:scipy稀疏矩阵,其元素仅在行和列的交叉点处具有应该连接的数据集的索引.此矩阵可以根据先验信息构建:例如,您可能希望仅通过合并具有从一个指向另一个指向的链接的页面来对网页进行聚类.

我有一个观察对列表,我希望算法将强制保留在同一个集群中.我可以将其转换为稀疏scipy矩阵(coo或者csr),但是生成的集群无法强制约束.

一些数据:

import numpy as np
import scipy as sp
import pandas as pd
import scipy.sparse as ss
from sklearn.cluster import AgglomerativeClustering


# unique ids 
ids = np.arange(10)

# Pairs that should belong to the same cluster
mustLink = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])

# Features for training the model
data = pd.DataFrame([
[.0873,-1.619,-1.343],
[0.697456, 0.410943, 0.804333],
[-1.295829, -0.709441, -0.376771],
[-0.404985, -0.107366, 0.875791],
[-0.404985, -0.107366,  0.875791],
[-0.515996, 0.731980, -1.569586], …
Run Code Online (Sandbox Code Playgroud)

python hierarchical-clustering scikit-learn

8
推荐指数
1
解决办法
2480
查看次数

时间序列距离度量

为了聚类一组时间序列,我正在寻找智能距离度量.我尝试了一些众所周知的指标,但没有人适合我的情况.

例:我们假设我的聚类算法提取了这三个质心[s1,s2,s3]: 在此输入图像描述

我想把这个新的例子[sx]放在最相似的集群中:

在此输入图像描述

最相似的质心是第二个,所以我需要找到一个给我d(sx, s2) < d(sx, s1)和我的距离函数dd(sx, s2) < d(sx, s3)

编辑

这里的结果与指标[余弦,欧几里德,闵可夫斯基,动态类型翘曲] 在此输入图像描述] 3

编辑2

用户Pietro P建议在时间序列累积版本上应用距离 解决方案的工作原理,这里是图表和指标: 在此输入图像描述

distance hierarchical-clustering time-series dtw

8
推荐指数
1
解决办法
2826
查看次数

HDBSCAN参数区别

我对 HDBSCAN 中以下参数之间的差异感到困惑

  1. 最小簇大小
  2. 最小样本数
  3. cluster_selection_epsilon

如我错了请纠正我。

对于min_samples,如果设置为 7,则形成的簇需要有 7 个或更多点。因为cluster_selection_epsilon如果设置为 0.5 米,则任何相距超过 0.5 米的簇都不会合并为一个。这意味着每个簇仅包含相距 0.5 米或更小的点。

这与 有何不同min_cluster_size

cluster-analysis machine-learning hierarchical-clustering scikit-learn hdbscan

8
推荐指数
1
解决办法
7554
查看次数

集群呈现树状图替代在r

我知道树状图很受欢迎.但是,如果有大量的观察和课程,很难遵循.但是有时我觉得应该有更好的方式呈现相同的东西.我有一个想法,但不知道如何实现它.

考虑以下树形图.

> data(mtcars)
> plot(hclust(dist(mtcars)))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

可以将其绘制成散点图.其中两点之间的距离用线绘制,而sperate簇(假设阈值)是彩色的,圆的大小由一些变量的值确定.

在此输入图像描述

r hierarchical-clustering dendrogram phylogeny

7
推荐指数
1
解决办法
2648
查看次数

如何在Python中自动使用层次聚类分析获得最佳聚类数?

我想使用层次聚类分析自动获得最佳聚类数(K),然后将这个 K 应用于python 中的K 均值聚类

在研究了很多文章之后,我知道一些方法告诉我们可以绘制图形来确定 K,但是有什么方法可以在 python 中自动输出实数吗?

python cluster-analysis hierarchical-clustering

7
推荐指数
1
解决办法
2万
查看次数