• A-无监督学习算法示例:层次聚类


     

    ⼀种针对小样本精确聚类的聚类算法:层次聚类法。所谓更更加精准,⼀方面是指该聚类方法在执行过程中全程保持透明,另⼀面则是在真实的应用场景中,针对数据量不大(数千行左右)的数据,层次聚类往会有一个⾮常好的聚类效果

     

    其首先会计算所有数据中最邻近的点,将其归为一个簇,然后取其质心作为簇的代表,参与到下一次最邻近点的选取的过程当中,简单来说就是不断的两两合并直到合并为一个簇为止

     

    伪代码

    1:计算两两元素的邻近度

    2: repeat

    3: 合并最接近的两个簇

    4: 更更新邻近性矩阵,以反映新的簇和原来簇或元素之间的邻近度

    5: Until 仅剩下⼀一个簇

    In [2]:
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    %matplotlib inline
     
    In [4]:
    from sklearn.datasets import load_iris
    iris = load_iris()
    In [6]:
    iris.data
    In [7]:
    iris.target

    Out[7]:

    array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
           0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
           1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
           1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
           2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
           2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
    In [8]:
    from sklearn.cluster import AgglomerativeClustering
    agClustering = AgglomerativeClustering(n_clusters=3)
    In [9]:
    agClustering.fit(iris.data)
    Out[9]:
    AgglomerativeClustering(affinity='euclidean', compute_full_tree='auto',
                connectivity=None, linkage='ward', memory=None, n_clusters=3,
                pooling_func=<function mean at 0x0000027004F287B8>)
    In [12]:
    agClustering.labels_
    Out[12]:
    array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
           1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
           1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2,
           2, 2, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2,
           2, 0, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 0], dtype=int64)
    In [15]:
    from sklearn.metrics import accuracy_score  

    In [16]:

    accuracy_score(iris.target,agClustering.labels_)

    Out[16]:

    0.23333333333333334
     
  • 相关阅读:
    数据结构和算法大纲
    内存碎片产生原因及处理技术
    相关资源
    busybox hexdump 命令使用
    http协议中content-length 以及chunked编码分析
    libtool工具的使用
    音视频学习相关资源
    winpcap
    ipkg包管理
    system返回值校验
  • 原文地址:https://www.cnblogs.com/Koi504330/p/11909413.html
Copyright © 2020-2023  润新知