精华内容
下载资源
问答
  • BIRCH算法

    千次阅读 2018-06-17 17:30:12
    BIRCH算法 ——使用聚类特征树的多阶段聚类 上篇文章介绍了层次聚类的提出、分类和相关概念,以及给出了对于传统的纯粹的层次聚类的缺陷的解析: ...

    BIRCH算法

    ——使用聚类特征树的多阶段聚类

    上篇文章介绍了层次聚类的提出、分类和相关概念,以及给出了对于传统的纯粹的层次聚类的缺陷的解析:

    https://blog.csdn.net/qiu1440528444/article/details/80707845

    本章主要介绍进行优化后的层次聚类的算法之一:BIRCH算法

    BIRCH算法是通过集成层次聚类其他聚类算法来对大量数值数据进行聚类,其中层次聚类用于初始的微聚类阶段,而其他方法如迭代划分(在最后的宏聚类阶段)。
    如此,克服了凝聚聚类方法所面临的两个困难;

    1. 可伸缩性;
    2. 不能撤销前一步所做的工作;

    适用:BIRCH算法比较适合于数据量大,类别数K较多的情况,运行速度快,只需要单遍扫描数据集就能进行聚类。

    那么,如何单遍扫描数据集就能完成聚类呢???

    • BIRCH算法利用一个树结构来快速聚类,称为聚类特征树,CF Tree
    • 树的每一个节点是由若干个聚类特征CF组成,每个节点(包含叶子节点)都有若干个CF。
    • 内部节点的CF有指向孩纸节点的指针。
    • 所有叶子节点用一个双向链表链接起来。
      这里写图片描述
      具体的来说: BIRCH使用聚类特征(CF)来概括一个簇,使用聚类特征树(CF树)来表示聚类的层次结构。这些结构帮助聚类方法在大型数据库中取得好的速度和伸缩性,还使得BIRCH方法对新对象增量和动态聚类也非常有效。

    考虑一个n个d维的数据对象或点的簇。簇的聚类特征CF是一个3维向量,汇总了对象簇的信息,定义如下:
    这里写图片描述
    其中,n是簇中点的数目,LS是n个点的线性和(即 这里写图片描述),
    SS是数据点的平方和(即这里写图片描述)。
    聚类特征本质上是给定簇的统计汇总:从统计学的观点来看,它是簇的零阶矩、一阶矩和二阶矩。

    使用聚类特征,我们可以很容易地推导出簇的许多有用的统计量
    例如,簇的形心x0,半径R和直径D分别是:
    这里写图片描述
    其中R是成员对象到形心的平均距离,D是簇中逐对对象的平均距离。R和D都反映了形心周围簇的紧凑程度。
    这里写图片描述

    • BIRCH试图利用可用的资源生成最好的簇。给定有限的主存,一个重要的考虑是最小化I/O所需时间。BIRCH采用了一种多阶段聚类技术:数据集的单遍扫描产生一个基本的好聚类,一或多遍的额外扫描可以用来进一步(优化)改进聚类质量。它主要包括两个阶段:
      阶段一:BIRCH扫描数据库,建立一棵存放于内存的初始CF树,它可以看作数据的多层压缩,试图保留数据的内在的聚类结构。
      阶段二:BIRCH采用某个(选定的)聚类算法对CF树的叶节点进行聚类,把稀疏的簇当作离群点删除,而把稠密的簇合并为更大的簇。
    • 在阶段一中,随着对象被插入,CF树被动态地构造。这样,该方法支持增量聚类。
    • 一个对象被插入到最近的叶条目(子簇)。如果在插入后,存储在叶节点中的子簇的直径大于阈值,则该叶节点和可能的其他节点被分裂。新对象插入后,关于该对象的信息向树根节点传递。
    • 通过修改阈值,CF树的大小可以改变。如果存储CF树需要的内存大于主存的大小,可以定义较大的阈值,并重建CF树。
    • 在 CF 树重建过程中,通过利用老树的叶节点来重新构建一棵新树,因而树的重建过程不需要访问所有点,即构建CF 树只需访问数据一次就行。
    • 可以在阶段二使用任意聚类算法,例如典型的划分方法。

    完整的CF树如下图所示:
    这里写图片描述
    对于CF树有3个重要参数:

    1. 第一个参数是每个内部节点的最大CF数B;
    2. 第二个参数是每个叶子节点的最大CF数L;
    3. 第三个参数是针对叶子节点中某个CF中的样本点来说的,它是叶节点每个CF的最大样本半径阈值T;就是说,在这个CF中的所有样本点一定要在半径小于T的一个超球体内。对于上图中的CF Tree,限定了B=7, L=5, 也就是说内部节点最多有7个CF,而叶子节点最多有5个CF。

    CF树的具体生成过程参考文献:

    https://www.cnblogs.com/pinard/p/6179132.html

    总结CF树的建立:

    1. 初始化枝平衡因子B,叶平衡因子L,空间阀值T;
    2. 在数据库中逐个选取数据点Xi,并插入CF树中;
      *从根节点开始向下寻找和新样本点距离最近的叶子节点以及叶子节点里最近的CF节点;

    展开全文
  • Birch算法

    2020-01-01 15:46:25
    Birch算法 Birch概述 Birch算法利用了一个树结构来帮助我们快速的聚类,这个数结构类似于平衡B+树,一般将它称之为聚类特征树(Clustering Feature Tree,简称CF Tree)。这颗树的每一个节点是由若干个聚类特征...

    Birch算法

    Birch概述

    Birch算法利用了一个树结构来帮助我们快速的聚类,这个数结构类似于平衡B+树,一般将它称之为聚类特征树(Clustering Feature Tree,简称CF Tree)。这颗树的每一个节点是由若干个聚类特征(Clustering Feature,简称CF)组成。从右图我们可以看看聚类特征树是什么样子的:每个节点包括叶子节点都有若干个CF,而内部节点的CF有指向孩子节点的指针,所有的叶子节点用一个双向链表链接起来。
    在这里插入图片描述

    聚类特征CF

    聚类特征CF是这样定义的:每一个CF是一个三元组, 可以用(N,LS,SS)表示。其中N代表了这个CF中拥有的样本点的数量,这个好理解;LS代表了这个CF中拥有的样本点各特征维度的和向量,SS代表了这个CF中拥有的样本点各特征维度的平方和
    在这里插入图片描述
    举个例子如上图,在CF Tree中的某一个节点的某一个CF中,有下面5个样本(3,4), (2,6), (4,5), (4,7), (3,8)。则它对应的
    N=5
    LS=(3+2+4+4+3,4+6+5+7+8)=(16,30)
    SS=(32+22+42+42+32,42+62+52+72+82)=(54,190)

    簇的质心和簇的半径

    假如一个簇中包含n个数据点:{Xi},i=1,2,3…n,则质心C和半径R计算公式如下:
    C=(X1+X2+…+Xn)/n,(这里的x1+X2+…+Xn是向量相加)
    R=(|X1-C|2+|X2-C|2+…+|Xn-C|^2)/n
    簇半径表示簇中所有点到质心得平均距离

    聚类特征树CF Tree的生成

    我们先定义好CF Tree的参数: 即内部节点的最大CF数B, 叶子节点的最大CF数L, 叶节点每个CF的最大样本半径阈值T
    在最开始的时候,CF Tree是空的,没有任何样本,我们从训练集读入第一个样本点,将它放入一个新的CF三元组A,这个三元组的N=1,将这个新的CF放入根节点,此时的CF Tree如下图:
    在这里插入图片描述
    现在我们继续读入第二个样本点,我们发现这个样本点和第一个样本点A,在半径为T的超球体范围内,也就是说,他们属于一个CF,我们将第二个点也加入CF A,此时需要更新A的三元组的值。此时A的三元组中N=2。此时的CF Tree如下图:
    在这里插入图片描述
    假设我们现在的CF Tree 如下图, 叶子节点LN1有三个CF, LN2和LN3各有两个CF。我们的叶子节点的最大CF数L=3。此时一个新的样本点来了,我们发现它离LN1节点最近,因此开始判断它是否在sc1,sc2,sc3这3个CF对应的超球体之内,但是很不幸,它不在,因此它需要建立一个新的CF,即sc8来容纳它。问题是我们的L=3,也就是说LN1的CF个数已经达到最大值了,不能再创建新的CF了,此时就要将LN1叶子节点一分为二了。
    在这里插入图片描述
    我们将LN1里所有CF元组中,找到两个最远的CF做这两个新叶子节点的种子CF,然后将LN1节点里所有CF sc1, sc2, sc3,以及新样本点的新元组sc8划分到两个新的叶子节点上。将LN1节点划分后的CF Tree如下图:
    在这里插入图片描述
    如果我们的内部节点的最大CF数B=3,则此时叶子节点一分为二会导致根节点的最大CF数超了,也就是说,我们的根节点现在也要分裂,分裂的方法和叶子节点分裂一样,分裂后的CF Tree如下图:
    在这里插入图片描述
    CF有一个很好的性质,就是满足线性关系,CF1+CF2=(N1+N2,LS1+LS2,SS1+SS2)。这个性质从定义也很好理解。如果把这个性质放在CF Tree上,也就是说,在CF Tree中,对于每个父节点中的CF节点,它的(N,LS,SS)三元组的值等于这个CF节点所指向的所有子节点的三元组之和。如右图所示
    在这里插入图片描述
    对于CF树有3个重要参数:
    第一个参数是每个内部节点的最大CF数B;
    第二个参数是每个叶子节点的最大CF数L;
    第三个参数是针对叶子节点中某个CF中的样本点来说的,它是叶节点每个CF的最大样本半径阈值T;就是说,在这个CF中的所有样本点一定要在半径小于T的一个超球体内。
    对于右图中的CF Tree,限定了B=6, L=5, 也就是说内部节点最多有6个CF,而叶子节点最多有5个CF

    Birch算法

    BIRCH算法主要包含以下四个步骤:
    (1) 扫描整个数据集,将数据依次插入,逐步构建起一个初始的CF树(聚类特征树),如果在插入的过程中遇到内存不足的情况,则提升阈值,在先前的CF树基础之上重新构建一个较小的树,满足内存需求。建树完成后,将集中的样品点划分为一类,零星的离散点当做是孤立点或噪声点。
    (2)二次聚类。在步骤(1)中,数据样品总是被插入到距离其最近的叶节点(簇)中,并且一旦将其插入成功,更新其父节点的CF值状态,同时该数据的信息也会自下而上传到root节点中;如果不能正常插入,即叶节点(簇)半径大于先前设定的阈值,此叶节点将要被分裂——新数据的插入和分裂的过程基本类似于构建B+树的过程。如果过程中内存占用过大,就按照步骤(1)中的办法,通过调节阈值改变树的大小重新建树,需要注意的是,这里重建特征树的时候不需要再次扫描整个数据集,而是在已存在的特征树的叶节点基础之上重新构建,由此可知,整个建树的过程只需要扫描一次数据集。
    (3)这个步骤是可选的。在步骤(1)、(2)中可能会存在由于由于输入顺序和页
    面大小大带来的分裂。使用全局/半全局聚类算法对所有叶节点重新聚类来补救先
    前的分裂,提升现有聚类结果的质量
    (4) 这个步骤是可选的。将数据重新划分到最近的中心点附近,这里的中心
    点为步骤(3)中的中心点,以确保重复数据被分到同一个叶节点(簇)中,同时可以
    添加簇标签。
    在这里插入图片描述
    BIRCH算法的主要优点有:

    1. 节约内存,所有的样本都在磁盘上,CF Tree仅仅存了CF节点和对应的指针。
    2. 聚类速度快,只需要一遍扫描训练集就可以建立CF Tree,CF Tree的增删改都很快。
    3. 可以识别噪音点,还可以对数据集进行初步分类的预处理

    BIRCH算法的主要缺点有:

    1. 由于CF Tree对每个节点的CF个数有限制,导致聚类的结果可能和真实的类别分布不同.
    2. 对高维特征的数据聚类效果不好。此时可以选择Mini Batch K-Means
    3. 如果数据集的分布簇不是类似于超球体,或者说不是凸的,则聚类效果不好。

    实验

    数据集
    在这里插入图片描述

    #%%
    
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    #%%
    
    dataset = pd.read_csv('Loans.csv')
    
    #%%
    
    dataset
    
    #%% md
    
    Getting the data as in below.
    
    #%%
    
    X = dataset.iloc[:, 1:4]
    y = dataset.loc[:, 'Approval']
    
    #%%
    
    print('type check: \nX: {}\ny: {}'.format(type(X), type(y)))
    X.shape
    
    #%% md
    
    ## Modeling
    
    #%%
    
    # splitting
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=100)
    
    #%% md
    
    Standardizing the features is applied in order to gather variables in the same scaling level.
    
    #%%
    
    from sklearn.preprocessing import StandardScaler
    sc = StandardScaler()
    X_train_scaled = sc.fit_transform(X_train)
    X_test_scaled = sc.transform(X_test)
    
    #%%
    
    #训练和测试数据
    from sklearn.cluster import Birch
    brc = Birch(threshold=0.5, n_clusters=None, branching_factor=50)
    birch_model = brc.fit(X_train_scaled)
    labels = brc.predict(X_test_scaled)
    # result
    n_clusters = np.unique(labels).size
    plt.scatter(X_test_scaled[:,0], X_test_scaled[:,1],c=labels)
    plt.show()
    

    BIRCH类参数

    1. threshold:即叶节点每个CF的最大样本半径阈值T,它决定了每个CF里所有样本形成的超球体的半径阈值。一般来说threshold越小,则CF Tree的建立阶段的规模会越大,即BIRCH算法第一阶段所花的时间和内存会越多。但是选择多大以达到聚类效果则需要通过调参决定。默认值是0.5.如果样本的方差较大,则一般需要增大这个默认值。

    2. branching_factor:即CF Tree内部节点的最大CF数B,以及叶子节点的最大CF数L。这里scikit-learn对这两个参数进行了统一取值。也就是说,branching_factor决定了CF Tree里所有节点的最大CF数。默认是50。如果样本量非常大,比如大于10万,则一般需要增大这个默认值。选择多大的branching_factor以达到聚类效果则需要通过和threshold一起调参决定

    3. n_clusters:即类别数K,在BIRCH算法是可选的,如果类别数非常多,我们也没有先验知识,则一般输入None,此时BIRCH算法第4阶段不会运行。但是如果我们有类别的先验知识,则推荐输入这个可选的类别值。默认是3,即最终聚为3类。

    聚类的结果
    在这里插入图片描述

    参考博客

    展开全文
  • birch算法PPT

    2013-01-02 23:27:14
    为初学者提供BIRCH算法的基本知识,原理、优缺点介绍。
  • BIRCH算法源码

    热门讨论 2011-10-23 09:18:35
    BIRCH算法源码,C++实现,已在solaris下编译通过
  • BIRCH算法学习

    2017-11-05 23:10:08
    1.BIRCH算法概念  BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)全称是:利用层次方法的平衡迭代规约和聚类。BIRCH算法是1996年由Tian Zhang提出来的,参考文献1。首先,BIRCH是一种...

    1.BIRCH算法概念

              BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)全称是:利用层次方法的平衡迭代规约和聚类。BIRCH算法是1996年由Tian Zhang提出来的,参考文献1。首先,BIRCH是一种聚类算法,它最大的特点是能利用有限的内存资源完成对大数据集的高质量的聚类,同时通过单遍扫描数据集能最小化I/O代价。

              首先解释一下什么是聚类,从统计学的观点来看,聚类就是给定一个包含N个数据点的数据集和一个距离度量函数F(例如计算簇内每两个数据点之间的平均距离的函数),要求将这个数据集划分为K个簇(或者不给出数量K,由算法自动发现最佳的簇数量),最后的结果是找到一种对于数据集的最佳划分,使得距离度量函数F的值最小。从机器学习的角度来看,聚类是一种非监督的学习算法,通过将数据集聚成n个簇,使得簇内点之间距离最小化,簇之间的距离最大化。

              BIRCH算法特点:

              (1)BIRCH试图利用可用的资源来生成最好的聚类结果,给定有限的主存,一个重要的考虑是最小化I/O时间。

              (2)BIRCH采用了一种多阶段聚类技术:数据集的单边扫描产生了一个基本的聚类,一或多遍的额外扫描可以进一步改进聚类质量。

              (3)BIRCH是一种增量的聚类方法,因为它对每一个数据点的聚类的决策都是基于当前已经处理过的数据点,而不是基于全局的数据点。

              (4)如果簇不是球形的,BIRCH不能很好的工作,因为它用了半径或直径的概念来控制聚类的边界。

              BIRCH算法中引入了两个概念:聚类特征和聚类特征树,以下分别介绍。

    1.1 聚类特征(CF)

               CF是BIRCH增量聚类算法的核心,CF树中得节点都是由CF组成,一个CF是一个三元组,这个三元组就代表了簇的所有信息。给定N个d维的数据点{x1,x2,....,xn},CF定义如下:

    CF=(N,LS,SS)

                其中,N是子类中节点的数目,LS是N个节点的线性和,SS是N个节点的平方和。

               CF有个特性,即可以求和,具体说明如下:CF1=(n1,LS1,SS1),CF2=(n2,LS2,SS2),则CF1+CF2=(n1+n2, LS1+LS2, SS1+SS2)。

               例如:

               假设簇C1中有三个数据点:(2,3),(4,5),(5,6),则CF1={3,(2+4+5,3+5+6),(2^2+4^2+5^2,3^2+5^2+6^2)}={3,(11,14),(45,70)},同样的,簇C2的CF2={4,(40,42),(100,101)},那么,由簇C1和簇C2合并而来的簇C3的聚类特征CF3计算如下:

    CF3={3+4,(11+40,14+42),(45+100,70+101)}={7,(51,56),(145,171)}

               另外在介绍两个概念:簇的质心和簇的半径。假如一个簇中包含n个数据点:{Xi},i=1,2,3...n.,则质心C和半径R计算公式如下:

    C=(X1+X2+...+Xn)/n,(这里X1+X2+...+Xn是向量加)

    R=(|X1-C|^2+|X2-C|^2+...+|Xn-C|^2)/n

               其中,簇半径表示簇中所有点到簇质心的平均距离。CF中存储的是簇中所有数据点的特性的统计和,所以当我们把一个数据点加入某个簇的时候,那么这个数据点的详细特征,例如属性值,就丢失了,由于这个特征,BIRCH聚类可以在很大程度上对数据集进行压缩。

    1.2 聚类特征树(CF tree)

                CF tree的结构类似于一棵B-树,它有两个参数:内部节点平衡因子B,叶节点平衡因子L,簇半径阈值T。树中每个节点最多包含B个孩子节点,记为(CFi,CHILDi),1<=i<=B,CFi是这个节点中的第i个聚类特征,CHILDi指向节点的第i个孩子节点,对应于这个节点的第i个聚类特征。例如,一棵高度为3,B为6,L为5的一棵CF树的例子如图所示:


                一棵CF树是一个数据集的压缩表示,叶子节点的每一个输入都代表一个簇C,簇C中包含若干个数据点,并且原始数据集中越密集的区域,簇C中包含的数据点越多,越稀疏的区域,簇C中包含的数据点越少,簇C的半径小于等于T。随着数据点的加入,CF树被动态的构建,插入过程有点类似于B-树。加入算法表示如下:

    [cpp]  view plain  copy
    1. (1)从根节点开始,自上而下选择最近的孩子节点  
    2. (2)到达叶子节点后,检查最近的元组CFi能否吸收此数据点  
    3.     是,更新CF值  
    4.     否,是否可以添加一个新的元组  
    5.         是,添加一个新的元组  
    6.         否则,分裂最远的一对元组,作为种子,按最近距离重新分配其它元组  
    7. (3)更新每个非叶节点的CF信息,如果分裂节点,在父节点中插入新的元组,检查分裂,直到root  

                计算节点之间的距离函数有多种选择,常见的有欧几里得距离函数和曼哈顿距离函数,具体公式如下:


               构建CF树的过程中,一个重要的参数是簇半径阈值T,因为它决定了CF tree的规模,从而让CF tree适应当前内存的大小。如果T太小,那么簇的数量将会非常的大,从而导致树节点数量也会增大,这样可能会导致所有数据点还没有扫描完之前内存就不够用了。

    2.算法流程

               BIRCH算法流程如下图所示:


                  整个算法的实现分为四个阶段:

                  (1)扫描所有数据,建立初始化的CF树,把稠密数据分成簇,稀疏数据作为孤立点对待

                  (2)这个阶段是可选的,阶段3的全局或半全局聚类算法有着输入范围的要求,以达到速度与质量的要求,所以此阶段在阶段1的基础上,建立一个更小的CF树

                  (3)补救由于输入顺序和页面大小带来的分裂,使用全局/半全局算法对全部叶节点进行聚类

                  (4)这个阶段也是可选的,把阶段3的中心点作为种子,将数据点重新分配到最近的种子上,保证重复数据分到同一个簇中,同时添加簇标签

                  详细流程请参考文献1。

    3.算法实现

              BIRCH算法的发明者于1996年完成了BIRCH算法的实现,是用c++语言实现的,已在solaris下编译通过。

            另外算法的实现也可参考:http://blog.sina.com.cn/s/blog_6e85bf420100om1i.html



    参考文献:

    1.BIRCH:An Efficient Data Clustering Method for Very Large Databases

    展开全文
  • 中科院数据挖掘课程_Birch算法实验,中科院数据挖掘课程_Birch算法实验
  • C++实现的BIRCH算法

    热门讨论 2013-12-20 10:50:29
    用VC++实现BIRCH算法的源代码,绝对能运行,是本科论文中要实现的算法
  • birch 算法文本聚类应用举例 篇一 birch 算法文本聚类应用举例 文中的概念和定义部分摘自于百度百科和一些论文中把我觉得写 的不错的解释放上来供参考 一文本聚类定义 文本聚类主要是依据著名的聚类假设同类的文档相...
  • birch算法C语言源代码

    2012-05-08 07:34:02
    这是birch C语言的源代码。里面有详细的代码注释方便学习birch算法
  • BIRCH算法(基于层次的聚类算法)

    热门讨论 2011-12-03 10:19:19
    基于层次的聚类算法(以BIRCH算法为例) 算法形式化描述 输入:包含N个对象的数据集合D 输出:簇集合。
  • 基于特征词典构建和BIRCH算法的中文百科文本聚类研究.pdf
  • (一) Birch算法简介: BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)全称是:利用层次方法的平衡迭代规约和聚类。BIRCH算法是1996年由Tian Zhang提出来的。Birch算法就是通过聚类特征...

        (一)  Birch算法简介:

        BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)全称是:利用层次方法的平衡迭代规约和聚类。BIRCH算法是1996年由Tian Zhang提出来的。Birch算法就是通过聚类特征(CF)形成一个聚类特征树,root层的CF个数就是聚类个数。

          整个算法实现共分为4个阶段:

        1.  扫描所有数据,建立初始化的CF树,把稠密数据分成簇,稀疏数据作为孤立点对待。

        2.  这个阶段是可选的,阶段3的全局或半全局聚类算法有着输入范围的要求,以达到速度与质量的要求,所以此阶段在阶段1的基础上,建立一个更小的CF树。

        3.  补救由于输入顺序和页面大小带来的分裂,使用全局/半全局算法对全部叶节点进行聚类。

        4.  这个阶段也是可选的,把阶段3的中心点作为种子,将数据点重新分配到最近的种子上,保证重复数据分到同一个簇中,同时添加簇标签。

        算法缺点:由于使用半径和直径概念,特别适用于球形数据的聚类(可以在聚类前进行样本绘图观察后选择该算法)。

        聚类特征(CF):每一个CF都是一个三元组,可以用(N,LS,SS)表示。其中N代表了这个CF中拥有的样本点的数量;LS代表了这个CF中拥有的样本点各特征维度的和向量,SS代表了这个CF中拥有的样本点各特征维度的平方和。

        比如:CF中含有N=5个点,以两维样本点值为:(3,4)、(2,6)、(4,5)、(4,7)、(3,8)。

        然后计算:

            LS=(3+2+4+4+3,4+6+5+7+8)=(16,30)

            SS =(32+22+42+42+32,42+62+52+72+82)=(54,190)


            对于上图中的CF Tree,限定了B=7,L=5也就是说内部节点最多有7CF(含有的分支点数目),而叶子节点最多有5CF(每个叶子还有的CF个数,实际上就是每个叶子中包含的样本数目)。叶子节点是通过双向链表连通的。

            (二) sklearn算法中的应用举例:

            Birch算法在sklearn.cluster中。

            算法涉及主要参数:

    (1)      n_clusters :簇数。

    (2)      threshold :扫描阈值。

    (3)      branches_factor:每个节点中CF子集群的最大数量,默认值为50。

     最后通过读取:labels_ :来获知每个数据点的分类情况。

    代码如下:

    import numpy asnp

    import matplotlib.pyplot as plt

    from sklearn.datasets.samples_generator import make_blobs

    from sklearn.cluster import Birch 

    # X为样本特征,Y为样本簇类别, 共500个样本,每个样本2个特征,共4个簇,簇中心在[-1,-1],[0,0],[1,1], [2,2]

    X, y =make_blobs(n_samples=500, n_features=2, centers=[[-1,-1], [0,0], [1,1], [2,2]],cluster_std=[0.5, 0.4, 0.5, 0.4],

                      random_state =9)

    ##设置birch函数

    birch = Birch(n_clusters= None)

    ##训练数据

    y_pred =birch.fit_predict(X)

    ##绘图

    plt.figure()

    plt.subplot(2,2,1)

    plt.scatter(X[:,0],X[:,1])

    plt.title('DataSample')

    plt.subplot(2,2,2)

    plt.scatter(X[:,0], X[:, 1], c=y_pred)

    plt.title('None') 

    ##设置birch函数

    birch =Birch(n_clusters = 4)

    ##训练数据

    y_pred =birch.fit_predict(X)

    plt.subplot(2,2,3)

    plt.scatter(X[:,0], X[:, 1], c=y_pred)

    plt.title('n_clusters=4')

    plt.show()

    最后效果如下:


    参考文献:

    https://blog.csdn.net/qll125596718/article/details/68952911等。


    展开全文
  • 基于层次的聚类算法(以BIRCH算法为例) 输入:包含N个对象的数据集合D 输出:簇集合。
  • 数据流聚类相关知识以及Stream、CluStream、Birch算法的讲解
  • 基于聚类型BIRCH算法进行数据挖掘的入侵检测模型设计与实现.pdf
  • BIRCH算法本身上属于一种聚类算法,不过他克服了一些K-Means算法的缺点,比如说这个k的确定,因为这个算法事先本身就没有设定有多少个聚类。他是通过CF-Tree,(ClusterFeature-Tree)聚类特征树实现的。BIRCH的一个...
  • BIRCH算法比较适合于数据量大,类别数K也比较多的情况。它运行速度很快,只需要单遍扫描数据集就能进行聚类,当然需要用到一些技巧,下面我们就对BIRCH算法做一个总结。 BIRCH概述  BIRCH的全称是利用层次方法...
  • 层次聚类定义、层次聚类过程可视化、簇间距离度量、BIRCH、两步聚类、BIRCH算法优缺点 目录 层次聚类定义、层次聚类过程可视化、簇间距离度量、BIRCH、两步聚类、BIRCH算法优缺点 层次聚类定义 层次聚类过程可视...
  • 高维聚簇算法BIRCH: An Efficient Data Clustering Method for Very Large Databases CF树
  • Birch算法函数

    2020-10-09 15:13:12
    https://blog.csdn.net/xc_zhou/article/details/88316299 第四个

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,607
精华内容 1,042
关键字:

birch算法