资源简介
包含Apriori算法实现源码及实现的EXE文件。有界面输入输出,处理txt文件。
代码片段和文件信息
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class AprioriAlgorithm{
private Map> txDatabase; // 事务数据库
private Float minSup; // 最小支持度
private Float minConf; // 最小置信度
private Integer txDatabaseCount; // 事务数据库中的事务数
private Map>> freqItemSet; // 频繁项集集合
private Map Set>> assiciationRules; // 频繁关联规则集合
public AprioriAlgorithm(
Map> txDatabase
Float minSup
Float minConf) {
this.txDatabase = txDatabase;
this.minSup = minSup;
this.minConf = minConf;
this.txDatabaseCount = this.txDatabase.size();
freqItemSet = new TreeMap>>();
assiciationRules = new HashMap Set>>();
}
/**
* 扫描事务数据库,计算频繁1-项集
* @return
*/
public Map Float> getFreq1ItemSet() {
Map Float> freq1ItemSetMap = new HashMap Float>();
Map Integer> candFreq1ItemSet = this.getCandFreq1ItemSet();
Iterator Integer>> it = candFreq1ItemSet.entrySet().iterator();
while(it.hasNext()) {
Map.Entry Integer> entry = it.next();
// 计算支持度
Float supported = new Float(entry.getValue().toString())/new Float(txDatabaseCount);
if(supported>=minSup) {
freq1ItemSetMap.put(entry.getKey() supported);
}
}
return freq1ItemSetMap;
}
/**
* 计算候选频繁1-项集
* @return
*/
public Map Integer> getCandFreq1ItemSet() {
Map Integer> candFreq1ItemSetMap = new HashMap Integer>();
Iterator>> it = txDatabase.entrySet().iterator();
// 统计支持数,生成候选频繁1-项集
while(it.hasNext()) {
Map.Entry> entry = it.next();
Set itemSet = entry.getValue();
for(String item : itemSet) {
Set key = new HashSet();
key.add(item.trim());
if(!candFreq1ItemSetMap.containsKey(key)) {
Integer value = 1;
candFreq1ItemSetMap.put(key value);
}
else {
Integer value = 1+candFreq1ItemSetMap.get(key);
candFreq1ItemSetMap.put(key value);
}
}
}
return candFreq1ItemSetMap;
}
/**
* 根据频繁(k-1)-项集计算候选频繁k-项集
*
* @param m 其中m=k-1
* @param freqMItemSet 频繁(k-1)-项集
* @return
*/
public Set> aprioriGen(int m Set> freqMItemSet) {
Set> candFreqKItemSet = new HashSet>();
Iterator> it = freqMItemSet.iterator();
Set originalItemSet = null;
while(it.hasNext()) {
originalItemSet = it.next();
Iterator> itr = this.getIterator(originalItemSet freqMItemSet);
while(itr.hasNext()) {
Set identicalSet = new HashSet(); // 两个项集相同元素的集合(集合的交运算)
identicalSet.addAll(origin
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 232 2010-05-23 10:25 datamining\.classpath
文件 386 2010-05-27 00:08 datamining\.project
文件 34842 2010-05-24 16:51 datamining\1.jpg
文件 9912 2010-05-27 00:08 datamining\bin\AprioriAlgorithm.class
文件 1133 2010-05-27 00:08 datamining\bin\Association$1.class
文件 1133 2010-05-27 00:08 datamining\bin\Association$2.class
文件 11638 2010-05-27 00:08 datamining\bin\Association.class
文件 2653 2010-05-27 00:10 datamining\bin\DataMining.class
文件 1029 2010-05-27 00:08 datamining\bin\ImagePanel.class
文件 6735 2010-05-27 00:08 datamining\bin\jishiben.class
文件 2196 2010-05-27 00:08 datamining\bin\ProperSubsetCombination.class
文件 10958 2010-05-23 11:20 datamining\src\AprioriAlgorithm.java
文件 14596 2010-05-24 09:59 datamining\src\Association.java
文件 2754 2010-05-27 00:10 datamining\src\DataMining.java
文件 604 2010-05-23 10:29 datamining\src\ImagePanel.java
文件 9437 2010-05-23 10:31 datamining\src\jishiben.java
文件 2612 2010-05-23 10:29 datamining\src\ProperSubsetCombination.java
文件 182272 2010-05-27 00:14 dm.exe
文件 34283 2010-05-24 17:29 1.jpg
目录 0 2010-05-27 00:10 datamining\bin
目录 0 2010-05-27 00:10 datamining\src
目录 0 2010-05-27 00:14 datamining
----------- --------- ---------- ----- ----
329405 22
- 上一篇:外文翻译合订版
- 下一篇:Luxand FaceSDK 注册码获取方法(原创)
评论
共有 条评论