【层次聚类】python scipy实现
层次聚类
原理
有一个讲得很清楚的博客:博客地址
主要用于:没有groundtruth,且不知道要分几类的情况
用scipy模块实现聚类
参考函数说明:
pdist
squareform
linkage
fcluster
- scipy.spatial.distance.pdist:计算点之间的距离,返回的是一个压缩过的距离矩阵,即一行距离数据,减少了方阵中数据重复占用的空间。
- scipy.spatial.distance.squareform:距离矩阵的方阵与压缩矩阵相互转换函数
- scipy.cluster.hierarchy.linkage:层次聚类函数,返回一个四列的数据,第一和第二列是该次聚合的类序号,第三列是这两类间聚类,第四列是该类中包含多少元素数据
- scipy.cluster.hierarchy.fcluster:根据指定阈值和linkage生成的聚类树得到最终的聚类结果。
例: 已有距离矩阵,进行层次聚类
import scipy
import scipy.cluster.hierarchy as sch
import numpy as np
import msgpack
# 读取距离矩阵
f = open("distance.msgpack", "r")
dis = msgpack.loads(f.read())
dis_arr = np.array(dis)
# 压缩距离矩阵
disMat = scipy.spatial.distance.squareform(dis_arr)
# 生成聚类树
Z=sch.linkage(disMat,method='average')
print Z
# 得到聚类结果
cluster= sch.fcluster(Z, 0.2, 'distance')
print cluster
【层次聚类】python scipy实现的更多相关文章
- 使用Python进行层次聚类
使用 scipy.cluster.hierarchy.linkage进行层次聚类 from scipy.cluster.hierarchy import dendrogram, linkage,fcl ...
- 【python】利用scipy进行层次聚类
参考博客: https://joernhees.de/blog/2015/08/26/scipy-hierarchical-clustering-and-dendrogram-tutorial/ 层次 ...
- 【转】使用scipy进行层次聚类和k-means聚类
scipy cluster库简介 scipy.cluster是scipy下的一个做聚类的package, 共包含了两类聚类方法: 1. 矢量量化(scipy.cluster.vq):支持vector ...
- Python机器学习——Agglomerative层次聚类
层次聚类(hierarchical clustering)可在不同层次上对数据集进行划分,形成树状的聚类结构.AggregativeClustering是一种常用的层次聚类算法. 其原理是:最初将 ...
- python实现一个层次聚类方法
层次聚类(Hierarchical Clustering) 一.概念 层次聚类不需要指定聚类的数目,首先它是将数据中的每个实例看作一个类,然后将最相似的两个类合并,该过程迭代计算只到剩下一个类为止,类 ...
- 【Python机器学习实战】聚类算法(2)——层次聚类(HAC)和DBSCAN
层次聚类和DBSCAN 前面说到K-means聚类算法,K-Means聚类是一种分散性聚类算法,本节主要是基于数据结构的聚类算法--层次聚类和基于密度的聚类算法--DBSCAN两种算法. 1.层次聚类 ...
- Python爬虫技术(从网页获取图片)+HierarchicalClustering层次聚类算法,实现自动从网页获取图片然后根据图片色调自动分类—Jason niu
网上教程太啰嗦,本人最讨厌一大堆没用的废话,直接上,就是干! 网络爬虫?非监督学习? 只有两步,只有两个步骤? Are you kidding me? Are you ok? 来吧,follow me ...
- 吴裕雄 python 机器学习——层次聚类AgglomerativeClustering模型
import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from sklearn.metrics ...
- Agens层次聚类
层次聚类是另一种主要的聚类方法,它具有一些十分必要的特性使得它成为广泛应用的聚类方法.它生成一系列嵌套的聚类树来完成聚类.单点聚类处在树的最底层,在树的顶层有一个根节点聚类.根节点聚类覆盖了全部的所有 ...
随机推荐
- 🍓 react16.2新特性 🍓
react16.2新特性:组件中可以一次性return 多个子元素(子组件)了,也就是说,想return多个子元素,不用在外面包一个父盒子了. 方法一:把要return的元素放在一个空的jsx里面 方 ...
- 《shiro》视频目录---1、权限管理-shiro
\day01_shiro\0323\10realm支持散列.avi;\day01_shiro\0323\1权限管理原理.avi;\day01_shiro\0323\2权限管理解决方案.avi;\day ...
- 调整JVM虚拟机的内存大小
jvm默认只有64M; public static void main(String[] args){ byte b[] = new byte[1024*1024*65];//此时会报内存溢出: } ...
- java final、finally、finalize
- wchar_t*转换string
场景 wchar[]转换string 实现代码 #include "stdafx.h" #include <iostream> #include <windows ...
- Net开发的部分知名网站案例
.Net开发的部分知名网站案例:http://www.godaddy.com 全球最大域名注册商http://www.ips.com 环迅支付,国内最早的在线支付平台http://www.icbc.c ...
- curl的http上传文件代码
int http_post_file(const char *url, const char *user, const char *pwd, const char *filename){ ass ...
- POJ3580 SuperMemo splay伸展树,区间操作
题意:实现一种数据结构,支持对一个数列的 6 种操作:第 x 个数到第 y 个数之间的数每个加 D:第 x 个数到第 y 个数之间全部数翻转:第 x 个数到第 y 个数之间的数,向后循环流动 c 次, ...
- 在 mingw32 上编译 libvpx 1.7.0 时的注意事项
in the vp8/common/theading.h Just need to add 1 line:#include <sys/types.h>before the last occ ...
- copy之深浅拷贝
深浅拷贝深拷贝 全部复制浅拷贝 只复制第一层 __author__ = 'Perfect' # -*- coding: utf-8 -*- import copy # copy.copy() #浅拷贝 ...