zoukankan      html  css  js  c++  java
  • 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
     
  • 相关阅读:
    C# 程序一个cmd命令窗口执行多条dos命令
    单例模式学习
    C#中的typeof()和GetType()的区别
    C#判断字符串A是否包含字符串B--by winter
    ASP.NET内置对象Session缺点及解决办法---by winter
    冒泡排序--by winter
    as关键字---?号用法---各种路径
    自创page类中获取当前用户权限 --by winter
    自建的Page类的使用--by winter
    无法添加App_Code文件的解决办法
  • 原文地址:https://www.cnblogs.com/Koi504330/p/11909413.html
Copyright © 2011-2022 走看看