數(shù)據(jù)挖掘課程設(shè)計報告---關(guān)聯(lián)規(guī)則挖掘系統(tǒng)_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  數(shù)據(jù)挖掘課程設(shè)計報告 </p><p>  題 目: 關(guān)聯(lián)規(guī)則挖掘系統(tǒng) </p><p>  姓 名: xxxxxx </p><p>  班 級: 計算機0901 </p><p>  學(xué) 號: xxxxxxxxxxx

2、 </p><p>  2013年 6 月 19 日</p><p><b>  一、設(shè)計目的 </b></p><p>  該程序?qū)崿F(xiàn)了對簡單數(shù)據(jù)進行頻繁項集挖掘的功能,主要使用 Apriori算法,即使用候選產(chǎn)生發(fā)現(xiàn)頻繁項集。通過這次編程增強編程能力。</p><p><b>  二、設(shè)計要求

3、</b></p><p>  實現(xiàn)數(shù)據(jù)挖掘的關(guān)聯(lián)規(guī)則,能夠挖掘數(shù)據(jù)之間的關(guān)聯(lián)信息,能夠讀取文件中的數(shù)據(jù),能夠保存分析結(jié)果。界面友好。</p><p><b>  三、設(shè)計實現(xiàn)流程圖</b></p><p><b>  四、實現(xiàn)環(huán)境</b></p><p>  操作系統(tǒng)WindowsXP

4、 </p><p>  開發(fā)環(huán)境Netbeans7.1</p><p>  運行環(huán)境 Windows系列操作系統(tǒng)(裝有Java運行時環(huán)境)</p><p><b>  五、實現(xiàn)結(jié)果</b></p><p><b>  完整輸出結(jié)果:</b></p><p><b>

5、;  run:</b></p><p><b>  顧客1</b></p><p><b>  商品A</b></p><p><b>  商品B</b></p><p><b>  商品C</b></p><p>&l

6、t;b>  顧客2</b></p><p><b>  商品A</b></p><p><b>  商品B</b></p><p><b>  顧客3</b></p><p><b>  商品B</b></p><p&

7、gt;<b>  商品C</b></p><p><b>  顧客4</b></p><p><b>  商品C</b></p><p><b>  商品B</b></p><p><b>  商品1</b></p>&

8、lt;p>  ,,,,,,,,,,,,,,,,,,,,,,,,,,,,</p><p><b>  3</b></p><p>  ***************************************************************************************************</p><p

9、>  候選集1:[商品A] [商品B] [商品C] </p><p>  頻繁集1:[商品A] [商品B] [商品C] </p><p>  ***************************************************************************************************</p><p

10、>  候選集2:[商品A,商品B] [商品A,商品C] [商品B,商品C] </p><p>  頻繁集2:[商品A,商品B] [商品B,商品C] </p><p>  ***************************************************************************************************<

11、/p><p>  候選集3:[商品A,商品B,商品C] </p><p><b>  頻繁集3:</b></p><p>  ***************************************************************************************************</p>

12、<p>  最大頻繁集:[商品A,商品B] [商品B,商品C] </p><p>  ***************************************************************************************************</p><p><b>  關(guān)聯(lián)規(guī)則:</b></p>

13、<p>  [商品A]=========>[商品B]1.0</p><p>  [商品B]=========>[商品A]0.6666666666666666</p><p>  [商品B]=========>[商品C]0.6666666666666666</p><p>  [商品C]=========>[商品B]1.0&l

14、t;/p><p><b>  六、設(shè)計小結(jié)</b></p><p>  這學(xué)期學(xué)的數(shù)據(jù)挖掘課程豐富了我的知識面,讓我看到了信息技術(shù)的巨大生命力和前景。數(shù)據(jù)挖掘涉及多學(xué)科技術(shù)的集成,包括數(shù)據(jù)庫和數(shù)據(jù)倉庫技術(shù)、統(tǒng)計學(xué)、機器學(xué)習、高性能計算、模式識別、神經(jīng)網(wǎng)絡(luò)、數(shù)據(jù)可視化、信息檢索等技術(shù)。通過數(shù)據(jù)挖掘,可以從數(shù)據(jù)庫提取有趣的知識、規(guī)律或高層信息,并可以從不同角度觀察或瀏覽它們,

15、發(fā)現(xiàn)的知識可以用于做決策、過程控制、信息管理、查詢處理。利用數(shù)據(jù)挖掘技術(shù)可以幫助獲得決策所需的多種知識。在許多情況下,用戶并不知道數(shù)據(jù)存在哪些有價值的信息知識,因此對于一個數(shù)據(jù)挖掘系統(tǒng)而言,它應(yīng)該能夠同時搜索發(fā)現(xiàn)多種模式的知識,以滿足用戶的期望和實際需要。此外數(shù)據(jù)挖掘系統(tǒng)還應(yīng)能夠挖掘出多種層次(抽象水平)的模式知識。數(shù)據(jù)挖掘系統(tǒng)還應(yīng)容許用戶指導(dǎo)挖掘搜索有價值的模式知識。</p><p>  通過這次實踐,我對數(shù)據(jù)

16、挖掘技術(shù)有了一個整體的認識。同樣在編寫程序的時候也遇到了這樣或那樣的問題。但在老師及同學(xué)們的幫助下,艱難的完成了這個系統(tǒng)。這讓我對數(shù)據(jù)挖掘技術(shù)以后的深入學(xué)習打下了良好的基礎(chǔ)。同時我的編程能力進一步提高,Java方面的實戰(zhàn)經(jīng)驗進一步豐富。優(yōu)秀的設(shè)計要付諸實踐,用戶需要的是真真實實的產(chǎn)品,知識轉(zhuǎn)化為產(chǎn)品,才能體現(xiàn)它的價值。</p><p><b>  附錄:主要代碼</b></p>

17、<p>  1、 APPF.Java </p><p><b>  /*</b></p><p>  * To change this template, choose Tools | Templates</p><p>  * and open the template in the editor.</p>

18、<p><b>  */</b></p><p>  package datamining;</p><p><b>  /**</b></p><p><b>  *</b></p><p>  * @author Administrator</p>

19、<p><b>  */</b></p><p>  public class APPF extends javax.swing.JFrame {</p><p><b>  /**</b></p><p>  * Creates new form APPF</p><p><b&g

20、t;  */</b></p><p>  public APPF() {</p><p>  initComponents();</p><p><b>  }</b></p><p><b>  /**</b></p><p>  * This method i

21、s called from within the constructor to initialize the form.</p><p>  * WARNING: Do NOT modify this code. The content of this method is always</p><p>  * regenerated by the Form Editor.</p>

22、;<p><b>  */</b></p><p>  @SuppressWarnings("unchecked")</p><p>  // <editor-fold defaultstate="collapsed" desc="Generated Code"></p>

23、<p>  private void initComponents() {</p><p>  jScrollPane1 = new javax.swing.JScrollPane();</p><p>  jTable1 = new javax.swing.JTable();</p><p>  jLabel1 = new javax.swing.J

24、Label();</p><p>  jTextField1 = new javax.swing.JTextField();</p><p>  jLabel2 = new javax.swing.JLabel();</p><p>  jTextField2 = new javax.swing.JTextField();</p><p> 

25、 jLabel3 = new javax.swing.JLabel();</p><p>  jTextField3 = new javax.swing.JTextField();</p><p>  jButton1 = new javax.swing.JButton();</p><p>  jScrollPane2 = new javax.swing.JScr

26、ollPane();</p><p>  jTextArea1 = new javax.swing.JTextArea();</p><p>  jLabel4 = new javax.swing.JLabel();</p><p>  jLabel5 = new javax.swing.JLabel();</p><p>  setDefa

27、ultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);</p><p>  jTable1.setModel(new javax.swing.table.DefaultTableModel(</p><p>  new Object [][] {</p><p>  {null, null},<

28、;/p><p>  {null, null},</p><p>  {null, null},</p><p>  {null, null},</p><p>  {null, null},</p><p>  {null, null},</p><p>  {null, null},</p&

29、gt;<p>  {null, null},</p><p>  {null, null},</p><p>  {null, null}</p><p><b>  },</b></p><p>  new String [] {</p><p>  "序列",

30、 "項目"</p><p><b>  }</b></p><p><b>  ));</b></p><p>  jScrollPane1.setViewportView(jTable1);</p><p>  jLabel1.setText("支持度:")

31、;</p><p>  jLabel3.setText("挖掘深度:");</p><p>  jButton1.setText("開始分析");</p><p>  jButton1.addActionListener(new java.awt.event.ActionListener() {</p><

32、p>  public void actionPerformed(java.awt.event.ActionEvent evt) {</p><p>  jButton1ActionPerformed(evt);</p><p><b>  }</b></p><p><b>  });</b></p>

33、<p>  jTextArea1.setColumns(20);</p><p>  jTextArea1.setRows(5);</p><p>  jScrollPane2.setViewportView(jTextArea1);</p><p>  jLabel4.setBackground(new java.awt.Color(255, 255,

34、255));</p><p>  jLabel4.setFont(new java.awt.Font("新宋體", 0, 36)); // NOI18N</p><p>  jLabel4.setText("數(shù)據(jù)挖掘");</p><p>  jLabel5.setText("置信度:");</p&g

35、t;<p>  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());</p><p>  getContentPane().setLayout(layout);</p><p>  layout.setHorizontalGroup(</p><p&g

36、t;  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)</p><p>  .addGroup(layout.createSequentialGroup()</p><p>  .addGap(33, 33, 33)</p><p>  .addGroup(layout.cr

37、eateParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)</p><p>  .addComponent(jScrollPane2)</p><p>  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()<

38、;/p><p>  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)</p><p>  .addGroup(layout.createSequentialGroup()</p><p>  .addComponent(jLabel1)</p

39、><p>  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)</p><p>  .addComponent(jTextField1, javax.swing.GroupLayout.PREFER

40、RED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))</p><p>  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()</p><p>  .addComponent(jLabel3)</p>&l

41、t;p>  .addGap(41, 41, 41)</p><p>  .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))</p><p>  .addGroup(javax.swing.GroupLayout.A

42、lignment.TRAILING, layout.createSequentialGroup()</p><p>  .addComponent(jLabel5)</p><p>  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SI

43、ZE, Short.MAX_VALUE)</p><p>  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)</p><p>  .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING)</p>

44、;<p>  .addComponent(jTextField2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 67, javax.swing.GroupLayout.PREFERRED_SIZE))))</p><p>  .addPreferredGap(javax.swi

45、ng.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE)</p><p>  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)</p><p>  .addGroup(layout.createSequentia

46、lGroup()</p><p>  .addComponent(jButton1)</p><p>  .addGap(69, 69, 69)</p><p>  .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREF

47、ERRED_SIZE)</p><p>  .addContainerGap())</p><p>  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()</p><p>  .addComponent(jLabel4, javax.swing.Gr

48、oupLayout.PREFERRED_SIZE, 245, javax.swing.GroupLayout.PREFERRED_SIZE)</p><p>  .addGap(130, 130, 130))))))</p><p><b>  );</b></p><p>  layout.setVerticalGroup(</p>

49、;<p>  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)</p><p>  .addGroup(layout.createSequentialGroup()</p><p>  .addContainerGap()</p><p>  .addCompon

50、ent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)</p><p>  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)</p><p> 

51、 .addGroup(layout.createSequentialGroup()</p><p>  .addGap(34, 34, 34)</p><p>  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)</p><p>  .addCompone

52、nt(jLabel1)</p><p>  .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))</p><p>  .addGap(24, 24, 24

53、)</p><p>  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)</p><p>  .addComponent(jLabel2)</p><p>  .addComponent(jTextField2, javax.swing.GroupLayo

54、ut.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)</p><p>  .addComponent(jLabel5)</p><p>  .addComponent(jButton1))</p><p>  .addGap(2

55、5, 25, 25)</p><p>  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)</p><p>  .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.Group

56、Layout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)</p><p>  .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)))</p><p>  .addGr

57、oup(layout.createSequentialGroup()</p><p>  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)</p><p>  .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 188,

58、 javax.swing.GroupLayout.PREFERRED_SIZE)))</p><p>  .addGap(18, 18, 18)</p><p>  .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 167, Short.MAX_VALUE))</p><p><

59、b>  );</b></p><p><b>  pack();</b></p><p>  }// </editor-fold></p><p>  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

60、 </p><p>  DBManager db = new DBManager();</p><p>  TransactionContainer transactionContainer = db.getTransactionContainer(jTable1);</p><p>  Apriori apr

61、iori = new Apriori();</p><p><b>  //設(shè)置參數(shù)</b></p><p>  double support = Double.parseDouble(jTextField1.getText());</p><p>  apriori.setMinSupport(support);</p><

62、;p>  double confidence = Double.parseDouble(jTextField2.getText());</p><p>  apriori.setMinConfidence(confidence);</p><p>  int deep = Integer.parseInt(jTextField3.getText());</p><

63、p>  apriori.setDeep(deep); //設(shè)置最大挖掘深度,否則直到不產(chǎn)生新頻繁集而自動停止</p><p>  apriori.setContainer(transactionContainer);</p><p><b>  //進行分析</b></p><p>  apriori.analyse();</p&g

64、t;<p><b>  //打印信息</b></p><p>  String info = apriori.printInfo();</p><p>  jTextArea1.append(info);</p><p>  } </p>

65、<p><b>  /**</b></p><p>  * @param args the command line arguments</p><p><b>  */</b></p><p>  public static void main(String args[]) {</p><p

66、><b>  /*</b></p><p>  * Set the Nimbus look and feel</p><p><b>  */</b></p><p>  //<editor-fold defaultstate="collapsed" desc=" Look and

67、 feel setting code (optional) "></p><p><b>  /*</b></p><p>  * If Nimbus (introduced in Java SE 6) is not available, stay with the</p><p>  * default look and fe

68、el. For details see</p><p>  * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html</p><p><b>  */</b></p><p><b>  try {</b></p>&

69、lt;p>  for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {</p><p>  if ("Nimbus".equals(info.getName())) {</p><p>  javax.swing.UIM

70、anager.setLookAndFeel(info.getClassName());</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  } catch (ClassNotFou

71、ndException ex) {</p><p>  java.util.logging.Logger.getLogger(APPF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);</p><p>  } catch (InstantiationException ex) {</p><p

72、>  java.util.logging.Logger.getLogger(APPF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);</p><p>  } catch (IllegalAccessException ex) {</p><p>  java.util.logging.Logger.get

73、Logger(APPF.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);</p><p>  } catch (javax.swing.UnsupportedLookAndFeelException ex) {</p><p>  java.util.logging.Logger.getLogger(APPF.c

74、lass.getName()).log(java.util.logging.Level.SEVERE, null, ex);</p><p><b>  }</b></p><p>  //</editor-fold></p><p><b>  /*</b></p><p>  * C

75、reate and display the form</p><p><b>  */</b></p><p>  java.awt.EventQueue.invokeLater(new Runnable() {</p><p>  public void run() {</p><p>  new APPF().set

76、Visible(true);</p><p><b>  }</b></p><p><b>  });</b></p><p><b>  }</b></p><p>  2、 Apriori.java:</p><p>  private javax

77、.swing.JButton jButton1;</p><p>  private javax.swing.JLabel jLabel1;</p><p>  private javax.swing.JLabel jLabel2;</p><p>  private javax.swing.JLabel jLabel3;</p><p> 

78、 private javax.swing.JLabel jLabel4;</p><p>  private javax.swing.JLabel jLabel5;</p><p>  private javax.swing.JScrollPane jScrollPane1;</p><p>  private javax.swing.JScrollPane jSc

79、rollPane2;</p><p>  static javax.swing.JTable jTable1;</p><p>  static javax.swing.JTextArea jTextArea1;</p><p>  private javax.swing.JTextField jTextField1;</p><p>  p

80、rivate javax.swing.JTextField jTextField2;</p><p>  private javax.swing.JTextField jTextField3;</p><p>  // End of variables declaration</p><p>  } <

81、/p><p>  package datamining;</p><p>  import java.util.*;</p><p>  public class Apriori {</p><p>  private double minSupport; //最小支持度</p><p>  private double

82、 minConfidence; //最小置信度</p><p>  private Map container; //交易數(shù)據(jù)容器</p><p>  private int totalSize; //樣品數(shù)據(jù)條數(shù)</p><p>  private List canditateSetList = new ArrayList(); //候選集鏈表</p&g

83、t;<p>  private List frequentSetList = new ArrayList(); //頻繁集鏈表</p><p>  private List maxFrequentSetList = new ArrayList(); //最大頻繁集</p><p>  private int maxDeep = -1;</p><p>

84、;  private int curDeep = 0;</p><p>  private boolean isStop = false;</p><p>  private Set elementSet = new TreeSet();</p><p>  private List ruleList = new ArrayList();</p>&l

85、t;p>  //設(shè)置挖掘深度,如果為-1,表明直到不產(chǎn)生新的頻繁集才停止挖掘</p><p>  public void setDeep(int k) {</p><p>  this.maxDeep = k;</p><p><b>  }</b></p><p>  private double getMinC

86、onfidence() {</p><p>  return minConfidence;</p><p><b>  }</b></p><p>  public void setMinConfidence(double minConfidence) {</p><p>  this.minConfidence = m

87、inConfidence;</p><p><b>  }</b></p><p>  private double getMinSupport() {</p><p>  return minSupport;</p><p><b>  }</b></p><p>  pu

88、blic void setMinSupport(double minSupport) {</p><p>  this.minSupport = minSupport;</p><p><b>  }</b></p><p>  private Map getContainer() {</p><p>  return

89、container;</p><p><b>  }</b></p><p>  public void setContainer(TransactionContainer transactionContainer) {</p><p>  this.container = transactionContainer.getContainer()

90、;</p><p>  this.totalSize = this.container.size();</p><p>  System.out.println(",,,,,,,,,,,,,,,,,,,,,,,,,,,,");</p><p>  System.out.println(totalSize);</p><p>

91、;<b>  }</b></p><p>  private boolean isStop() {</p><p>  return this.isStop || (maxDeep > 0 && curDeep == maxDeep);</p><p><b>  }</b></p>&

92、lt;p>  private void stopAnalyse() {</p><p>  this.isStop = true;</p><p><b>  }</b></p><p><b>  /**</b></p><p>  * 根據(jù)最小支持度,最小自信度,樣品數(shù)據(jù) 進行數(shù)據(jù)分析&l

93、t;/p><p><b>  *</b></p><p><b>  */</b></p><p>  public void analyse() {</p><p>  //計算候選集、頻繁集</p><p>  this.makeCanditateSet1();</p&

94、gt;<p>  this.makeFrequentSet1();</p><p>  while (!isStop()) {</p><p>  this.curDeep++; //深度+1</p><p>  this.makeCanditateSet(); //創(chuàng)建候選集</p><p>  this.makeFrequ

95、entSet(); //創(chuàng)建頻繁集</p><p><b>  }</b></p><p><b>  //計算最大頻繁集</b></p><p>  this.makeMaxFrequentSet();</p><p><b>  //計算規(guī)則</b></p>

96、<p>  this.makeRules();</p><p><b>  }</b></p><p><b>  /**</b></p><p><b>  * 創(chuàng)建規(guī)則</b></p><p><b>  *</b></p>

97、<p><b>  */</b></p><p>  private void makeRules() {</p><p>  int ruleNum = 0;</p><p>  for (Object form : this.maxFrequentSetList) {</p><p>  Transacti

98、onForm tf = (TransactionForm) form;</p><p>  ruleNum = (1 << tf.getItems().size()) - 2;</p><p>  for (int i = 1; i <= ruleNum; i++) {</p><p>  Rule rule = new Rule();</p

99、><p>  TransactionForm A = new TransactionForm();</p><p>  TransactionForm B = new TransactionForm();</p><p>  int j = 0;</p><p>  Set items = tf.getItems();</p>&l

100、t;p>  for (Object object : items) {</p><p>  String item = (String) object;</p><p>  if (((1 << j) & i) != 0) {</p><p>  A.addItem(item);</p><p><b> 

101、 } else {</b></p><p>  B.addItem(item);</p><p><b>  }</b></p><p><b>  j++;</b></p><p><b>  }</b></p><p>  Transac

102、tionForm AB = new TransactionForm();</p><p>  AB.addAll(A.getItems());</p><p>  AB.addAll(B.getItems());</p><p>  if (getSupportNum(AB) >= (getSupportNum(A) * minConfidence)) {&l

103、t;/p><p>  double confidence = this.getSupportNum(AB) * 1.0 / this.getSupportNum(A);</p><p>  rule.setA(A);</p><p>  rule.setB(B);</p><p>  rule.setConfidence(confidence);

104、</p><p>  this.ruleList.add(rule);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>&

105、lt;/p><p><b>  /**</b></p><p><b>  * 計算1項候選集</b></p><p><b>  *</b></p><p><b>  */</b></p><p>  private void ma

106、keCanditateSet1() {</p><p>  Set keySet = container.keySet();</p><p>  Iterator keyIterator = keySet.iterator();</p><p>  String TID;</p><p>  TransactionForm transacti

107、onForm;</p><p>  List list = new ArrayList(); //存放1項候選集</p><p>  Set item1 = new TreeSet();</p><p>  while (keyIterator.hasNext()) {</p><p>  TID = (String) keyIterato

108、r.next();</p><p>  transactionForm = (TransactionForm) (container.get(TID));</p><p>  Set items = transactionForm.getItems();</p><p>  for (Object object : items) {</p><p

109、>  item1.add(object);</p><p><b>  }</b></p><p><b>  }</b></p><p>  elementSet.addAll(item1);</p><p>  for (Object object : item1) {</p>

110、<p>  TransactionForm tf = new TransactionForm();</p><p>  tf.addItem(object);</p><p>  list.add(tf);</p><p><b>  }</b></p><p>  this.canditateSetLis

111、t.add(list);</p><p>  this.curDeep = 1;</p><p><b>  }</b></p><p><b>  /**</b></p><p><b>  * 計算k項候選集</b></p><p><b>

112、;  *</b></p><p><b>  */</b></p><p>  private void makeCanditateSet() {</p><p>  //讀取前一個頻繁集</p><p>  List frontFrequentSetList = (List) this.frequentSe

113、tList.get(this.curDeep - 2);</p><p>  List newCanditateList = new ArrayList();</p><p>  for (Object obj : frontFrequentSetList) {</p><p>  TransactionForm tf = (TransactionForm) obj

114、;</p><p>  for (Object item : this.elementSet) {</p><p>  Set items = new TreeSet();</p><p>  items.addAll(tf.getItems());</p><p>  items.add(item);</p><p>

115、;  if (items.size() != this.curDeep) {</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  TransactionForm newTransactionForm = new TransactionForm();</p

116、><p>  newTransactionForm.setItems(items);</p><p>  if (this.getSupportNum(newTransactionForm) != 0) {</p><p>  if (!isExit(newCanditateList, newTransactionForm)) {</p><p>

117、;  newCanditateList.add(newTransactionForm);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b><

118、/p><p>  this.canditateSetList.add(newCanditateList);</p><p><b>  }</b></p><p><b>  /**</b></p><p>  * 判斷鏈表中是否存在相同的交易表單</p><p><b&g

119、t;  *</b></p><p><b>  */</b></p><p>  private boolean isExit(List list, TransactionForm newForm) {</p><p>  for (Object form : list) {</p><p>  Set cu

120、rSet = ((TransactionForm) form).getItems();</p><p>  Set newSet = newForm.getItems();</p><p>  Set tempSet = new TreeSet();</p><p>  tempSet.addAll(curSet);</p><p>  in

121、t beginSize = tempSet.size();</p><p>  tempSet.addAll(newSet);</p><p>  int endSize = tempSet.size();</p><p>  if (endSize <= beginSize) { //只要有一個集合沒變大,說明已存在</p><p>

122、;  return true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return false;</p><p><b>  }</b></p><p><b>  /**</

123、b></p><p><b>  * 創(chuàng)建最大頻繁集</b></p><p><b>  *</b></p><p><b>  */</b></p><p>  private void makeMaxFrequentSet() {</p><p&g

124、t;  for (int i = frequentSetList.size() - 1; i >= 0; i--) {</p><p>  List list = (List) frequentSetList.get(i);</p><p>  for (Object form : list) {</p><p>  if (!isExit(maxFreque

125、ntSetList, (TransactionForm) form)) {</p><p>  this.maxFrequentSetList.add(form);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b&

126、gt;</p><p><b>  }</b></p><p><b>  /**</b></p><p><b>  * 創(chuàng)建頻繁集</b></p><p><b>  *</b></p><p><b>  */<

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論