


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据挖掘课程设计报告题目关联规则挖掘系统姓 名:XXXXXX班级:计算机0901学 号:XXXXXXXXXXX2013 年 6 月 19 日一、设计目的该程序实现了对简单数据进行频繁项集挖掘的功能,主要使用Apriori算法,即使用候选产生发现频繁项集。通过这次编程增强编程能力。二、设计要求实现数据挖掘的关联规则,能够挖掘数据之间的关联信息,能够读取文件中的 数据,能够保存分析结果。界面友好。三、设计实现流程图:Liifi罐舟卞境lit*BLrBv比命“ Z 11'| J 1 4k喘/P*! G*四、实现环境操作系统WindowsXP开发环境Netbeans7.1运行环境 Window
2、s系列操作系统(装有Java运行时环境)五、实现结果完整输出结果:run :顾客1 商品A 商品B 商品C 顾客2 商品A 商品B 顾客3 商品B 商品C 顾客4 商品C 商品B 商品1*候选集1:商品A商品B商品C频繁集1:商品A商品B商品C*候选集2:商品A,商品B商品A,商品C商品B,商品C频繁集2:商品A,商品B商品B,商品C*候选集3:商品A,商品B,商品C频繁集3:*最大频繁集:商品A,商品B商品B,商品C*关联规则:商品 A=商品B1.0商品 B=商品A0.6666666666666666商品 B=商品C0.6666666666666666商品 C=商品B1.0六、设计小结这学期
3、学的数据挖掘课程丰富了我的知识面,让我看到了信息技术 的巨大生命力和前景。数据挖掘涉及多学科技术的集成,包括数据库和数据仓库 技术、统计学、机器学习、高性能计算、模式识别、神经网络、数据可视化、信 息检索等技术。通过数据挖掘,可以从数据库提取有趣的知识、规律或高层信息, 并可以从不同角度观察或浏览它们, 发现的知识可以用于做决策、 过程控制、信 息管理、查询处理。利用数据挖掘技术可以帮助获得决策所需的多种知识。在许多情况下,用户并不知道数据存在哪些有价值的信息知识,因此对于一个数据挖掘系统而言,它应该能够同时搜索发现多种模式的知识, 以满足用户的期望和实 际需要。此外数据挖掘系统还应能够挖掘出
4、多种层次(抽象水平)的模式知识。 数据挖掘系统还应容许用户指导挖掘搜索有价值的模式知识。通过这次实践,我对数据挖掘技术有了一个整体的认识。同样在编写程序的时 候也遇到了这样或那样的问题。但在老师及同学们的帮助下,艰难的完成了这个 系统。这让我对数据挖掘技术以后的深入学习打下了良好的基础。同时我的编程能力进一步提高,Java方面的实战经验进一步丰富。优秀的设计要付诸实践, 用户需要的是真真实实的产品,知识转化为产品,才能体现它的价值。附录:主要代码1、APPF.Java/* To cha nge this template, choose Tools | Templates* and open
5、the template in the editor.*/package datam ining;* author Admi ni strator*/public class APPF exte nds javax.sw in g.JFrame /* Creates new form APPF*/public APPF() in itComp onen ts();This method is called from within the con structor to in itialize the form.WARNING: Do NOT modify this code. The cont
6、en t of this method isalways* regenerated by the Form Editor.*/SuppressWar nin gs(" un checked")/ veditor-fold defaultstate="collapsed" desc="Ge nerated Code">private void in itComp onen ts() jScrollPa ne1 = new javax.sw in g.JScrollPa ne(); jTablel = new javax.swi n
7、g.J Table();jLabell = new javax.swi ng.J Label(); jTextFieldl = new javax.sw in g.JTextField();jLabel2 = new javax.sw in g.JLabel(); jTextField2 = new javax.sw in g.JTextField();jLabel3 = new javax.sw in g.JLabel(); jTextField3 = new javax.sw in g.JTextField();jButt on1 = new javax.swi ng.J Butt on(
8、); jScrollPa ne2 = new javax.sw in g.JScrollPa ne(); jTextAreal = new javax.sw in g.JTextArea();jLabel4 = new javax.sw in g.JLabel();jLabel5 = new javax.sw in g.JLabel();setDefaultCloseOperati on( javax.swi ng.Wi ndowC on sta n ts.EXIT_ON_CLOSE);new Object n ull, null.n ull, null,n ull, null,n ull,
9、null,n ull, null,n ull, null,n ull, null,n ull, null,n ull, null,null, null,new String "序列","项目");jScrollPa nel.setViewportView(jTablel);jLabel1.setText("支持度:");jLabel3.setText("挖掘深度:");jButton1.setText(”开始分析");evt)jButt on 1Act ion Performed(evt););jText
10、Areal.setColum ns(20);jTextArea1.setRows(5);jScrollPa ne2.setViewportView(jTextArea1);(”新宋体",0, 36); / NOI18NjLabel4.setText("数据挖掘");jLabel5.setText("置信度:");javax.sw in g.GroupLayoutgetC onten tPa ne().setLayout(layout);layout.setHorizo ntalGroup(layout=newjavax.swi ng.Group
11、Layout(getCo nten tPa ne();layout.createParallelGrou p(javax.sw in g.GroupLayout .Alig nmen t.LEADING) .addGroup(layout.createSeque ntialGroup().addG ap(33, 33, 33).addGroup(layout.createParallelGroup(javax.swi ng.GroupLayout.Alig nmen t.LEADING).addComp onen t(jScrollPa ne2)ING,layout.createSeque n
12、tialGroup().addGroup(layout.createParallelGroup(javax.sw.LEADING, false).addGroup(layout.createSeque ntialGroup().addComp onen t(jLabel1).addPreferredGap(javax.swi ng丄 ayoutStyle.Comp onen tPlaceme nt.RELATED,EFAULT_SIZE,Short.MAX_VALUE).addComp onen t(jTextField1,REFERRED_SIZE,67,REFERRED_SIZE)nt.T
13、RAILING,layout.createSeque ntialGroup().addComp onen t(jLabel3).addG ap(41,41,41).addComp onen t(jTextField3,REFERRED_SIZE,67,REFERRED_SIZE)nt.TRAILING,layout.createSeque ntialGr oup().addComp onen t(jLabel5).addPreferredGap(javax.swi ng丄 ayoutStyle.Comp onen tPlaceme nt.RELATED,EFAULT_SIZE,Short.MA
14、X_VALUE).addGroup(layout.createParallelGroup(lig nmen t.LEADING) .addComp onen t(jLabel2,lig nmen t.TRAILING).addComp onen t(jTextField2,.addPreferredGap(javax.swi ng丄 ayoutStyle.Componen tPlaceme nt.RELATED,40, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.sw.addGroup(layout.createSeq
15、ue ntialGroup().addComp onen t(jButt onl).addG ap(69, 69, 69).addComp onen t(jScrollPa ne1,.addC on tai nerGap()nt.TRAILING, layout.createSeque ntialGr oup().addComp onen t(jLabel4,.addG ap(130, 130, 130);layout.setVerticalGroup(layout.createParallelGrou p(javax.sw in g.GroupLayout .Alig nmen t.LEAD
16、ING).addGroup(layout.createSeque ntialGroup().addC on tai nerGap().addComp onen t(jLabel4,REFERRED_SIZE,83,REFERRED_SIZE).addGroup(layout.createParallelGroup(javax.swi ng.GroupLayout.Alig nmen t.LEADING ).addGroup(layout.createSeque ntialGroup().addGap(34, 34, 34).addGroup(layout.createParallelGroup
17、(javax.sw.BASELINE).addComp onen t(jLabel1).addComp onen t(jTextField1,REFERRED_SIZE,EFAULT_SIZE,REFERRED_SIZE).addGap(24, 24, 24).addGroup(layout.createParallelGroup(javax.sw.BASELINE).addComp onen t(jLabel2).addComp onen t(jTextField2,REFERRED_SIZE,EFAULT_SIZE,REFERRED_SIZE).addComp onen t(jLabel5
18、).addComp onen t(jButt on 1).addGap(25, 25, 25).addGroup(layout.createParallelGroup(javax.sw.BASELINE).addComp onen t(jTextField3,REFERRED_SIZE,EFAULT_SIZE,REFERRED_SIZE).addComp onen t(jLabel3,REFERRED_SIZE,15,.addGroup(layout.createSeque ntialGroup().addPreferredGap(javax.swi ng丄 ayoutStyle.Compon
19、en tPlaceme nt.RELATED) .addComp onen t(jScrollPa ne1,.addG ap(18, 18, 18).addComp onen t(jScrollPa ne2,EFAULT_SIZE,167,Short.MAX_VALUE);pack();/ </editor-fold>evt) DBMa nager db = new DBMa nager();Tran sactio nCon tai nerApriori apriori = new Apriori();/设置参数doubleapriori.setM in Support(suppo
20、rt);doubleapriori.setMi nCon fide nce(co nfide nee);tran sact ionContainerdb.getTra nsactio nCon tai ne r(jTablel);supportDouble.parseDouble(jTextF ield1.getText();con fide neeDouble.parseDouble(jTextField2.getText();int deep = In teger.parse In t(jTextField3.getText();即riori.setDeep(deep); /设置最大挖掘深
21、度,否则直到不产生新频繁集而自动停止apriori.setCo ntain er(tra nsact ionContain er);/进行分析apriori.a nalyse();/打印信息Stri ng info = apriori.pri ntIn fo();jTextAreal.appe nd(i nfo);/* param args the comma nd line argume nts*/public static void main( Stri ng args) /* Set the Nimbus look and feel*/<editor-fold defaultsta
22、te="collapsed" desc=" Look and feelsett ing code (optio nal) ">/* If Nimbus (introduced in Java SE6) is not available, stay withthe* default look and feel. For details see*/try for(javax.swi ng.UIMa nager.LookA ndFeell nfoinfojavax.swi ng.UIMa nager.get In stalledLookA ndFeels
23、() if ("Nimbus".equals(i nfo.getName() javax.swi ng.UIMa nager.set LookA ndFeel( in fo.getClass Name();break; catch (ClassNotF oun dExcepti on ex) catch (In sta ntiatio nExcepti on ex) ex); catch (IllegalAccessExcepti on ex) ex); catch (javax.sw in g.U nsupportedLookA ndFeelExcepti on ex)
24、ex);v/editor-fold>/* Create and display the form*/public void run() new APPF().setVisible(true););2、Apriori.java:private javax.swi ng.J Butt on jButt on1;private javax.swi ng.J Label jLabell;private javax.swi ng.J Label jLabel2;private javax.swi ng.J Label jLabel3;private javax.swi ng.J Label jLa
25、bel4;private javax.swi ng.J Label jLabel5;private javax.sw in g.JScrollPa ne jScrollPa nel;private javax.sw in g.JScrollPa ne jScrollPa ne2;static javax.swi ng.J Table jTable1;static javax.sw in g.JTextArea jTextArea1;private javax.sw in g.JTextField jTextField1;private javax.sw in g.JTextField jTex
26、tField2;private javax.sw in g.JTextField jTextField3;/ End of variables declarati onpackage datam ining;public class Apriori private double min Support; /最小支持度private double minCon fide nee; /最小置信度private Map container; /交易数据容器private int totalSize; /样品数据条数private List can ditateSetList = new ArrayL
27、ist(); /private List freque ntSetList = new ArrayList(); /private List maxFreque ntSetList = new ArrayList(); /候选集链表频繁集链表最大频繁集private int maxDeep = -1;private int curDeep = 0;private boolea n isStop = false;private Set eleme ntSet = new TreeSet();private List ruleList = new ArrayList();/设置挖掘深度,如果为-1
28、,表明直到不产生新的频繁集才停止挖掘public void setDeep(i nt k) this.maxDeep = k;private double getM inCon fide nce() return minCon fide nee;public void setM inCon fide nce(double minCon fide nee) this.mi nCon fide nce = mi nCon fide nee;private double getM in Support() retur n min Support;public void setM in Support
29、(double min Support) this. min Support = min Support;private Map getC ontainer() retur n container;public void setC on tai ner(Tra nsactio nCon tai nertran sact ionContainer)this.co ntai ner = tran sact ionCon tain er.getCo ntain er();this.totalSize = this.con tai ner.size();private boolea n isStop(
30、) retur n this.isStop | (maxDeep > 0 && curDeep = maxDeep);private void stopA nalyse() this.isStop = true;/*根据最小支持度,最小自信度,样品数据 进行数据分析*/public void an alyse() /计算候选集、频繁集this.makeCa nditateSet1();this.makeFreque ntSet1();while (!isStop() this.curDeep+; /深度 +1创建候选集this.makeCa nditateSet(); /
31、创建频繁集this.makeFreque ntSet(); / / 计算最大频繁集this.makeMaxFreque ntSet();/计算规则this.makeRules();/*创建规则*/private void makeRules() int ruleNum = 0;for (Object form : this.maxFreque ntSetList) Tran sact ionForm tf = (Tran sactio nF orm) form; ruleNum = (1 << tf.getltems().size() - 2;for (i nt i = 1; i
32、<= ruleNum; i+) Rule rule = new Rule();Tran sacti onForm A = new Tran sact ionFo rm();Tran sacti onForm B = new Tran sact ionFo rm(); int j = 0;Set items = tf.getItems();for (Object object : items) String item = (String) object;if (1 << j) & i) != 0) A. addltem(item); else B. addltem(it
33、em);j+;Tran sacti onForm AB = new Tran sact ionForm();AB.addAII(A.getltems();AB.addAII(B.getltems();if(getSupportNum(AB) >= (getSupportNum(A)minCon fide nee) double confidence = this.getSupportNum(AB) * 1.0 / this.getSupportNum(A);ruIe.setA(A);ruIe.setB(B);ruIe.setC on fide nce(con fide nee);/* 计
34、算1项候选集*/ private void makeCa nditateSet1() Set keySet = con tai ner.keySet();Iterator keyiterator = keySet.iterator();Stri ng TID;Tran sacti onForm tran sact ionForm;List list = new ArrayList(); /存放 1 项候选集Set item1 = new TreeSet();while (keylterator.hasNext() TID = (Stri ng) keyIterator. next();tran
35、sactionForm = (TransactionForm) (container.get(TID);Set items = tran sact ionFo rm.getItems();for (Object object : items) item1.add(object);eleme ntSet.addAII(item1);for (Object object : item1) Tran sact ionForm tf = new Tran sact ionFo rm();tf.addItem(object);list.add(tf);this.ca nditateSetList.add
36、(list);this.curDeep = 1;/*计算k项候选集*/ private void makeCa nditateSet() /读取前一个频繁集Listfron tFreque ntSetList=(List)this.freque ntSetList.get( this.curDeep - 2);List n ewCa nditateList = new ArrayList();for (Object obj : frontFrequentSetList) Tran sact ionForm tf = (Tra nsacti onForm) obj;for (Object ite
37、m : this.elementSet) Set items = new TreeSet();items.addAII(tf.getltems();items.add(item);if (items.size() != this.curDeep) con ti nue;Tran sacti onFormn ewTra nsacti onForm= newTran sactio nF orm();n ewTra nsactio nF orm.setItems(items);if (this.getSupportNum( newTra nsactio nF orm) != 0) if(!isExi
38、t (n ewCa nditateList,n ewTra nsactio nF orm)n ewCa nditateList.add( newTra nsactio nF orm);this.ca nditateSetList.add( newCa nditateList);/*判断链表中是否存在相同的交易表单*/private boolea n isExit(List list, Tran sactio nF orm n ewForm) for (Object form : list) Set curSet = (Tra nsactio nF orm) form).getltems();S
39、et n ewSet = n ewForm.getltems();Set tempSet = new TreeSet(); tempSet.addAII(curSet);int beg in Size = tempSet.size(); tempSet.addAll( newSet);int en dSize = tempSet.size();if (en dSize <= beg in Size) /只要有一个集合没变大,说明已存在return true;return false;/*创建最大频繁集*/private void makeMaxFreque ntSet() for (in
40、t i = freque ntSetList.size() - 1; i >= 0; i-) List list = (List) freque ntSetList.get(i);for (Object form : list) if(!isExit(maxFreque ntSetList,(Tran sactio nF orm)form) this.maxFreque ntSetList.add(form);/*创建频繁集*/private void makeFreque ntSet() List freque ntList = new ArrayList();Listcan dita
41、teList=(List)this.ca nditateSetList.get (this.curDeep - 1);for (Object form : can ditateList) Tran sact ionForm tf = (Tran sactio nF orm) form;if (this.getSupportNum(tf) >= min Support * totalSize) freque ntList.add(tf);this.freque ntSetList.add(freque ntList);if (freque ntList.size() = 0) this.s
42、topAnalyse(); /如果没有新的频繁集,则可停止分析/*创建频繁1项集*/ private void makeFreque ntSet1() List canditateList = (List) canditateSetList.get(O);List freque ntList = new ArrayList();for (Object object : canditateList) Tran sact ionForm tf = (Tran sactio nF orm) object;if (this.getSupportNum(tf) >= min Support * t
43、otalSize) freque ntList.add(tf);this.freque ntSetList.add(freque ntList);if (freque ntList.size() = 0) this.stopAnalyse(); /如果没有新的频繁集,则可停止分析/*计算支持数样品清单对newForm的支持数*/ private int getSupportNum(Tra nsactio nF orm n ewForm) int coun ter = 0;Set keySet = con tai ner.keySet();Iterator keyiterator = keySe
44、t.iterator();Stri ng TID;Tran sacti onForm tran sact ionForm;while (keylterator.hasNext() /该循环不可以跳出,一定要执行到结束TID = (Stri ng) keyIterator. next();tran sact ionForm= (Tran sactio nF orm)con tai ner.get(TID);/样品中的某一清单Iterator items = tran sact ionFo rm.getltems().iterator();Iterator n ewItems = n ewForm
45、.getltems().iterator();boolea n isMatch = true;while (n ewltems.hasNext() /配置新清单中的所有项String newItem = (String) newItems.next();boolean findItem = false;while (items.hasNext() String item = (String) items.next();if (newltem.equals(item) fin dltem = true;break;if (!fin dltem) isMatch = false;break;if
46、(isMatch) coun ter+;retur n coun ter;/*打印分析结果信息*/public String prin tl nfo() for (int i = 0; i < this.curDeep; i+) List list = (List) this.ca nditateSetList.get(i);if (list.size() = 0) con ti nue;(”候选集"+ (i + 1) + ":");in fo+="候选集"+ (i + 1) + ":"for (Object obje
47、ct : list) (Tran sactio nF orm)Tran sacti onFormtran sacti onFormobject;Set items = tran sactio nF orm.getltems();Strin gBuffer sb = new Stri ngBuffer("");for (Object item : items) sb.appe nd(item).appe nd(",");sb.setCharAt(sb.length() - 1,'');+ "");in fo+=sb +
48、"" list = (List) this.freque ntSetList.get(i);频繁集"+ (i + 1) + ":");in fo+="n频繁集"+ (i + 1) + ":"for (Object object : list) Tran sacti onFormtran sacti onForm= (Tra nsacti onForm)object;Set items = tran sactio nF orm.getltems();Strin gBuffer sb = new Stri n
49、gBuffer("");for (Object item : items) sb.appe nd(item).appe nd(",");sb.setCharAt(sb.length() - 1,'');+ "");in fo+=sb + ""*System.out.pri ntl n("n);in fo+="n*n"System.out.pri nt(”最大频繁集:");*info+="最大频繁集:";for (Object object : th
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年考大连银行面试题及答案
- 钢架厂房吊顶施工方案
- 灯罩的检测标准
- 4个月婴幼儿体重身高标准
- 基坑钢管支撑施工方案
- 2025年硅湖职业技术学院单招职业技能测试题库1套
- 2025年江西司法警官职业学院单招职业适应性测试题库审定版
- 陕西省榆林市2025届高三下学期第三次模拟考试生物试题(原卷版+解析版)
- 三农村电商打造区域特色品牌方案
- 三农村居民耕地质量保护方案
- 苏科版五年级下册《劳动》全一册全部课件(共11节)
- GB/T 7588.2-2020电梯制造与安装安全规范第2部分:电梯部件的设计原则、计算和检验
- GB/T 6145-2010锰铜、康铜精密电阻合金线、片及带
- GB/T 41021-2021法庭科学DNA鉴定文书内容及格式
- 部编版二年级语文下册第一单元口语交际一语文园地一课件
- 2023年陕西高职单招考试语文真题
- 石油焦生产工艺及设备解读课件
- 近代早期的欧洲-人教版课件
- 高中弯道跑教案
- 肺炎-疑难病例讨论课件
- 2023全国高中化学奥林匹克竞赛预赛试题及答案
评论
0/150
提交评论