k-means算法(DBSCAN算法),聚类算法

本文介绍了K-means和DBSCAN两种聚类算法。K-means的优势在于简单快速,适合常规数据集,但K值的选择困难且对数据形状有局限。DBSCAN的优点是无需指定簇的数量,能发现任意形状的簇,但参数选择对结果影响大,效率较低。文章详细阐述了两种算法的参数设置和适用场景,并提供了Python中scikit-learn库的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、K-means算法是最经典的聚类算法(无监督学习),

    本文对scikit-learn中的kmeans进行说明,以便以后使用。

首先:k-means算法的优劣如下

优势简单,快速,适合常规数据集

劣势:K值难确定,复杂度与样本呈线性关系,很难发现任意形状的簇(针对凸数据集效果较好:

在欧氏空间中,凸集是对于集合内的每一对点,连接该对点的直线段上的每个点也在该集合内。凹集则不满足

 要使用kmeans算法的话,首先需要进行import:

    from sklearn.cluster import KMeans

    scikit-learn中,通过KMeans进行对象的新建,并传入算法参数进行参数设置


    KMeans传参详解:

    1、n_clusters : k值,聚类中心数量(开始时需要产生的聚类中心数量),默认为8

    2、max_iter : 算法运行的最大迭代次数,默认300,凸数据集不用管这个数,凹数据集需要指定。

    3、tol: 容忍的最小误差,当误差小于tol就会退出迭代(算法中会依赖数据本身),默认为1e-4

    4、n_init : (用不同的初始化之心运行计算的次数)k-means算法会随机运行n_init次,最终的结果将是最好的一个聚类结果,默认10

    5、init : 即初始值(质心)选择的方式,有三个选择{


优化过的'k-means++',  ,一般默认'k-means++' ,

完全随机选择'random': 随机选择k个实例作为聚类中心

自己指定的初始化质心,ndarray:如果传入为矩阵(ndarray),则将该矩阵中的每一行作为聚类中心

初始化过程如下:

从输入的数据点集合(要求有k个聚类)中随机选择一个点作为第一个聚类中心;(2)、对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x);(3)、选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大;(4)、重复2和3直到k个聚类中心被选出来


    6、algorithm :可选的K-means距离计算算法, 可选{"auto", "full" or "elkan",default="auto"}


        "full":传统的距离计算方式.,支持稀疏数据。

       "elkan":使用三角不等式,效率更高,但是目前不支持稀疏数据。1、计算任意两个聚类中心的距离;2当计算x点应该属于哪个聚类中心时,当发现2*S(x,K1)<S(x,K2)时,根据三角不等式,S(x,K2)>S(x,K1),

       "auto":当为稀疏矩阵时,采用full,否则elkan。


    7、precompute_distances : 是否将数据全部放入内存计算,可选{'auto', True, False},开启时速度更快但是更耗内存.


       'auto' : 当n_samples * n_clusters > 12million,不放入内存,否则放入内存,double精度下大概要多用100M的内存

       True : 进行预计算

      False : 不进行预计算


    8、n_jobs : 同时进行计算的核数(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值