标签: hierarchical-clustering

从图像中提取颜色

我想提取图像中最常用的颜色,或者至少是主色调你能推荐我如何从这个任务开始?或者指向一个类似的代码?我一直在寻找它,但没有成功.

machine-learning hierarchical-clustering image-processing quantization computer-vision

5
推荐指数
1
解决办法
2816
查看次数

R中的多尺度层次聚类出错

我在做用的R包叫做分层聚类pvclust,其基础上hclust通过将引导来计算得到的集群显着性水平.

考虑以下具有3维和10个观察的数据集:

mat <- as.matrix(data.frame("A"=c(9000,2,238),"B"=c(10000,6,224),"C"=c(1001,3,259),
                        "D"=c(9580,94,51),"E"=c(9328,5,248),"F"=c(10000,100,50),
                        "G"=c(1020,2,240),"H"=c(1012,3,260),"I"=c(1012,3,260),
                        "J"=c(984,98,49)))
Run Code Online (Sandbox Code Playgroud)

当我hclust单独使用时,聚类对欧几里得测量和相关度量都运行良好:

# euclidean-based distance
dist1 <- dist(t(mat),method="euclidean")
mat.cl1 <- hclust(dist1,method="average")

# correlation-based distance
dist2 <- as.dist(1 - cor(mat))
mat.cl2 <- hclust(dist2, method="average")
Run Code Online (Sandbox Code Playgroud)

但是,在使用每个设置时pvclust,如下:

library(pvclust)

# euclidean-based distance
mat.pcl1 <- pvclust(mat, method.hclust="average", method.dist="euclidean", nboot=1000)

# correlation-based distance
mat.pcl2 <- pvclust(mat, method.hclust="average", method.dist="correlation", nboot=1000)
Run Code Online (Sandbox Code Playgroud)

...我收到以下错误:

  • 欧几里得: Error in hclust(distance, method = method.hclust) : must have n >= 2 objects to cluster
  • 相关性:Error in cor(x, method …

r cluster-analysis hierarchical-clustering hclust correlation

5
推荐指数
1
解决办法
4626
查看次数

Scipy树状图叶子标签颜色

是否可以为Scipy的树状图的叶子标签指定颜色?我无法从文档中找到它.这是我到目前为止所尝试的:

from scipy.spatial.distance import pdist, squareform
from scipy.cluster.hierarchy import linkage, dendrogram

distanceMatrix = pdist(subj1.ix[:,:3])
dendrogram(linkage(distanceMatrix, method='complete'), 
           color_threshold=0.3, 
           leaf_label_func=lambda x: subj1['activity'][x],
           leaf_font_size=12)
Run Code Online (Sandbox Code Playgroud)

谢谢.

python hierarchical-clustering dendrogram scipy

5
推荐指数
1
解决办法
6113
查看次数

二维矢量数据中的角点检测

我试图检测数据的2D散射矢量中的角(x/y坐标).

数据来自激光测距仪,我们当前的平台使用Matlab(虽然独立的程序/库是一个选项,但Nav/Control代码在Matlab上,所以它必须有一个接口).

角点检测是SLAM算法的一部分,角落将作为地标.

如果可能的话,我也希望在速度方面达到接近100Hz的水平(我知道它的Matlab,但我的数据集非常小.)

样本数据:

角点检测

[蓝色是原始数据,红色是我需要检测的.(这种观点实际上是自上而下的.)]

[ 以上镜头的实际矢量数据 ]

到目前为止,我尝试了许多不同的方法,其中一些方法比其他方法更成功 我从未正式研究过任何形式的机器视觉.

我的第一种方法是一个自制的最小二乘线装配器,它将线条分成两半,直到它们满足一些r ^ 2值,然后尝试合并具有相似斜率/截距的线条.然后它将计算这些线的交叉点.它不是很好,但确实在70%的时间内都能正常工作,虽然它有一些完全缺少某些功能的坏问题.

我当前的方法使用clusterdata函数根据马哈拉诺比斯距离来分割我的数据,然后基本上做同样的事情(最小二乘线拟合/合并).它工作正常,但我假设有更好的方法.

[ 源代码到当前方法 ] [cnrs, dat, ~, ~] = CornerDetect(data, 4, 1)使用上述数据将产生我得到的位置.

我不需要从头开始编写这个,看起来大多数更高级的方法都适用于2D图像或3D点云,而不是2D散射数据.我已经阅读了很多关于Hough变换和各种数据聚类方法(k-Means等)的内容.我也尝试了一些罐装线探测器而没有太大的成功.我尝试使用线段探测器,但它需要一个灰度图像作为输入,我认为将我的矢量转换为完整的2D图像以将其提供给像LSD这样的东西会非常慢.

任何帮助是极大的赞赏!

matlab hierarchical-clustering image-processing computer-vision image-segmentation

5
推荐指数
1
解决办法
1741
查看次数

在地图上显示大量(约50k及以上)标记量(带有聚类)

我想以类似于此示例的方式在地图上显示标记,但我有更多标记,我想使用"原生"Google地图.

到目前为止,我发现只有一个看起来能够做到这一点的库:android-maps-utils.但经过测试后发现,当有大约35000个标记时,它会出现严重的性能问题.(甚至java.lang.OutOfMemoryError).所以我想知道还有哪些其他选择.从头开始滚动我自己的解决方案可能是我想做的最后一件事.

我想,这个库根本不可用于非常大的标记计数,因为它将它们全部保存在RAM中.例如,在从文件中读取当前不可见标记时,最好过滤掉它们,并在每次摄像机移动后进行.(double从二进制文件中读取35k对DataInputStream非常快,所以现在这不是什么大问题.我想这可以进一步加速.)另外,我可以为不同的缩放级别准备预处理的集群集.文件,因为标记不会经常更改.
但是从头开始实现这一点(特别是 - 适当的集群)看起来很多工作.也许我错过了已经做过的事情?

更新

为此,我尝试使用android-maps-extensions.它工作得更好,但它也将所有标记保存在内存中,当显示大约35k标记时,它会在完全缩小时导致大约20MB的内存消耗,并且在放大时会导致大约24MB.另外大约7MB并且会出现崩溃...所以我想我需要在RAM中保留尽可能少的数据.有没有像这样工作的图书馆?

java android google-maps hierarchical-clustering quadtree

5
推荐指数
0
解决办法
969
查看次数

使用SciPy树形图,我可以更改线宽吗?

我正在使用SciPy制作一个大的树形图,在得到的树形图中,线条粗细使得很难看到细节.我想减少线条粗细,以便更容易看到,更像MatLab.有什么建议?

我正在做:

import scipy.cluster.hierarchy as hicl
from pylab import savefig

distance = #distance matrix

links = hicl.linkage(distance,method='average')
pden = hicl.dendrogram(links,color_threshold=optcutoff[0], ...
       count_sort=True,no_labels=True)
savefig('foo.pdf')
Run Code Online (Sandbox Code Playgroud)

而且越来越像结果这样.

hierarchical-clustering matplotlib scipy

5
推荐指数
2
解决办法
2367
查看次数

5
推荐指数
1
解决办法
829
查看次数

使用pandas在Python中创建和绘制分层树

所以我在pandas DataFrame中存储了分层信息,我想基于这些信息构建和可视化分层树.

例如,我的DataFrame中的一行有列标题 - ['Phylum','Class','Order','Family','Genus','Species','Subspecies']

我想用每一行创建一个树,其中所有'Subspecies'都是唯一的字符串,应该是树中的叶子.有人能指出我最好的方法/包装......这样做吗?理想情况下,输出将是matplotlib对象.先感谢您!

python tree hierarchical-clustering matplotlib pandas

5
推荐指数
1
解决办法
2966
查看次数

没有数据矩阵,nbclust无法正常工作

我试图使用nbclust函数并收到错误:“ t(jeu)%*%jeu中的错误:需要数字/复杂矩阵/矢量参数”,这就是我运行该函数的方式:

NbClust(input_data, diss = dissimilarity_matrix,
                        distance = NULL,
                        min.nc=2, max.nc=5, method = "ward.D2", 
                        index = "all")
Run Code Online (Sandbox Code Playgroud)

该错误可能是因为我的数据不是数字的,但相异矩阵却是。其他所有聚类算法都不需要数据矩阵,有没有办法使用没有数据的函数?

r cluster-analysis hierarchical-clustering cluster-computing

5
推荐指数
1
解决办法
1528
查看次数

交换Python scipy的树状图/链接的叶子

我为我的数据集生成了一个树状图,但我不满意如何对某些级别的拆分进行排序。因此,我正在寻找一种交换单个拆分的两个分支(或叶子)的方法。

如果我们看一下底部的代码和树状图,则有两个标签,11并且25与大集群的其余部分分开。我对此实在不满意,并希望带有1125的分支成为拆分的右分支,而集群的其余部分成为左分支。所示的距离将仍然相同,因此数据不会改变,只是美观。

能做到吗?如何?我特别适合手动干预,因为最佳叶子排序算法在这种情况下可能无法正常工作。

import numpy as np

# random data set with two clusters
np.random.seed(65)  # for repeatability of this tutorial
a = np.random.multivariate_normal([10, 0], [[3, 1], [1, 4]], size=[10,])
b = np.random.multivariate_normal([0, 20], [[3, 1], [1, 4]], size=[20,])
X = np.concatenate((a, b),)

# create linkage and plot dendrogram    
from scipy.cluster.hierarchy import dendrogram, linkage
Z = linkage(X, 'ward')

plt.figure(figsize=(15, 5))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('sample index')
plt.ylabel('distance')
dendrogram(
    Z,
    leaf_rotation=90.,  # …
Run Code Online (Sandbox Code Playgroud)

python hierarchical-clustering matplotlib dendrogram scipy

5
推荐指数
1
解决办法
140
查看次数