zoukankan      html  css  js  c++  java
  • 【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 import dendrogram, 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函数确定最终的分组情况:

  • 相关阅读:
    spring cloud微服务docker启动
    docker安装mysql5.7
    Spring Boot CommandLineRunner的使用
    IDEA Java 源发行版 8 需要目标发行版 1.8
    Centos6.5安装Python2.7.9
    Hive在drop表的时候报错
    反向读取Mysql数据库表结构到PowerDesigner中
    SpringCloud与Consul集成实现负载均衡
    Mac系统安装和卸载brew包管理
    Consul集群搭建
  • 原文地址:https://www.cnblogs.com/yesuuu/p/9518069.html
Copyright © 2011-2022 走看看