文章目录

  • 基本原理
  • sklearn调用

基本原理

BIRCH,即Balanced Iterative Reducing and Clustering Using Hierarchies,利用分层的平衡迭代规约和聚类,特点是扫描一次数据就可以实现聚类,

而根据经验,一般这种一遍成功的算法,背后一定有一棵树,而这棵树的生成规则,往往就是算法的核心。Birch算法的核心,叫做聚类特征树(Clustering Feature Tree),简称CF树。

CF树由CF构成,每个CF都是三元组,表示为(N, LS, SS),其中N表示点数;LS表示点的向量和;SS表示CF各分量的平方和。

CF树常见的操作有两个,分别是添加样本点和CF分裂。而一个新的样本点到来之后,是融入现有的CF,还是另行开辟一个新的CF,则要受到至少两个参数的约束:

  1. 最大CF数
  2. 每个CF的最大样本半径

sklearn调用

sklearn中,Birch类的构造函数如下

Birch(*, threshold=0.5, branching_factor=50, n_clusters=3, compute_labels=True, copy=True)

其中

  • threshold表示CF最大样本半径,当新的样本加入到某个CF中后,如果大于threshold,则会发生CF分裂。
  • branching_factor 表示每个节点的最大CF个数

考虑到Birch适用于较大样本数量,所以下面

import numpy as np
from sklearn.cluster import Birch
from sklearn.datasets import make_blobs
import matplotlib.pyplot as pltxs, ys = np.indices([10,10])*5
n_centers = np.array(list(zip(xs.reshape(-1), ys.reshape(-1))))
X, y = make_blobs(n_samples=25000, centers=n_centers, random_state=0)
birch = Birch(threshold=1.7, n_clusters=None)
birch.fit(X)
plt.scatter(X[:,0], X[:,1], c=birch.labels_, marker='.')
plt.show()

效果为

貌似效果不太好,主要原因可能是没预设样本数,

birch = Birch(threshold=1.7, n_clusters=100)
birch.fit(X)
plt.scatter(X[:,0], X[:,1], c=birch.labels_, marker='.')
plt.show()

n_cluster设为100之后,效果为

接下来测试一下Birch算法的效率,通过make_blobs生成10万个点,然后通过Birch算法完成聚类

import time
X, y = make_blobs(n_samples=100000, centers=n_centers, random_state=0)
t = time.time()
birch = Birch(threshold=1.7, n_clusters=100)
birch.fit(X)
print(time.time()-t)
plt.scatter(X[:,0], X[:,1], c=birch.labels_, marker='.')
plt.show()

耗时2.79s,聚类结果为

【Python】sklearn机器学习之Birch聚类算法相关推荐

  1. 【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering

    文章目录 基本原理 绘图层次 定义距离 基本原理 和Birch聚类相似,层次聚类也是一种依赖树结构实现的聚类方法,其核心概念是相似度.根据相似度,可以将所有样本组织起来,从而构建一棵层次聚类树. 其中 ...

  2. 【Python机器学习实战】聚类算法——层次聚类(HAC)和DBSCAN

    层次聚类和DBSCAN 1.层次聚类 下面这样的结构应该比较常见,这就是一种层次聚类的树结构,层次聚类是通过计算不同类别点的相似度创建一颗有层次的树结构,在这颗树中,树的底层是原始数据点,顶层是一个聚 ...

  3. 【机器学习】—— K-means聚类算法原理详解 以及 二维、三维数据的K-means聚类Python实现

    文章目录 一.K-Means聚类算法原理过程 1.1 K-means聚类的一些细节 1.1.1 样本x(i)x^{(i)}x(i)与中心点μkμ_kμk​距离的衡量 1.1.2 K-means聚类算法 ...

  4. 机器学习实战——层次聚类算法

    机器学习实战--层次聚类算法 1 层次聚类概述 2 sklearn中的实现 1 层次聚类概述 层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构. 数据集的划分可采用"自底向上& ...

  5. 机器学习入门:聚类算法-5

    机器学习入门:聚类算法 1.实验描述 本实验先简单介绍了一下各聚类算法,然后利用鸢尾花数据集分别针对KMeans聚类.谱聚类.DBSCAN聚类建模,并训练模型:利用模型做预测,并使用相应的指标对模型进 ...

  6. 机器学习sklearn19.0聚类算法——Kmeans算法

    一.关于聚类及相似度.距离的知识点 二.k-means算法思想与流程 三.sklearn中对于kmeans算法的参数 四.代码示例以及应用的知识点简介 (1)make_blobs:聚类数据生成器 sk ...

  7. 机器学习实战——密度聚类算法

    机器学习实战--密度聚类算法 1 密度聚类 2 sklearn中的实现 1 密度聚类 密度聚类假设聚类结构能够通过样本分布的密集程度确定,通常情形下,密度聚类算法从样本密度的角度来考察样本之间的可连接 ...

  8. 基于Spark的机器学习实践 (九) - 聚类算法

    0 相关源码 1 k-平均算法(k-means clustering)概述 1.1 回顾无监督学习 ◆ 分类.回归都属于监督学习 ◆ 无监督学习是不需要用户去指定标签的 ◆ 而我们看到的分类.回归算法 ...

  9. 机器学习中的聚类算法有哪几种?

    目前,聚类算法被广泛应用于用户画像.广告推荐.新闻推送和图像分割等等.聚类算法是机器学习中一种"数据探索"的分析方法,它帮助我们在大量的数据中探索和发现数据的结构.那么机器学习中的 ...

最新文章

  1. python ctypes库中动态链接库加载方式
  2. mysql enum mybatis_Mybatis 枚举类处理
  3. android Run模式也会出现Waiting for debugger的解决方法
  4. Win10安装bash慢的解决方案
  5. SMB(Server Message Block) Protocal Research
  6. 2030年人类将成为混合式机器人?
  7. 一切为了运营!如何从推广短信链接唤起 App?
  8. 计算机网络.doc,计算机网络network.doc
  9. global与nonlocal关键字
  10. 学习android操作系统,学习Android手机操作系统笔记总结
  11. 怎么注册DLL到注册表
  12. sqlite内存数据库和文件数据库的同步
  13. fuchsia代码管理
  14. 利用Pandas拆分Excel的单元格为多行并保留其他行的数据
  15. 在线教育颠覆传统教育
  16. 大学计算机作业互评评语简短,大学学生互评评语100字
  17. android系统代码行数,鸿蒙用460万行的代码量,实现安卓1525万行代码实现的所有功能...
  18. (七)集成学习中-投票法Voting
  19. 基于C++的灰度值方图处理
  20. 东方标准讲师谈“JAVA之我注六经”(上)

热门文章

  1. LC-789. 逃脱阻碍者(脑筋急转弯)
  2. android 录制回放工具,android 自动化录制回放测试工具
  3. vue组件封装讲解,和注意事项
  4. 阻塞和非阻塞的区别(干货!!!)
  5. springboot 数据连接池HikariPool
  6. excel 隔行求和
  7. cglib 的BeanCopier高性能解密
  8. BeanCopier的简单使用
  9. MySQL中如何修改全部由数字组成的列名
  10. Vue Element UI 基础多条件查询+重置