《机器学习-Python实战(微课版)》课件 第十章 聚类_第1页
《机器学习-Python实战(微课版)》课件 第十章 聚类_第2页
《机器学习-Python实战(微课版)》课件 第十章 聚类_第3页
《机器学习-Python实战(微课版)》课件 第十章 聚类_第4页
《机器学习-Python实战(微课版)》课件 第十章 聚类_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章聚类学习目标通过本章学习可以:掌握K-Means聚类过程和原理。掌握层次聚类的过程和原理。掌握密度聚类的过程和原理。掌握谱聚类的过程和原理。1.无监督学习2.聚类算法3.

K-Means聚类4.

层次聚类5.密度聚类算法引入我们通常讲,物以类聚,人以群分!其实说的就是要依据物和人的关系进行区分。而关系在实际应用场景下,又分为内部相似性和外部关系。前者是观察的对象或物体本身比较相似,划分为一类,比如橘子和柚子都属于水果;后者是指两种物体经常同时出现,比如牛奶和面包等。而这些就是我们接下来要学习的无监督学习。无监督学习概念无监督学习:是指在标注的数据中,根据数据之间本身的属性特征和关联性对数据进行区分,相似相近或关联性强的数据放在一起,而不相似不相近、关联性不强的数据不放在一起。无监督学习的本质是:利用无标签的数据学习数据的分布或数据与数据之间的关系。无监督学习最常应用的场景是部分降维算法、聚类算法和关联算法。无监督学习导入有监督学习与无监督学习的区别有监督学习中,如分类问题,要求样本必须有明确的类别信息,其建立的前提是所有待分类项都有一个类别与之对应。但在处理实际问题的过程中,获取到的数据记录可能并没有进行标注,尤其是处理海量数据时,如果通过预处理对数据进行打标,以满足分类算法的要求,代价非常大。有监督学习中最常见的是分类问题,而无监督学习中最常见的是聚类问题,聚类问题不依赖预定义的类和类标号的训练实例。关注事物本身的特征分析。比如电商对用户信息和购买行为数据进行聚类分析,目的是找到大量级的且有一定相似度的客户群,从而实现用户画像,接着针对该用户群共有的行为特征投放广告和其他营销活动。1.无监督学习2.聚类算法3.

K-Means聚类4.

层次聚类5.密度聚类算法聚类分析概念聚类分析是分析研究对象如何按照多个方面的特征进行综合分类的一种多元统计方法,它是根据物以类聚的思想将相似的样本归为一类。把对象分为不同的类别,类别是依据数据的特征确定的。把相似的东西放在一起,类别内部的差异尽可能小,类别之间的差异尽可能的大。作用作为单独过程,用于对数据进行打标,即数据画像。作为分类等其他学习任务的前驱过程,如聚类算法可以作为一些监督算法的前驱过程。聚类分析的作用如下两图,有什么相同与不同之处?聚类分析两个基本问题-性能度量性能度量:评价聚类结果的好坏程度。聚类性能度量一般分两类:外部指标:将聚类结果与某个“参考模型”进行比较,如依据业务专家给出的划分结果的聚类结果进行评价。内部指标:直接考察聚类结果不利用任何参考模型。聚类分析两个基本问题-距离计算常用的距离度量方法包括:欧几里得距离(简称欧氏距离)和余弦相似度,两者都是评定个体间差异的大小的。欧氏距离会受指标不同单位刻度影响,需要先对数据进行标准化,在聚类问题中,如果两个样本点的欧氏距离越大,表示两者差异越大。如下表示两个𝑝维的样本点

之间的欧氏距离

:余弦相似度不会受指标刻度的影响,余弦值落于区间[-1,1],值越大,差异越小。如

表示样本点

的余弦相似度,此时将样本点看作𝑝维向量处理。聚类算法应用场景-行业(1)离群点检测离群点检测是数据挖掘中重要应用,任务就是发现与大部分观察对象显著不同的对象,很多的数据挖掘方法会将这种差异信息视作噪声进行预处理,但也有的一些应用场景中,离群点本身携带有重要的异常信息,是需要被关注和研究的。离群点检测已经被广泛应用于电信、信用卡诈骗检测,贷款审批,电子商务,网络入侵和天气预报等领域,甚至可以利用离群点检测分析运动员的统计数据,以发现异常运动员。应用方式:利用聚类算法,找到远离其他簇的小簇;首先聚类所有对象,然后评估对象属于簇的程度,对不同距离的点进行打分。聚类算法应用场景-行业(2)用户画像构建方面:根据客户数据,将相似性较高的客户聚为一类,打标签,进行客户类别细分。业务推荐和精准营销方面:通过构建用户画像进行业务推荐和精准营销。常用聚类算法介绍基于原型聚类(partitioningmethods)K-Means算法,K-Mediods算法基于层次聚类(hierarchicalmethods)HierarchicalClustering算法、BIRCH算法基于密度聚类(density-basedmethods)DBSCAN算法1.无监督学习2.聚类算法3.K-Means聚类4.

层次聚类5.密度聚类算法基于原型聚类“原型”是指样本空间中具有代表性的点。原型聚类假设聚类结构可以通过一组原型刻画,这一方法在实际聚类任务中最为常用,理解起来也较简单;通常算法先对原型进行初始化,然后对原型进行迭代更新求解。采用不同的原型表示,不同的求解方式,即会产生不同的聚类算法。最经典的原型聚类算法即:K-Means聚类算法:基于各个样本点与各个聚集簇的中心点距离远近,进行划分的聚类算法。K-Mediods算法:在K-Means基础上改进的算法。K-Means聚类算法算法思想输入聚类个数𝑘,以及包含𝑛个数据对象的数据集,输出标准的k个聚类的一种算法。然后将𝑛个数据对象划分为𝑘个聚类,而最终所获得的聚类满足:(1)同一聚类中的对象相似度较高;(2)而不同聚类中的对象相似度较小。K-Means聚类算法步骤执行步骤1)选取𝐾个对象作为初始中心(叫质心),作为聚类中心;2)对每个样本数据,计算它们与中心的欧氏距离,按距离最近的准则将它们分到距离最近的聚类中心所对应的类;3)更新聚类中心:将每个类别中所有对象所对应的均值作为该类别的新中心(新的质心),计算目标函数;4)判断聚类中心和目标函数的值是否改变,若不变,则输出结果,若改变,则返回2)。𝐴1=(2,10),𝐴2=(2,5),𝐴3=(8,4),𝐴4=(5,8),𝐴5=(7,5),𝐴6=(6,4),𝐴7=(1,2),𝐴8=(4,9).K-Means聚类-过程举例(1)K-Means聚类-过程举例(2)K-Means聚类-K如何确定K-Means算法首先选择𝐾个初始质心,其中𝐾是用户指定的参数,即所期望的簇的个数。这样做的前提是已经知道数据集中包含多少个簇,但很多情况下,我们并不知道数据的分布情况。如何有效地确定𝐾值,提供以下几种方法:从实际问题出发,人工指定比较合理的𝐾值,通过多次随机初始化聚类中心选取比较满意的结果均方根:假设我们有𝑚个样本,该方法认为𝐾=枚举法:用不同的𝐾值进行聚类分别计算类内距离均值和类间距离均值之比,选择最小的那个𝐾值对不同𝐾值都产生2次聚类,选择两次聚类结果最相似的𝐾值手肘法(Elbow)、层次聚类法等。K-Means聚类的优缺点优点简单、易于理解、运算速度快;对处理大数据集,该算法保持可伸缩性和高效性;当簇接近高斯分布时,它的效果较好。缺点在K-Means算法是局部最优的,容易受到初始质心的影响;在K-Means算法中K值需要事先给定的,有时候K值的选定非常难以估计;在簇的平均值可被定义的情况下才能使用,只能应用连续型数据;该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的性能(时间和计算资源)开销是非常大的;对噪声和孤立点数据敏感。K-Means聚类-细节解析初始簇心的选择有时候会影响最终的聚类结果,实际操作中,我们一般会选用不同的数据作为初始簇心,多次执行K-Means算法;新质心不一定是实际的一个数据点。K-Means算法超参数𝐾𝐾是用户指定的参数,即所期望的簇的个数。𝐾指定的前提是已知数据集中包含多少个簇,但很多情况下,并不知道数据的分布情况,需要凭借业务专家的经验;常见做法是多尝试几个𝐾值,看分成几类的结果更好解释,更符合分析目的等;或者可以把各种𝐾值算出的SSE做比较,取最小的SSE的𝐾值。K-Means算法会不会陷入一直选质心的过程,永远停不下来?不会。数学证明一定会收敛,目标函数SSE是可收敛的函数,但数据量大时,收敛时间可能较长。K-Means算法的使用方法(1)利用python调用库sklearn中的cluster子模块,该模板包含常用聚类算法模型,如:K-Means,DBSCAN等;sklearn的K-Means方法默认用欧氏距离,虽然还有余弦相似度、曼哈顿距离等多种方法,但没有设定计算距离方法的参数。K-Means算法的使用方法(2)利用Python中库sklearn中的sklearn.cluster.KMeans方法KMeans(n_clusters=8,init=’k_means++’,n_init=10,max_iter=300,tol=0.0001,precompute_distances=’auto’,verbose=0,random_state=None,copy_x=True,n_jobs=1,algorithm=’auto’)参数说明n_clusters:用于指定聚类中心的个数,一般调用时只需给出n_clusters的值,如指定𝐾为10,KMeans(n_clusters=10)。init:初始聚类中心的初始化方法,其默认选择的是K-Means++。max_iter:最大的迭代次数,默认300。K-Means算法优化K-Means算法的结果非常依赖于初始随机选择的聚类中心的位置,可以通过多次执行该算法来减少初始中心敏感的影响。可采用的优化方法有:1.选择彼此距离尽可能远的K个点作为初始簇中心。

2.先使用canopy算法进行初始聚类,得到K个canopy中心,以此或距离每个canopy中心最近的点作为初始簇中心。K-Means应用示例随机创建一些二维数据作为训练集,选择二维特征数据,代码如下:importnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlinefromsklearn.datasets.samples_generatorimportK-Means应用示例#X为样本特征,Y为样本簇类别,共1000个样本,每个样本2个特征,共4个簇,簇中心在[-1,-1],[0,0],[1,1],[2,2],簇方差分别为[0.4,0.2,0.2]X,y=make_blobs(n_samples=1000,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2]],cluster_std=[0.4,0.2,0.2,0.2],random_state=9)plt.scatter(X[:,0],X[:,1],marker='o')plt.show()K-Means应用示例

创建的数据如下:K-Means应用示例

现在用K-Means聚类方法来做聚类,首先选择k=2,代码如下:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=2,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means应用示例

效果图输出如图:K-Means应用示例

用Calinski-HarabaszIndex评估的聚类分数:fromsklearnimportmetricsmetrics.calinski_harabaz_score(X,y_pred)输出如下:3116.1706763322227K-Means应用示例

k=3的聚类效果,代码如下:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=3,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means应用示例

效果图输出如图:K-Means应用示例

用Calinski-HarabazIndex评估的k=3时候聚类分数:

metrics.calinski_harabaz_score(X,y_pred)输出如下:

2931.625030199556可见此时k=3的聚类分数比k=2还差K-Means应用示例

k=4时候的聚类效果:fromsklearn.clusterimportKMeansy_pred=KMeans(n_clusters=4,random_state=9).fit_predict(X)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.show()K-Means应用示例

效果图输出如图:K-Means应用示例

用Calinski-HarabaszIndex评估的k=4时候聚类分数:

metrics.calinski_harabaz_score(X,y_pred)输出如下:

5924.050613480169

可见k=4的聚类分数比k=2和k=3都要高,这也符合预期,随机数据集也就是4个簇K-Means应用示例

用MiniBatchKMeans的效果,将batchsize设置为200.由于的4个簇都是凸的,所以其实batchsize的值只要不是非常的小,对聚类的效果影响不大。forindex,kinenumerate((2,3,4,5)):plt.subplot(2,2,index+1)y_pred=MiniBatchKMeans(n_clusters=k,batch_size=200,random_state=9).fit_predict(X)K-Means应用示例

score=metrics.calinski_harabaz_score(X,y_pred)plt.scatter(X[:,0],X[:,1],c=y_pred)plt.text(.99,.01,('k=%d,score:%.2f'%(k,score)),transform=plt.gca().transAxes,size=10,horizontalalignment='right')plt.show()K-Means应用示例

效果图输出如图:K-Means应用示例

可见:使用MiniBatchKMeans的聚类效果也不错。当然由于使用MiniBatch的原因,同样是k=4最优,KMeans类的Calinski-HarabaszIndex分数为5924.05,而MiniBatchKMeans的分数稍微低一些,为5921.45,这个差异损耗并不大。1.无监督学习2.聚类算法3.

K-Means聚类4.

层次聚类5.密度聚类算法层次聚类层次聚类法核心思想是在不同层次对数据集进行划分,从而形成树形的聚类结构,数据集的划分可采用“自下向上”的聚合策略,也可以采用“自顶向下”的分拆策略。聚类的层次被表示成树形图。树根拥有所有样本的唯一聚类,叶子是仅有一个样本的聚类。凝聚层次聚类

AGNES算法(AGglomerativeNESting)采用自底向上的策略。最初将每个对象作为一个簇,然后这些簇根据某些准则被一步一步合并,两个簇间的距离可以由这两个不同簇中距离最近的数据点的相似度来确定。聚类的合并过程反复进行直到所有的对象满足簇数目。分裂的层次聚类

DIANA算法(DIvisiveANALysis)采用自顶向下的策略。首先将所有对象置于一个簇中,然后按照某种既定的规则逐渐细分为越来越小的簇(比如最大的欧式距离),直到达到某个终结条件(簇数目或者簇距离达到阈值)。凝聚层次聚类的过程和原理(1)1)计算数据集的相似矩阵;2)假设每个样本点为一个簇类;3)循环:合并相似度最高的两个簇类,然后更新相似矩阵;4)当簇类个数为1时,循环终止。凝聚层次聚类的过程和原理(2)假设我们有6个样本点{A,B,C,D,E,F}第一步:我们假设每个样本点都为一个簇类,计算每个簇类间的相似度,得到相似矩阵;第二步:若B和C的相似度最高,合并簇类B和C为一个簇类。现在我们还有五个簇类,分别为A,BC,D,E,F。第三步:更新簇类间的相似矩阵,相似矩阵的大小为5行5列;若簇类BC和D的相似度最高,合并簇类BC和D为一个簇类。现在我们还有四个簇类,分别为A,BCD,E,F。凝聚层次聚类的过程和原理(3)第四步:更新簇类间的相似矩阵,相似矩阵的大小为4行4列;若簇类E和F的相似度最高,合并簇类E和F为一个簇类。现在我们还有3个簇类,分别为A,BCD,EF。第五步:重复第四步,簇类BCD和簇类EF的相似度最高,合并该两个簇类;现在我们还有2个簇类,分别为A,BCDEF。第六步:最后合并簇类A和BCDEF为一个簇类,层次聚类算法结束。凝聚层次聚类的过程和原理(4)树状图是类似树(tree-like)的图表,记录了簇类聚合和拆分的顺序。我们根据上面的步骤,使用树状图对聚合层次聚类算法进行可视化,以上过程如图所示。层次聚类由不同层次的分割聚类组成,层次之间的分割具有嵌套的关系。它不需要输入参数,这是它的一个明显的优点,其缺点是终止条件必须具体指定。与原型聚类和密度聚类不同,层次聚类试图在不同的“层次”上对样本数据集进行划分,一层一层地进行聚类。典型的分层聚具体有:HierarchicalClustering算法、BIRCH算法等。基于层次聚类常用算法基本概念:判断两个簇之间的距离(1)基本概念:判断两个簇之间的距离(2)计算两个组合数据点间距离常用的方法是:SingleLinkage,CompleteLinkage和AverageLinkage,3种计算方法解析如下:SingleLinkage是将两个簇中最近的两个点间的距离作为这两个组合数据点的距离,该方法易受极端值的影响,两个不相似的点可能由于其中的某个极端的点距离较近而组合在一起。CompleteLinkage与SingleLinkage相反,将两个簇中距离最远的两个点间的距离作为这两个簇的距离,CompleteLinkage的问题也与SingleLinkage相反,两个相似的点可能某个点原先所在的簇中有极端值而无法组合在一起。AverageLinkage的计算方法是计算两个簇中的每个点与其他所有点的距离并将所有距离的均值作为两个组合数据点间的距离,此方法计算量比较大,但结果比前两种方法更合理。基本概念:判断两个簇之间的距离(3)HierarchicalClustering算法简单易理解。主要思路:确保距离近的点落在同一个簇(cluster)之中,流程如下:将每个对象作为一个簇𝑐𝑖={𝑥},形成簇的集合𝐶={𝑐};

迭代以下步骤直至所有对象都在一个族中;找到一对距离最近的簇:min𝐷(𝑐𝑖,𝑐𝑗);将这对簇合并为一个新的簇;从原集合C中移除这对簇;最终产生层次树形的聚类结构:树形图。HierarchicalClustering算法原理优点:可排除噪声点的干扰,但有可能噪声点分为一簇。适合形状不规则,不要求聚类完全的情况。不必确定𝐾值,可根据聚类程度不同有不同的结果。原理简单,易于理解。缺点:计算量很大,耗费的存储空间相对于其他几种方法要高。合并操作不能撤销。合并操作必须有一个合并限制比例,否则可能发生过度合并导致所有分类中心聚集,造成聚类失败。HierarchicalClustering算法优缺点skearn提供的模块cluster中可以调用:AgglomerativeClustering(n_clusters=2,affinity=“euclidean”,memory,connectivity,compute_full_tree,linkage,pooling_func)具体参数描述:n_clusters:一个整数,指定分类簇的数量,默认为2。affinity:一个字符串或者可调用对象,用于计算距离,默认欧氏距离“euclidean”。memory:用于缓存输出的结果,默认为不缓存。connectivity:一个数组或者可调用对象或者None,用于指定连接矩阵。compute_full_tree:通常当训练了n_clusters后,训练过程就会停止,等于True时会继续训练从而生成一颗完整的树。HierarchicalClustering使用方法(1)具体参数描述:linkage:一个字符串,用于指定链接算法,可选类型为{“ward”,“complete”,“average”,“single”}。“single”,单链接single-linkage,采用dmin。“complete”,全链接complete-linkage,采用dmax。“average”,均连接average-linkage,采用davg。“ward,Ward链接,为默认选择方式。pooling_func:一个可调用对象,它的输入是一组特征的值,输出是一个数。该参数在sklearn0.20版本中弃用,将在0.22中删除。HierarchicalClustering使用方法(2)BIRCH算法即平衡迭代削减聚类法,其核心是用一个聚类特征3元组表示一个簇的有关信息,从而使一簇点的表示可用对应的聚类特征,而不必用具体的一组点来表示。它通过构造满足分支因子和簇直径限制的聚类特征树来求聚类。3元组包含:数据点个数,数据点特征之和,数据点特征的平方和分支因子:规定了树的每个节点的样本个数簇直径:体现一类点的距离范围BIRCH算法通过聚类特征可以方便地进行中心、半径、直径及类内、类间距离的运算。BIRCH算法中聚类特征树的构建过程是动态的,可以随时根据新的数据点对树进行重构,适合大规模数据集。BIRCH算法BIRCH算法第一步是通过扫描数据,建立聚类特征树。第二步是采用某个算法对聚类特征树的叶节点进行聚类。BIRCH算法优缺点优点就是一次扫描就行进行比较好的聚类。缺点是要求是球形聚类,因为CF树存储的都是半径类的数据,都是球形才适合。BIRCH算法描述聚类特征树可以动态构造,不要求所有数据读入内存,可逐个读入。新的数据项总是插入到树中与该数据距离最近的叶子中。如果插入后使得该叶子的直径大于类直径T,则把该叶子节点分裂。其它叶子结点也需要检查是否超过分枝因子来判断其分裂与否,直至该数据插入到叶子中,并且满足不超过类直径,而每个非叶子节点的子女个数不大于分枝因子。算法可通过改变类直径修改特征树大小,控制其占内存容量。BIRCH算法通过一次扫描就可以进行较好的聚类,因此该算法适于大数据集。I/O花费与数据量成线性关系。BIRCH算法只适用于数据的分布呈凸形及球形的情况,并且由于BIRCH算法需提供正确的聚类个数和簇直径限制,对不可视的高维数据不可行。BIRCH算法的计算解析sklearn中的聚类算法包含在sklearn.cluster模块中,BIRCH算法的具体描述为Birch(threshold=0.5,branching_factor=50,n_clusters=3,compute_labels=True,copy=True)参数说明如下:threshold:float,表示设定的半径阈值,默认0.5。branching_factor:int,默认=50,每个节点最大特征树子集群数。n_clusters:int,默认=3,最终聚类数目。compute_labels:bool,默认为True,是否为每个拟合计算标签,一般默认。copy:bool,默认为True,是否复制给定数据。如果设置为False,则将覆盖初始数据。BIRCH算法使用方法层次聚类的应用示例

构建容量为15000的瑞士卷(swissrolldataset)数据集,用离差平方和的层次聚类算法建模,可视化聚类结果并输出算法运行时间,代码如下:n_samples=15000noise=0.05X,_=make_swiss_roll(n_samples,noise)层次聚类的应用示例

减小瑞士卷的厚度X[:,1]*=.5print("Computeunstructuredhierarchicalclustering...")st=time.time()ward=AgglomerativeClustering(n_clusters=6,linkage='ward').fit(X)elapsed_time=time.time()-stlabel=ward.labels_#运行时间print("Elapsedtime:%.2fs"%elapsed_time)print("Numberofpoints:%i"%label.size)############################################################层次聚类的应用示例

#可视化结果fig=plt.figure()ax=p3.Axes3D(fig)ax.view_init(7,-80)forlinnp.unique(label):ax.scatter(X[label==l,0],X[label==l,1],X[label==l,2],color=plt.cm.jet(np.float(l)/np.max(label+1)),s=20,edgecolor='k')plt.title('Withoutconnectivityconstraints(time%.2fs)'%层次聚类的应用示例

效果图输出如图:1.无监督学习2.聚类算法3.

K-Means聚类4.

层次聚类5.密度聚类算法密度聚类算法密度聚类的思想不同于K-Means,它是通过聚类的簇是否紧密相连来判断样本点是否属于一个簇,代表性的算法就是DBSCAN,它基于一组邻域参数来判断某处样本是否是紧密。DBSCAN(Density-BasedSpatialClusteringofApplicationswithNoise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-Means,BIRCH这些一般只适用于凸样本集的聚类相比,DBSCAN还适用于非凸样本集。密度聚类过程和原理(1)DBSCAN是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。通过将紧密相连的样本划为一类,这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,则我们就得到了最终的所有聚类类别结果。密度聚类过程和原理(2)DBSCAN是基于一组邻域来描述样本集的紧密程度的,参数(ϵ,MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数的阈值。DBSCAN算法的基本概念(1)DBSCAN算法的基本概念(2)DBSCAN算法将数据点分为三类:核心点:在半径𝜀内含有超过min_𝑠𝑎𝑚𝑝𝑙𝑒𝑠数目的点。边界点:在半径𝜀内点的数量小于min_𝑠𝑎𝑚𝑝𝑙𝑒𝑠,但是落在核心点的邻域内的点。噪音点:既不是核心点也不是边界点的点。DBSCAN聚类算法应用特点和传统的K-Means算法相比,DBSCAN最大的不同就是不需要输入类别数K,当然它最大的优势是可以发现任意形状的聚类簇,而不是像K-Means,一般仅仅使用于凸的样本集聚类。同时它在聚类的同时还可以找出异常点,这点和BIRCH算法类似。DBSCAN聚类算法优缺点

优点:可以解决数据分布特殊(非凸,互相包络,长条形等)的情况。对于噪声不敏感,速度较快,不需要指定簇的个数;可适用于较大的数据集。在邻域参数给定的情况下结果是确定的,只要数据进入算法的顺序不变,与初始值无关。缺点:如果样本集的密度不均匀、聚类间距差相

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论