资源简介

用java语言实现的Apriori算法,另外附上实验报告进行了详细解释。

资源截图

代码片段和文件信息

package AprioriTest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
/**
 * 功能:Apriori算法的实现
 */
public class AprioriTest01 {
 
 private int minSup;
 private static List data;
 private static List> dataSet;
 
 public static void main(String[] args) {
   
  long startTime = System.currentTimeMillis();
  AprioriTest01 apriori = new AprioriTest01();
  File file = new File(“G:/mf_2015511153514740.txt“);
   //设置最小支持度
  apriori.setMinSup(150);
  //构造数据集
  data = apriori.buildData(file);
  //构造频繁1项集
  List> f1Set = apriori.findF1Item(data);
 // apriori.printSet(f1Set 1);
  List> result = f1Set; 
  int i = 2;
  do{
   result = apriori.arioriGen(result);
   apriori.printSet(result i);
   i++;
  }while(result.size() != 0);
  long endTime = System.currentTimeMillis();
  System.out.println(“共用时: “ + (endTime - startTime) + “ms“);
 }
 public void setMinSup(int minSup){
  this.minSup = minSup;
 }
 
 /**
  * 构造原始数据集,
  * 使用文件中的数据集
  */
 List buildData(File fileName){
  List data = new ArrayList();
   try{
    BufferedReader reader = new BufferedReader(new FileReader(fileName));
    String line;
    while( ( line = reader.readLine()) != null ){
     data.add(line);
    }
   }catch (FileNotFoundException e){
    e.printStackTrace();
   }catch (IOException e){
    e.printStackTrace();
   }
  
  dataSet = new ArrayList>();
  Set dSet;
  for(String d : data){
   dSet = new TreeSet();
   String[] dArr = d.split(“ “);
   for(String str : dArr){
    dSet.add(str);
   }
   dataSet.add(dSet);
  }
  return data;
 }
 
 /**
  * 找出候选1项集
  * @param data
  * @return result
  */
 List> findF1Item(List data){
  List> result = new ArrayList>();
  Map dc = new HashMap();
  for(String d : data){
   String[] items = d.split(“ “);
   for(String item : items){
    if(dc.containsKey(item)) {
     dc.put(item dc.get(item)+1);
    }else{
     dc.put(item 1);
    }
   }
  }
  Set itemKeys = dc.keySet();
  Set tempKeys = new TreeSet();
  for(String str : itemKeys){
   tempKeys.add(str);
  }
  
  for(String item : tempKeys){
   if(dc.get(item) >= minSup) {
    Set f1Set = new TreeSet();
    f1Set.add(item);
    result.add(f1Set);
   }
  } 
  return result;
 }
 
 /**
  * 利用arioriGen方法由k-1项集生成k项集
  *@param preSet
  *@return
  *
  */
 List> arioriGen(List> preSet) {
  
  List> result = new ArrayList>();
  int preSetSize = preSet.size();
  
  for(int i = 0; i < preSetSize - 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        301  2015-11-20 22:48  DM\.classpath

     文件        378  2015-11-20 22:47  DM\.project

     文件        598  2015-11-20 22:48  DM\.settings\org.eclipse.jdt.core.prefs

     文件       8694  2015-11-20 22:48  DM\bin\AprioriTest\AprioriTest01.class

     文件       7326  2015-11-20 22:46  DM\src\AprioriTest\AprioriTest01.java

     目录          0  2015-11-20 22:50  DM\bin\AprioriTest

     目录          0  2015-11-20 22:50  DM\src\AprioriTest

     目录          0  2015-11-20 22:50  DM\.settings

     目录          0  2015-11-20 22:50  DM\bin

     目录          0  2015-11-20 22:50  DM\src

     目录          0  2015-12-08 20:30  DM

     文件     160410  2015-11-23 18:22  DM\Apriori实验报告.docx

----------- ---------  ---------- -----  ----

               177707                    12


评论

共有 条评论