首页 连续数据的离散化研究毕业论文

连续数据的离散化研究毕业论文

举报
开通vip

连续数据的离散化研究毕业论文连续数据的离散化研究毕业论文 (2011 届) 本科毕业论文(设计) 题 目: 连续数据的离散化研究 学 院: 专 业: 信息管理与信息系统 班 级: 学 号: 姓 名: 指导教师: 完成日期: 教 务 处 制 诚 信 声 明 我申明,所呈交的论文设计是本人在老师指导下进行的研究工作及取得的研究成果。据我查证,除了文中特别加以标注和致谢的地方外,论文设计中不包含其他人已经发表或撰写过的研究成果,也不包含为获得______或其他教育机构的学位或证书而使用过的材料。我承诺,论文设计中的所有内容均真实、...

连续数据的离散化研究毕业论文
连续数据的离散化研究毕业论文 (2011 届) 本科毕业论文(设计) 题 目: 连续数据的离散化研究 学 院: 专 业: 信息管理与信息系统 班 级: 学 号: 姓 名: 指导教师: 完成日期: 教 务 处 制 诚 信 声 明 我申明,所呈交的论文设计是本人在老师指导下进行的研究工作及取得的研究成果。据我查证,除了文中特别加以标注和致谢的地方外,论文设计中不包含其他人已经发 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 或撰写过的研究成果,也不包含为获得______或其他教育机构的学位或证 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 而使用过的材料。我承诺,论文设计中的所有内容均真实、可信。 论文设计作者签名: 签名日期: 年 月 日 授 权 声 明 学校有权保留送交论文(设计)的原件,允许论文(设计)被查阅和借阅,学校可以公布论文(设计)的全部或部分内容,可以影印、缩印或其他复制手段保存 论文(设计),学校必须严格按照授权对论文设计进行处理,不得超越授权对论文(设计)进行任意处置。 论文设计作者签名: 签名日期: 年 月 日 连续数据的离散化研究 中文摘要: 数据资源是21世纪的新兴战略资源,因此对数据资源进行数据挖掘是非常重要的一项工作,而对连续数据进行离散化处理是数据挖掘过程中必不可少的一项工作。连续数据的离散化研究作为一种相对比较新兴的领域,其现有的算法还远没有达到令人满意的程度。因此,本人认为对连续数据的离散化研究是当今国内的一个重要的课题。本文阐述连续数据的离散化的研究现状、研究方法、决策树、几种离散化方法。主要通过使用C4.5算法,在Visual Studio.NET编写代码来实现连续数据的离散化。 关键词:决策树;C4.5;离散化方法 The Research of Discretization of Continuous Data Abstract: Data resource is the 21st century's emerging strategy resources, so data mining is a very important work, and the discretization of continuous data is a necessary job in data mining process. As a relatively new field, the existing algorithm of discretization of continuous data is far from reaching satisfactory degree. Therefore, I think the discretization of continuous data research a very important issue in the domestic. This paper expounds the present situation of research of discretization of continuous data, the research methods, decision trees, several discretization method. Mainly through using C4.5algorithm and writing code to achieve discretization of continuous data in Visual studio.net. Key words: The decision tree;C4.5;Discretization method 目录 第1章 绪论 1 1.1 选题背景及意义 1 1.2 研究的基本内容 1 1.3 研究的基本方法 2 1.3.1 文献分析法 2 1.3.2 面向对象程序设计 3 第2章 决策树 4 2.1 决策树 4 2.2 创建决策树的步骤 5 第3章 数据离散化的几类算法 8 3.1 离散化的基本算法和标准 8 3.1.1 离散化的基本算法 8 3.1.2 离散化算法的标准 8 3.2 离散化算法的分类和比较 8 3.3 BMIC离散化算法 9 3.4 基于云模式连续型属性离散化的算法 10 3.5 人工鱼群算法 11 第4章 BMIC离散化实现 12 4.1 开发工具 12 4.1.1 整体功能 12 4.1.2 组件构成 12 4.1.3 版本 13 4.2 BMIC设计 13 4.2.1 运行界面 13 4.2.2 运行结果 14 4.2.3 类 15 第5章 总结与展望 24 致 谢 25 参考文献 26 1 绪论 1.1 选题背景及意义 如今,随着计算机的普及,网络以及通讯等信息技术的高速发展,当今社会已经进入了网络信息时代。随着计算机技术的高速发展,包括存储技术、数据技术和网络技术等信息处理方式,已经人们对计算机的认识和管理水平的提高,对信息的处理在整个社会生产中实现规模产业化,在技术上表现为对大规模数据操作的产业化已经得到实现。而且随着存储设备的单位价格不断下跌而容量却急剧地扩大,关系数据库、对象数据库、多媒体数据库、地理信息数据库和空间数据库的不断成熟并得到广泛的应用,数据库管理系统的日益普及,这使得人们所积累的数据越来越多,并且数据与信息系统中的不确定性更加显著。 作为二十一世纪的重要资源,信息资源的价值已经越来越得到人们重视,并且很多国家把信息资源挖掘作为国家发展的一项重要指标。海量的数据背后隐 藏着许多重要的信息,但是目前的数据库系统仅仅只能高效地实现数据的录入、查询、统计等功能,却无法挖掘数据中存在的关系和规则,无法根据现在的数据预测未来的发展趋势,即缺乏挖掘数据背后隐藏关系的手段。因此,如何从大量的、杂乱无章的、有强干扰的数据中挖掘出数据背后又利用价值的信息,由此产生了人工智能研究的一个崭新领域??数据挖掘(Data Mining,简称DM)[1]。 在传统的机器语言学习中,连续数据离散化技术被当作边缘性课题,因而没有受到足够的重视,但近年来随着数据挖掘的不断发展,数据离散化技术渐渐在数据挖掘技术中显现出其不可替代的重要性,在规则提取、特征分类等这些算法中,特别是在应用粗集理论进行数据挖掘的研究中,连续属性数据必须要进行离散化处理,因此国内的专家和学者开始越来越关注连续数据的离散化[2]。 对连续数据的离散化虽不是什么研究的热点,然而它是对数据信息进行预处理的一个重要部分。实际数据库中存在较多的连续型属性,而现有的很多数据挖掘方法只能处理离散型的属性,因而需要对连续属性进行离散化。因此,连续数据离散化方法成为数据挖掘领域的重要性工作,直接影响数据挖掘的质量。但作为一种相对比较新兴的领域,其现有的算法还远没达到令人满意的程度。因此,对连续数据的离散化研究是当今国内的一个重要的课题。 1.2 研究的基本内容 (1)本文主要对连续数据的离散化进行研究,主要包括决策树及决策树的建立、离散化的几种算法。 (2)学习几种离散化的方法,采用BMIC的方法在Visual Studio.NET的编程环境下编写代码,并实现对连续数据的离散化。 1.3 研究的基本方法 本文采用的研究方法有文献分析法、面向对象程序设计两种。 1.3.1 文献分析法 文献分析法主要指搜集、鉴别、整理文献,并通过对文献的研究等途径,形成对事实科学认识的方法。由于文献分析法和内容分析法有共同的对象,都不与文献中记载的人与事直接接触,因此,都称为非接触性研究方法。 现代对文献的定义指的是“已经发表过的、或者虽未发表但已被整理、报导过的那些保存有知识等的一切载体”。“一切载体”,包括期刊、图书、科学 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 、档案、学位论文等常见的纸面印刷品,也包括有实物形态在内的各种材料。 从整理情况分类,文献可以分为4类: (1) 零次文献(零次文献指曾经历过特别事件或行为的人以撰写的目的描述或使用其他方式的实况纪录,是有意识处理的和未经发表的最原始的资料,即primary documents); (2) 一次文献(直接记录事件经过、调查报告、新知识、研究成果、论文、新技术的专著等文献); (3) 二次文献(对一次文献进行检索性的文献); (4)三次文献(通过在利用二次文献检索的基础上,系统地对一次文献整理并概括论述等几方面操作的文献)[3]。 文献分析法的方法有许多种,而常用到的方法是内容分析法,内容分析法的过程有建立研究目标、确定研究总体和选择分析单位、抽样和量化分析材料、设计分析维度体系、进行评判记录和分析推论等几部分的步骤。具体内容如下: (1) 研究目标 在现在教育科学研究中,内容分析法运用于多种研究目标的研究工作。常 用到的类型有:现状分析、趋势分析、意向分析、比较分析。 (2) 设计分析维度及体系 设计分析维度、类别有两类基本方法,一是根据研究的目标,研究者自行设计,二是采用现成的分析维度系统。 分析维度(分析类目)是根据现有的研究需要而设计的将资料内容进行分类的项目和标准。 (3) 抽取分析材料(抽样) 抽样工作包括两个方面的内容:一是对总体进行界定,二是从总体中抽取一些具有代表性的样本。内容分析法常用的三种抽样方式是:分析单位取样、日期抽样、来源取样。 (4) 量化处理 量化处理就是把样本从形式上转化为数据化形式的过程,包括作评判记录、进行信度分析等两部分内容。根据已确定的分析维度(类目)和分析单位,对样本中的信息来进行分类记录,并且登记下每一个分析单位中分析维度(类目)的出现的频率和判断是否存在,这就是评判记录[4]。 1.3.2 面向对象程序设计 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。面向对象程序设计中主要包括的概念:对象、数据抽象、类、继承、多态性、数据封装、动态绑定、消息传递。面向对象的思想通过这些概念得到了具体的体现[5]。 对象:对象是具有数据、标识和行为的编程结构,对象是运行期的基本实体,它是一个数据封装和这些数据的代码操作的逻辑实体,对象数据包括在对象的字 段、属性和事件中。 类:类是对相同类型的对象的抽象。类像结构一样,类也定义了数据类型的数据和行为,然后程序员可以创建作为此类的实例的对象。一个对象所包含的所有数据和代码可以通过类来构造。 封装:将数据和代码捆绑到起来,以避免了外界的干扰和不确定性等因素,这就是封装。同时对象的某些代码和数据是私有的,且不能被外界访问,通过封装操作来实现数据和代码不同级别设置的访问权限。 继承:通过某个类型的对象来获得其他类型的对象的特征的过程就是对象的继承。通过对象的继承可以实现重用代码,即从已存在的类中派生出的一个新类,并且继承原来那个类的特性,同时,它还可以创建自己的新特性。 多态:多态是指不同事物具有不同表现形式的能力。一个类可以用作多种类型,可以用作它自己的类型、任何基类型或者在实现接口时用作任何接口类型,这也称作为多态性。具有不同内部结构的对象通过多态机制可以共享相同的外部接口,从而能够减少代码的复杂度。 方法:方法是包括一系列语句的代码块,是定义一个类可以做的,但不一定会去做的事。 动态绑定:调用一个过程并与相应代码链接起来的过程就是绑定。动态绑定则是指,只有在运行期,调用给定的过程中相关联的代码才可知的一种绑定,这是多态实现的具体形式。 消息传递:消息传递指的是对象之间沟通的途径就是对象之间进行收发信息的过程。消息内容包括需要调用的函数的标识,接收消息的对象的标识,以及其他必要的信息。消息传递的概念让面向对象程序设计对现实世界的描述变得更加 简捷[5]。 2 决策树 决策树是一种能够直观、清晰地表达加工的逻辑要求,用二叉树形图来表 示处理逻辑的工具,尤其适合应用于逻辑组合关系不复杂、判断因素比较少的情 况。许多机器学习法采用的基本知识表达形式是决策树,也就是很多数据挖掘的 输出采用的形式。 2.1 决策树 以下我们先引用一个决策树的例子:隐形眼镜 表2-1视力检查表 年龄 视力诊断 散光 泪流量 推荐镜片 Young Myope No Reduced None Young Myope No Normal Soft Young Myope Yes Reduced None Young Myope Yes Normal Hard Young Hypermetrope Yes Normal Hard Young Hypermetrope Yes Reduced None Young Hypermetrope No Reduced None Young Hypermetrope No Normal Soft 图2-1 关于视力诊断的决策树 以上是一个简单化的模型:隐形眼镜数据,是通过给出的一些有关病人的 信息,来告诉患者被推荐的隐形眼镜类型。 表2-1的第一列给出了患者的年龄,第二列给出了眼睛的诊断:myope是近视,Hypermetrope是远视;第三列显示患者是否散光;第四列是有关眼泪的产生率,这是一个重要因素,因为隐形眼镜需要泪水润滑,最后一列显示所推荐的隐形眼镜的种类:hard、soft或者none。这个表呈现了所有的属性的组合。 图2-1以一个决策树的形式展示了关于隐形眼镜数据的结构的表述,在多种用途上是一个更简练、明确了的规则表示法,并且有更加便于观察的优势。树首先对属性泪流量进行测试,产生的两个分支与两个可能的输出结果相对应。如果泪流量是reduced(左支),输出是none;如果是normal(右支),第二个测试是散光属性。最后,无论测试是什么结果,所达到的树的叶子指出了向病人推荐的隐形眼镜的类型。 以上就是一个决策树的例子。 一个决策树上的节点包含了对某个特定属性的测试。通常来说,在一个节点上的测试是比较一个属性值与一个常量。然而,有一些树节点上的测试其实就是在两个属性值与一个常量之间进行比较。叶节点对所有到达叶实例给出一组分类,或者一个分类,或是包括了所有可能分类的一个概率分布。在对一个未知实例进行分类时,在各个连续节点上对未知实例的属性值进行测试,然后根据测试的结果,从树的自上而下地寻找出一条路径,当实例到达目标叶子时,叶子所标注的类就是该实例的分类 [6]。 在一个节点上测试,如果测试的属性是名词性属性,那么在这个节点之下产生这个名词性属性所有可能属性值数量的分支。在这种情形下,因为任何一个可能的名词性属性值都对应一个分支,所以在以后的建树过程中,相同的名词性属性将不会再次被测试。而有些时候,名词性属性值被分成两个子集,那么就产生 两个分支,属性值所在的子集决定了实例的分配。在这种情况下,也许会在一条路径上一个名词性属性将会被不止一次地测试。 在一个节点上测试,如果测试的属性是数值属性,那么事先定义好一个常量,在一个节点上的测试中一般是判断这个数值是否大于或者小于这个常量,并导出一个二叉分裂。或者也可能使用三叉分裂,甚至将会出现多个不同的可能性。若把残缺值也作为一个独立的属性值看待的话,那么将产生出第三个分支。对于为实数值属的数值属性来说,等于的操作是一个没有实际意义的操作,所以在实数上的测试应该是用一个区间而不是一个常量,同样也可以运用于落在区间以下、区间内和区间以上的判断来实行三叉分裂 [6]。 2.2 创建决策树的步骤 根据数据创建决策树的方法有许多种,以下从C4.5方法的角度创建一个决策树。 C4.5算法其实是ID3算法的改进,比较ID3算法它增加了对连续型属性、属性值空缺情况等情况的操作。算法的主体由剪枝算法C4.5pruning、决策树生成C4.5tree、规则生成算法C4.5rules 等3部分组成。C4.5算法是根据信息熵的研究理论,通过选择把当前样本集中具有最大信息增益率的属性作为测试属性,并且不断地对样本集进行划分,构造出最终的一棵完全决策树。对于连续型的属性,通常先对连续属性进行离散化处理,即把连续型属性的值划分成不同的区间,从而便于处理后面的步骤。C4.5rules则是把完全决策树转化成一组if.then规则集且进行化简。经剪枝或规则生成过程中得到的简化决策树和规则集都可用于分类。而C4.5pruning是基于错误的剪枝方法,采用剪枝方法对完全决策树进行修剪,得到简化决策树 [7]。 ID3算法在实际应用中存在一些问题,Quilan提出了C4.5算法,严格上讲C4.5只能是ID3的一个改进的算法。 C4.5算法继承了ID3算法的优点,并且在以下几个方面对ID3算法进行改进: (1) 通过信息增益率来选择属性,解决了用信息增益选择属性时偏向选择取值多的属性的不足的问题; (2)剪枝操作在树构造的过程中一起进行; (3) 相对ID3算法,C4.5算法能够对连续属性进行离散化处理操作; (4) 对不完整数据也能进行处理处理操作,即属性空缺的情况。 C4.5算法的优点:相对ID3算法,易于理解C4.5算法产生的分类规则,准确率较高。但是其缺点是:在构造树的过程中,对数据集需要进行多次的顺序扫描和排序,因而可能导致算法的低效。同时,C4.5算法适合于能够驻留于内存的数据集,当训练集大到无法在内存中保存时程序就无法运行。 C4.5算法的步骤如下 (1)求训练集合的信息熵 INFOD- (2)对于每一属性Ai,按照属性Ai的取值对训练集进行划分后的信息熵。 INFOD, Aj (3)求信息增益 Gain(D, Ai)INFOD-INFOD, Ai (4)求属性A的信息熵 INFOAi - (5)求属性的信息增益比率 GainRatio(D,Aj) 采用C4.5离散化的方法建立决策树,图示如2-2 图2-2 C4.5决策树建立流程图 3 数据离散化的几类算法 3.1 离散化的基本算法和标准 3.1.1 离散化的基本算法 数据离散化本质上通过断点集合将连续的属性空间划分为若干区,并使同一区域的实例都取相同的属性值矢量。 连续值属性离散化方法的基本思想,设一个具有连续值属性的决策信息系统sU,AT?D,这里的U是有限非空的样本集合,称为对象空间或论域,AT为样本空间的非空属性集合,D是决策属性集合,对于每个连续值属性a,a?AT,其值域就是样本空间U在属性a上的取值范围,由实数域上的一段左闭右开的区间[Va,Wa来表示。在每个连续值属性a的值域V?中应找到一个恰当的划分?,在划分P?下的系统与初始系统的过程中应具有相同的决策能力,划分属性值域为几个互不相交的子区间,同时对每个子区间赋值以符号的形式,就得到了一组屹上的离散化取值,这个过程其实就是在样本空间U的连续值属性离散化的结果。由于任何划分只是通过一组值域屹内的分割点序列v.v:„v。确定的,因此,为了满足系统需要的划分,离散化的过程就是要在每个连续值域屹的划分点序列集合中选出一个恰当的划分点序列,从而得到最终离散化结果 [8]。 3.1.2 离散化算法的标准 一个好的离散化方法通常要满足三个标准:一是为了减少后续的机器学习算法的运算量,尽量减少离散区间数切点数;二是尽量避免或减少源数据中的信息损失;三是对连续数据的离散化的方法能够简单有效运算量小,易于实现。 3.2 离散化算法的分类和比较 根据有无监督性,离散化算法可以分为无监督算法和有监督算法这两类。 (1)无监督算法是不考虑属性和类别之间的关系。代表性的算法有等宽法和等频法等两种算法。 (2)有监督算法与无监督算法相反,它是考虑到属性和类别之间的关系,在离散化的过程中是将类别值作为参数。而且由于相同数据在不同的分类问题中,最佳离散化 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 显然地不同,所以有监督算法比无监督算法实际应用中更具有科学性。 同时离散化算法也可以分为,局部方法和全局方法。 (1)局部方法在离散化一个属性的过程中忽略了其他属性的影响,数据中的重要关系也容易受到破坏,被认为是一种次优方法。但局部离散化方法相对简单易行,并已得到了广泛的应用。 (2)而全局方法考虑到了属性之间的相互作用,一般可以获得比局部方法更好的离散化结果。但是它的计算代价很高,难于得到应用,因此在将来可能对如何减少全局方法的计算代价更加深入的研究。 前面已经介绍C4.5算法,以下再介绍其他几种离散化的算法。 3.3 BMIC离散化算法 BMIC算法的全名是boundary point's attribute values merging and inconsistency checking,该算法是一种有监督算法,以基本离散区间中大多数 例子所属类别为导向,合并同类区间。通过用简单的规则对边界点集合进行合并得到备选最优切点的集合,改变了当前多数方法遍历寻求备选最优切点的过程,同时也节省了大量运算。而且采用了不一致度调整离散区间使算法更有全局性[9]。 BMIC算法的步骤: (1)按要离散化的属性值,将数据矩阵以升序排列; (2)以边界点的属性值为切点进行分割属性值集合,把其中符合定义一的边界点属性值记为独立的离散区间即临界区间少形成离散方案STEP1; (3)对临界区间进行合并,从而得到离散方案STEP2; (4)对少数点区间进行合并,从而得到离散方案STEP3; (5)验证不一致度,调整STEP3,多次重复操作,获得最终离散切点集合。 图3-1 BMIC算法过程 3.4 基于云模式连续型属性离散化的算法 该算法是将云模型和粗糙集理论相结合后提出的一种新的连续型属性且无指导离散化的方法。这种方法离散化后得到的概念的边界是模糊的,并且能较好地保持原信息系统的不准确性,更符合一般人的思维习惯。(1)在连续型属性的定义域中找到合适的断点,从而形成不同的区间;(2)在得到的区间上产生期望Ex 、熵En并形成正态模糊数模型;(3)归并不同的正态模糊数模型,形成隶属云。其中 期望Ex:它反映相应的模糊概念的信息中心值; 熵En:它指隶属云的期望曲线的带宽; 超熵He:它反映隶属云的离散程度[10]。 3.5 人工鱼群算法 人工鱼群算法是一种随机搜索优化算法,它是基于模拟鱼群行为的。从构造单条鱼的底层行为开始做起,通过对鱼群中的各个个体的局部寻优,从而达到全局最优值在群体中突现的目的。人工鱼个体的自适应活动就是算法的进行,个体每一次活动就是算法的一次迭代。在算法中,人工鱼的个体状态可以用向量Xx1,x2,„,xn表示,其中,i 1,„,n为待寻优参数。设Y为目标函数的值,人工鱼所在当前位置的食物浓度用Y fX 表示。人工鱼个体之间的距离di-j||Xi-Xj||,用VisualScop e表示人工鱼的鱼的感知距离 即最大视野范围。人工鱼移动的步长用MoveStep来表示。拥挤度因子用δ表示。人工鱼包括觅食、聚群等两个行为。 (1)研究人工鱼的觅食行为。设X为人工鱼当前状态,在其感知范围内即di-jVisualScope随机选择一个新状态X,当该状态的食物浓度大于当前状态时,向该方向前进一步。反之,就重新随机选择一个状态X,进行是否满足前进条件判断。反复几次之后,结果若仍不满足前进的条件,就随机移动一步,即Xnext 其中,Xnext为下一步的位置,当前的随机状态为Xj,产生随机数序列Random()。 (2)人工鱼的聚群行为。聚群行为指鱼在游动过程中会自然地聚集成群,在其感知范围内即di-jVzsualScope探索其他的同伴数目Nf及中心位置Xi,其中Xij,就Yi/Nfδ*Yi,说明同伴中心地带有很多的食物而且中心地带不太拥挤,则朝伙伴的中心移动,反之执行觅食行为。 该算法的步骤如下: 步骤l设定鱼群算法中的各个参数值,设置人工鱼的初始状态,在属性最小值和最大值的区间内浮动,从而得到初始的分割区间; 步骤2在人工鱼群系统中输人第ii1,2,„,n个条件属性Ci与决策属性D,对人工鱼当前的状态进行区间离散化操作,再用粗集理论计算当前条件属性Ci和对决策属性D的支持度rCi,重复多次迭代找到rCi的最大稳定值; 步骤3若in,令ii+1,转步骤2,否则计算所有离散化结果的整体分类质量rc,若rc的值连续多次保持最大值不变则转步骤4,否则令i1,转步骤2继续进行新一轮寻优; 步骤4记录当前各人工鱼的状态,并根据当前状态来确定离散区间,通过利用粗糙集提取最简规则 [11]。 4 BMIC离散化实现 4.1 开发工具 Visual Studio.NET是由Microsoft开发,是该公司产品.NET平台下最为强大的开发工具,Visual Studio.NET提供了包括设计、编码、编译调试、数据库联接操作等基本功能,还为客户提供了基于开放架构的服务器组件开发平台、企业开发工具和应用程序重新发布工具以及性能评测报告等一系列的高级功能。无论是软件服务商,还是企业应用程序的部署与发布,Visual Studio.NET都可以提供近乎完美的解决方案。 4.1.1 整体功能 无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行,能够提供一个一致的面向对象的编程环境。 提供一个解决版本控制和软件部署冲突,使冲突最小化的代码执行环境。 提供一个检测包括由未知的或不完全受信任的第三方创建的代码,能够提高代码执行安全性的代码执行环境。 提供一个能够解释环境和消除脚本环境等性能问题的代码执行环境。 使开发人员在面对类型不相同的应用程序(比如基于c#的应用程序和基于java的应用程序)时,他的经验能够保持一致。 按照工业标准生成所有通信,以确保基于 Microsoft Visual Studio .net 的代码可与任何其他代码集成。 NET Framework现主要由以下几部分组成: 1五种正式的语言编译器C#,Visual Basic,C++,J#和Jscript脚本语言等。2框架类库Framework Class Library,FCL由很多相关互联的类库组成,支持Web应用程序、Web服务、Windows应用程序和数据访问等的开发。3公共语言运行库Common Language Runtime,CLR 是.NET Framework的基础,提供内存管理、远程处理和线程管理等核心服务,并且强调实施严格的类型安全,提高代码执行的安全性和可靠性。 4.1.2 组件构成 公共语言运行库和.NET Framework类库。公共语言运行库是Microsoft Visual Studio .Net Framework的基础。可以将运行库看作一个在执行时管理代码的代理,为系统提供内存管理、线程管理和远程处理等3部分核心服务,强制实施严格的类型安全,进而能够提高其他形式的代码的安全性和可靠性以及准确性。通常用CLR为基础运行的代码称为托管代码,非托管代码是不以CLR为基础运行的代码。 非托管组件可以承载.NET Framework,将公共语言运行库CLR加载到这些 组件的进程中,同时启动执行托管代码,进而创建一个软件环境,这个环境能够同时利用托管和非托管功能两个功能。Microsoft Visual Studio .Net Framework 不仅提供了多个运行库宿主,而且还能够支持第三方运行库的开发。 4.1.3 版本 Visual Studio .NET的版本有Visual Studio .NET2002、Visual Studio .NET2003、Microsoft Visual Studio 2005、Microsoft Visual Studio 2008、Visual Studio 2010等几个版本。 4.2 BMIC设计 4.2.1 运行界面 这里主要介绍了基于Visual Studio.NET的开发环境下BMIC算法的实现方法。在运行界面的代码模块中,首先引用System. Drawing 命名空间,它提供了对 GDI+ 基本图形功能的访问;其次引用了SystemponentModel命名空间,该命名空间提供用于实现组件和控件运行时和设计时行为的类。此命名空间包括用于实现属性和类型转换器、绑定到数据源以及授权组件的基类和接口;然后引用System. Data 命名空间,该命名空间提供对表示 ADO.NET 结构的类的访问。通过 ADO.NET 可以生成一些组件,用于有效管理多个数据源的数据;还有,引用System.Collections命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合;最后还引用了//.ms 命名空间,该命名空间包含用于创建基于Windows的应用程序的类,以充分利用 Microsoft Windows 操作系统中提供的丰富的用户界面功能。通过以上的命名空间,实现了对界面的基本设计。 运行界面如下图4-1: 图4-1 运行界面 其中按钮 browse是导入数据,按钮discrete是对导入的数据进行离散化 处理,按钮build tree是建立决策树操作。 4.2.2 运行结果 未进行离散化处理的数据如图4-2: 图4-2 未进行离散化处理的数据 进行离散化处理后的数据如图4-3: 图4-3 离散化后的结果 点击按钮build tree后,显示的结果如图4-4 图4-4 建立决策树 4.2.3 类 以下介绍本次毕业论文设计用到的几个类。 类名:Discrete 属性:arrayCuts,discrete,target,table 方法名 参数列表 方法说明 Sort attribute 根据属性对表进行排序 tAttribute table Discrete attribute 对属性进行离散处理 tAttribute table FindCuts attribute 找到切点 tAttribute table replace attribute tAttribute table ArrayCuts Minimize arrayCuts 切点合并 在Discrete的代码模块中,首先引用了System.IO命名空间,该命名空间包含了允许读写文件和数据流的类型以及提供基本文件和目录支持的类型;其次引用了System.Collections命名空间,它提供了包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合;再者引用了System.Data命名空间,该命名空间为类提供了对表示 ADO.NET 结构的类的访问。通过 ADO.NET 可以生成一些组件,用于有效管理多个数据源的数据;还有引用了SystemponentModel命名空间,它主要的功能是提供提供用于实现组件和控件运行时和设计时行为的类。此命名空间包括用于实现属性和类型转换器、绑定到数据源以及授权组件的基类和接口;最后引用了//.ms命名空间,该命名空间主要含用于创建基于Windows的应用程序的类,以充分利用 Microsoft Windows 操作系统中提供的丰富的用户界面功能。通过以上几种命名空间,来完成对类 Discrete算法的实现。 主要代码如下: using System; using System.IO ; using System.Collections; using System.Data; using SystemponentModel ; using //.ms; namespace C4._5 /// /// Discrete 的摘要说明。 /// public class Discrete private ArrayCuts arrayCutsnew ArrayCuts; private double[] discrete; private string[]target; public DataTable Table; public DiscreteAttribute attribute, Attribute tAttribute,DataTable table MessageBox.Show"another attribute:"; Tabletable; for int k0;ktAttribute.values .Length ;k++ System.Console .WriteLine tAttribute.values[k]; int //.nt; discretenew double[elementNum]; targetnew string[elementNum]; sortattribute,tAttribute,Table; FindCutsattribute,tAttribute,Table; arrayCutsMinimizeCutsarrayCuts; //for int k0;karrayCuts.Count;k++ // System.Console .WriteLine arrayCuts.CutPoints [k].CutValue.ToString +"Class:"+arrayCuts.CutPoints [k].CValue ; Tablereplaceattribute,tAttribute,arrayCuts,Table; private void sortAttribute attribute, Attribute tAttribute,DataTable table//根据属性对表进行排序 int k0; foreachDataRow row in table.Rows discrete[k]//.sestringrow[attribute.AttributeName],2; target[k] stringrow[tAttribute.AttributeName]; k++; double tempD; string tempT; for int i0;idiscrete.Length-1 ;i++ for int ji+1;jdiscrete.Length;j++ if discrete[i]discrete[j] tempDdiscrete[i]; discrete[i]discrete[j]; discrete[j]tempD; tempTtarget[i]; target[i]target[j]; target[j]tempT; /* 查看排序结果是否正确 FileStream fs1 new FileStream@"c:\sorta.txt", FileMode.Create , FileAccess.Write; StreamWriter m_streamWriter new StreamWriterfs1; for int i0;idiscrete.Length ;i++ m_streamWriter.WriteLine discrete[i].ToString +","+target[i]; m_streamWriter.Close ; */ // System.Console .WriteLine "elements of discrete:"+//.tring ; public DataTable replaceAttribute attribute,Attribute tAttribute,ArrayCuts arrayCuts,DataTable table foreachDataRow row in table.Rows for int i0;i arrayCuts.Count ;i++ if double.Parsestringrow[attribute.AttributeName]arrayCuts.CutPoints [i].CutValue row[attribute.AttributeName]arrayCuts.CutPoints [i].CutValue.ToString ; break; ////.teLine arrayCuts.Count -1; ////.teLine row[attribute.AttributeName ]+"last:"+arrayCuts.CutPoints [arrayCuts.Count -1].ToString ; if double.Parsestringrow[attribute.AttributeName ]arrayCuts.CutPoints [arrayCuts.Count -1].CutValue row[attribute.AttributeName]"biggest"; return table; private ArrayCuts MinimizeCutsArrayCuts arrayCuts //切点合并 ArrayCuts tempCutsnew ArrayCuts; Cut tempCut; //System.Console .WriteLine //.tring ; for int i1;iarrayCuts.Count ;i++ if arrayCuts.CutPoints[i].CValue!arrayCuts.CutPoints[i-1].CValue tempCutnew CutarrayCuts.CutPoints[i-1].CutValue ,arrayCuts.CutPoints[i].Count+ar rayCuts.CutPoints[i-1].Count,arrayCuts.CutPoints[i-1].CValue ; tempCuts.AddCut tempCut; for int i1;itempCuts.Count;i++ if tempCuts.CutPoints [i].Count 3 tempCuts.CutPoints[i-1].Count +tempCuts.CutPoints[i].Count; tempCuts.RemoveCuti; //样本数少的切点进行合并 arrayCutstempCuts; return arrayCuts; //System.Console .WriteLine //.tring ; /* for int i0;iarrayCuts.Count ;i++ System.Console .WriteLine arrayCuts.CutPoints [i].CutValue .ToString +"Class:"+arrayCuts.CutPoints [i].CValue +"count:"+arrayCuts.CutPoints[i].Count.ToString ; */ private void FindCutsAttribute attribute,Attribute tAttribute,DataTable table int total0; int[] cnumnew int[//.gth ]; forint i1;idiscrete.Length ;i++ ////.teLine row[attribute.AttributeName]+"C:"+row[tAttribute.AttributeName]; if discrete[i-1]discrete[i] if total1 && i1 Cut theCutnew Cutdiscrete[i-2],total,target[i-2]; arrayCuts.AddCut theCut; //System.Console .WriteLine "the cut before intervalCUt:"+ discrete[i-2].ToString + "total:" +total.ToString ; int itotal1; //itotal存此属性相同样本数 for int k0;//.gth;k++ if target[i-1]tAttribute.values[k] cnum[k]++; while discrete[i-1]discrete[i]
本文档为【连续数据的离散化研究毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_614050
暂无简介~
格式:doc
大小:56KB
软件:Word
页数:0
分类:工学
上传时间:2017-11-27
浏览量:28