《机器学习基础及应用》教案第12课聚类(二).docx

上传人:李司机 文档编号:7016911 上传时间:2024-04-12 格式:DOCX 页数:12 大小:99.63KB
返回 下载 相关 举报
《机器学习基础及应用》教案第12课聚类(二).docx_第1页
第1页 / 共12页
《机器学习基础及应用》教案第12课聚类(二).docx_第2页
第2页 / 共12页
《机器学习基础及应用》教案第12课聚类(二).docx_第3页
第3页 / 共12页
《机器学习基础及应用》教案第12课聚类(二).docx_第4页
第4页 / 共12页
《机器学习基础及应用》教案第12课聚类(二).docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《《机器学习基础及应用》教案第12课聚类(二).docx》由会员分享,可在线阅读,更多相关《《机器学习基础及应用》教案第12课聚类(二).docx(12页珍藏版)》请在三一办公上搜索。

1、课题聚类(二)课时2课时(90min)教学目标知识技能目标:(1)掌握层次聚类算法的基本原理及凝聚层次聚类算法的SkIearn实现方法(2)掌握DBSCAN聚类算法的基本原理及其Sklearn实现方法(3)能够使用凝聚层次聚类算法和DBSCAN聚类算法训练模型(4)能够编写程序,寻找DBSCAN聚类模型参数的最优值素质目标:强化数据安全意识,提高信息技术应用能力帮助学生树立履行时代使命的责任担当,激起学生报效祖国的理想情怀教学重难点教学重点:层次聚类算法的基本原理及凝聚层次聚类算法的Sklearn实现方法;DBSCAN聚类算法的基本原理及其Sklearn实现方法教学睚点:使用凝聚层次聚类算法和

2、DBSCAN聚类算法训练模型;编写程序,寻找DBSCAN聚类模型参数的最优值教学方法案例分析法、问答法、讨论法、讲授法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务,扫码观看“常见的聚类算法”视频,了解层次聚类算法和DBSCAN聚类算法的相关知识【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】提出以下问题:什么是层次聚类算法?【鞋】思考、传授新知【教师】通过学生的回答引入要讲的知识,介绍层次聚类算法、DBSCAN聚类算法的相关知

3、识9.3层次聚类算法9.3.1 层次聚类算法的基本原理1.层次聚类算法的原理分析层次聚类算法可分为“自底向上”的凝聚法和自顶向下”的分裂法。目前,常用的层次聚类算法是凝聚法.AGNES(AgglomerativeNESting)算法是一种常用的凝聚法。它的聚类原理是,对于给定的样本数据集,先将数据集中的每个样本看作是一个初始聚类簇,然后计算所有样本两两之间的距离,将距离最近的样本合并成一个簇;接下来重新计算簇与簇之间的距离,将距离最近的簇进行合并,该过程不断重复,直到达到预设的聚类簇数目,算法结束,得到最终的聚类结果。可见,AGNES算法的关键是如何计算簇与簇之间的距离。实际上,每个簇都可以看

4、作是一个样本集合,只须计算样本集合的某种距离即可。若给定聚类簇C和,则可通过下面的公式计算两个簇之间的距离。dm(G,G)=mindist(p,q)最小距离:ZCG4nax(G,Cj)=maxdist(p,g)最大距离:%(GC)=771r,dist(p,q)平均距离:,jip0qwq公式中的dist(Pq)表示样本P与样本q之间的距离.显然,最小距离由两个簇中距离最近的样本决定,最大距离由两个簇中距离最远的样本决定,平均距离由两个簇的所有样本共同决定。当聚类簇距离分别由4血、ma或4”计算时,AGNES算法相应地被称为单链接、全链接或均链接算法。2.层次聚类算法的流程使用层次聚类中AGNES

5、算法进行聚类的具体步骤如下。(1)将数据集中的每个样本看作是一个初始聚类簇。(2)计算所有样本两两之间的距离,将距离最近的样本合并为一个簇.(3)重新计算簇与簇之间的距离,将距离最近的簇进行合并。(4)重复步骤(3),直到达到预设的聚类簇数目。【教师】通过多媒体展示“5个样本数据点之间的距离”4个簇之间的距离“和”3个簇之间的距离”表格,并讲解相关知识【例9-2样本空间中有5个数据点A、B、C、D、E,它们之间的旦疆如表9-3所示。使用AGNES算法对这5个数据点进行聚类(簇与簇之间的距离采用最小距离法进行计算)并画出树形图。表935个样本数据点之间的距离样本点ABCDEAO6237B6O44

6、1C24O55D345O5E7155O【解】使用AGNES算法对5个样本孀点进行聚类的步骤如下。(1)将5个数据点分别看成一个簇,然后计算两两之间的距离。由表9-3可知,最小距离为1,即点B与点E之间的距离最小。因此,将点B和点E合并为一个簇B,EL(2)计算簇B,E与簇A、C、D这4个簇之间的距离。计算簇B,E与簇A之间的距离。由表9-3可知,点B与点A之间的距离为6,点E与点A之间的距离为7,则两个簇之间的距离为6;采用同样的方法计算其他簇之间的距离,计算结果如表94所示。表9-44个簇之间的距离簇B,EACD(B,EJO644A6O23C42O5D435O(3)在表9-4的4个簇中,两两

7、之间的最小距离为2,即簇A与簇C之间的距离最小。因此,将簇A和簇C合并为一个簇A,C(4)计算簇B,E、A,C与D这3个簇之间的距离,计算结果如表9-5所示.表9-53个簇之间的距离簇B,EA,CDB,E044A1C40310)430(5)在表9-5的3个簇中,两两之间的最小距离为3,即簇A,C和簇D之间的距离最小。因此,将簇A,C和簇D合并为一个簇(A,C,D,(6)计算簇(A,C,D与簇B,E之间的距离。经过计算得到两个簇之间的距离为4,将这两个簇合并得到簇A,B,C,D,E)。【教师】通过多媒体展示“树形图”图片(详见教材),并讲解相关知识(7)目前,所有样本已经分层次凝聚成为一个大簇。

8、将步骤(1)步骤(6)的聚类过程用树形图表示出来。【指点迷津】本例题没有指定聚类簇的数目,AGNES算法会一直合并,直到所有样本都聚为同一个簇。如果题目中指定了簇的数目,则可在树形图的特定层上进行分割,得到相应的簇划分结果。例如,指定簇数目为2时,可通过图9-5的虚线分割树形图,得至!A,C,D和B,E两个聚类簇。【拓展阅读】分裂法与凝聚法正好相反,其基本原理是,对于给定的样本数据集,先将数据集中所有样本看成一个大类,然后将大类中最疏远”的小类或个体分离出去;接下来分别将小类中最跪远”的小类或个体再分离出去,该过程不断重复,直到所有个体自成一类或满足某个终止条4牛,算法结束,得到最终的聚类结果

9、。层次聚类算法的计算复杂度较高,聚类速度较慢,且无法实现并行化程序,但在实际应用中,层次聚类算法的优点:样本的相似度容易定义,限制少;层次聚类算法是通过距离的计算,将样本数据依次分层合并(凝聚法)或分裂(分裂法),如果没有预先设定终止条件,则所有样本会聚集成一个簇(凝聚法)或所有样本自成一类(分裂法),故该聚类算法可以不预先设定簇的数目;可以发现各个簇之间的层次关系。9.3.2凝聚层次聚类算法的SkIeam实现Skleam的聚类模块cluster提供了AgglomerativeClustering类,用于实现自底向上(凝聚法)的层次聚类算法。在Sklearn中,可通过下面语句导入自底向上的层次

10、聚类算法模块。fromsklearn.clus(erimportAgglomerativeClusieringAgglomerativeClustering类有如下几个参数。(1)参数n_clusters用于设定簇的数目(簇数目为算法的终止条件)。(2惨数linkage用于指定簇与簇之间距离的计算方法,其取值有single、complete,average和ward:single表示使用最小距离法计算距离;complete表示使用最大距离法计算距离;average表示使用平均距离法计算距离;Ward表示使用最小方差法计算距离。(3)参数affinity用于指定样本之间距离的计算方法,其取值为各

11、种欧式距离与非欧式距离的计算方法.需要注意的是,如果参数linkage的取值为ward,则参数affinity的取值只可选择euclidean(欧式距离)。另外,该参数还可设置为precomputed,即用户可输入计算好的距离矩阵。【例9-3使用凝聚层次聚类算法将表9-6中的样本数据集聚为3类,并画出树形图.表9-6样本数据集序号样本点横坐标样本点纵坐标序号样本点横坐标样本点纵坐标1216332127243228354329445231053【程序分析】使用凝聚层次聚类算法将样本数据集聚为3类,并画树形图的步骤如下。(1)输入样本数据集,并画出数据的散点图。【参考代码】importnumpya

12、snpimportmatplotlib.pyplotaspit#输入样本数据集x=np.array(2,l,l,2,(2,2,3,2,2,3,3,3,2,4,3,5,4,4,5,3)#使用Matploilib绘制样本散点图plt.scatler(x:,0,x:.l,s=30,c-g.marker=o)plLrcParams,fbnt.sans-serif-Simhei1pli.XlabdC样本点横坐标)plt.ylabelC样本点纵坐标)plt.show()程序运行结果如图所示。5.0-4.5 -4.0-3.5-3.0-2.5-2.0-1.5-1.0-1.01.52.02.53.03.54.0

13、4.55.0样本点横坐标【运彳果】(2)使用凝聚层次聚类算法训练模型并绘制聚类效果图。【参考代码】fromsklearn.clusterimportAgglomerativeClusteringmodeI=AgglomerativeClustering(3,linkage-ward)labels=model.fit_predict(x)print(labels)#使用MatPlOUib绘制图像,显示聚类结果colors=b,g,rmarkers=,o,x,s科绘制样本点fori,linenumerate(labels):pl(.plot(x(i0,xil,color=coiorsl,marke

14、r=markersl)plt.rcParamsfont.sans-serif=Simheiplt.xlabelC样本点横坐标,)pit.ylabel(,样本点纵坐标,)plt.show()【运行结果】程序运行结果如图所示。可见,10个样本数据可分为3类,小正方形表示一类数据,x表示一类数据,实心圆表示一类数据。22211110005.0-4.5-4.0-3.5-3.0-2.5-2.0-1.5-1.0-1.01.52.02.53.03.54.04.55.0样本点横坐标【程序说明】HLpredici(X)函数表示用数据X拟合模型并对数据X进行预测。(3)绘制凝聚层次聚类模型的树形图。【参考代码】f

15、romscipy.cluster.hierarchyimportlinkagefromscipy.cluster.hierarchyimportdendrogram性成聚类树Z=linkage(y=x,method-ward,meiric-euclidean)dendrogram(Z,Iabels=Iabels)#画聚类树plt.rcParamsfont.sans-serif-Simheiplt.xlabcl(,样本预测标签)pll.ylabel(距离)plt.show()【运行结果】程序运行结果如图9-9所示.可见,模型将预测标签为0的3个样本聚为一类,预测标签为1【程序说明】绘制凝聚层次聚

16、类模型的树形图,需要使用SciPy库中的linkage类和dendrogram类,其中,linkage类的参数y用于指定聚类数据,参数method用于指定凝聚层次聚类选用的计算方法,参数metric用于指定样本之间距离的计算方法;dendrogram类用于绘制图像,第一个参数为linkage类生成的矩阵,第二个参数labels表示域的标签值。9.4DBSCAN聚类算法DBSCAN(density-basedspatialclusteringofapplicationswithnoise)聚类算法是密度聚类算法(基于密度的聚类)的代表,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区

17、域划分为簇,并进行任意形状的聚类。在计算机图像识别领域,经常进行图像分割,而图像中的像素点往往会聚集成非凸形状(如环形或月牙形)的图像。对这样的数据进行聚类时,使用密度聚类算法往往会得到更好的聚类效果。9.4.1 DBSCAX聚类算法的基本原理1 .DBSCAN聚类算法中的几个定义DBSCAN算法是一种基于密度的聚类算法.在学习该算法的原理前,需要先明确几个定义.(1)密度。数据集中特定点的密度是指以该点为圆心,指定数据为半径的区域内点的个数,如果该区域内点的个数超过指定阈值,就认为该点所在区域是稠密区域。(2)密度的度量方法。DBSCAN算法度量密度的参数有两个,分别是领域半径(eps)和区

18、域内所包含点的最小数量(MinPis)(3)-邻域。对于样本集合D中的对象七,其-邻域是包含样本集合D中与七的距离不大于的样本。(4)核心对象。对于样本集合D中的对象看,若Z的E-邻域内至少包含MinPts个样本,则该对象为一个核心对象。(5)密度直达。对于样本集合D,若样本点Xi在的-邻域内,并且Xi是核心对象,则称样本点%由密度直达。(6您度可达。对于样本集合D中的对象玉和Xj者存在样本序列化,2,,P.,其中Pl=XLP=j且PR由Pi密度直达,则称Xj由Xi密度可达,即多个方向相同的密度直达可连接在一起称为密度可达。(7)密度相连。对于样本集合D中的对象为和若存在对象修,使得不与Xj均

19、由即密度可达,则称为与密度相连。【教师】通过多媒体展示“密度直达、密度可达与密度相连对象”图片(详见教材),并进行讲解例如,虚线表示-邻域,如果定义MinPts值为3,则玉是T核心对象,从核心对象王出发,由X密度直达,七由K密度可达,&与匕密度相连。【指点迷津】密度直达、密度可达与密度相连的对称性关系:密度直达是具有方向性的,故不满足对称性;密度可达作为密度直达的传递,也不满足对称性;密度相连不具有方向性,是对称关系。2 .DBSCAN聚类算法的原理分析DBSCAN聚类算法的目标是找到密度相连对象的最大集合,并将该集合划分为一个聚类簇,其基本原理是,对于给定的样本雌集,根据给定的邻域参数和Mi

20、nPts,找出所有核心对象,确定核心对象集合。以任一核心对象为出发点,找出由其密度可达的所有样本,生成聚类簇,然后再访问下一个没有使用过的核心对象,直到所有核心对象均被访问过,算法结束,得到最终的聚类结果。3 .DBSCAN聚类算法的流程使用DBSCAN算法进行聚类的具体步骤如下。(1)扫描全部样本,寻找各个样本的-邻域并确定核心对象集合。根据给定的邻域参数环口MinPts,找出样本空间中所有的核心对象,形成核心对象集合。(2)随机选取一个核心对象,找出由其密度可达的所有样本,构成一个聚类簇。(3)去除已经使用过的核心对象,更新核心对象集合。(4)再从更新后的核心对象集合中随机选取f核心对象,

21、找出由其密度可达的所有样本,构成下一个聚类簇。(5)不断重复步骤(3)和步骤(4),直到核心对象集合为空。【例9-4使用DBSCAN聚类算法对表9-7中的数据集进行聚类,该数据集的散点图如图所示(本题中取,MinptS=4)表9-7样本数据集样本样本点横坐标样本点纵坐标样本样本点横坐标样本点纵坐标A21G52B51H62C12I13D22J23E32K53F42L24爨孙M/忡样本点横坐标【解】使用DBSCAN聚类算法对数据集进行聚类的步骤如下。(1)扫描全部样本,寻找各个样本的白邻域并确定核心对象集合。寻找样本A的-邻域。由于-邻域是与所选样本的距离不大于的样本,故样本A的-邻域为样本A和样

22、本De采用同样的方法寻找其他样本的E-邻域,各个样本的-邻域如表98所示。表9-8样本的-邻域样本邻域样本邻域AAxDGB、F、G、H、KBB、GHG、HCC、DxIIC、I、JDA、C、D、E、JJD、I、J、LED、E、FKG、KFE、F、GLJ、L根据&邻域与MinptS的值确定核心对象集合。由表9-8可知,数据集中-邻域大于等于4的样本为D、G和J.因此,核心对象集合为D,G,J.(2)随机选取核心对象D,找出由其密度可达的所有样本,构成第一个聚类簇G.从样本D出发,可以找到4个密度直达的样本A、C、E、J;由于样本J也是核心对象,故样本I、L是样本D密度可达的样本,将样本D与这6个样

23、本组成Y样本子集为G=a,c,d,e,i,j,l.(3)将核心对象集合中的D和J去除,即核心对象集合中只剩核心对象G.(4)以样本G为出发点,找出由其密度可达的所有样本,构成第二个聚类簇G.采用与步骤(2)相同的方法,找到第二个聚类簇为GNBFGHK0(5)核心对象集合中所有的核心对象都已扫描完成,聚类结束。最终得到的聚类簇为G=A,C,D,E,I,J,L和G=B,F,G,H,K【指点迷津】DBSCAN聚类算法的目的在于过滤低密度区域,发现稠密度区域,与层次聚类或k均值聚类只能发现凸形簇不同,DBSCAN算法可以发现任意形状的聚类簇,优点:DBSCAN聚类算法不需要预先指定簇的数目;对噪声点不

24、敏感,在需要时可以输入过滤噪声的参数。DBSCAN聚类算法直接对整个数据集进行操作,且使用了一个全局性的表征密度的参数,它有两个较明显的缺点:当数据量很大时,要求较大的内存作为支撑;当遇到密度分布不均匀且聚类间距相差很大的数据时,聚类效果较差。9.4.2DBSCAN聚类算法的Sklearn实现Sklearn的聚类模块cluster提供了DBSCAN类,用于实现DBSCAN聚类算法。在Sklearn中,可通过下面语句导入DBSCAN聚类算法模块。fromskleam.cluslerimportDBSCANDBSCAN类有如下几个参数。(I)参数叩S表示领域半径,默认值为05,一般需要在多个值中选

25、择一个合适的阈值。若eps值较大,则更多的点会落在核心对象的-邻域内,从而减少类别数;反之,若eps值较小,则会使得类别数增加。(2)参数min.samples用于指定一个样本成为核心对象所需的最小样本数目,默认值为5.该参数通常与参数epsT调节。在参数eps一定的情况下,若min_samples值较大,则核心对象会减少,类别数增加;反之,若min_samples值较小,则会产生大量的核心对象,从而导致类别数减少。(3)参数metric表示距离的度量方法,默认使用欧式距离公式。【例9-5使用makjmoons()函数生成两个交错的半圆形数据,然后使用DBSCAN聚类算法对该数据集进行聚类。【

26、程序分析】使用makjmOOnSo函数生成半圆形数据集并对其进行聚类的步骤如下.3)使用make_moons()函数生成娄猊集,并画出数据集的散点图。【参考代码】fromsklearn.datasetsimportmake-moonsimportnatplotlib.pyplotaspit#生成两个交错的半圆形(月牙形)数据x,y=make-mns(n-samples=1000,noise=0.1,random-staie=0)#绘制散点图pIt.scatter(x:,O,x:,I)pIt.rcParamsfont.sans-serif-SimheiPkXIabe1(样本点横坐标)pl.yla

27、belC样本点纵坐标)plt.show()【运行结果】程序运行结果如图所示.O.25-0.50-0.75-50258。00.1M1.00.50.00.51.01.52.0桂本点播坐标【程序说明】SkIeam的datasets模块提供了很多类似make_的函数,用于自动生成各种形状分布的数据集,这些函数可以生成随机幡,常用的函数:make_circlc()函数用于生成环形数据,产生二维二分类数据集;makjmoons()函数用于生成两个交错的半圆形(月牙形)数据;make_blobsO函数用于生成多类单标签数据,为每个类分配一个或多个正态分布的点集。(2)使用DBSCAN聚类算法训练模型,并显示

28、聚类结果。【参考代码】fromsklearn.clusterimportDBSCANimportnumpyasnp腱用DBSCAN聚类算法训练模型model=DBSCAN(eps=0.1,min_samples=4)model.fit(x)labels=model.labels-#labels用于保存类别值#使用Matplotlib绘制图像,显不聚类结果colors=(b,g,rmarkers=o7x,s,#绘制样本点fori,linenumerate(labels):plt.plot(xiHO,xil1l,color=colorsl,marker=markersl)plt.rcParams,

29、fbnt.sans-serif=Simhei,plt.xlabelC样本点横坐标,)plt.ylabel(,样本点纵坐标)plt.show()【运行结果】程序运行结果如图所示。可见,模型分别将每个半圆形数据聚为一类,其中小正方形表示的数据为噪声数据。1.25-1.00-0.75岁0.50-瑞025-*tt0.000.25-0.50-0.75%【学生】聆听、思考、理解、1.0记录6.50.00.51.01.52.0修木点战半标课堂实践【教师】介绍“电影评分数据聚类”项目的大概流程,安排学生扫码依次观看视频数据准备数据可视化展示”调节参数”训练与评估模型和”显示聚类结果”(详见教材),并进行讲解和

30、演示1 .数据准备步骤1导入Pandas库。步骤2读取电影评分数据并为数据集指定列名称为FilmName1和FiImName2步骤3输出电影评分数据集步骤1访问hups:WWW,在打开的Anaconda主页中选择Products-wAnacondaDistribution选项(详见教材)2 .数据可视化展示步骤1提取电影评分数据,将其作为训练数据步骤2使用MatPIotlib绘制数据集的散点图(详见教材)3 .调节参数步骤1调节k均值聚类算法的参数clusters,寻找最优的簇数目值。本步骤细分为以下几个步骤:导入k均值聚类算法模块;导入calinski-harabasz指数评价模块;设置不同的n.clusters值;n.clusiers取不同值的情况下,分别使用k均值聚类算法训练模型,并使用CaIinSkLharabaSZ指数评价法对模型进行评估;输出各个模型的CalinskLharabasz值.(详见教材)【学生】参照教师的演示进行操作,如遇问题可询问老师【教师】巡堂辅导,及时解决学生遇到的问题课堂小结【教师】简要总结本节课的要点层次聚类算法DBSCAN聚类算法电影评分数据聚类【学生】总结回顾知识点作业布置【教师】布置课后作业请根据课堂知识,完成本章项目实训和项目考核中与本次课程有关的题目。【学生】完成课后任务教学反思

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号