收藏 分享(赏)

毕业设计(论文)-枣品质决策系统--决策树生成与果实评估.doc

上传人:QQ153893706 文档编号:2292757 上传时间:2018-09-09 格式:DOC 页数:25 大小:442KB
下载 相关 举报
毕业设计(论文)-枣品质决策系统--决策树生成与果实评估.doc_第1页
第1页 / 共25页
毕业设计(论文)-枣品质决策系统--决策树生成与果实评估.doc_第2页
第2页 / 共25页
毕业设计(论文)-枣品质决策系统--决策树生成与果实评估.doc_第3页
第3页 / 共25页
毕业设计(论文)-枣品质决策系统--决策树生成与果实评估.doc_第4页
第4页 / 共25页
毕业设计(论文)-枣品质决策系统--决策树生成与果实评估.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、河北农业大学本 科 毕 业 设 计题 目: 枣品质决策系统 -决策树生成与果实评估 学 院: 信息科学与技术学院 专业班级: 计算机科学与技术 0902 班 学 号: 学生姓名: 指导教师(职称):) 二一三 年 五 月 二十九 日摘要枣因其营养价值高,易种植,耐存活且在不同地域拥有不同特色而成为许多地方特别是山区高原致富之道,但由于技术方面的欠缺使得果农无法用专业知识去评估自己手中果实的品质和正确价值导向,由此带来一系列问题,信息消息的滞后导致农户盲目种植,产品积压,销售停滞。因此就要找到相关途径,知己之道,才能让枣农更快发展富裕起来。由此需求设计了枣品质决策系统 ,它是依托当前信息的网络化

2、、快速化,使用网络评估果实品质,给出相关建议等服务为前提的综合信息评估服务系统的设计。实现通过 Internet 互联网对专家和果农给出的信息数据的采集整理生成决策树,进行相关评估工作。通过枣品质决策系统进行果实评估给出建议,方便即果农专家进行相关工作,又减少成本。缩短果农与专家的距离。在此项目中选择了 JavaWeb 作为开发语言,用到了面向对象的开发思想和 mvc 设计模式的设计理念。在接口设计上,实现了数据封装和信息隐藏。关键字:枣品质评估、决策树分析、JavaWeb、mvc 模式、数据挖掘。AbstractDates because of its high nutritional va

3、lue, easy to grow, resistance to survive and in different regions have different characteristics and become rich in many places, especially in mountainous plateau, but due to the lack of technology make the fruit cannot use professional knowledge to evaluate the quality of their own hands the fruit

4、and the correct value guidance, leading to a series of problems, information messages delay lead to farmers planting blindly, product backlog, sales stalled. So will find relevant way, bosom friend, to get the most rich faster development. Thus demand “jujube quality decision system is designed, it

5、is relying on the current information network, rapidness, using the network evaluating fruit quality, and provide advice and other services as the prerequisite of comprehensive assessment information service system design. Implementation through the Internet Internet for experts and fruit give infor

6、mation data collection to generate the decision tree, related to the assessment work. Through the jujube quality decision-making system to evaluate fruit recommendations, namely fruit experts for a related work, and reduce costs. Shorten the distance of growers and experts.In this project we select

7、JavaWeb as a development language, use the object-oriented development thought and the design concept of the MVC design pattern. In the interface design, realized the data encapsulation and information hiding.Keywords: Jujube quality assessment, decision tree analysis, JavaWeb, MVC mode, data mining

8、.目录1.引言 11.1 背景和意义 .11.1.1 背景 11.1.2 意义 11.2 国内外的现状 11.3 本文的重点 .22.技术支持 32.1 开发工具和环境 .32.1.1 开发工具选择 .32.1.2 运行环境 .42.2 用 JDBC 连接数据库的方法 .42.3 决策树算法 .43.需求分析与概要设计 63.1 需求分析 .63.1.1 条件和限制 63.1.2 功能需求 .63.2 概要设计 .63.2.1 系统总体分析 63.2.2 按模块分总体设计 .73.2.3 按各模块间关系 .83.2.4 系统模块划分 .84.详细设计及实现 94.1 设计说明 .94.2 数据

9、结构设计 .94.2.1 数据结构 .94.3 决策流程 114.3.2 模块流程图 .124.4 决策树实现 .134.4.1 系统设计模式 .134.4.2 数据库信息获取方法 .134.4.3 系统拓展实现 144.4.4 接口的设计 154.4.5 后台包及设计 164.4.6 异常处理 .174.4.7 出现的问题以及解决方法 .175 结论 .185.1 技术特点 .185.2 缺点及不足 .185.3 系统扩展 .185.4 总结 .18致谢 19参考文献 201.引言本系统是面向专家和农户,基于中小型数据库数据挖掘工具。它基于语言开发,不但操作简单,界面友好,易于操作,实用性强

10、;同时还能够跨平台运行。1.1 背景和意义1.1.1 背景枣本身的功能价值赋予的,枣的补血、美容、保健、营养、抗癌、抗疲劳、镇静、护发、降脂、降糖、养生等等效果符合现代人追求的时尚要素国务院总理温家宝 3 月 5 日在十二届全国人大一次会议上作政府工作报告时提出,要促进农业稳定发展和农民持续增收。坚持把解决好“三农”问题作为各项工作的重中之重。党的十六大以来,党中央明确要把解决好“三农”问题放在全党工作重中之重的位置,着力统筹城乡经济社会发展,加快形成城乡发展一体化新格局。党的十八大从中国特色社会主义事业总体布局出发,推出了“促进工业化、信息化、城镇化、农业现代化同步发展” ,明确“城乡发展一

11、体化”是解决“三农”问题的根本途径。随着计算机技术和网络技术的迅速崛起,计算机日渐深刻的在改变着人们的生产生活方式。而互联网已日益成为收集提供信息的最佳渠道,并逐步进入科学种植决策领域。1.1.2 意义枣树的种植区域地理环境和人文环境特征赋予的,枣树的种植不仅仅有它的经济意义,更有重要的环境意义和社会价值,枣树种植的区域主要分布在我过干旱、半干旱、风沙荒漠化和土地盐碱化的区域,枣树的种植可以极大的改善这些区域的生态环境,符合人类与自然和谐相处的命题,同时这些区域主要为中国经济发展相对滞后的区域,是我国改善这些区域人民生活环境、提高他们生活水平,增加收入来源的重要抓手,对于缩小区域经济差异,促进

12、经济和谐发展有着重要意义。1.2 国内外的现状过去的二十年,传统信息随着应用领域增多以电子格式存储的数据在量上有了戏剧性的增长。数据的累积量已经在以指数性的速率递增。人们已经评估出世界上信息的数量每二十个月翻一番,并且数据库的数量与大小正在以更快的速度增长。诸如“物种属性“或远程移动设备等的电子数据采集设备的增长更加剧了可用数据的增加。如何有效地获1取和利用这些平时的采样数据,并且变数据为知识,是我们研究的主要课题。数据挖掘的发展历史是建立在相关学科发展的基础上的。随着数据库技术的发展及应用,人们积累的数据越来越多。激增的数据背后隐藏着许多重要的信息,简单的查询和统计已经无法满足商业的需求,需

13、要出现一种挖掘数据背后隐藏的知识的手段。决策树通过用数据库管理系统来存储数据,用机器学习的方法来分析数据,挖掘大量数据背后的知识,这两者的结合促成了数据库中的知识发现(KDD:Knowledge Discovery in Databases)的产生。数据挖掘(DM: Data Mining)是知识发现(KDD)最核心的部分。1998 年第四届知识发现与数据挖掘国际学术会议上不仅进行了学术讨论,并且有 30 多家软件公司展示了他们的数据挖掘软件产品,不少软件已在北美、欧洲等国得到应用。经历十多年的发展,数据挖掘已经成为一个自成体系的应用学科。数据挖掘应用的主要对象是海量数据,从基础的数据条件来看

14、,电信、金融机构和政府税务部门都已具备。所以数据挖掘技术兴起不久,特别是成熟的软件产品问世后,立刻就在在这些领域里得到了广泛的应用。比如说政府机关的税务部门,国家的宏观政策上已经在金税四期的工程里提到用数据挖掘的方法来解决目前困扰税务机关的纳税评估和稽查选案的两大问题,而且也有一部分地市作为带头人开始使用数据挖掘工具。作为决策支持系统的一个重要组成部分,数据挖掘已经越来越成为近年来国内外税务部门关注的焦点之一。在此,我们也可以借鉴一下国外税务机关使用数据挖掘的先进经验:1、Texas 州的税务稽查人员需要确保联邦税法在存在欺诈和不服从的纳税人也可以得到有效得执行。40 万个纳税人每年得特许税(

15、Franchise tax)和营业税征收额都在 1亿 9 千万美圆以上。采用数据挖掘方法,每年 Texas 州利用数据挖掘技术从未申报的税收中发现百万计的偷逃税款。2、美国华盛顿国家税务局通过建立数据仓库并进行相应的挖掘工作,把最先只能对100 个左右的公司进行稽查工作,通过数据挖掘进行稽查选案工作,大大提高了对稽查选案时的准确性和稽查额度,节约了稽查成本并使稽查成果大幅提高。虽然在我们探讨研究的同时还需要逐渐完善,但是数据挖掘作为一门学科正从原来的边缘学科转变成为一门成熟学科,同时,伴随着信息化技术的发展,数据挖掘的技术也逐渐趋于成熟,国外的专业杂志-麻省理工学院的科技评论去年提出未来 5

16、年对人类产生重大影响的 10 大新兴技术, “数据挖掘”位居第三。从以上数据挖掘发展的历史和未来的前景来看,数据挖掘技术现在已经处于一个相对成熟的阶段。这为我们查询和分析工具的设计提供了很好的技术支持。同时面向对象编程技术的应用,使得系统有了更加灵活的扩展性,从而使各个模块间的耦合性大大降低,提高了系统的聚合性。同时基于面向对象的设计模式和重构方法的应用,使得系统的维护和扩展变的更加容易。1.3 本文的重点叙述如何使用 MVC 的框架,用 ID3 算法实现决策树,并用实际数据进行评估。22.技术支持2.1 开发工具和环境通过 MVC 结构添加相关样本数据导入数据库,后台生成相应决策树,用户通过

17、前台确定相关的查询数据,通过决策树评估得到由该品种的品质等级。专家用户可以进行样本数据查看,增加和删除,也可以自己通过选择相应的属性建立决策树判断某些属性对决策结果的影响。2.1.1 开发工具选择当前开发此类工具的语言很多,比如:JAVA,VB,C+,NET在这些语言当中,要想开发一个功能完善、界面友好、移植性好、扩展性好的系统并不是所有语言都能满足的。首先看 VB 语言:VB 在用户界面开发方面有很大优势,比如:操作简单,可视化强。但是它没有脱离开面向过程的编程模式,可扩展行和维护性很差。而且不支持 B/S 模式。C+虽然既支持面向对象编程,同时又支持面向过程编程。然而面向对象部分结构复杂,

18、而且并不能支持 B/S 模式。.NET 架构不但支持面向对象编程,而且同时支持 B/S 模式和 C/S 模式,按说是系统选择的对象,然而不能实现跨平台运行导致的低移植性是它的致命缺点。最后,我们把选择了 java。Java 语言与其他语言相比有一下优点:1. 可移植性与结构中立结构中立,平台无关;对网络编程,单系统软件发布有用。2. 分布式对象可以在本地或远程系统中。 3. 安全性并不允许程序访问所有的计算机内存和磁盘空间。 4. 健壮性Java 便一起可以在编译时自行检测许多问题,而别的语言只有运行时才检测,Java 不支持指针算法,不会有不良的指针管理引起的内存泄露或者内存错误。5. 多线

19、程可以同时执行多个任务。 6. 动态性足够多的运行时类型信息,用于在运行时校验对象。这使得在一种安全有效的方式下动态的连接代码成为可能。在设计模式上选用 MVC 设计模式:当用户有请求提交时,所有请求都会交给 Servlet进行处理,然后由 Servlet 调用 JavaBean,并将 JavaBean 的操作结果通过RequestDispatcher 接口传递到 JSP 页面上。由于这些要显示的内容只是在一次请求-回应中有效,所以在 MVC 设计模式中,所有的属性传递都将使用 request 属性范围传递,3这样可以提升代码的操作性能。2.1.2 运行环境操作系统:Windows 系列,内存

20、 128M 以上,硬盘 1G 以上Java 虚拟机版本:jdk1.7.0目前系统可支持的数据库:Sql Server。可用浏览器:默认为 Ie 浏览器(支持 javascript 脚本) 。Office:使用 excel20032.2 用 JDBC 连接数据库的方法通过 java 可以有两种方式连接数据库:JDBC 和 ODBC,但是因为 ODBC 是一个 C 语言接口,所以 ODBC 在 Java 中直接使用不适当。因为从 Java 中来调用 C 代码在安全性,健壮性,实现的方便,可移植性等方面有许多不便。它使得 Java 在这些方面的许多优点得不到发挥。于是我们选择了 JDBC 与数据库连

21、接。Jdbc 是 Sun 提供的一套数据库编程接口 API 函数,由 Java 语言编写的类、界面组成。用写的程序能够自动地将 SQL 语句传送给相应的数据库管理系统。JDBC 连接数据库方法图 2-1:图 2-1:JDBC 连接数据库方法2.3 决策树算法采用 ID3 决策树算法造决策树的基本算法是贪心算法,它以自顶向下递归的各个击破方式构造决策树。一种著名的决策树算法是 ID3,算法的基本策略如下:创建一个节点。如果样本都在同一类,则算法停止,把该节点改成树叶节点,并用该类标记。4否则,选择一个能够最好的将训练集分类的属性,该属性作为该节点的测试属性。对测试属性中的每一个值,创建相应的一个

22、分支,并据此划分样本。使用同样的过程,自顶向下的递归,直到满足下面的三个条件中的一个时就停止递归。给定节点的所有样本都属于同一类。没有剩余的属性可以用来划分。分支没有样本。设 S 是 s 个数据样本的集合。假定类标号属性具有 m 个不同值,定义 m 个不同类Ci(i1,2,m) 。设 si 是类 Ci 中的样本数。对一个给定的样本分类所需要的期望信息由下式给出:其中 pi 是任意样本属于 Ci 的概率,并用 si/s 估计。设属性 A 具有 v 个不同值a1,a2,av 。可以用属性 A 将 S 划分为 v 个子集S1,S2,SV ;其中,Sj 包含 S 中这样一些样本,它们在 A 上具有值

23、aj。如果 A 选作测试属性(即最好的分裂属性) ,则这些子集对应于由包含集合 S 的节点生长出来的分枝。设 sij 是子集 Sj 中类 Ci 的样本数。根据由 A 划分成子集的熵或期望信息由下式给出:其中,是第 j 个子集的权,并且等于子集(即 A 值为 aj)中的样本个数除以 S 中的样本总数。熵值越小,子集划分的纯度越高。注意,对于给定的子集 Sj,其中, 是 Sj 中的样本属于类 Ci 的概率。在 A 上分枝将获得的编码信息是 )(,.()21AEsIGainm。Gain(A)称为信息增益,它是由于知道属性 A 的值而导致的熵的期望压缩。具有最高信息增益的属性选作给定集合 S 的测试属

24、性。创建一个节点,并以该属性标记,对属性),.(.)( 2112 mjjvj mjj sIsAEsmjj21)(log),.(2121 ijmijmjj psI)(log),.(2121 imimpIjisp5的每个值创建分枝,并据此划分样本。3.需求分析与概要设计3.1 需求分析3.1.1 条件和限制用户必须登录进入相关角色才能使用相关权限的功能,样本数据库默认必须至少有一个样本值。3.1.2 功能需求功能划分:(1) 用户增删改查,个人信息修改。(2) 样本数据的录入,导出,删除。(3) 显示样本数据,样本数据值与含义转换。(4) 样本数据生成相关决策树。(5) 输入相应属性通过决策树分析

25、评估品种级别。(6) 自定义属性决策树,进行属性影响力对比。3.2 概要设计3.2.1 系统总体分析总体分析如图 31:数据库 JavaBean ServletJsp,Javascript,AJAX图 31 系统总分析图63.2.2 按模块分总体设计枣品质决策系统基础模块决策树模块数据导入模块分词模块显示模块获取数据结构数据存储提供相关接口决策树生成品质评估决策树评估单条数据导入批量数据导入语句划分智能加入新词接收用户操作显示评估信息显示相关数据图 3273.2.3 按各模块间关系3.2.4 系统模块划分模块一,决策树生成模块。 (由张金磊完成)负责用 JDBC 桥接数据库,使用 ID3 算法

26、生成 ID3 型决策树,根据输入属性完成品质评估,样本数据管理,属性评估。前台页面设计。数据库表设计。用户增删改查。模块二,分词模块,显示模块。 (由臧进进完成)负责根据输入的对于果实的通俗描述语句,分出相应属性词语,并将新描述词填入词库。模块三,数据导入模块,基础模块。 (由富兆慧完成)负责完成单条数据录入数据和用 excel 表批量导入数据库。接收用户操作显示评估信息显示相关数据语句划分智能填词决策树生成品质评估决策树评估批量数据导入单条数据导入获取数据结构数据存储提供相关接口显示模块分词模块决策树模块数据导入模块基础模块图 33 各模块间关系84.详细设计及实现4.1 设计说明由于系统分

27、三个模块,由我来负责决策树生成模块因此在系统详细设计部分,由我来完成决策树生成模块的设计和开发。4.2 数据结构设计由于数据库内部结构复杂并且关系紧密,因此设计一个合理的数据结构,用来存储数据库内部表与表、字段与表、字段与字段之间的关系和信息是很有必要的。4.2.1 数据结构根据系统面对用户,数据库设计以下结构:数据库信息结构:数据库名称(fruit)数据库表信息结构:user 表create table users (user_id int identity(1,1) not null primary key,user_name varchar(16)not null,password va

28、rchar(20)not null,email varchar(40),phone varchar(20),remarks varchar(50),limit int not null check(limit=0 and limit =0 and resultctreecreattree();id3treecreattree()id3countGaincountGain()countGainColcountGain()42.工厂方法类关系图144.4.4 接口的设计要想实现模块与模块之间良好的通信, 设计一个合理安全的接口是必要的。这个接口既要设计的简单,又要屏蔽到程序实现的详细信息.从本模块

29、功能上分析,这个模块主要功能是为其他模块提供数据库结构信息的,因此,它只能为其他模块提供数据库结构信息,而不能提供修改数据库结构的接口. 同时,考虑到系统内部类之间关系的复杂和繁琐,在设计这个接口是我们采取了设计模式的外观模式。通过创建一个外观类,其他模块可以在不了解内部信息的基础上调用模块的接口.添加工厂模式之前如图 4-3:对象模块外模块内图 4-3添加工厂模式之后如图 4-4:15treeFacade对象模块外模块内图 4-44.4.5 后台包及设计Bean 包(存放基础计算代码):countEnd 类:计算决策树节点结果是否唯一。int cEnd(float list)返回 1 为结束

30、节点,返回 0 为非结束节点。getEndResult 类:通过给出的属性,使用决策树评估结果。public String getEResult(float inlist)。输入为属性集合数组,返回为评估结果Bean.id3 包(存放生成 ID3 决策树时需要的相关计算类):id3countGain 类:决策树 ID3 算法,计算最高信息增益列。public int countGain(float list,float weightlist)输入权值表,样本列表。返回当前计算拥有最高熵值的列。cGain 类:计算具体属性的熵值。public float spGain(float list,in

31、t p,double I,float weightlist)输入样本表,列号,权值表,总熵值,输出列号所选熵值。countResult 类:统计结果种类和个数。public float cResult(float list)输入样本表,输出该样本的所有的结果及其各样的个数。Bean.tree 包(存放生成决策树主算法):id3tree 类:构造 id3 决策树。public node creattree()返回值为生成好的决策树头结点。id3Pritree 类:构造自定义属性的 id3 决策树。public node creatpritree(float bj)输入自定义属性表,输出生成好的自

32、定义决策树头结点。16Dao 包(数据库链接基础包):linkData 类:数据库链接基础类,所有链接数据库的都调用此类链接数据库。obtaiName 类:获取样本数据表头名字。obtainlist 类:获取样本数据,不包括数据表中的 id 号。obtainWeight 类:获取权值表。operatefruitData 类:操作样本数据表,进行数据增删。getfruitData 类:获取样本数据全部信息。Db 包(存放实体类):node 类:存放决策树节点。slist 类:存放样本表所有相关信息。user 类:存放用户属性信息。4.4.6 异常处理当用户非法操作时(不输入用户名密码直接想进入相

33、关页面或者进入不属于自己所有权限的页面时) ,页面会直接调到登录页面。在后台当在决策树生成,果实评估出现异常或者对于用户操作出现时,异常状态往上传到 servlet,跳转的显示提示异常页面。4.4.7 出现的问题以及解决方法问题 1:在前台传中文值到后台时,servlet 后台正常接收,但接收后测试时出现乱码。解决方法:这是编码不同的结果,在接收之前通过request.setCharacterEncoding(“gb2312“) ;这条语句设置编码。设置后正常接收。问题 2:在界面显示时,偶尔会出现中文乱码现象。解决方法:这往往是界面间编码差异造成,通过 servlet 设置过滤器,对所有页面

34、,进行统一编码设置,异常消除。问题 3:Sql 数据库存储由前台传入数据时,后面多加很多空格,除非直接操作数据库否则无法消除。解决方法: 这是数据库设计问题,不考虑存储解决,在数据取出时,用相关语句除去前后空格。175 结论5.1 技术特点本系统界面统一友好,实用性强,安全;代码清晰,易懂;安装方便,可移植性和扩展性好。5.2 缺点及不足由于系统规模较大,时间不足,某些功能模块没有完整实现,有些异常错误没有及时发现。5.3 系统扩展好的系统必须支持良好的拓展,此系统不仅可以操作评估果树样本,也可以应用到其他品种;系统默认生成决策树的算法是 ID3 算法,还可以调用接口设计其他决策树算法,或调用

35、相关接口,设计其他评估方式。5.4 总结通过此次毕业设计,自己自学了 Struts1 的 mvc 结构,了解了相关配置知识,并在操作处理过程中通过所遇到的各种问题及解决加深了自己对相关结构认识。通过与团队人员的合作加深了对如何协作、如何交流、如何制定接口为别人使用、又如何保证自己模块的独立和安全的认识。这些都是系统开发过程中十分重要的。18致谢在系统的分析,设计,开发过程中得到了孙晨霞老师的全面指导和大力帮助,在此表示感谢。同时特别感谢小组的臧进进和富兆慧同学,臧进进同学曾在我的数据结构设计时为我提供了很好的设计建议,富兆慧同学在我接口设计方面提供了较大的帮助。19参考文献1BruceEckel.Java 编程思想. 机械工业出版社, 2007 年 6 月2刘中兵 Java 研究室Java 高手真经.电子工业出版社,2009 年 3 月3徐孝凯数据结构教程 (Java 语言描述). 清华大学出版社,2010 年 8 月4Thomas A.PowellHTML5&CSS.清华大学出版社,2011 年 6 月5耿祥义,张跃平.JSP 实用教程. 清华大学出版社,2003 年 5 月 1 日6 阎宏编著, java 与模式 ,电子工业出版社,200220

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报