机器学习及应用第8章-聚类课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《机器学习及应用第8章-聚类课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器 学习 应用 课件
- 资源描述:
-
1、第08章 聚类p距离计算pk-Means聚类p密度聚类p层次聚类8.1 引言n 聚类就是将集合划分成由类(相)似的对象组成的多个类的过程。n 聚类分析是研究(样品或指标)分类问题的一种统计分析方法。n 聚类所要求划分的类是未知的,一般把它理解为无监督学习。而分类算法是有训练样本的,属于监督学习。8.1.1 聚类的概念8.1 引言8.1.2 典型应用n 聚类可以帮助市场分析人员从客户基本信息库中发现不同的客户群;n 在生物学上,聚类可以根据生物基因结构,推导出植物和动物的物种分类,从而获得对生物种群固有结构的认识;n 聚类还能从地球观测数据库中找到地形、地貌等地理特征相似的区域,提供生物物种或病
2、虫害预警信息;n 根据房屋的类型、价值和地理位置等信息对城市房屋进行聚类分组,为客户提供房屋资产评估服务。8.1 引言n 划分聚类:大部分方法是基于距离的聚类算法。例如:k-MEANS、k-MEDOIDS、CLARANS等。n 层次聚类:例如:BIRCH、CURE、CHAMELEON等。层次聚类可采用“自底向上”或“自顶向下”方案。在“自底向上”方案中,初始时每一个数据纪录都被视作一个单独的簇,接着再把那些相互邻近的簇合并成一个新的簇,直到所有的记录都在一个簇或者满足某个终止条件为止。n 密度聚类:该方法是基于(结点)密度的聚类算法,主要算法有:DBSCAN、OPTICS、DENCLUE等。只
3、要一个区域中的点的密度大过某个阀值,就把它加到与之相近的聚类中去。n 网格聚类:主要算法有:STING、CLIQUE、WAVE-CLUSTER。将数据空间按某种特征(属性)划分成网格,聚类处理以网格(单元)为基本单位。8.1.3 常见算法分类8.1 引言n 高维数据集中存在大量无关的属性,所有维中存在簇的可能性几乎为零;n 高维空间中数据较低维空间中数据分布稀疏,其中数据间距离几乎相等是普遍现象,而传统聚类方法是基于距离进行聚类的,因此在高维空间中无法基于距离来构建簇。n 高维聚类分析已成为聚类分析的一个重要研究方向,也是聚类技术的难点。数据收集变得越来越容易,导致数据库规模越来越大、复杂性越
4、来越高,如各种类型的贸易交易数据、Web文档、基因表达数据等,它们的维度(属性)通常可以达到成百上千维,甚至更高。8.1.4 聚类算法中存在的问题8.2 距离计算n 大多数聚类分析是以相似性计算为基础的,同一个聚类中的个体模式相似,不在同一聚类中的个体模式则相异。目前,相似性距离的计算都是基于向量的,也就是计算两个向量的距离,距离越近相似度越大。下面,我们介绍几种常见的距离计算方法。8.2.1 闵可夫斯基距离n 闵可夫斯基距离(Minkowski Distance)是一种常见的方法,用于衡量数值点之间距离。假设 ,是n 维空间的两个向量,那么,闵可夫斯基距离定义为:12,nxxxX12,ny
5、yyY1dist,nppkkkxyX Y8.2 距离计算n 闵可夫斯基距离计算举例如下:n 欧氏距离(Euclidean Distance)最初用于计算欧几里德空间中两个点的距离。假设 ,是n 维空间的两个向量,它们之间的欧几里德距离是:import numpy as npx=np.random.random(10)y=np.random.random(10)dist=np.linalg.norm(x-y,ord=4)#闵科夫斯基距离,此时p=48.2.2 欧氏距离12,nxxxX12,ny yyY21dist,nkkkxyX Yn n=2 欧几里德距离就是平面上两个点的距离。如果将欧氏距离看
6、作物品相似程度,那么距离越近就越相似,也就是说距离越小,相似度越大。8.2 距离计算n 欧氏距离计算举例如下:import numpy as npimport scipy.spatial.distance as dis X=np.vstack(x,y)#向量x,y在前面例子中已经赋值。下同dist=dis.pdist(X,metric=euclidean)#欧几里得距离8.2.3 曼哈顿距离121212dist,P Pxxyy8.2 距离计算8.2.4 切比雪夫距离dist=np.linalg.norm(x-y,ord=np.inf)#切比雪夫距离,此时p=n 切比雪夫距离计算Python语句
7、如下:dist=np.linalg.norm(x-y,ord=1)#曼哈顿距离,此时p=1n 曼哈顿距离计算Python语句如下:12,nxxxX12,ny yyY111dist,limmaxknkiiiiki nixyxy X Y8.2 距离计算n 皮尔逊相关系数(Pearson Correlation Coefficient)即相关分析中的相关系数r,一般用于计算两个定距变量间联系的紧密程度,它的取值在-1,+1之间。8.2.5 皮尔逊相关系数dist=1-dis.pdist(X,metric=correlation)#调用scipy计算相关系数n 当相关系数为0时,X和Y两变量无关系;当
8、X的值增大,Y也增大,正相关关系,相关系数在0.00与1.00之间;当X的值增大,Y减小,负相关关系,相关系数在-1.00与0.00之间。相关系数的绝对值越大,相关性越强,相关系数越接近于1和-1,相关度越强,相关系数越接近于0,相关度越弱。公式如下:n 皮尔逊相关系数计算Python语句如下:2222cov,()()()(,)()()()()xyx yE xyE x E yx y=E xE xE yE y r8.2 距离计算n 余弦相似度就是两个向量之间的夹角的余弦值。假设8.2.6 余弦相似度dist=1-dis.pdist(X,metric=cosine)#余弦系数n 余弦相似度计算Py
9、thon语句如下:12(,.,)nxxxX12(,)ny yyY是n 维空间的两个向量,它们之间的余弦相似度是:cos XYX Yn 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度。n 夹角余弦取值范围为-1,1。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。8.2 距离计算n Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度,只关心个体间共同具有的特征是否一致这个问题。
10、假设集合 和,两个集合的杰卡德相似系数表示如下:8.2.7 杰卡德相似系数dist=dis.pdist(X,metric=jaccard)#杰卡德相似距离n 杰卡德相似距离计算Python语句如下:,JABA BAB8.3 k-Means聚类n k-Means算法是最经典的基于划分的聚类算法。所谓基于划分的方法是将样本集组成的矢量空间预先初始化,划分为多个区域,每个区域有一个区域中心,对于每个样本,可以建立一种样本到区域中心的映射。通过不断的迭代,不断的重新定位,从一个组移动到另一个组来进行划分。不同的映射方式产生不同的基于划分的聚类算法,k-means算法要求样本点与中心点的欧几里得距离最小
11、。8.3.1 算法思想(a)初始质心(b)簇分配并更新质心(c)最终更新结果8.3 k-Means聚类n k-Means算法计算过程如下:(1)导入数据:收集并准备数值型矩阵作为原始数据集;(2)创建初始质心:指定聚类数k,从原始数据集中随机选取k个对象作为初始质心;(3)分配:计算数据集中每个对象到所有质心的距离,并将数据点分配到距离最接近的质心,从而形成簇分配矩阵;(4)重新计算质心:计算簇中所有点的均值,并将均值作为新的质心。(5)反复执行(3)和(4),直至质心不再移动。8.3.2 辅助函数n 计算欧氏距离def distEclud(vecA,vecB):return np.linal
12、g.norm(vecA-vecB,ord=2)8.3 k-Means聚类n 数据导入:从文本文件中读入数据到矩阵def loadFile(path):dataList=fr=open(path,r,encoding=UTF-8)record=fr.read()fr.close recordList=record.splitlines()for line in recordList:if line.strip():dataList.append(list(map(float,line.split(t)recordmat=np.mat(dataList)return recordmat8.3 k-
13、Means聚类n 构建k个随机质心def randCents(dataSet,k):n=np.shape(dataSet)1 cents=np.mat(np.zeros(k,n)for j in range(n):minCol=min(dataSet:,j)maxCol=max(dataSet:,j)cents:,j=np.mat(minCol+float(maxCol-minCol)*np.random.rand(k,1)return cents8.3 k-Means聚类8.3.3 编程实现k-Means算法def kMeans(dataset,k):m=np.shape(dataset)0
14、 ClustDist=np.mat(np.zeros(m,2)cents=randCents(dataset,k)clusterChanged=True while clusterChanged:clusterChanged=False for i in range(m):DistList=distEclud(dataseti,:,centsjk,:)for jk in range(k)minDist=min(DistList)minIndex=DistList.index(minDist)if ClustDisti,0!=minIndex:clusterChanged=True ClustD
展开阅读全文