层次聚类pythonscipy_【python】利用scipy进行层次聚类

参考博客:

https://joernhees.de/blog/2015/08/26/scipy-hierarchical-clustering-and-dendrogram-tutorial/

层次聚类理论知识

类从多减少的过程。

1、定义样本间的距离,类与类之间的距离

2、将每个样本当作一类,计算距离最近的两类,合并为新类

3、一点一点做,直到所有成为一类。

基本步骤:

1、数据变换:

中心化:demean

标准化:deStd

极差标准化:deMean / 极差

极差正规化:de min / 极差

对数变换

2、计算样品两两间距离

3、合并距离最小的两类,重新计算类与类之间的距离

4、画谱系聚类图

5、决定分类的个数以及各个类的成员。

类与类之间的距离不同定义:

1、最短距离法:两两之间最短距离

2、最长距离法

3、中间距离法

4、重心法:可能导致合并后下一次距离比前一次要短

5、类平均法:两两之间平方距离的平均值

6、离差平方和法:WARD

性质:

1、单调性:只有中间距离法和重心法不符合。

2、浓缩与扩张:太浓缩的方法不灵敏,太扩张的方法在样本比较多的时候容易失真

类个数的确定:

1、给定临界值、

2、根据散点图判断

3、根据统计量判断:

R2、半偏R2、伪F、伪T

来看代码:

from scipy.cluster.hierarchy importdendrogram, linkage

Z= linkage(X, "single", "correlation")

dendrogram(Z, labels=X.index, color_threshold=0)

plt.show()

首先使用linkage函数生成距离矩阵。

method参数为距离定义:

single : 最短距离法

complete: 最长距离法

average: 类平均法, 与通常定义差一个sq, sqrt

centroid: 重心法

weighted: 中间距离法

ward: WARD法

使用fcluster函数确定最终的分组情况:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值