相关疑难解决方法(0)

在scipy.cluster.hierarchy.linkage()中使用距离矩阵?

我有一个距离矩阵N*N M,其中M_ij是之间的距离object_iobject_j.正如预期的那样,它采用以下形式:

   /  0     M_01    M_02    ...    M_0n\
   | M_10    0      M_12    ...    M_1n |
   | M_20   M_21     0      ...    M2_n |
   |                ...                 |
   \ M_n0   M_n2    M_n2    ...      0 / 
Run Code Online (Sandbox Code Playgroud)

现在我希望用层次聚类来聚类这些n个对象.Python有一个这样的实现scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean').

它的文件说:

y必须是{n\choose 2}大小的向量,其中n是在距离矩阵中配对的原始观测数.

y:ndarray

精简或冗余距离矩阵.压缩距离矩阵是包含距离矩阵的上三角形的平面阵列.这是pdist返回的形式.或者,n维的m个观察向量的集合可以作为m×n阵列传递.

我对此描述感到困惑y.我可以直接M输入我的输入y吗?


更新

@ hongbo-zhu-cn 在GitHub上提出了这个问题.这正是我所关心的.但是,作为GitHub的新手,我不知道它是如何工作的,因此不知道如何处理这个问题.

python hierarchical-clustering scipy

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

如何获取scipy.cluster.hierarchy制作的树形图子树

我对这个模块(scipy.cluster.hierarchy)感到困惑......还有一些!

例如,我们有以下树形图:

层次聚类

我的问题是如何以一种漂亮的格式提取彩色子树(每个子树代表一个簇),比如SIF格式?现在获得上述情节的代码是:

import scipy
import scipy.cluster.hierarchy as sch
import matplotlib.pylab as plt

scipy.randn(100,2)

d = sch.distance.pdist(X)

Z= sch.linkage(d,method='complete')

P =sch.dendrogram(Z)

plt.savefig('plot_dendrogram.png')

T = sch.fcluster(Z, 0.5*d.max(), 'distance')
#array([4, 5, 3, 2, 2, 3, 5, 2, 2, 5, 2, 2, 2, 3, 2, 3, 2, 5, 4, 5, 2, 5, 2,
#       3, 3, 3, 1, 3, 4, 2, 2, 4, 2, 4, 3, 3, 2, 5, 5, 5, 3, 2, 2, 2, 5, 4,
#       2, 4, 2, 2, 5, …
Run Code Online (Sandbox Code Playgroud)

python numpy hierarchical-clustering scipy python-2.7

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

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

解释SciPy的分层聚类树状图的输出?(也许发现了一个错误...)

我试图找出输出的scipy.cluster.hierarchy.dendrogram工作方式...我以为我知道它是如何工作的,并且能够使用输出来重建树状图,但是似乎我不再理解它,或者似乎有错误Python 3模块的版本。

这个答案,如何获得由scipy.cluster.hierarchy制作的树状图的子树,意味着dendrogram输出字典给出的dict_keys(['icoord', 'ivl', 'color_list', 'leaves', 'dcoord'])w /大小都相同,因此您可以将zip它们和plt.plot它们重建树状图。

看起来很简单,使用时确实可以恢复,Python 2.7.11但是一旦升级到Python 3.5.1旧脚本,就无法获得相同的结果。

我开始通过一个非常简单的可重复示例对集群进行返工,并认为我可能在Python 3.5.1版本的中发现了一个错误SciPy version 0.17.1-np110py35_1。要使用Scikit-learn数据集b / c,大多数人都从conda发行版中获得了该模块。

这些为什么不排成一列,为什么我不能以这种方式重建树状图?

# Init
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

# Load data
from sklearn.datasets import load_diabetes

# Clustering
from scipy.cluster.hierarchy import dendrogram, fcluster, leaves_list
from scipy.spatial import distance
from fastcluster …
Run Code Online (Sandbox Code Playgroud)

python machine-learning hierarchical-clustering dendrogram scipy

3
推荐指数
1
解决办法
2412
查看次数

如何将颜色放在matplotlib的树形图中 - scipy在python中?

我有以下代码来执行数据的分层clutering:

Z = linkage(data,method='weighted')
  plt.subplot(2,1,1)
  dendro = dendrogram(Z)
  leaves = dendro['leaves']
  print leaves
  plt.show()
Run Code Online (Sandbox Code Playgroud)

在树形图中,所有簇都具有相同的颜色(蓝色).有没有办法在群集之间使用不同颜色的相似性?

python matplotlib scipy

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