标签: hierarchical-clustering

R中层次聚类的奇怪错误

我的R程序如下:

hcluster <- function(dmatrix) {
    imatrix <- NULL
    hc <- hclust(dist(dmatrix), method="average")
    for(h in sort(unique(hc$height))) {
        hc.index <- c(h,as.vector(cutree(hc,h=h)))
        imatrix <- cbind(imatrix, hc.index)
    }
    return(imatrix)
}

dmatrix_file = commandArgs(trailingOnly = TRUE)[1]
print(paste('Reading distance matrix from', dmatrix_file))
dmatrix <- as.matrix(read.csv(dmatrix_file,header=FALSE))

imatrix <- hcluster(dmatrix)
imatrix_file = paste("results",dmatrix_file,sep="-")
print(paste('Wrinting results to', imatrix_file))
write.table(imatrix, file=imatrix_file, sep=",", quote=FALSE, row.names=FALSE, col.names=FALSE)
print('done!')
Run Code Online (Sandbox Code Playgroud)

我的输入是距离矩阵(当然是对称的).当我执行上面的程序时,距离矩阵大于大约数千条记录(几百条没有发生),它给了我错误信息:

Error in cutree(hc, h = h) : 
  the 'height' component of 'tree' is not sorted
(increasingly); consider applying as.hclust() first
Calls: hcluster -> …
Run Code Online (Sandbox Code Playgroud)

r cluster-analysis hierarchical-clustering

6
推荐指数
1
解决办法
1992
查看次数

使用SciPy如何获得k =的聚类?进行分层聚类

所以我使用快速集群和SciPy进行凝聚聚类.我可以做到dendrogram聚类的树形图.我可以fcluster(Z, sqrt(D.max()), 'distance')为我的数据获得一个非常好的聚类.如果我想手动检查树形图中的区域,例如k = 3(簇),然后我想检查k = 6(簇),该怎么办?如何在树形图的特定级别获得聚类?

我看到所有这些函数都有公差,但我不明白如何从容差转换为集群数.我可以通过链接(Z)手动构建聚类,并逐步拼凑聚类,但这对大型数据集来说并不实用.

hierarchical-clustering scipy

6
推荐指数
1
解决办法
2987
查看次数

互联网文章和社交媒体的分层分类+主题模型训练数据

我想按主题对大量(100K到1M +)的小型互联网文章(推文,博客文章,新闻等)进行分类.为了实现这一目标,我一直在寻找标记的培训数据文档,我可以用它来构建分类器模型.为了使这篇文章最有用,以下是我发现的一些可能的来源:

a)www.freebase.com/internet/website/category?instances=

b)wikipedia-miner.cms.waikato.ac.nz(用于访问维基百科数据的工具包)

c)en.wikipedia.org/wiki/Wikipedia:Database_download

d)wiki.dbpedia.org/About(属于类别的SKOS格式主题关键字)

e)互联网搜索大型文章集,然后进行聚类和手动策划

问题1:是否有其他可提供标签培训文件的互联网资源?给定主题上的关键字集,尤其是加权集也很有用

理想情况下,我想构建一个分类器,该分类器将返回分层类别,并且随着更多兴趣/数据变得可用,可以在以后添加子主题细节.

问题2:是否存在分层结构(也可能是可扩展的)主题建模/分类框架?一个代码示例将特别受欢迎

非常感谢

更新:

路透社语料库第1卷(在RCV1-v2上搜索)它是从1990年代后期开始的大约80万路透社文章被人类分类为主题,行业和地区类别

一个学术联盟(LDC)分发各种语料库,包括由纽约时报编制的约1.5M标签文件:http: //catalog.ldc.upenn.edu/LDC2008T19

hierarchical-clustering nltk training-data topic-modeling scikit-learn

6
推荐指数
1
解决办法
1422
查看次数

我在哪里可以找到一组带有地面实况标签的基准聚类数据集?

我正在寻找具有"基础事实"标签的聚类数据集,用于某些已知的自然聚类,最好具有高维度.

我在这里找到了一些好的候选人(http://cs.joensuu.fi/sipu/datasets/),但只有Glass和Iris数据集有点标签.我还发现了一些生成高斯数据集(SynDECA)的代码.我想要的主要原因是比较一些聚类方法的距离度量.使用外部(外在)评估标准很困难,因为其中许多偏向于欧氏距离; 而且有很多可供选择.

谢谢!

benchmarking cluster-analysis machine-learning hierarchical-clustering dataset

6
推荐指数
1
解决办法
2399
查看次数

在Amazon RDS上安装Kmeans PostgreSQL扩展

我参加了一些Django poroject,我们使用地理数据(使用GeoDjango).我按照AWS docs中的描述安装了PostGis.

我们在地图上有很多点(标记).我们需要对它们进行聚类.

我找到了一个库anycluster.这个库需要在Postgre数据库上安装名为kmeans-postgresql的PostgreSQL扩展.

但我的数据库位于Amazon RDS上.我无法通过SSH连接到它以安装扩展程序...

有谁知道如何在我的Amazon RDS数据库上安装kmeans-postgresql扩展?

或者你可以告诉我其他聚类方法?

django postgresql hierarchical-clustering k-means amazon-rds

6
推荐指数
1
解决办法
1023
查看次数

sklearn凝聚聚类输入数据

我有四个用户之间的相似度矩阵.我想做一个凝聚聚类.代码是这样的:

lena = np.matrix('1 1 0 0;1 1 0 0;0 0 1 0.2;0 0 0.2 1')
X = np.reshape(lena, (-1, 1))

print("Compute structured hierarchical clustering...")
st = time.time()
n_clusters = 3 # number of regionsle


ward = AgglomerativeClustering(n_clusters=n_clusters,
        linkage='complete').fit(X)
print ward
label = np.reshape(ward.labels_, lena.shape)
print("Elapsed time: ", time.time() - st)
print("Number of pixels: ", label.size)
print("Number of clusters: ", np.unique(label).size)
print label
Run Code Online (Sandbox Code Playgroud)

标签的打印结果如下:

[[1 1 0 0]
 [1 1 0 0]
 [0 0 1 2]
 [0 0 2 1]] …
Run Code Online (Sandbox Code Playgroud)

python hierarchical-clustering scikit-learn

6
推荐指数
1
解决办法
1033
查看次数

Python - 计算word2vec向量的层次聚类,并将结果绘制为树形图

我使用我的域文本语料库生成了一个100D word2vec模型,例如合并常用短语(good bye => good_bye).然后我提取了1000个所需单词的向量.

所以我有一个1000 numpy.array像这样:

[[-0.050378,0.855622,1.107467,0.456601,...[100 dimensions],
 [-0.040378,0.755622,1.107467,0.456601,...[100 dimensions],
 ...
 ...[1000 Vectors]
]
Run Code Online (Sandbox Code Playgroud)

和单词数组如下:

["hello","hi","bye","good_bye"...1000]
Run Code Online (Sandbox Code Playgroud)

我在我的数据上运行了K-Means,我得到的结果很有意义:

X = np.array(words_vectors)
kmeans = KMeans(n_clusters=20, random_state=0).fit(X)
for idx,l in enumerate(kmeans.labels_):
    print(l,words[idx])

--- Output ---
0 hello
0 hi
1 bye
1 good_bye
Run Code Online (Sandbox Code Playgroud)

0 =问候1 =告别

但是,有些词语让我觉得层次聚类更适合这项任务.我尝试过使用AgglomerativeClustering,不幸的是......对于这个Python nobee来说,事情变得复杂,我迷路了.

我如何聚类我的向量,所以输出将是一个树形图,或多或少,就像在这个维基页面上找到的那样? 在此输入图像描述

python numpy machine-learning hierarchical-clustering word2vec

6
推荐指数
1
解决办法
5033
查看次数

在凝聚聚类中指定最大距离(scikit learn)

使用聚类算法时,您始终必须指定关闭参数。

我目前正在使用 scikit learn 的凝聚聚类,我能看到的唯一关闭参数是集群的数量。

agg_clust = AgglomerativeClustering(n_clusters=N)
y_pred = agg_clust.fit_predict(matrix)
Run Code Online (Sandbox Code Playgroud)

但是我想找到一种算法,您可以在其中指定集群元素内的最大距离,而不是集群数量。因此,该算法将简单地聚集集群,直到达到最大距离。

有什么建议吗?

python algorithm hierarchical-clustering scikit-learn

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

用于聚类(和分类)短句的 NLP 词袋/TF-IDF

我想通过它们的字符串键值 ( description)之一对 Javascript 对象进行聚类。我已经尝试了多种解决方案,并希望获得有关如何解决问题的一些指导。

我想要什么:假设我有一个对象数据库。可能有很多(可能有数千个,也可能有数万个)。我需要能够:

  1. 通过逻辑(有点)组中的相似性对对象进行聚类。语义匹配会很棒,但现在只要字符串相似就足够了。在它们被聚类后,我需要为它们中的categoryId每一个分配一些(代表它们所属的集群)。
  2. 每当将新对象添加到数据库时,我都需要将它们分类到现有组/提出新集群。

我还没有尝试解决问题 #2,但这是我尝试解决问题 #1 的方法。

  • 具有 Levenshtein 距离(单链接)的层次聚类- 这里的问题是性能,结果令人满意(我使用了hierarchical-clustering来自 的库npm)但在 150 左右我将不得不等待大约一分钟。不会为数千人工作。

  • TF-IDF,矢量化 + k-means - 性能很棒。它将轻松通过 5000 个对象。但结果肯定是关闭的(可能是我的实现中的一个错误)。我使用(natural库 fromnpm来计算 TF-IDF 和node-kmeans)。

  • Bag-of-Words + k-means - 我现在正在尝试实现这个,还没有任何运气。

对于#2,我想过使用朴素贝叶斯(但我还没有尝试过)。

有什么建议?如果对象只是聚集在一起就好了。如果我可以提取组聚类所依据的标签(如从 TF-IDF 中提取),那就更好了。

algorithm nlp hierarchical-clustering k-means tensorflow.js

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

层次聚类Python 3.6期间内存错误

我有一个相当大的数据集(1841000*32 矩阵),我希望运行分层聚类算法。sklearn.cluster 中的 AgglomerativeClustering 类和 FeatureAgglomeration 类均给出以下错误。

    ---------------------------------------------------------------------------
    MemoryError                               Traceback (most recent call last)
    <ipython-input-10-85ab7b694cf1> in <module>()
  1 
  2 
    ----> 3 mat_red = manifold.SpectralEmbedding(n_components=2).fit_transform(mat)
  4 clustering.fit(mat_red,y = None)

 ~/anaconda3/lib/python3.6/site-packages/sklearn/manifold/spectral_embedding_.py in fit_transform(self, X, y)
525         X_new : array-like, shape (n_samples, n_components)
526         """
--> 527         self.fit(X)
528         return self.embedding_

  ~/anaconda3/lib/python3.6/site-packages/sklearn/manifold/spectral_embedding_.py in fit(self, X, y)
498                               "name or a callable. Got: %s") % self.affinity)
499 
--> 500         affinity_matrix = self._get_affinity_matrix(X)
501         self.embedding_ = spectral_embedding(affinity_matrix,
502   n_components=self.n_components,

~/anaconda3/lib/python3.6/site-packages/sklearn/manifold/spectral_embedding_.py in _get_affinity_matrix(self, X, Y)
450 …
Run Code Online (Sandbox Code Playgroud)

python hierarchical-clustering python-3.x scikit-learn opencv3.0

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