一种模糊C-均值聚类分析的实现.doc_第1页
一种模糊C-均值聚类分析的实现.doc_第2页
一种模糊C-均值聚类分析的实现.doc_第3页
一种模糊C-均值聚类分析的实现.doc_第4页
一种模糊C-均值聚类分析的实现.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

一种模糊C-均值聚类分析的实现 姓名:赵增辉 指导老师:张俊花内容提要 本文对模糊C-均值聚类分析方法进行软件实现,利用VB实现对Excel的控制,对Excel中的数据进行分析,将分析得到的结果输出到相应Excel表单中。利用Excel打印功能实现打印输出。为模糊C-均值聚类分析的软件实现提供一种可视化的实现方法。关键词 模糊数学、聚类分析、隶属度、样方一、引言模糊数学分类是基于模糊集理论之上的分类方法。它能够较好的描述、反映自然现象和规律。被普遍应用于生物学、农学、林学及地学等学科。1目前,国内相关分析软件,主要有双向指示种分析法(TWINSPAN)、回归分析等,没有涉及到模糊C-均值聚类分析的软件。在国外,可以找到能够实现C-均值聚类分析的软件,缺点是只能在命令界面下执行,而且输入输出很不方便。于是,开发一个可以在可视环境下进行便捷操作的模糊C-均值聚类分析软件,可以大大减少研究分析人员的工作量,提高研究人员的工作效率,解决对繁多采集数据的处理问题。二、其它常用方法介绍1、双向指示种分析法(TWINSPAN)双向指示种分析法(Tow-way indicator species analysis, TWINSPAN)(Hill)(1979)是由指示种分析(Indicator species analysis)(Hill等1975)修改而成的。指示种分析仅给出样方分类,TWINSPAN同时完成样方和种类分析。TWINSPAN首先对数据进行CA/RA排序,得到第一排序轴,再以排序轴为基础进行分类。TWINSPAN同时进行样方和种类的分类,它的结果是把种类和样方类型排成一个矩阵,该矩阵明显反映种类和样方间的关系,并能反映出重要的环境梯度。可以提供满意的结果,再加上Hill为其编有国际通用程序,使得这一方法在80年代大为流行,成为当今最常用的分类方法之一。2、回归分析在植物群落中,环境因子与植物种的多度和分布之间有着密切的关系。因此,可以以环境变量为自变量,种类为因变量建立关系方程,这一过程就是回归分析的过程。回归分析是分析植被环境最常用的方法之一,它适合于涉及种类和环境因子较少的数据分析,比如一个种的多度与某个环境因子或某些环境因子之间的关系,分别可使用一元线性回归或多元线性回归进行研究,也可以用非线性回归分析。1三、模糊C-均值聚类分析1、定义模糊C-均值聚类是以所分组内平方和最小化为判据,组内平方和定义为:Jm(U,V,A)= (dijA)2 (1)i=1,2,,N=样方数;j=1,2,,C为预分组数。其中:(dijA)2=()TA() (2)为距离指标,U为隶属度矩阵,U=Uij,Uij指第i个样方在第j个分组中的隶属度,Vj为第j类的中心,Xi为第i个样方的基础值,一般为一排序坐标值;m为模糊参数(1m);C为要分的组数,是预先确定的;A为任一N维矩阵,是人为给定的,以使数据保持一定的空间结构。如果A取单位矩阵,则(2)式就简化为:(dij)2= (3)模糊参数m可以取大于或等于1的任何值,但当m=2时,聚类结果最满意(Equihua 1990),所以一般取m=2。2、介绍模糊C-均值聚类(Fuzzy c-means clustering)也叫模糊ISO-DATA聚类(Fuzzy iterative self-orgnizing data clustering)(Bezdek 1981,1987; Equihua 1990)。该方法的结果是用隶属度(membership)表示,表明属于某种类型的程度。它是目前唯一的重叠分类方法。四、模糊C-均值聚类分析的构思和实现1、构思科研人员通常将采集的数据放在Excel表单中,对于Excel中的数据进行模糊C-均值聚类分析处理是一个复杂过程,于是开发一个能够直接操作Excel进行分析的软件对研究人员来说,可以大大减少研究人员的工作量,提高研究人员的效率。利用Visual Basic的强大功能,可以直接调用Microsoft Excel,实现对Excel表单的读写控制及相关操作,并且可以将分析结果直接输出到Excel表单中,方便研究人员查看和打印。2、实现笔者在Windows 2000 Professional 系统下进行了该程序设计,数据平台选用Microsoft Excel 10.0,开发工具为VB6.0,系统是基于研究人员保存在Excel中的数据进行的。用户设置分析类别和范围Excel表单进行分析Excel表单输出和打印Excel表单读取Excel数据Excel表单 (1)读取选定的Excel数据 通过VB的CommonDialog控件可以设定*.xls筛选器,使计算机中的Excel数据一目了然,用户可以打开计算机中任意指定位置的Excel数据,主程序要读取Excel表单中数据内容,需要在程序设计过程中建立对Microsoft Excel 10.0 Object Library的引用(注:10.0 是Office 的版本号)。在程序运行时同时显示Excel主窗口程序,用户可以在所打开的Excel中直接编辑,不影响程序的正常运行。 (2)用户设置分析类别和范围由于在分析中需要指定具体的数据范围,所以提供一个用户操作接口是不可少的。本程序通过两个用户操作界面来实现用户对数据范围的指定。分别是环境因子范围和预分组范围具体位置的指定。在指定界面中,用户可以选定具体的数据范围。通过用户对范围的指定,程序会根据用户指定范围读取Excel中的数据并将其保存在软件定义的相应动态数组中,动态数组分别有原始环境因子数组、原始预分组数组、聚类中心数组、距离数组、隶属度数组。为进入模糊C-均值聚类分析做好准备。(3)进行模糊C-均值聚类分析在进行分析之前,必须要进行预分析,因为要得到合理的分析结果,必须保证每一个样方1预分组的和为1,同时也要保证环境因子必须和预分组的个数匹配,只有满足以上两个条件,才可以对数据进行模糊C-均值聚类分析。当数据全部确认无误后,即预分析完成后,程序进入分析过程。这时,程序会根据需要设置动态数组的数据范围,合理利用系统资源,并利用模糊C-均值聚类的算法对数据进行处理。(4)输出和打印将数据分析处理完成后,程序将在用户数据所在的Excel中创建一个新表单,并自动根据所分析的样方数据,以样方名称给新的Excel表单命名,使得分析结果具有较高的可读性。程序成功运行得到完整的分析数据后,用户可以根据需要对数据进行处理,可以直接保存在Excel中,也可以利用Excel的打印功能打印输出。五、模糊C-均值聚类分析过程的特点1、模糊C-均值聚类的特点:(1)模糊C-均值聚类的结果是隶属度表示,这种方法的优点是可以表示属于某一类型的程度。(2)模糊C-均值聚类是目前唯一的一种重叠分类方法。模糊C-均值聚类被引入植被分析的时间较短,还没有被广泛采用,但可以预计,在今后的研究中,它会被逐渐推广,并且它有可能是目前唯一能够向TWINSPAN挑战的方法。不仅因为它的结果客观、合理,而且因为它被写入SYN-TAX国际通用软件的第四版中-SYN-TAXIV(Podani 1991)12.本程序的特点:(1)由于研究人员一般将采集的数据放在Excel表单中,所以本软件针对Excel的数据进行直接读取操作,只需要用户输入范围,不需要用户对数据的周转,减少了研究人员的工作量,并且减少数据的安全性隐患。(2)在本程序运行时,Excel和软件同时显示在显示窗口,效果直观,可以在分析进行之前,对Excel中数据进行修改操作,修改完成并确定数据范围后,对选择的数据进行分析操作。完全傻瓜式的交互操作,为研究人员提供很大的方便。(3)国外的实现软件,操作十分复杂,需要用户将采集的数据分别输入,并且程序的运行是在命令界面下进行,输出也很不方便。相对的,本程序在可视化界面下进行实现,方便快捷。六、结束语本文提供的是一种可视化的操作方法,采用一种基于Excel的方法实现模糊数学分类中的模糊C-聚类分析,直接调用Excel程序,可以在Excel和本软件之间自由切换,完全傻瓜式操作,帮助研究人员在对采集的数据进行快捷处理。但是,由于模糊C-均值聚类分析在图象识别、人工智能、自动控制、信息处理、经济学、心理学、社会学、语言学、管理科学、医疗诊断、哲学研究等领域中也有相关的应用,本文仅提供一种模糊C-均值聚类分析在生态学上的应用实现,还需要进一步拓宽和改善。七、附录(核心代码):1.打开指定的Excel数据在VB中要打开Excel数据,首先要建立对Excel的引用。操作如下:“工程”“引用”,选择Microsoft Excel 10.0 Object Library(注:10.0 是Office 的版本号)。要打开存在的Excel文件,需要引用VB的CommonDialog控件。具体代码如下: 设置“CancelError”为 TrueCommonDialog1.CancelError = TrueOn Error GoTo ErrHandler 设置标志CommonDialog1.Flags = cdlOFNPathMustExist 设置过滤器为Excel文件CommonDialog1.Filter = Excel文件(*.xls)|*.xls 指定缺省的过滤器CommonDialog1.FilterIndex = 1 显示“打开”对话框CommonDialog1.ShowOpen 获得文件路径thepath = CommonDialog1.FileName 新打开一个Excel应用程序Set a = New excel.Application 设置为可见a.Visible = True 打开具体路径上的Excel数据a.Workbooks.Open thepath 主程序获得焦点Form1.SetFocusExit FunctionErrHandler: 用户按了“取消”按钮Exit FunctionEnd Function运行如下:2.数据的选择、预分析和分析在分析前,需要使用者指定具体的数据范围。包括环境因子位置和预分组位置,而且在计算过程中必须保证两者一致,每一样方的预分组和为1。为了保证计算过程的准确性,必须经过验证,即预分析。过程如下:首先选择环境因子的位置,界面如下:代码如下:If Text1.Text Then If Option1.Value = True Then 帮助用户确认所选择的行数据 s = MsgBox(你选择的是 + “ + CStr(a.Cells(CInt(Text1.Text), 1) + ” + 的行数据, vbOKCancel, 提示:) If s = vbOK Then name0 = CStr(a.Cells(CInt(Text1.Text), 1) Dim i As Integer i = 2 判断环境因子中没有空项 While a.Cells(CInt(Text1.Text), i) 重新定义hjyz数组,确定数组范围 ReDim Preserve hjyz(i - 1) As Single 写入hjyz数组 hjyz(i - 2) = a.Cells(CInt(Text1.Text), i) i = i + 1 Wend yanzheng = i 2 调用预分组对话框,选择预分组范围 Form9.Show vbModal Unload MeEnd If Else 帮助用户确认所选择的列数据 s = MsgBox(你选择的是 + “ + CStr(a.Cells(1, CInt(Text1.Text) + ” + 的列数据) If s = vbOK Then name0 = CStr(a.Cells(1,CInt(Text1.Text) Dim j As Integer j = 2判断环境因子中没有空项 While a.Cells(j, CInt(Text1.Text) 重新定义hjyz数组,确定数组范围 ReDim Preserve hjyz(j - 1) As Single 将环境因子写入数组 hjyz(j - 2) = a.Cells(j, CInt(Text1.Text) j = j + 1 Wend yanzheng = j - 2 调用预分组对话框,选择预分组范围 Form9.Show vbModal Unload MeEnd If End IfEnd IfPrivate Sub Command2_Click()当用户按了“取消”按钮Unload MeEnd Sub然后选择预分组范围,准备进行分析,界面如下:图:form9代码如下:定义分析过程函数Function Analysis(a1 As Integer, a2 As Integer, b1 As Integer, b2 As Integer) Dim i As Integer Dim j As Integer Dim v1 As Single Dim k As Single ReDim v(b2 - b1 + 1) As Single ReDim d(a2 - a1 + 1, b2 - b1 + 1) As Single ReDim u(a2 - a1 + 1, b2 - b1 + 1) As Single For j = 0 To b2 - b1 v1 = 0 v(j) = 0 For i = 0 To a2 - a1 v(j) = v(j) + hjyz(i) * yfz(i, j) * yfz(i, j) v1 = v1 + yfz(i, j) * yfz(i, j) Next v(j) = v(j) / v1 Next 聚类中心数组 V For i = 0 To a2 - a1 For j = 0 To b2 - b1 d(i, j) = Abs(hjyz(i) - v(j) * Abs(hjyz(i) - v(j) Next 距离数组 DNext For i = 0 To a2 - a1 For j = 0 To b2 - b1 v1 = 0 For k = 0 To b2 - b1 v1 = v1 + d(i, j) / d(i, k) Next u(i, j) = 1 / v1 Next Next 得到隶属度数组U For i = 0 To a2 - a1 For j = 0 To b2 - b1 yfz(i, j) = u(i, j) Next NextEnd Function定义事件Private Sub Command1_Click()Dim i As Integer for循环用到Dim j As Integer for循环用到Dim p As Integer 写入yfz数组用到Dim q As Integer 写入yfz数组用到Dim max As Single 记录hjyz中最大值便于得到x坐标Dim min As Single 记录hjyz中最小值便于得到x坐标Dim i1 As Integer 记录数据范围Dim i2 As Integer 记录数据范围Dim j1 As Integer 记录数据范围Dim j2 As Integer 记录数据范围Dim y As Single 验证预分组数据的和是否正确Dim z As Single 最后置换1和0时用到p = 0q = 0min = 0max = 0获得用户的输入i1 = CInt(Text1(0).Text)i2 = CInt(Text1(1).Text)j1 = CInt(Text1(2).Text)j2 = CInt(Text1(3).Text)For i = i1 To i2 y = 0 For j = j1 To j2 y = y + a.Cells(i, j) Next If y 1 Then当预分组项和不为1的时候提示用户错误 msg = MsgBox(第 + CStr(i) + 行数据有错误,请检查!, vbOKOnly, 提示:) Exit Sub Else End IfNext If yanzheng = i2 - i1 + 1 Then ReDim yfz(i2 - i1 + 1, j2 - j1 + 1) As Single For i = i1 To i2 q = 0 For j = j1 To j2 yfz(p, q) = a.Cells(i, j) q = q + 1 Next p = p + 1 Next 实现预分组数据由Excel向yfz数组写入 For i = 0 To i2 - i1 If max hjyz(i) Then min = hjyz(i) End If Next 得到yfz中最大最小值 For i = 0 To i2 - i1 hjyz(i) = CInt(hjyz(i) - min) / (max - min) * 100) Next 得到x坐标并存放在hjyz数组中 Else 当验证失败是向用户提示 s = MsgBox(预分组数据和环境因子样方数不一致,请您检查, vbOKOnly, 提示:) End IfOn Error GoTo xx设置叠代次数5次 For i = 0 To 5 调用分析过程函数 Call Analysis(i1, i2, j1, j2) Next在已有的表单后插入新的表单,以便将得到的环境因子的分析结果写入a. Sheets.Add after:=Worksheets(a.Worksheets.Count) 命名该表单为环境因子的名称ActiveSheet.Name = name0 + 分析结果 For i = 0 To i2 - i1 z = 0 For j = 0 To j2 - j1 If z yfz(i, j) Then z = yfz(i, j) End If Next For j = 0 To j2 - j1 If z = yfz(i, j) Then yfz(i, j) = 1 Else yfz(i, j) = 0 End If 将分析结果写入Excel表单 a.Cells(i + 1, j + 1) = yfz(i, j) Next NextUnload MeExit Subxx:MsgBox 请您确定Excel表格是否打开Exit SubEnd SubPrivate Sub Command2_Click()Unload MeEnd Sub注:在模块中声明的变量打开文件路径 CommonDialog1 中使用Public thepath As StringExcel工作表主程序Public a As excel.Application 验证环境因子和预分组是否一致Public yanzheng As Integer 存放环境因子的名字,便于存放在新的Excel的Sheet中Public name0 As String 存放环境因子Public hjyz() As Single 存放预分组Public yfz() As Single 存放V数组Public v() As Single 存放D数组Public d() As Single 存放U数组Public u() As Single 参考文献:1张金屯.植被数量生态学方法.中国科学技术出版社.1995年1月2高春艳,李艳,谷伟乐等

温馨提示

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

评论

0/150

提交评论