基于临床数据的数据挖掘软件开发 ——聚类分析与可视化模块设计---毕业论文_第1页
基于临床数据的数据挖掘软件开发 ——聚类分析与可视化模块设计---毕业论文_第2页
基于临床数据的数据挖掘软件开发 ——聚类分析与可视化模块设计---毕业论文_第3页
基于临床数据的数据挖掘软件开发 ——聚类分析与可视化模块设计---毕业论文_第4页
基于临床数据的数据挖掘软件开发 ——聚类分析与可视化模块设计---毕业论文_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

本 科 毕 业 论 文 基于临床数据的数据挖掘软件开发聚类分析与可视化模块设计Development of DM Software Based on the Clinical Data The Design of Clustering and Visualization姓 名:学 号:学院:软件学院系:软件工程专 业:软件工程年 级:指导教师: 年 月摘要摘要随着经济和社会的快速发展、计算机技术的进步日新月异,人们拥有了越来越强大的数据存储技术,在社会的各个领域每时每刻都在产生大量的数据,导致人们淹没在海量数据之中。为了能够在大量数据之中寻找价值,数据挖掘技术应运而生。数据挖掘是一门综合性学科,涉及了多门学科的概念、理论、方法和技术。从20世纪80年代诞生以来,数据挖掘的研究和应用都得到了快速的发展,在制造业、服务业以及医学界等行业都可以发现数据挖掘的身影。尽管数据挖掘这门学科已经深入到人们生活的各个方面,但作为一门新兴的技术学科,其理论框架尚未成熟,需要进一步研究,但仍然具备充足的发展潜力。本文主要是针对基于医学数据的数据挖掘软件开发而进行的设计与实现,简单介绍了数据挖掘、聚类分析算法和可视化的相关概念,以此作为技术基础对数据挖掘软件进行了进一步的设计,并利用实现的数据挖掘软件对相关医学数据进行分析,得出相应的结论,旨在能够获得一定的医学价值。关键词:数据挖掘;聚类;可视化VIAbstractAbstractAlong with the development of economy and the progress of computer technology, people have more powerful technology for data storage, meanwhile large amounts of data are produced in every aspect of society life everyday, causing people drowned in the sea of massive data. In order to find valuable information among great amounts of data, data mining technology emerges. Data mining is a comprehensive discipline involving concepts, theories, methods and techniques of multiply disciplines. Since the 1980s, the research of data mining has achieved great development. In manufacturing, service industry, medical field and all kinds of other fields, the technology of data mining can be applied. Although the data mining subject has gone deeply into every aspect of life, but as a newly emerged technology subject, the theoretical framework of it is not yet mature, which requires further study. This subject still requires plenty of potential for development. This paper focuses mainly on the design and implementation of the development for data mining software based on medical data analysis. And it firstly introduces the related concepts of data mining, cluster analysis algorithm, and visualization. Then, this paper elaborates the further design of data mining software based on these technologies. And we also use the realized data mining software to analyze medical data, and finally draw corresponding conclusions and obtain certain valuable medical information, which are also included in this paper.Key words: data mining; clustering; visualization目录目录第一章绪论11.1研究背景及意义11.2论文组织结构3第二章相关技术概念介绍42.1数据挖掘基础知识42.1.1数据挖掘的发展历史42.1.2数据挖掘的概念52.1.3数据挖掘的功能52.1.4数据挖掘的过程62.2聚类分析技术82.2.1聚类概念82.2.2聚类分析算法82.2.3K均值算法102.2.4EM算法112.3Weka数据挖掘软件112.4可视化开发组件122.4.1Java 3D122.4.2JFreeChart12第三章软件设计与实现143.1软件简介与开发环境143.1.1软件简介143.1.2开发环境143.2软件设计目标143.2.1整体设计目标143.2.2聚类分析模块设计目标153.2.3可视化模块设计目标153.3概要设计153.3.1概要设计任务153.3.2软件总体概要设计153.3.3聚类模块设计173.3.4可视化模块设计173.3.5接口设计183.3.6运行设计193.3.7系统出错处理设计203.4详细设计203.4.1详细设计的任务203.4.2软件总体详细设计203.4.3聚类模块设计与实现233.4.4可视化模块设计与实现30第四章运行结果364.1软件运行结果364.2聚类分析运行结果374.3可视化运行结果39第五章结论与展望42参考文献.43致谢.44ContentContentChapter 1 Preface11.1Introduction11.2Structure of dissertation3Chapter 2 System related technologies outline42.1Basic knowledge of data mining42.1.1Development history of data mining42.1.2Concept of data mining52.1.3Function of data mining52.1.4Process of data mining62.2Clustering analysis technology82.2.1Concept of clustering82.2.2Clustering algorithm82.2.3K-Means algorithm102.2.4EM algorithm112.3Weka112.4Tools of visualization development122.4.1Java 3D122.4.2JFreeChart12Chapter 3 Software design and implementation143.1Introduction of software and development environment143.1.1Introduction of software143.1.2Development environment143.2Design objective of software143.2.1Design objective of integer143.2.2Design objective of clustering module153.2.3Design objective of visualization module153.3Preliminary design153.3.1Tasks of preliminary design153.3.2Preliminary design of integer153.3.3Preliminary design of clustering module173.3.4Preliminary design of visualization module173.3.5Design of interfaces183.3.6Design of operation193.3.7Design of error handling203.4Detailed design203.4.1Tasks of detailed design203.4.2Detailed design of integer203.4.3Detailed design of clustering module233.4.4Detailed design of visualization module30Chapter 4 Running results364.1Running results of software364.2Running results of clustering module374.3Running results of visualization module39Chapter 5 Conclusions and visions42References43Acknowledgements44第一章 绪论第一章 绪论1.1 研究背景及意义随着计算机处理能力的提高,数据库技术的飞速发展以及人们获取数据的方式越发多样,人们所拥有的数据急剧增加。然而,却缺乏能够对海量数据进行分析处理、发现潜在价值的工具,因此,数据挖掘技术应运而生。数据挖掘诞生于20世纪80年代后期,并在这之后有了蓬勃繁荣的发展,渗透到社会的各个方面。在零售业、制造业、通讯业、金融业、医药界等行业都有数据挖掘应用的成功案例。只要某产业拥有具备分析价值和需求的数据库或者数据仓库,都可以凭借数据挖掘技术的应用来发现潜在价值,提高行业竞争力。特别是对于医药行业来说,数据挖掘技术的运用不仅可以提高竞争力和效益,还能为医学的发展提供动力。医学数据信息是以治愈病人为首要目的而搜集的数据,同时也具备十分宝贵的医学研究价值。因其特殊性,医学数据信息具有如下特点1:1. 多样性:医学信息的形式具有多样性,包括信号(如脑电波等)、图像(如核磁共振生成的结果)、数字(如化验结果)、文字及语音视频等等。这种多样性有别于其他领域的数据,增加了数据挖掘的难度。2. 不完整性:由于病例的有限性以及对于病人隐私的保护,使得在对医学数据进行数据处理及挖掘时,无法全面地反映某种疾病的信息。此外,医学信息,尤其是文字信息,在表达上具有一定的主观性和模糊性,使得医学数据本身会受到主观影响。因此,客观缺陷以及主观影响决定了医学数据的不完整性。3. 冗余性:医学数据库是一个庞大的数据资源,每天都会有大量相同或部分相同的数据信息存储于其中;由于数据来源及表达形式的多样性,在进行数据挖掘之前,需要对冗余或者不完整的数据进行处理,以满足数据挖掘的要求,从而提高分析结果的可靠性。4. 隐私性:医学数据信息来源于对病人体征信息以及病症数据的采集。这些信息的泄露,会导致患者的日常生活受到不必要的打扰,甚至是被不法分子加以利用来进行违法犯罪。这就要求在对医学信息进行数据挖掘之前,需要采取严格的保密措施防止信息泄露,同时还需要得到患者的许可。目前,数据挖掘在医学领域的运用主要集中在以下四个方面2:1. 疾病辅助诊断:采用数据挖掘技术,对大量的医疗历史信息进行处理,以期发现具备医学价值的诊断规则,然后依据患者的各项体征与病征(比如性别、年龄、各项检查结果等)作出诊断结论。由于是对大量的历史数据进行挖掘,提高了诊断的客观性和可靠性,所得的诊断结果也具有一定的普遍性。2. 药物开发:采用数据挖掘建立的药物开发系统,可以准确定位开发目标,有效缩短开发周期,提高效益。3. 遗传学研究:遗传是由基因决定的,而基因包含有大量的DNA数据。通过数据挖掘技术的应用,可以从DNA数据中寻找到具有统计特异性的序列组3 4,提高研究的有效性。4. 医院信息系统:包含临床信息系统和管理信息系统两部分。数据挖掘技术主要应用在关注疾病信息(比如发病率、以及患者人数变化等)、医疗器械及药物使用等领域。本毕业设计属于第一种运用领域,其需求来源于指导教师与中山医院一位医生的合作项目,所使用的数据主要包括搜集到的癌症病人的病理、病历各项数据。该项目的主要目的在于找出癌症的发病情况与体征因素和其他病理因素之间的联系。但癌症的发病原因需要得到进一步的研究,而与癌症相关的各项病理因素名目繁多,通过一般的统计分析方法难以得到可靠的医学价值,由此提出了对于基于医学数据开发数据挖掘软件的需要。本毕业设计旨在针对合作项目的需要,开发出能够满足基本数据挖掘功能的软件,以帮助项目组从大量的医学信息中更便捷、更准确地发现潜在的医学价值,为癌症的研究提供一定的帮助。本研究课题的意义在于:1. 按照具有针对性的需求,设计开发基于医学数据的数据挖掘软件,以期能够更高效便捷地对大量医学数据进行处理,有效发现有关癌症的各项病征之间的潜在联系,为癌症的研究与治疗提供一定的参考价值,并能对后续的开发研究工作起到一定的启发作用。2. 对聚类分析的一般方法进行探讨与比较,特别是对K均值算法和EM(期望最大值)算法进行较为详细的阐述。3. 对于聚类结果以及数据集的可视化方面进行了研究,其中从不同查看角度对数据集进行了可视化展示,具有一定的新意。1.2 论文组织结构本文一共分为五章,本文首先从在数据挖掘软件开发过程中所涉及的技术出发,阐述各项技术的相关概念。随后根据医学项目提出的各种需求,对软件和涉及的模块进行分析与设计。然后使用开发的数据挖掘软件,对提供的医学数据进行数据挖掘分析工作,并依据获得的结果得出相应的结论。本文的主要结构为:在第一章中,主要描述本文的研究背景和意以及对本文的综述,同时简单介绍数据挖掘技术在医学领域的运用。第二章对本毕业设计中涉及到的相关技术进行概述。第三章中将对数据挖掘软件的开发进行分析与设计,主要包括软件的设计目标、总体设计和详细设计。第四章的主要内容包括对开发完成的数据挖掘软件的运行结果进行分析工作。第五章是在前四章的基础之上,得出相应的结论,并对毕业设计所做的工作进行总结,指出优点与不足。46第二章 相关技术概念介绍第二章 相关技术概念介绍2.1 数据挖掘基础知识2.1.1 数据挖掘的发展历史在1989年,国际人工智能联合会议的专题讨论会上首次出现了数据库中的知识发现5(Knowledge Discovery in Database, KDD)这一术语,并在之后几次KDD专题讨论会上,各个领域的研究人员和应用开发者集中讨论了数据统计、海量数据分析算法、知识表示和知识运用等问题。KDD领域得到了越来越多的关注,作为KDD核心的数据挖掘技术也得到了突飞猛进的发展6。数据挖掘的发展历史是由人们对数据处理的需求变化驱动的。20世纪60年代,数据库和信息技术的发展使得人们对数据处理方式已经从原始的文件处理演化到复杂而功能完善的数据库系统。从20世纪80年代到90年代之间,数据库系统的理论研究及开发水平得到了快速的提高。在这期间,数据库从早期的层次和网状数据库,发展到了以关系型为主流模型的数据库,并且进一步推动了诸如扩充关系型、面向对象模型、演绎模型等先进数据模型模型的发展。到了20世纪90年代,以数据清理、数据集成和联机分析处理为基础的数据仓库成熟起来,并广泛应用于商业领域。表2-1 数据发展历史发展阶段时间主要技术特点数据搜索20世纪60年代磁带等静态历史数据数据访问20世纪80年代关系数据库、结构化查询语言SQL在记录中提供动态历史数据信息数据仓库20世纪90年代联机分析处理、多维数据库在各层次提供动态历史数据数据挖掘20世纪90年代至今海量算法、多处理系统提供预测性信息谭建豪等,数据挖掘技术,2009年新型数据库系统的成熟,计算机技术的快速发展为海量数据的存储提供了基础,而互联网的普及和信息技术在各领域的广泛应用,让人们淹没于数据的海洋之中,造成了数据丰富,信息贫乏的现实7。这些海量数据之中蕴含着许多重要的信息,为了创造商业价值和增加利润,决策者迫切需要从中抽取出有效的信息。对抽取有效知识的工具的需求,促使了数据挖掘概念的提出及其发展应用。2.1.2 数据挖掘的概念数据挖掘是指从大量数据中提取或“挖掘”知识8,即从大量的、不完全的、有噪声的、模糊的实际应用数据中,提取隐含在其中的、先前未知且有价值的知识的过程,旨在发现隐藏在大型数据集中的知识模式。数据挖掘是一门综合性学科,涉及多个领域的理论知识,包括数据库系统、机器学习、统计学、神经网络、模式识别、信息检索、遗传算法、高性能计算、模糊优化和数据可视化等。数据挖掘的数据来源丰富,主要包括各种模式的数据库、数据仓库、互联网、信息存储设备以及满足数据挖掘要求的普通数据集。按照分类对象的不同,数据挖掘可以有多种分类法9:1. 按照挖掘任务:分类模型发现、数据总结、聚类、关联规则发现、序列模式发现、依赖关系发现、异常和趋势发现等。2. 按照挖掘技术:神经网络、聚类分析、遗传算法、回归分析、趋势分析、偏离和孤立点分析等。3. 按照挖掘对象:关系数据库、面向对象数据库、异构数据库、遗产数据库、文本、多媒体以及互联网等。4. 按照应用领域:股票市场分析、零售行业、DNA挖掘、Web日志分析等。2.1.3 数据挖掘的功能数据挖掘通过对数据进行分析获取有效知识,预测未来的趋势和行为,为决策提供帮助,主要包含有一下几个功能:1. 概念描述概念描述是指对大量的关于类的信息进行概括归纳,抽象出有意义的描述(比如这些类对象的相关特征),由此来对数据特征进行汇总和比较。2. 关联分析关联分析的目的在于寻找数据子集间的隐藏的关联关系或者数据之间的派生关系,形成关联规则。3. 分类预测分类的目的在于找出描述和识别类或概念的模型或函数, 用于将来的预测;预测的目的是从利用历史数据中自动推导出对给定数据的推广描述,从而能对未来数据进行预测。4. 聚类分析聚类用于从数据集中寻找相似的数据并分成不同的组。5. 孤立点分析孤立点是指那些离密度较高的大部分点远离的点。孤立点分析主要应用了对欺骗检测和罕见事件的分析,具有重要的现实意义。6. 其他分析包括依赖关系分析、序列分析、趋势和演变分析等其他基于模式或统计的分析2.1.4 数据挖掘的过程数据挖掘的过程一般可以分为:问题陈述、数据收集和预处理、数据挖掘执行、结果解释和模式评估、知识获取10。图2-1:数据挖掘过程1. 问题陈述问题陈述包括提出假设,明确挖掘领域和意图等。提出一个有意义的问题陈述,是数据挖掘过程成功完成的前提条件,并始终贯彻于整个过程,这就要求数据挖掘专家和领域专家之间必须保持密切地协作。2. 数据准备数据准备包括数据收集和数据预处理。数据收集的目的是确定数据挖掘任务的目标数据;数据预处理一般包括消除噪声、填充缺失值、消除冗余数据等等,目的在于提高数据挖掘有效性。3. 数据挖掘执行这是数据挖掘过程的主要阶段。在明确数据挖掘任务之后,需要依据问题的定义,决定使用何种算法并予以执行。4. 结果解释和模式评估此阶段是决定数据挖掘过程成功与否的关键。数据挖掘阶段发现出来的模式,经过评估,如果由于冗余或者与客户期望不符而失去有效性,就需要重新开始数据挖掘过程。5. 知识获取获取知识是数据挖掘的最终目的,达到这个阶段说明数据挖掘过程已经成功完成,所得到的有效信息具有辅助决策的价值。2.2 聚类分析技术2.2.1 聚类概念聚类分析是依据样本间关联的量度标准将其自动分成几个簇(数据对象的集合),且使同一个簇内的对象相似,而属于不同簇的对象相异的分析方法。簇内相似度以及簇间相异度是判定聚类结果是否优秀的标准:聚类结果的簇内相似程度和簇之间相异的程度越高,说明所得结果的有效性越好;反之,则越差。聚类是无监督的分类,即在预先不知道目标数据到底有多少类的情况下,把所有的记录组成不同的类11,并且使得在这些分类情况下,以某种度量为标准的相似性,在用一个簇集之间最小化,而在不同簇集之间最大化。聚类在模式分析的浏览、聚集、决策制定、机器学习、图像分割和文件恢复等领域具有很高的实用价值。聚类方法适合用来探讨数据间的相互关联关系,从而对数据集结构做出初步的评价。聚类分析在具体行业中的使用也十分广泛:商业上,聚类可以帮助市场分析人员区分不同的消费群体,并概括出各个消费群体的消费习惯;医学上,聚类可以帮助科研人员发现疾病与人体体征潜在的关系,也可以用来分类具有相似功能的基因;在保险行业,聚类分析可以帮助保险公司发现具有较高索赔概率的群体,或者发现潜在的欺诈行为;还可以在互联网上对不同的文档进行分类。2.2.2 聚类分析算法主要的聚类算法可以划分为以下几类12:1. 划分方法:给定N个对象或数据元组的数据库,划分方法构建数据的K个划分,每个划分表示一簇,K N。同时需要满足两个条件:每个组至少包含一个对象;每个对象只属于一个组。采用迭代重定位技术来改进划分的质量。2. 层次方法:该方法创建给定数据对象集的层次分解,直到某种条件满足为止。包括凝聚(自底向上)和分裂(自顶向下)两种方法。3. 基于密度的方法:其主要思想是只要相邻一个区域中的点的密度大于一个阀值,就加入到其中继续聚类。4. 基于网格的方法:这种方法首先把对象空间转化为具有若干个单元的网格结构,所有操作都在网格结构上进行。5. 基于模型的方法:此方法给每个分组假定一个模型,并寻找与这个模型具备高拟合度的数据对象。常见的几大类聚类分析的代表算法如下表2-2所示:表2-2 聚类方法类别及其代表算法类别划分方法层次方法密度方法网格方法模型方法代表算法K均值K中心BIRCHROCKCHAMELEONDBSCANOPTICSSTINGCLIQUEWaveClusterCOBWEBEM聚类是一个富有挑战性的研究领域,它的潜在应用对聚类分析算法提出了一些特殊的要求:1. 可伸缩性:聚类算法需要对小数据集合和大规模数据集同样工作得很好。2. 处理不同类型属性的能力:要求聚类算法能够对不同类型的数据进行处理。3. 发现任意形状的聚类:聚类特征的未知性决定聚类算法能够发现任意形状的簇。4. 对于决定输入参数的领域知识需求最小:聚类算法要尽可能地减少用户估计参数的最佳取值所需要的领域知识。5. 处理带噪声数据的能力:为了提高聚类的质量,聚类算法需要能够处理离群点、缺失或错误的数据。6. 增量聚类和对输入记录的次序不敏感:增量聚类算法和对输入次序不敏感的聚类算法在实际应用中具有重要意义。7. 高维性:数据库或者数据仓库一般具有若干的维度,擅长处理低维的聚类算法也要能够对高维数据进行处理。8. 基于约束的聚类:实际应用中,经常需要在符合各种约束条件下进行聚类分析,因此开发基于约束的聚类能够更具备灵活性。9. 可解释性和可用性:聚类需要与特定的语义解释和应用相联系。2.2.3 K均值算法本毕业设计聚类分析模块中,运用了K均值(K-Means)算法。K均值算法是在1967年提出的一种被广泛用于科学研究和工业应用的经典聚类算法。K均值算法属于划分方法,它以簇集个数(即为K)作为输入,把N个对象的集合分为K个簇,通过使每个聚类中的数据点到其所属簇集中心的平方和最小,来达到所得结果的簇内相似度高而簇间相似度低的目的。K均值算法描述为:1. 输入:簇的数目K以及包含N个对象的数据集。2. 输出:K个簇的集合。3. 处理过程:(1) 从N个数据对象中任意选取K个对象作为初始的聚类中心。(2) 分别计算每个对象到各个聚类中心的距离,把对象分配到距离最近的聚类中。(3) 所有对象分配完成后,重新计算K各聚类的中心。(4) 与前一次计算得到的K个聚类中心比较,果然发生变化,则回到(2),否则继续(5)。(5) 输出聚类结果。通常, 采用平方误差准则作为收敛函数, 该准则试图使生成的结果簇尽可能紧凑和独立,其定义如下:其中, mi是簇Ci的平均值。K均值算法试图确定最小化平方误差函数的k个划分。当结果簇是紧凑的,并且簇与簇之间明显分离时,它的效果较好。对于处理大数据集,该算法是相对可伸缩的和有效率的。该方法经常终止于局部最优解。K均值算法的不足在于:只有在簇的平均值被定义的情况下才能使用,可能不适用于某些应用, 例如涉及有分类属性的数据;需要预先指顶簇的数目K,而K值的选定需要多次试验才能找到最佳的数值;初始聚类中心的选择对聚类结果也会有所影响;不能处理噪音数据和孤立点;不适合用来发现具有非凸形状的簇13。2.2.4 EM算法EM算法是本毕业设计聚类模块中应用到的聚类算法之一。EM算法是一种迭代求精算法,可以用来求得参数的估计值并基于混合密度模型对数据进行聚类,因此它属于基于模型的聚类方法。它可以看作是K均值算法的扩展,根据一个代表隶属概率的权重将每个对象指派到簇。EM算法描述如下:1. 对参数向量进行初始猜测:包括随即选择k个簇的中心,以及猜测各个参数。2. 按照下面两个步骤反复进行参数求精:(1) 期望步:用一下概率(该概率服从均值为Mk、期望为Ek的正态分布)将每个对象Xi指派到簇Ck:(2) 最大化步:利用期望步中得到的概率估计重新估计模型参数,使得对给定数据的分布似然最大化。EM算法的实现比较简单容易。在实践中,它收敛很快,但是可能无法达到全局最优。对于某些特定形式的优化函数,收敛性可以得到保证。2.3 Weka数据挖掘软件本毕业设计是基于Weka而进行的数据挖掘软件二次开发。Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化的,基于JAVA环境下开源的机器学习以及数据挖掘软件。WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。而开发者则可使用Java语言,利用Weka的架构上开发出更多的数据挖掘算法。2.4 可视化开发组件2.4.1 Java 3DJava 3D是SUN公司推出的一个交互式三维图形应用编程接口,是Java2 SDK的标准扩展,它可以和普通的Java2D、Swing、AWT等良好结合。Java 3D是一个高层次的、基于简单场景图模型的三维动画开发工具。它的具有以下几个优点14:1. 具备平台无关性,良好的可移植性2. 高性能,适应网络传输的要求3. 扩展性好,适用于许多网络应用程序的开发编写Java 3D程序的一般步骤为:1. 创建一个Canvas3D对象。2. 创建一个VirtualUniverse对象。3. 创建一个Locale对象,将它与VirtualUniverse对象联系起来。4. 构造视野子图。5. 构造内容子图。6. 编译子图。7. 将子图插入到Locale。2.4.2 JFreeChart数据挖掘用户要求数据挖掘结果具备可解释性,而不同用户之间的专业水平不一,有时需要将数据挖掘结果进行可视化,直观地展示给用户,方便进行决策。统计图表是最常用的可视化方式,而JFreeChart组件可以满足大部分的绘图要求。JFreeChart是一种基于JAVA语言的图表开发技术,也是开放源代码的一个JAVA项目,是为Application,Applet,Servlets以及JSP等使用所设计的。它的主要功能是提供种类繁多的图表,包括饼图、柱状图、线图、甘特图、分布图、时序图等等。JFreeChart具有如下特点15:1. 支持JDBC,可以与数据库的数据相互关联。2. 生成的图像美观丰富,且支持PNG及JPEG格式的图像输出。3. 丰富的API和图表类型能够满足各种实际应用的要求。4. 支持基于Web的应用。5. 允许开发人员在此基础上,进行图形化设计工具的二次开发,增加了自主性和灵活性。第三章 软件设计与实现第三章 软件设计与实现3.1 软件简介与开发环境3.1.1 软件简介本毕业设计所开发的软件项目名为Eagle-I,与鹰眼(Eagle Eye)同音,意在本数据挖掘软件能够拥有如同鹰眼一般敏锐的能力,在海量无序的数据之中迅捷地挖掘出有价值的知识,为癌症的研究提供一定的帮助。在毕业设计完成过程中,主要负责聚类分析模块和数据可视化模块的功能实现。3.1.2 开发环境 开发语言:JAVA 开发工具:MyEclipse 6.5 开发系统:Windows XP操作系统 适用数据文件格式:*.arff、*.csv、*.xls 项目管理:在Google Code上建立项目Eagle-I,安装SVN上传、更新、删除,借此实现对项目的管理。3.2 软件设计目标3.2.1 整体设计目标完成一个针对癌症病理医学的数据分析挖掘软件,包括后台功能的实现和前台管理软件界面的设计。基于weka进行二次开发,参考AlphaMiner和KNIME的分析流程及可视化功能,完成算法程序的设计以及实现相应的软件包,并最终保证软件界面友好,运行稳定,功能完善。3.2.2 聚类分析模块设计目标此模块主要提供数据的聚类分析功能,采用基于K均值算法和EM算法的分析方法。在模块中提供参数设置、可视化、分析结果查看等选项,以此保证分析精确度和结果的可比较性。确保模块功能的完整性,操作的灵活度、分析的准确性以及结果的直观度。3.2.3 可视化模块设计目标 此模块主要提供数据可视化功能,包含对数据集、聚类分析结果的可视化,通过统计图表的展示,使得对数据及其分析结果更加直观。最终提高通过使用软件获得分析结果的直观程度,方便用户使用。3.3 概要设计3.3.1 概要设计任务概要设计的主要任务是根据需求,分析设计软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。概要设计是对需求的进一步细化,在此阶段确定软件结构和数据结构能够为之后的详细设计以及编码测试奠定基础。3.3.2 软件总体概要设计本毕业设计开发的数据挖掘软件能够满足数据挖掘的基本功能,包括数据预处理、关联规则分析、分类预测分析、聚类分析以及数据可视化功能等。Eagle-I的基本组织结构和系统用例分别如图3-1和图3-2所示:图3-1:组织结构图图3-2:系统用例图3.3.3 聚类模块设计为实现聚类分析功能,在此模块中采用以K均值和EM算法作为主要分析算法,并使用Java3D和JFreeChart开发组件来实现聚类结果的可视化,其中Java3D用来支持将聚类结果以三维坐标的形式进行可视化,而通过JFreeChart强大统计图表功能,对聚类的结果进行统计分析。其主要功能结构如图3-3所示:图3-3:聚类分析模块功能结构图3.3.4 可视化模块设计可视化模块的主要功能是给予用户查看数据情况的多种选择,包括表格、折线图、散点图、柱状图等。模块的主要结构如图3-4所示:图3-4:可视化模块功能结构图JFreeChart丰富的图表种类确保了该模块功能正常实现。JFreeChart生成图表的一般步骤为:创建数据集、创建指定的图表、创建并返回包含图表的一个容器控件(比如JPanel)。3.3.5 接口设计接口定义的是一组方法或者一个公共接口,它必须通过类来实现。一个接口只有方法的特征没有方法的实现,具体的行为或者功能需要在不同的类中定义实现,实现相同接口的不同类可以有不同的功能,因此接口的外部使用者不需要关心具体的内部情况,直接使用接口即可。在此只对聚类模块的接口设计进行说明,而不再赘述软件的其他接口设计。聚类模块的接口设计如表3-1和表3-2所示:表3-1:聚类SimpleKMeans方法接口(Interface KMeansInterface)方法说明public String clusterSimpleKMeans(Instances instancesSource)进行K均值聚类分析的方法public void setSimpleKMeansAttribute(boolean displayStdDevs,boolean dontReplaceMissingValues,int maxIterations,int numClusters,boolean preserveInstancesOrder,int seed)设置聚类器各个参数的方法public JFrame visualize(Instances instancesSource);可视化聚类结果的方法表3-2:聚类EM方法接口(Interface EMInterface)方法说明public String clusterEM(Instances instancesSource)进行EM聚类分析的方法public void setEMAttribute(boolean debug,boolean displayModelInOldFormat, int maxIterations,double minStdDev, int numClusters, int seed)设置聚类器各个参数的方法public JFrame visualize(Instances instancesSource);可视化聚类结果的方法3.3.6 运行设计一、运行模块组合当用户需要完成聚类分析功能时,需要运行数据预处理模块进行数据准备,然后调用聚类分析模块对数据进行聚类分析,随后输出文本结果和可视化结果。在此过程中,出于从不同角度查看簇集数据的需要,可能还要有可视化模块来配合运行。二、运行控制用户进行聚类分析和数据可视化的运行控制方式为使用各种节点来定制分析流程。聚类分析具体操作步骤为:首先使用数据预处理模块读取源数据并进行预处理,其次调用聚类分析模块进行聚类算法分析,最后得出分析结果;数据可视化的操作步骤为:先使用数据预处理模块来读取数据,待到进行预处理成功后,调用数据可视化模块,选择适用形式进行查看。三、运行时间运行时间取决于算法性能及数据集大小,由于无此方面的硬性规定,故不做进一步阐述。3.3.7 系统出错处理设计一、出错信息软件不可避免的会由于存在Bug或者其他人为因素而出现错误,良好的出错信息提示可以提高用户体验,方便进行补救。本软件主要采取消息提示框的方式将出错信息告知用户,保证软件的正常运行。二、补救措施在一般情况下,出错消息提示包括出错位置和解决办法,如果用户发现错误,可以根据提示消息对错误处理(比如重新载入文件或重新制作数据挖掘流程等)。而如果软件出现崩溃,用户只能对软件进行重启。3.4 详细设计3.4.1 详细设计的任务详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。为了使能够根据详细设计进行编码测试并方便后期软件的维护,在此阶段需要利用各种工具合理地描述软件功能实现的流程细节。详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。3.4.2 软件总体详细设计一、软件层次架构设计逻辑架构是软件类的宏观组织结构,它将软件类组织为包、子系统和层等16。Java中的所有的资源是以文件方式组织,这其中主要包含大量的类文件需要组织管理。根据实现功能的不同,为本毕业设计开发的软件设计了10个包。这些包均在.xmu.software路径之下,为了表达的简洁性,将不再描述这些包的完整路径,而只取用各自的特殊命名。这些包的说明如表3-3所示:表3-3:包包名说明UI包含与界面相关的类,比如主界面,参数设置界面等。UI.images包含界面所需的图片。event包含监听界面事件的类,用于界面与应用逻辑之间的通信。interfaces包含软件所有的接口。preparation包含实现文件处理及数据预处理功能的类。associations包含实现关联规则挖掘的类:单表关联,多表关联规则挖掘classifiers包含实现分类分析功能的类:朴素贝叶斯、多层感知器、神经网络、J48决策树,集成学习等。clusterers包含实现聚类分析功能的类:实现Kmeans算法和EM算法的类。visualization包含表格显示、柱状图、散点图、饼图及树形可视化等可视化类。util创建的基础包,包含类型转换的类为了明确软件的逻辑架构确定了软件架构,在设计是参照了MVC模式,分别将这10包分成4个层次:1. 视图层:面向用户的层次,提供图形界面方便用户操作。2. 控制层:负责响应用户动作并返回操作结果,是视图层和逻辑应用层的 “信使”。3. 逻辑应用层:负责数据挖掘各种分析方法的实现。4. 基础层:定义了包含一些通用工具的包。明确软件逻辑结构给编码实现和测试带来了便捷,除了需要定义出软件的层次以及各个包以外,还需要定义包与包之间的关系。本软件的层次,包及其关系在图3-5中得到了完整的体现:图3-5:软件包图二、软件流程设计软件流程设计主要遵照数据挖掘的步骤进行,主要分为一下几个步骤(如图3-6所示):图3-6:软件流程图3.4.3 聚类模块设计与实现一、类与类图设计一个完整的流程涉及到了许多不同功能的类,类图显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。为实现聚类分析的功能,满足用户要求,与聚类模块相关的类及接口有:1. Cluster类:实现聚类分析最主要的类之一,实现了KMeansInterface的接口,包含执行K均值算法、参数设置、聚类结果可视化等方法。采用孤子模式进行设计,确保聚类器的唯一性和参数设置的有效性。2. EMCluster类:实现EM聚类分析的类,实现了EMInterface接口,包括执行EM算法、参数设置、聚类结果可视化等方法。3. ClusterVisualization类:实现对Kmeans算法聚类结果可视化分析的类,包含有生成三维坐标系和统计饼图的方法,能够提供允许用户选择属性的功能,满足比较聚类结果的要求。4. EMClusterVisualization类:实现对EM算法聚类结果可视化的类,实现的效果同ClusterVisualization类相似。5. KMeansInterface接口:基于Kmeans算法的聚类器接口,定义了聚类算法执行、参数设置及聚类结果可视化的方法。6. EMInterface接口:基于EM算法的聚类器接口,定义了EM算法的执行、参数设置及结果可视化的方法。7. KmeansParaUI类:实现Kmeans算法聚类器参数设置界面的类。该类负责将用户输入的各个参数设置给聚类器。8. EMParaUI类:实现Kmeans算法聚类器参数设置界面的类。该类负责将用户输入的各个参数设置给聚类器。9. Nodelabel类:为节点类,每在左侧导航栏选择一个节点,将会生成一个相应该节点类的对象并且在主界面右边的工作区就会相应的添加一个节点图标。用户实现数据挖掘的流程都是围绕着这个节点类进行的,属于视图层,是用户的重要操作对象。10. PopMenuEvent类:节点的右键菜单事件都由这个类的对象进行控制响应,针对用户不同的选择调用逻辑应用层的不同方法,属于控制层。此外,该类针对不同的节点生成不同的右键菜单。11. MainFrame类:主界面类,是用户使用软件的主要平台。在聚类分析模块中,这些类之间的关系可用类图进行表示,如图3-7和图3-8所示:图3-7:KMeans聚类模块类图图3-8:EM聚类模块类图二、顺序图设计顺序图是进行动态对象建模的方式,顺序图侧重于表示消息传递的时间顺序以及对象之间的交互情况。顺序图由多个用垂直线显示的对象组成,图中时间从上到下推移,并且顺序图显示对象之间随着时间的推移而交换的消息或函数。聚类模块的动态交互如图3-9和3-10所示:图3-9:KMeans聚类模块顺序图图3-10:EM聚类模块顺序图三、关键代码解释1. 聚类K均值算法的实现实现代码如图3-11所示:public String clusterSimpleKMeans(Instances instancesSource) String result = null;try km.buildClusterer(instancesSource); /进行聚类Instances instances = km.getClusterCentroids();/聚类结果并保存this.setResultInstances(instances);ClusterEvaluation eva = new ClusterEvaluation();/聚类评价器eva.setClusterer(km);eva.evaluateClusterer(instancesSource);result += = Run information =nn;result += Scheme: + this.getClass().getName() + n;BaseInfo baseInfo = new BaseInfo();result += baseInfo.getBaseInfo(instancesSource);result += evaluate on training data nn;result += = Model and evaluation on training set =nn;/返回聚类评价结果result += eva.clusterResultsToString(); catch (Exception e) e.printStackTrace();return result;图3-11:聚类分析KMeans算法核心代码在这段代码中,变量km是SimpleKMeans类的对象。SimpleKMeans类实现了buildClusterer这一接口方法,这是聚类分析最核心的方法之一。通过调用buildClusterer方法,可以为源数据instancesSource构建基于K均值算法的聚类器;调用getClusterCentroids方法,将返回由聚类中心组成的数据集;ClusterEvaluation类用于对一个聚类器进行评价,可以得到诸如聚类个数等聚类器的信息,也可以得到简洁明了的文本形式的聚类分析结果。2. 聚类EM算法的实现实现代码如图3-12所示:public String clusterEM(Instances instancesSource) / TODO Auto-generated method stubString result = null;try ClusterEvaluation eva = new ClusterEvaluation();em.buildClusterer(instancesSource);eva.setClusterer(em

温馨提示

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

评论

0/150

提交评论