zoukankan      html  css  js  c++  java
  • 聚类之k-means

    1、介绍

    k-means算法以k为参数(所期望的簇的个数),把n个对象分成k个簇(单层划分),用质心(数据点的平均值)定义簇的原型。使得簇内具有较高的相似度,而簇间的相似度较低。

    通过聚类,我们能够发现数据对象之间的关系。簇内的相似度越高,簇间的相似度越低,聚类效果越好。

    2、过程

    ①随机选择k个点作为初始的聚类中心。

    ②对于剩下的点,根据其与聚类中心的距离,将其归入最近的簇,形成k个簇。

    ③对每个簇,计算所有点的均值作为新的聚类中心。

    ④重复②、③,直到聚类中心不再改变。

    3、缺点

    ①可能收敛于局部最小值,在大规模数据中收敛较慢。

    ②k值需要预先给定,属于先验知识。

    ③对初始选取的聚类中心敏感。这会导致①。

    ④并不适合所有的数据类型,比如不能处理非球形簇。

    ⑤对含离群点的数据处理时存在问题。

    为了克服k-means收敛于局部最小值的问题,可以采用二分k-means(bisecting K-means).

    4、优化方法

    1、bisecting K-means

    ①将所有样本看成一个簇。

    ②当簇小于k时,对于每个簇i,计算总误差,在簇i上进行2-means聚类,再计算该簇划分为两个簇后的总误差,选择误差最小的簇进行划分。

  • 相关阅读:
    Java学习10.22(Javaweb对输入信息进行验证——常用的方法)
    mysql with python
    Linux
    Python 基础的一些习题
    Python 推导式、迭代器、生成器、模块和包
    Python 文件操作、异常
    Python 部分内置函数、作用域、闭包、递归
    Python 基础函数、解包
    Python 条件与循环
    Python 集合、字典、运算符
  • 原文地址:https://www.cnblogs.com/ivan-count/p/10515755.html
Copyright © 2011-2022 走看看