




免费预览已结束,剩余32页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据挖掘课程设计报告 题 目: 关联规则挖掘系统 姓 名: xxxxxx 班 级: 计算机0901 学 号: xxxxxxxxxxx 2013年 6 月 19 日一、设计目的 该程序实现了对简单数据进行频繁项集挖掘的功能,主要使用 Apriori算法,即使用候选产生发现频繁项集。通过这次编程增强编程能力。二、设计要求实现数据挖掘的关联规则,能够挖掘数据之间的关联信息,能够读取文件中的数据,能够保存分析结果。界面友好。三、设计实现流程图 四、实现环境操作系统WindowsXP 开发环境Netbeans7.1运行环境 Windows系列操作系统(装有Java运行时环境)五、实现结果完整输出结果:run:顾客1商品A商品B商品C顾客2商品A商品B顾客3商品B商品C顾客4商品C商品B商品1,3*候选集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六、设计小结这学期学的数据挖掘课程丰富了我的知识面,让我看到了信息技术的巨大生命力和前景。数据挖掘涉及多学科技术的集成,包括数据库和数据仓库技术、统计学、机器学习、高性能计算、模式识别、神经网络、数据可视化、信息检索等技术。通过数据挖掘,可以从数据库提取有趣的知识、规律或高层信息,并可以从不同角度观察或浏览它们,发现的知识可以用于做决策、过程控制、信息管理、查询处理。利用数据挖掘技术可以帮助获得决策所需的多种知识。在许多情况下,用户并不知道数据存在哪些有价值的信息知识,因此对于一个数据挖掘系统而言,它应该能够同时搜索发现多种模式的知识,以满足用户的期望和实际需要。此外数据挖掘系统还应能够挖掘出多种层次(抽象水平)的模式知识。数据挖掘系统还应容许用户指导挖掘搜索有价值的模式知识。通过这次实践,我对数据挖掘技术有了一个整体的认识。同样在编写程序的时候也遇到了这样或那样的问题。但在老师及同学们的帮助下,艰难的完成了这个系统。这让我对数据挖掘技术以后的深入学习打下了良好的基础。同时我的编程能力进一步提高,Java方面的实战经验进一步丰富。优秀的设计要付诸实践,用户需要的是真真实实的产品,知识转化为产品,才能体现它的价值。附录:主要代码1、 APPF.Java /* * To change this template, choose Tools | Templates * and open the template in the editor. */package datamining;/* * * author Administrator */public class APPF extends javax.swing.JFrame /* * Creates new form APPF */ public APPF() initComponents(); /* * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ SuppressWarnings(unchecked) / private void initComponents() jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jTextField2 = new javax.swing.JTextField(); jLabel3 = new javax.swing.JLabel(); jTextField3 = new javax.swing.JTextField(); jButton1 = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null , new String 序列, 项目 ); jScrollPane1.setViewportView(jTable1); jLabel1.setText(支持度:); jLabel3.setText(挖掘深度:); jButton1.setText(开始分析); jButton1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent evt) jButton1ActionPerformed(evt); ); jTextArea1.setColumns(20); jTextArea1.setRows(5); jScrollPane2.setViewportView(jTextArea1); jLabel4.setBackground(new java.awt.Color(255, 255, 255); jLabel4.setFont(new java.awt.Font(新宋体, 0, 36); / NOI18N jLabel4.setText(数据挖掘); jLabel5.setText(置信度:); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane(); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(33, 33, 33) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane2) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jLabel3) .addGap(41, 41, 41) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jButton1) .addGap(69, 69, 69) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap() .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(130, 130, 130) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(34, 34, 34) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(24, 24, 24) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5) .addComponent(jButton1) .addGap(25, 25, 25) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE) ); pack(); / private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) DBManager db = new DBManager(); TransactionContainer transactionContainer = db.getTransactionContainer(jTable1); Apriori apriori = new Apriori(); /设置参数 double support = Double.parseDouble(jTextField1.getText(); apriori.setMinSupport(support); double confidence = Double.parseDouble(jTextField2.getText(); apriori.setMinConfidence(confidence); int deep = Integer.parseInt(jTextField3.getText(); apriori.setDeep(deep); /设置最大挖掘深度,否则直到不产生新频繁集而自动停止 apriori.setContainer(transactionContainer); /进行分析 apriori.analyse(); /打印信息 String info = apriori.printInfo(); jTextArea1.append(info); /* * param args the command line arguments */ public static void main(String args) /* * Set the Nimbus look and feel */ / /* * If Nimbus (introduced in Java SE 6) is not available, stay with the * default look and feel. For details see * /javase/tutorial/uiswing/lookandfeel/plaf.html */ try for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels() if (Nimbus.equals(info.getName() javax.swing.UIManager.setLookAndFeel(info.getClassName(); break; catch (ClassNotFoundException ex) java.util.logging.Logger.getLogger(APPF.class.getName().log(java.util.logging.Level.SEVERE, null, ex); catch (InstantiationException ex) java.util.logging.Logger.getLogger(APPF.class.getName().log(java.util.logging.Level.SEVERE, null, ex); catch (IllegalAccessException ex) java.util.logging.Logger.getLogger(APPF.class.getName().log(java.util.logging.Level.SEVERE, null, ex); catch (javax.swing.UnsupportedLookAndFeelException ex) java.util.logging.Logger.getLogger(APPF.class.getName().log(java.util.logging.Level.SEVERE, null, ex); / /* * Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() public void run() new APPF().setVisible(true); ); 2、 Apriori.java: private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; static javax.swing.JTable jTable1; static javax.swing.JTextArea jTextArea1; private javax.swing.JTextField jTextField1; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField3; / End of variables declaration package datamining;import java.util.*;public class Apriori private double minSupport; /最小支持度 private double minConfidence; /最小置信度 private Map container; /交易数据容器 private int totalSize; /样品数据条数 private List canditateSetList = new ArrayList(); /候选集链表 private List frequentSetList = new ArrayList(); /频繁集链表 private List maxFrequentSetList = new ArrayList(); /最大频繁集 private int maxDeep = -1; private int curDeep = 0; private boolean isStop = false; private Set elementSet = new TreeSet(); private List ruleList = new ArrayList(); /设置挖掘深度,如果为-1,表明直到不产生新的频繁集才停止挖掘 public void setDeep(int k) this.maxDeep = k; private double getMinConfidence() return minConfidence; public void setMinConfidence(double minConfidence) this.minConfidence = minConfidence; private double getMinSupport() return minSupport; public void setMinSupport(double minSupport) this.minSupport = minSupport; private Map getContainer() return container; public void setContainer(TransactionContainer transactionContainer) this.container = transactionContainer.getContainer(); this.totalSize = this.container.size(); System.out.println(,); System.out.println(totalSize); private boolean isStop() return this.isStop | (maxDeep 0 & curDeep = maxDeep); private void stopAnalyse() this.isStop = true; /* * 根据最小支持度,最小自信度,样品数据 进行数据分析 * */ public void analyse() /计算候选集、频繁集 this.makeCanditateSet1(); this.makeFrequentSet1(); while (!isStop() this.curDeep+; /深度+1 this.makeCanditateSet(); /创建候选集 this.makeFrequentSet(); /创建频繁集 /计算最大频繁集 this.makeMaxFrequentSet(); /计算规则 this.makeRules(); /* * 创建规则 * */ private void makeRules() int ruleNum = 0; for (Object form : this.maxFrequentSetList) TransactionForm tf = (TransactionForm) form; ruleNum = (1 tf.getItems().size() - 2; for (int i = 1; i = ruleNum; i+) Rule rule = new Rule(); TransactionForm A = new TransactionForm(); TransactionForm B = new TransactionForm(); int j = 0; Set items = tf.getItems(); for (Object object : items) String item = (String) object; if (1 = (getSupportNum(A) * minConfidence) double confidence = this.getSupportNum(AB) * 1.0 / this.getSupportNum(A); rule.setA(A); rule.setB(B); rule.setConfidence(confidence); this.ruleList.add(rule); /* * 计算1项候选集 * */ private void makeCanditateSet1() Set keySet = container.keySet(); Iterator keyIterator = keySet.iterator(); String TID; TransactionForm transactionForm; List list = new ArrayList(); /存放1项候选集 Set item1 = new TreeSet(); while (keyIterator.hasNext() TID = (String) keyIterator.next(); transactionForm = (TransactionForm) (container.get(TID); Set items = transactionForm.getItems(); for (Object object : items) item1.add(object); elemen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论