




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据仓库与数据挖掘技术课程设计设计题目:基于Java的贝叶斯算法计算机与数据科学学院2019年6月20日数据仓库与数据挖掘技术课稈设计报告目录目录TOC o 1-5 h z HYPERLINK l bookmark2 引言1 HYPERLINK l bookmark4 概述2 HYPERLINK l bookmark6 项目背景2 HYPERLINK l bookmark8 设计目的2开发环境3 HYPERLINK l bookmark10 模型构建4 HYPERLINK l bookmark12 算法4 HYPERLINK l bookmark14 贝叶斯算法原理4 HYPERLINK l
2、bookmark16 贝叶斯定理4 HYPERLINK l bookmark18 贝叶斯法则4 HYPERLINK l bookmark20 先验概率和后验概率4 HYPERLINK l bookmark22 最大后验概率4 HYPERLINK l bookmark24 朴素贝叶斯分类实现5 HYPERLINK l bookmark26 朴素贝叶斯分类的定义5 HYPERLINK l bookmark28 朴素贝叶斯分类阶段5 HYPERLINK l bookmark30 分析与设计8 HYPERLINK l bookmark32 数据库设计8 HYPERLINK l bookmark34 数
3、据库代码设计8数据库页面图9 HYPERLINK l bookmark36 结构设计10 HYPERLINK l bookmark38 代码设计10 HYPERLINK l bookmark40 FetchData类10 HYPERLINK l bookmark42 Bayes类10Main13调试与运行15 HYPERLINK l bookmark44 总结16 HYPERLINK l bookmark46 致谢17 HYPERLINK l bookmark48 参考文献18数据仓库与数据挖掘技术课程设计报告引言 引言本文重点研究了数据挖掘中的贝叶斯方法,它具有坚实的数学理论基础,并能综合先
4、验信息和数据样本信息,成为数据挖掘和机器学习研究的热点之一。朴素贝叶斯分类器是一种简单而有效的概率分类方法,然而其属性独立性假设在现实世界中多数不能成立。为了改进该方法的分类性能,近几年已有大量研究成果,许多学者都致力于构建能反映属性之间依赖关系的贝叶斯分类模型。随着知识社会的到来及“互联网+”行动计划的制定,互联网上的海量数据逐渐被有效地收集和整合。国内的一些互联网企业在针对用户的个性化服务上进行了探索,如豆瓣网提供了推荐书籍、音乐等服务,百度旅游在假期提供推荐旅游路线,自动匹配低价机票和酒店等服务。这些创新取得了很好的效果,大大提高了企业的竞争力。目前的智能个人助理软件都没有针对特定群体进
5、行优化,而是面向所有用户进行开发。这样的软件涉及的信息过于分散,缺乏解决实际问题的能力。此外,由于朴素贝叶斯方法在预测和分类中被广泛应用,如在预测项目交付率、互联网流量分类、云检测和估计算法等。因此本文提出了针对校园学生信息特征进行推荐的基于朴素贝叶斯方法的智能推荐算法研究,判断一个人是否是一名学生,从而提高学校安保工作。数据仓库与数据挖掘技术课程设计报告概述 1概述项目背景学校安全工作是全社会安全工作的一个十分重要的组成部分。它直接关系到青少年学生能否安全、建康地成长,关系到千千万万个家庭的幸福安宁和社会稳定。世界卫生组织发布报告,在世界大多数国家中,意外伤害是儿童青少年致伤、致残的最主要原
6、因。在我国,学龄儿童的意外伤害多数发生学校和上学的途中;而在不同年龄的青少年中,又以15-19岁意外伤害的死亡率最高。意外伤害不仅造成了大量儿童的永久性残疾和早亡,消耗巨大的医疗费用,而且削弱了国民生产力。不仅给孩子及家庭带来痛苦和不幸,而且给社会、政府及学校造成巨大的负担和损失。校园安全问题已成为社会各界关注的热点问题,保护好每一个孩子,使发生在他们身上的意外事故减少到最低限度,已成为中小学教育和管理的重要内容。此时,学校的警卫处就显得尤其重要,怎么样才能保证进出的都是学生而不是混入学校的不良青年?一个个查看学生证等实在不是一个明智的选择,而基于Java实现的贝叶斯算法通过一些特征便可以初步
7、预测出他是否是一名学生,极大地减少警卫处工作量,且一定程度上保证了学校学生安全。设计目的在数据仓库和数据挖掘应用中,分类是一种非常重要的方法,分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型,即我们通常所说的分类器(Clasifer)。该函数或模型能够把数据集合中的数据记录映射到给定类别中的某一个值,从而可以应用于数据预测。目前,分类的主要算法有贝叶斯算法、决策树算法、规则推导、人工神经网络、最近邻算法、支持向量机等等。这些算法在许多现实数据集合上具有较好的预测精度,其中朴素贝叶斯算法具有良好的可解释性等,在实践中的应用最为广泛。本学期学习数据仓库与数据挖掘技术,数据仓库是一
8、个面向主题的(SubjectOriented)、集成的(Integrate)、相对稳定的(NonVolatile)、反映历史变化(TimeVariant)的数据集合,用于支持管理决策。企业建立数据仓库是为了填补现有数据存储形式已经不能满足信息分析的须要。数据仓库理论中的一个核心理念就是:事务型数据和决策支持型数据的处理性能不同。而数据挖掘(DataMining)就是从大量的、不全然的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在当中的、人们事先不知道的、但又是潜在实用的信息和知识的过程。在数据挖掘中,对数据预处理所得到的数据进行挖掘,大量的算法应用而生。为了加强对算法的应用与理解,我们选
9、择了基于java实现贝叶斯算法。1.3开发环境表1.1开发环境开发环境生产环境操作系统Windows10 x64Windows10 x64开发工具Eclipse数据库MySQL8.0MySQL8.0JDK版本JDK1.8.0JDK1.8.0数据仓库与数据挖掘技术课程设计报告朴素贝叶斯分类实现数据仓库与数据挖掘技术课程设计报告模型构建 2模型构建算法朴素贝叶斯算法是基于统计理论的方法,它能够预测所属类别的概率。简单朴素贝叶斯分类器假设一个指定类别中各属性的取值是相互独立的。这一假设称为给定类别条件下的独立性(ClassConditionalIndependence)假设,它可以有效减少在构造分类
10、器时所需要的计算量。贝叶斯算法原理贝叶斯定理:表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率,其基本求解公式为::.;|.八;”二:贝叶斯定理打通了从P(A|B)获得P(B|A)的道路。直接给出贝叶斯定理:贝叶斯法则机器学习的任务:在给定训练数据D时,确定假设空间H中的最佳假设。最佳假设:一种方法是把它定义为在给定数据D以及H中不同假设的先验概率的有关知识下的最可能假设。贝叶斯理论提供了一种计算假设概率的方法,基于假设的先验概率、给定假设下观察到不同数据的概率以及观察到的数据本身。先验概率和后验概率用P(h)表示在没有训练数据前假设h拥有的初始概率。P(h)被称
11、为h的先验概率。先验概率反映了关于h是一正确假设的机会的背景知识如果没有这一先验知识,可以简单地将每一候选假设赋予相同的先验概率。类似地,P(D)表示训练数据D的先验概率,P(D|h)表示假设h成立时D的概率。机器学习中,我们关心的是P(h|D),即给定D时h的成立的概率,称为h的后验概率。最大后验概率学习器在候选假设集合H中寻找给定数据D时可能性最大的假设h,h被称为极大后验假设(MAP)确定MAP的方法是用贝叶斯公式计算每个候选假设的后验概率,计算式如下:h_map二argmaxP(h|D)二argmax(P(D|h)*P(h)/P(D)二argmaxP(D|h)*p(h)(h属于集合H)
12、3朴素贝叶斯分类实现朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。朴素贝叶斯分类的定义1、设;为一个待分类项,而每个a为x的一个特征属性。2、有类别集合-。3、计算八/,:-:o4、如果*;:;,贝,匚1:。那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:1、找到一个已知分类的待分类项集合,这个集合叫做训练样本集。2、统计得到在各类别下各个特征属性的条件概率估计。3、如果各个特征属性是条件独立的,贝根据
13、贝叶斯定理有如下推导:因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:mP(咖i)P(询=戸仙|削)巩创血)巩兀闽巩區)=P(y-i)血)“=1朴素贝叶斯分类阶段第一阶段:准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质
14、量决定。第二阶段:分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。第三阶段:应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。対每个类别计算P(yd対每个持征属性计算所有划分的釧牛概率图3.1朴素贝叶斯分类阶段流程图分窑K器训练阶段以P(xy】)P(yd最大项作为x所属类数据仓库与数据挖掘技术
15、课程设计报告分析与设计 4分析与设计数据库设计数据库代码设计/创建数据库createdatabasebayes;USEbayes;/创建数据表CREATETABLEdata(namevarchar(255)DEFAULTNULL,sexvarchar(255)DEFAULTNULL,watchvarchar(255)DEFAULTNULL,smokingvarchar(255)DEFAULTNULL,wearglassesvarchar(255)DEFAULTNULL,ridebikevarchar(255)DEFAULTNULL,isStudentvarchar(255)DEFAULTNUL
16、L);/插入数据INSERTINTOdataVALUES(zhangsan,wom,yes,yes,no,yes,no),(zhangsi,man,no,yes,no,yes,no),(zhangwu,wom,yes,no,no,yes,yes),(wangsan,man,no,no,yes,yes,yes),(wangsi,wom,no,no,yes,yes,yes),(wangwu,man,yes,yes,no,yes,no),(1,wom,no,yes,no,no,yes),(2,man,no,no,no,yes,yes),(3,wom,yes,no,no,yes,no),(4,man,
17、yes,no,yes,no,no),(5,wom,no,no,yes,yes,yes),(6,man,yes,no,yes,no,yes),(7,man,no,no,yes,yes,yes),(8,man,yes,yes,no,yes,no),(9,man,no,no,yes,no,yes);4.1.2数据库页面图createdatabasebayesjUSEbsyesj亨CREATETABLEdata(namevarchar(255)DEfAULTNULLsexvarchar(2SS)DEFAULTNULL,watchvarchar255)DEFAULTNULL,srrokingvarcha
18、r(255)DEFAULTNULLjwergl&sesvsrthsr(25$)DEFAULTNULLridebikevarchar(255)DEFAULTNULL,isStudentvarchar(255)DEFAULTNULL1116ISINSERTINTOflSwom,Ci/fnan,(h3Mwarn11(4d,man1,6!trandataVALUES(1hangsan,wrh,yesjyesh1no1,_|i!_,=_.一一f_iiv图4.1创建数据库no,nc,no,yes、yes,yesjno,1noMyes1no,ikyesjno,yesjno,no,nojyesyes*jyes
19、jjnoyestrno11hyesrnc|h/es)丫nojnojyes,ves,yesryes*jyesjMrro*yes*t*nor20C9J/an,1nobJndyes,*noj1yes*);wangsanmannonoyesyesyeswangsiwoolnonoyesyesyeswangvvumanysyesnoyesno1wornnononoyes2mannononoyesyes3wornvesnonoyesno斗manyesnoyesnono5WOfllnonoyesyesyes6manyesnoyesnoyes7mannonoyesyesves3,mand3tdIx图4.2创建
20、数据表4.2结构设计图4.3代码结构设计流程代码设计FetchData类packagebys;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;publicclassFetchData/获得数据库数据publicArrayListArrayListfetch_traindata()/定义获取训练数据的方法ArrayListArra
21、yListdataSet=newArrayListArrayList();/定义动态数组获取训练数据并返回Connectionconn;/创建于数据库的连接的变量Stringdriver=com.mysql.jdbc.Driver;/驱动程序名Stringurl=jdbc:mysql:/localhost:3306/bayes?useUnicode=true&characterEncoding=utf8;数据仓库与数据挖掘技术课程设计报告分析与设计数据仓库与数据挖掘技术课程设计报告分析与设计 /指定要访问的数据库Stringuser=root;/用户名Stringpassword=123456
22、;/密码tryClass.forName(driver);用class加载驱动程序conn=DriverManager.getConnection(url,user,password);/连接数据库if(!conn.isClosed()System.out.println(“已成功连接到数据库!);/如果连接成功则输出Statementstatement=conncreateStatement();用statement来执行sql语句Stringsql=select*fromdata;这是sql语句中的査询某个表ResultSetrs=statementexecuteQuery(sql);/e
23、xecuteQuery用于返回select的结果Stringstr=null;/定义中间量while(rsnext()/一直读到最后一条ArrayLists=newArrayList();/定义获取每条数据的动态数组str=rsgetString(sex);/分别读取相应栏位的信息加入到可变长数组中sadd(str);str=rsgetString(watch);sadd(str);str=rsgetString(smoking);sadd(str);str=rsgetString(wearglasses);sadd(str);str=rsgetString(ridebike);sadd(st
24、r);str=rsgetString(isStudent);sadd(str);dataSetadd(s);将每条信息加入到dataSet/Systemoutprintln(dataSet);/输出中间结果调试rsclose();connclose();/关闭连接catch(ClassNotFoundExceptione)/catch不同的错误信息,并报错System.outprintln(找不到驱动);/驱动错误eprintStackTrace();catch(SQLExceptione)/返回数据库代码错误eprintStackTrace();catch(Exceptione)eprint
25、Stac灯race();连接失败finallySystem.outprintln(数据库训练数据读取成功!);returndataSet;Bayes类packagebys;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Map;publicclassBayespublicMapString,ArrayListArrayListclassify(ArrayListArrayListdataSet)/输入训练数据dataSet并根据是否为学生进行分类MapString,ArrayListArrayListmap=n
26、ewHashMapString,ArrayListArrayList();/定义map用于下面将key值与value放入intnum=dataSet.size();for(inti=0;inum;i+)/遍历所有数据项ArrayListStringY=dataSet.get(i);/将第i个训练样本s的信息取出/System.out.println(Y);StringClass=Y.get(Y.size()-1).toString();/输出Y最后一列的值,是yes|no,是否为学生/System.out.println(Y.size();if(map.containsKey(Class)/将
27、map中是yes|no是否为学生添加各特征map.get(Class).add(Y);else/若没有这个类就新建一个可变长数组记录并加入mapArrayListArrayListnlist=newArrayListArrayList();nlist.add(Y);map.put(Class,nlist);returnmap;/map的key值为yes或nopublicdoubleb_divi_a(ArrayListArrayListdata,Stringvalue,intindex)/通过输入的定义b_divi_a方法实现计算各特征出现的概率,/目标值(value)相应的列值(index)i
28、ntsum=0;/sum用于记录相同特征出现的频数intnum=data.size();for(inti=0;inum;i+)ArrayListY=data.get(i);if(Y.get(index).equals(value)sum+;/相同则计数return(double)sum/num;/返回频率,用频率代替概率/计算分类后每个类对应的样本中某个特征出现的概率publicStringbys_Main(ArrayListArrayListdataSet,ArrayListtestSet)/通过testSet引用FetchData中拆分字符串的方法MapString,ArrayListAr
29、rayListdoc=this.classify(dataSet);/用class中的分类函数构造映射Objectclasses=doc.keySet().toArray();/把map中所有的key取出来(即所有类别yes|no学生)doubleMax_Value=0.0;/最大的概率intMax_Class=-1;/用于记录最大类的编号for(inti=0;idoc.size();i+)/对每一个类分别计算,本程序只有两个类Stringc=classesi.toString();/将类提取出ArrayListArrayListy=doc.get(c);/提取该类对应的数据列表/System
30、.out.println(y);doubleprob=(double)y.size()/dataSet.size();/计算概率p(A|B)for(intj=0;jMax_Value)/更新分子最大概率Max_Value=prob;Max_Class=i;/i=1为yes,i=0为noreturnclassesMax_Class.toString();/返回是不是学生yes|no,Max_Class=i;i=0,返回no,i=1,返回yes4.3.3Mainpackagebys;importjava.io.BufferedInputStream;importjava.io.IOExceptio
31、n;importjava.util.ArrayList;importjava.util.Scanner;importjava.util.StringTokenizer;publicclassMainpublicstaticArrayListread_testdata(Stringstr)throwsIOException/拆分用户输入的字符串ArrayListtestdata=newArrayList();/定义一个动态数组StringTokenizertokenizer=newStringTokenizer(str);/当StringTokenizer只有一个参数时,分隔符为默认值,可通过空
32、格进行字符串的拆分while(tokenizer.hasMoreTokens()testdata.add(tokenizer.nextToken();/将每个拆分出的字符串加入到testdata中returntestdata;/返回testdata/主函数,读取数据库,并读入待判定数据,输出结果publicstaticvoidmain(Stringargs)FetchDataFdata=newFetchData();/java对函数的调用要先声明相应的对象再调用Bayesbys=newBayes();ArrayListArrayListdataSet=null;/训练数据列表ArrayList
33、testSet=null;/测试数据trySystem.out.println(从数据库读入训练数据:”);dataSet=Fdata.fetch_traindata();/读取训练数据集合System.out.println(请输入测试数据:sexwatchsmokingwearglassesridebike);Scannercin=newScanner(newBufferedInputStream(System.in);/从标准输入输出中读取测试数据while(cin.hasNext()/进行数据读取Stringstr=cin.nextLine();/先读入一行testSet=read_t
34、estdata(str);/将这一行进行字符串分隔解析后返回可变长数组类型/System.out.println(testSet);/输出中间结果Stringans=bys.bys_Main(dataSet,testSet);/调用贝叶斯分类器if(ans.equals(yes)System.out.println(他|她可能是个学生);/输出结果elseSystem.out.println(他|她不太像是个学生);cin.close();catch(IOExceptione)/处理异常e.printStackTrace();图4.4每条信息加入到dataSet中间结果调试Main(1)JavaApplicationC:ProgramFilesJavajdk1.8.0121binjavaw.exe(2019年6月20日下午9:25:30)已咸功连接到数据库!数据库训练数据读取成功!请输入测试数据:sexwatchsmokingwearglassesridebikemanyesyesnonoP(no|test)*P(test)=0.020576P(yes|test)*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 架桥安全协议书
- 查询公司协议书
- 2025年高层建筑设计试题及答案
- 2025年会计专业招考试题及答案
- 标书提成协议书
- 校内午托协议书
- 校车联营协议书
- 样品试制协议书
- 桌子合作协议书
- 档案协议书范本
- 1 《子路 曾皙 冉有 公西华侍坐》公开课一等奖创新教案统编版高中语文必修下册
- 小学生医疗卫生小知识
- 胆总管结石术后个案护理
- DB11∕T380-2024桥面防水工程技术规程
- 农产品质量安全保障合同
- 妊娠合并重度肺动脉高压死亡病例分析
- 员工内部冲突管理
- 冰粉制作流程
- 2025年浙能集团招聘笔试参考题库含答案解析
- 2025年人民日报社招聘笔试参考题库含答案解析
- 2024-2025学年人教新目标英语八年级下册期末综合检测卷(含答案)
评论
0/150
提交评论