版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章聚类分析12.1K-Means聚类 12.1.1目标函数 12.1.2K-Means聚类算法流程 12.1.3K-Means聚类模块库代码 12.1.4Python中基于OpenCV的K-Means聚类12.2FCM聚类 12.2.1FCM聚类目标函数 12.2.2FCM聚类算法 12.2.3基于Python与OpenCV的FCM聚类12.3SCM聚类 12.3.1
SCM聚类算法 12.3.2SCM聚类工业应用第12章聚类分析
聚类分析是一种无监督学习,用于对未知类别的样本进行划分,将他们按照一定的规则划分成若干个类簇,把相似的样本聚集在同一个类簇中。与有监督的分类算法不同,聚类算法没有训练过程,直接完成对一组样本的划分。常用的聚类方法有K-Means聚类、FCM(Fuzzyc-Means)聚类和SCM(SubtractiveClusteringMethod)聚类。
12.1K-Means聚类
K-Means聚类算法由Steinhaus(1955年)、Lloyd(1957年)、Ball&Hall(1965年)、McQueen(1967年)分别在各自不同的领域内独立提出的。尽管K-Means聚类算法被提出有50多年了,但仍是目前应用最广泛的聚类算法之一。12.1.1目标函数
对于给定的
维数据点的数据集
,其中
,数据子集的数目是K,K-Means聚类将数据对象分为K个划分,具体划分为
。每个划分代表一个类
,每个类
的中心为
。取欧氏距离作为相似性和距离判断的准则,计算该类各个点到聚类中心
的距离平方和。
(11-1)
(11-2)
聚类的目标是使各类总的距离平方和
最小。12.1.1目标函数
其中:
K-Means聚类算法从一个初始的K类别划分开始,然后将各数据点指派到各个类别中,以减少总的距离平方和。由于K-Means聚类算法中总的距离平方和随着类别的个数K的增加而趋向于减小,当时
,
。因此,总的距离平方和只能在某个确定的类别个数K下取得最小值。12.1.2K-Means聚类算法流程
K-Means聚类算法的核心思想是把n个数据对象划分为k个聚类,使每个聚类中的数据点到该聚类中心的平方和最小。输入聚类个数k,数据集中的数据对象的个数n。算法如下所示。⑴从n个数据对象中任意选取k个对象作为初始的聚类中心种子点;⑵分别计算每个对象到各个聚类中心的距离,把对象分配到距离最近的聚类中心种子群;⑶所有对象分配完成后,重新计算k个聚类的中心;⑷重复上述步骤(2)至步骤(3)的过程,本周期计算的结果与上一周期计算得到的各个聚类中心比较,如果聚类中心发生变化,转至步骤(2),否则转至步骤(5);⑸输出聚类中心结果。12.1.3K-Means聚类模块库代码K-Means聚类在机器学习库Scikit-learn中,相应的函数sklearn.cluster.KMeans。sklearn.cluster.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')12.1.3K-Means聚类模块库代码sklearn.cluster.KMeans参数的意义:n_clusters:分类簇的个数;init:初始簇中心的获取方法;n_init:获取初始簇中心的更迭次数,为了弥补初始质心的影响,算法默认会初始10次质心,实现算法,然后返回最好的结果;max_iter:最大迭代次数(因为kmeans算法的实现需要迭代);tol:算法收敛的阈值,即kmeans运行准则收敛的条件;precompute_distances:有3种选择{‘auto’、‘True’、‘False’},是否需要提前计算距离,这个参数会在空间和时间之间做权衡。如果选择True,预12.1.3K-Means聚类模块库代码计算距离,会把整个距离矩阵都放到内存中;选择auto,在数据维度featurs*samples的数量大于12×106时不预计算距离;如果选择False,不预计算距离。verbose:默认是0,不输出日志信息,值越大,打印的细节越多;random_state:随机生成簇中心的状态条件,一般默认即可(随机种子);copy_x:布尔值,标记是否修改数据,主要用于precompute_distances=True的情况。如果True,预计算距离,不修改原来的数据;如果False,预计算距离,修改原来的数据用于节省内存;n_jobs:指定计算所需的进程数;algorithm:K-Means的实现算法,有:‘auto’,‘full’,‘elkan’,其中'full’表示用EM方式实现。12.1.3K-Means聚类模块库代码12.1.3K-Means聚类模块库代码12.1.3K-Means聚类模块库代码12.1.4Python中基于OpenCV的K-Means聚类
在OpenCV中,提供了cv2.kmeans()函数实现K均值聚类,其一般格式为:retval,bestLabels,centers=cv2.kmeans(data,K,bestLabels,criteria,attempts,flags)返回值各参数的含义:retval:距离值(也称密度值或紧密度),返回每个点到相应中心点距离的平方和;bestLabels:各个数据点的最终分类标签(索引);centers:每个分类的中心点数据。12.1.4Python中基于OpenCV的K-Means聚类函数体内各参数的含义:data:输入待处理数据集合,每个特征放在单独的一列中;K:要分出的簇的个数,即分类的数目,最常见的是K=2,表示二分类;bestLabels:表示计算之后各个数据点的最终分类标签(索引)。实际调用时,参数bestLabels的值设置为None;
criteria:算法迭代的终止条件。当达到最大循环数目或者指定的精度阈值时,算法停止继续分类迭代计算。该参数由3个子参数构成,分别为:type、max_iter和eps,其中max_iter代表最大迭代次数;eps表示精确度的阈值;type表示终止的类型,分别为:cv2.TERM_CITERIA_EPS(表示精度满足eps时,停止迭代),cv2.TERM_CITERIA_MAX_ITER(表示迭代次数超过阈值max_iter时,停止迭代)和12.1.4Python中基于OpenCV的K-Means聚类cv2.TERM_CITERIA_EPS+cv2.TERM_CITERIA_MAX_ITER(上述两个条件中的任意一个满足时,停止迭代)。attempts:在具体实现时,为了获得最佳分类效果,可能需要使用不同的初始分类值进行多次尝试,指定attempts的值,可以让算法使用不同的初始值进行多次尝试。flags:表示选择初始中心点的方法,主要有3种,分别为:cv2.KMEANS_RANDOM_CENTERS(表示随机选取中心点),cv2.KMEANS_PP_CENTERS(表示基于中心化算法选取中心点),cv2.KMEANS_USE_INITIAL_LABELS(表示使用用户输入的数据作为第一次分类中心点,若果算法需要多次尝试(attempts值大于1时),后续尝试都是使用随机值或者半随机值作为第一次分类中心点)。12.1.4Python中基于OpenCV的K-Means聚类12.1.4Python中基于OpenCV的K-Means聚类12.1.4Python中基于OpenCV的K-Means聚类12.1.4Python中基于OpenCV的K-Means聚类12.2FCM聚类Ruspini率先提出了模糊划分的概念。以此为基础,模糊聚类理论和方法迅速发展起来。实际中,最受欢迎的是基于目标函数的模糊聚类方法,即把聚类归结成一个带有约束的非线性规划问题,通过优化求解获得数据集的模糊划分和聚类。在基于目标函数的聚类算法中模糊c均值(FCM,Fuzzyc-Means)类型算法的理论最为完善、应用最为广泛。12.2.1FCM聚类目标函数Bezdek给出了基于目标函数模糊聚类的一般描述:
(11-3)其中,表示由c个子集的特征函数值构成的矩阵,m称为加权指数,又称为平滑参数。表示样本与第i类的聚类原型之间的距离度量,如式(11-4)所示。(11-4)其中,A为阶的对称正定矩阵,聚类的准则为取的极小值,如式(11-5)所示。(11-5)12.2.1FCM聚类目标函数由于矩阵U中各列都是独立的,因此
(11-6)
式(11-6)采用拉格朗日乘数法来求解。
(11-7)
最优化的一阶必要条件为
(11-8)
(11-9)12.2.1FCM聚类目标函数由式(11-9)得(11-10)使得为最小的值为(11-11)用类似的方法可以获得
为最小的
的值,令
(11-12)12.2.1FCM聚类目标函数得到(11-13)(11-14)若数据集、聚类类别数c和权重m值已知,由式(11-11)和式(11-14)确定最佳模糊分类矩阵和聚类中心。12.2.2FCM聚类算法为了优化聚类分析的目标函数,现在广泛流行的模糊c均值(FCM,Fuzzyc-means)聚类算法得到广泛使用。该算法从硬c均值(HCM,Hardc-means)聚类算法发展而来。FCM聚类算法如下所示。初始化:给定聚类类别数,,是数据个数,设定迭代停止阈值,初始化聚类原型模式,设置迭代计数器 ;步骤一:用式(11-15)计算或更新划分矩阵:对于,如果,则有
(11-15)12.2.2FCM聚类算法如果使得,则有,且对(11-16)步骤二:使用式(11-17)更新聚类模式矩阵:(11-17)步骤三:如果,则停止计算,输出矩阵和聚类原型;否则令 ,转至步骤一。12.2.3基于Python与OpenCV的FCM聚类
例12-3在Python中编程实现FCM聚类算法。importnumpyasnpimportmatplotlib.pyplotaspltimporttimestar=time.time()#计时image=plt.imread("D:\Python\pic\smalldog52.jpg")#读取图片,存储在三维数组中row=image.shape[0]col=image.shape[1]plt.figure(1)#plt.subplot(221)plt.imshow(image)deffcm(data,threshold,k,m):12.2.3基于Python与OpenCV的FCM聚类
#0.初始化data=data.reshape(-1,3)cluster_center=np.zeros([k,3])#簇心distance=np.zeros([k,row*col])#欧氏距离times=0#迭代次数goal_j=np.array([])#迭代终止条件:目标函数goal_u=np.array([])#迭代终止条件:隶属度矩阵元素最大变化量
#1.初始化Uu=np.random.dirichlet(np.ones(k),row*col).T#形状(k,col*rol),任意一列元素和=1#forsinrange(50):12.2.3基于Python与OpenCV的FCM聚类
while1:times+=1print('循环:',times)#2.簇心updateforiinrange(k):cluster_center[i]=np.sum((np.tile(u[i]**m,(3,1))).T*data,axis=0)/np.sum(u[i]**m)#update#欧拉距离foriinrange(k):distance[i]=np.sqrt(np.sum((data-np.tile(cluster_center[i],(row*col,1)))**2,axis=1))12.2.3基于Python与OpenCV的FCM聚类
#目标函数goal_j=np.append(goal_j,np.sum((u**m)*distance**2))#更新隶属度矩阵oldu=u.copy()#记录上一次隶属度矩阵u=np.zeros([k,row*col])foriinrange(k):forjinrange(k):u[i]+=(distance[i]/distance[j])**(2/(m-1))u[i]=1/u[i]goal_u=np.append(goal_u,np.max(u-oldu))#隶属度元素最大变化量print('隶属度元素最大变化量',np.max(u-oldu),'目标函数',np.sum((u**m)*distance**2))12.2.3基于Python与OpenCV的FCM聚类
#判断:隶属度矩阵元素最大变化量是否小于阈值ifnp.max(u-oldu)<=threshold:breakreturnu,goal_j,goal_uif__name__=='__main__':img_show,goal1_j,goal2_u=fcm(image,1e-09,5,2)img_show=np.argmax(img_show,axis=0)plt.figure(2)#plt.subplot(223)plt.plot(goal1_j)plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=False12.2.3基于Python与OpenCV的FCM聚类
#plt.title('目标函数变化曲线')plt.xlabel('迭代次数')plt.ylabel('目标函数')plt.figure(3)#plt.subplot(224)plt.plot(goal2_u)#plt.title('隶属度矩阵相邻两次迭代的元素最大变化量变化曲线')plt.xlabel('迭代次数')plt.ylabel('隶属度矩阵相邻两次迭代的元素最大变化量')plt.figure(4)12.2.3基于Python与OpenCV的FCM聚类
#plt.subplot(222)plt.imshow(img_show.reshape([row,col]))end=time.time()print('用时:',end-star)plt.show()程序运行结果如图11-3所示。12.2.3基于Python与OpenCV的FCM聚类
12.3.1SCM聚类算法由于采用FCM聚类方法确定规则的数时,需要事先知道聚类中心的个数。因此,在应用上受到很大影响。减法聚类(SCM,Subtractiveclusteringmethod)可以有效克服FCM对初始化敏感及容易陷入局部极值点的缺点,减法聚类是一种密度聚类,将每个数据点都作为一个潜在的聚类中心,按照如下步骤来确定:Step1:假定每个数据点都是聚类中心的候选者,则数据点
处的密度指标定义为
,其中
为样本数据集,
;这里
是一个正数,定义了该点的一个邻域,半径以外的数据点对该点的密度指标贡献非常小,取
;12.3.1SCM聚类算法Step2:计算最大密度值 ,选择具有最大密度指标的数据点为第1个聚类中心,即;Step3:选取
,按照下式修改密度指标:
,
;计算最大密度值
,选择具有最高密度指标的数据点为第2个聚类中心,即
;Step4:重复Step3,当新聚类中心
对应的密度指标
与满足
时,则聚类过程结束,否则进入Step3,取
。12.3.2
SCM聚类工业应用基于上述分析,以新型干法水泥熟料生产过程生料分解率目标值设定为例,如图11-4所示。
图11-4易煅烧生料或难煅烧生料智能控制结构简图12.3.2
SCM聚类工业应用采用ANFIS建立生料分解率目标值设定模型。由于采用FCM聚类方法确定规则数量时,需要事先知道聚类中心的个数。因此,在应用上受到很大影响。采用减法聚类方法确定隶属函数中心及规则数量。减法聚类可以有效克服FCM对初始化敏感及容易陷入局部极值点的缺点,结构如图11-5所示。12.3.2
SCM聚类工业应用
图11-5基于减法聚类和ANFIS的生料分解率目标值设定模型12.3.2
SCM聚类工业应用图11-5中,生料分解率目标值设定模型由易煅烧生料的生料分解率目标值设定模型、难煅烧生料的生料分解率目标值设定模型和切换机制组成。为了描述方便,生料分解率目标值设定模型中的输入变量集,简写为。图11-5中,A部分内每一个块和节点描述如下。在切换机制中,易煅烧性识别模块通过易煅烧生料游离氧化钙含量最大值、生料煅烧指数、难煅烧生料游离氧化钙含量最大值判断生料的煅烧性。如果,那么代表易煅烧生料;如果,那么代表难煅烧生料。目标值选择模块根据式(11-18)选择相应的目标值设定模型。(11-18)
12.3.2
SCM聚类工业应用在A部分的第1层,每个节点是一个方形,并且可以表示为:
(11-19)一般来说,我们选择为高斯隶属函数,即:
(11-20)式(11-20)中,
是前提参数,记为
。
,
,
和
分别是隶属函数的中心和宽度,隶属函数的中心
通过SCM来确定。将上述SCM算法得到的聚类中心
中的元素作为隶属函数的中心
。隶属函数的宽度
使用式(11-21)确定。
(11-21)其中
和
分别是论域的最小值和最大值,
是数据对聚类中心的影响,
12.3.2
SCM聚类工业应用在A部分的第2层,每个节点是一个圆形,并标记为。使用AND运算符产生第条规则的激活强度。激活强度如式(11-22)所示:
(11-22)
在A部分的第3层,每个节点是一个圆形,并标记为N。所有规则的激活强度均正规化。这层节点函数表示为:
在A部分的第4层,每个节点
是一个方形,并具有如式(11-23)所示的线性函数。
(11-23)其中,
是第
条模糊规则的最终输出,
是结论参数,记为
。12.3.2
SCM聚类工业应用在A部分的第5层,每个节点是一个圆形,并具有如式(11-24)所示的函数。
(11-24)同理得出图11-5中C部分难煅烧生料的生料分解率目标值设定模型,如式(11-25)所示。
(11-25)其中,
是第
条模糊规则的最终输出,并具有如式(11-26)所示的线性函数。
(11-26)其中
是结论参数,记为
。12.3.2
SCM聚类工业应用(1)数据描述采用12.3.1节提出的基于SCM与ANFIS相结合的生料分解率目标值设定模型设定生料分解率目标值。首先将经过数据预处理的300组数据作为离线训练数据, ,用来确定模型参数,其中表示生料分解率离线化验值。测试数据如表11-1所示。表11-1测试数据变量(%)(%)(%)
1组2.3413.723.590.932组2.1213.533.460.893组2.0812.893.280.88……
……300组2.1312.623.310.9112.3.2
SCM聚类工业应用(2)模型参数选择根据本节的问题描述,首先选择、和作为模型的输入变量,和分别作为易煅烧生料和难煅烧生料模型的输出变量,即易煅烧生料模型和难煅烧生料的模型分别有3个输入变量,1个输出变量。,。根据表11-1可知, 。12.3.2
SCM聚类工业应用(3)实验结果与分析表11-1中数据经过标准化处理后,使用SCM聚类算法,得聚类中心,如表11-2所示。表11-2基于SCM聚类的聚类中心聚类中心
0.32820.72820.3553
-2.70700.2070-1.3716
-0.5050-1.5050-0.5312
-0.3000-0.57000.8617
0.94840.89171.406012.3.2
SCM聚类工业应用根据表表11-1可以得出式(11-20)中隶属函数的中心如表11-2,隶属函数宽度按照式(11-21)计算。采用梯度下降法训练网络权值(和)和结论参数(和)。利用上述所建立的基于SCM和ANFIS模型,RMSE=0.0117。训练误差曲线、实际输出与模型输出曲线如图11-6所示,误差自相关函数如图11-7所示。12.3.2
SCM聚类工业应用
图11-6训练误差、生料分解率实际输出和ANFIS输出曲线12.3.2
SCM聚类工业应用从测试结果曲线和误差自相关函数曲线可以看出,生料分解率目标值计算值曲线趋势正确,且精度较高。图11-7生料分解率目标值测试误差自相关函数输出曲线习题与思考题12-1简述常用的聚类方法有哪些?他们之间的区别是什么?12-2简述K-Means聚类算法的步骤。12-3使用手机拍摄一张图片,使用函数cv2.kmeans()将灰度图像处理为只有两个灰度级的二值图像的Python程序。12-4简述FCM聚类算法的步骤。12-5简述SCM聚类算法的步骤。第13章随机配置网络13.1随机配置网络基础13.2鲁棒随机配置网络原理13.3鲁棒随机配置网络应用13.4基于随即配置网络的PET油瓶智能识别
13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.1随机配置网络基础13.2鲁棒随机配置网络原理13.2鲁棒随机配置网络原理13.2鲁棒随机配置网络原理13.3鲁棒随机配置网络应用13.3鲁棒随机配置网络应用13.3鲁棒随机配置网络应用13.3鲁棒随机配置网络应用13.3鲁棒随机配置网络应用13.3鲁棒随机配置网络应用13.3鲁棒随机配置网络应用13.4基于随机配置网络的PET油瓶智能识别 PET(Polyethyle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度房产项目结算合同2篇
- 二零二四年度劳动合同的薪资福利条款2篇
- 直饮水设备租赁合同
- 有限空间作业施工合同
- 全新化工企业生产与原料采购合同(2024版)3篇
- 2024年度广告发布合同服务内容扩展及合同属性3篇
- 地坪漆工程施工承包合同
- 二零二四年度商标许可合同标的为知名品牌3篇
- 2024年物流机器人项目资金筹措计划书代可行性研究报告
- 二零二四年度健身服务合同的服务内容和期限2篇
- 2024年东南亚健身房和俱乐部健身跟踪器市场深度研究及预测报告
- 2024-2030年塔格糖行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 《中国传统建筑》课件-中国民居建筑
- 家庭教育主题家长会(3篇模板)
- 第13课 太空新居(教学设计)2023-2024学年美术五年级上册 人教版
- 广东省医疗收费项目《一、综合医疗服务类》
- 物流生涯职业规划总结报告
- 基于STM32的车辆综合无线监控系统设计
- JBT 8881-2011 滚动轴承 零件渗碳热处理 技术条件
- 医疗生物技术专业
- 希腊神话-英文版-人物关系介绍
评论
0/150
提交评论