Hierarchical Clustering层次聚类方法实现

本文介绍了层次聚类的基本步骤,包括初始化每个样本为一类,通过计算类间距离进行聚类,创建树形结构以方便设定阈值分割。文章讨论了SingleLinkage、CompleteLinkage和Average-linkage三种相似度计算方法及其优缺点,并提供了Python实现的代码示例。
摘要由CSDN通过智能技术生成

简单介绍:
假设有N个待聚类的样本,对于层次聚类来说,步骤:
1.(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度;
2.寻找各个类之间最近的两个类,将他们归为一类(类总数减少一个)
3. 重新计算新生成的这个类与各个旧类之间的相似度;
4.重复2和3直到所有的样本点都归为一类,结束。
这里写图片描述
创建了一个树形结构,这样的话,给定一个阈值,便于分割。
判断两个类之间的相似度的不同方法:
1.SingleLinkage:又叫做nearest-neighbor,就是取两个类之间距离最近的两个uangben的距离作为这两个集合的距离,即,最近两个样本之间的距离越小,这两个类之间的相似度越高。4
容易造成一种叫做chaining的效果,两个cluster明明从大局上相隔较远,但是因为个别点距离比较近而被合并了,并且这样合并之后chaining效应会进一步扩大,最后会得到比较松散的cluster.
2.CompleteLinkage:这个是SingleLinkage的反面极端,取这两个集合中距离最远的两个点之间的距离作为两个集合之间的距离.效果与singleLinkage相反,也是不太好的方法。
3.Average-linkage:这种方法就是将两个集合中的点的两两的距离全部放在一起求一个平均值,相对也得到一个合适的效果
4.average-linkage的一个变种就是取两两距离之间的中值(中位数),与均值相比更加可以解除个别偏离样本对结果的干扰。

Python实现:
1.Hierarchical_clustering.py

#coding=utf-8
#层次聚类Hierarchical_clustering方法实现
from numpy import *
from scipy.cluster._hierarchy import cluster_dist
from math import *


class cluster_node:
    # 构造函数:self:this
    def __init__(self, vec, left=None, right=None, distance=0.0, id=None, count=1):
        self.left = left
        self.right = right# 每次聚类都是一对数据,left保存其中一个数据,right保存另一个
        self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值