-
大小: 21KB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-08
- 語(yǔ)言: Java
- 標(biāo)簽: 測(cè)試數(shù)據(jù)??
資源簡(jiǎn)介
用Java語(yǔ)言實(shí)現(xiàn)的apriori算法,算法分為2步:計(jì)算頻繁N項(xiàng)集;得出關(guān)聯(lián)規(guī)則。

代碼片段和文件信息
import?java.io.*;
import?java.util.*;
public?class?Apriori{
private?List>?Event;//事務(wù)數(shù)據(jù)
private?int?minSupport;?//最小支持度
private?double?minConfidence;?//?最小置信度
private?int?sum?=?0;
private?List>?freqItemSet;//頻繁N項(xiàng)集
public?Apriori(List>?Eventint?minSup?double?minConf){//構(gòu)造函數(shù)
this.Event?=?Event;
this.minSupport?=?minSup;
this.minConfidence?=?minConf;
freqItemSet?=?new?ArrayList>();
}
????void?runApriori(){//運(yùn)行Apriori算法分為2步:1.挖掘頻繁N項(xiàng)集;2.產(chǎn)生關(guān)聯(lián)規(guī)則
/*1.挖掘頻繁N項(xiàng)集*/
List>freqItem?=?new?ArrayList>();
????????freqItem?=?Get1Item();//得到頻繁一項(xiàng)集???
????????freqItem?=?apriori_gen(freqItem);//得到頻繁二項(xiàng)集
????????//System.out.println(Event);
????????while(freqItem.size()?!=?0){//得到頻繁N項(xiàng)集
???????? if(freqItem.size()!=0)
???????? ????freqItemSet?=?freqItem;
???????? freqItem?=?apriori_gen(freqItem);?????????? ???????????
????????}
????????System.out.println(“頻繁項(xiàng)集共有:“+freqItemSet.size()+“項(xiàng)“);
????????for(int?i=0;i ????????????System.out.println(freqItemSet.get(i));
????????
????????/*2.產(chǎn)生關(guān)聯(lián)規(guī)則*/
????????apriori_genRule();
}
List>?Get1Item(){//遍歷事件集,獲得頻繁一項(xiàng)集
Map?candi?=?new?HashMap();//候選一項(xiàng)集
List>?item?=?new?ArrayList>();//頻繁一項(xiàng)集
for(int?i=0;i Set?value?=?Event.get(i);
Iterator?it?=?value.iterator();
while(it.hasNext()){//將set中的值放進(jìn)候選一項(xiàng)集中,并計(jì)算頻數(shù)
object?str?=?it.next();
if(candi.containsKey(str)){
candi.put(str.toString()?candi.get(str)+1);
}
else
candi.put(str.toString()?1);
}
}
Iterator?it3?=?candi.entrySet().iterator();?
while(it3.hasNext()){?//根據(jù)支持度大小通過(guò)逐次比較得到頻繁一項(xiàng)集
Map.Entry?a?=?(Map.Entry)it3.next();
Set?b?=?new?TreeSet();
????object?v?=?a.getValue();?
????object?t?=?a.getKey();
????if(Integer.parseInt(v.toString())?>=?minSupport){//比較支持度大小,符合要求則加入頻繁一項(xiàng)集中
???? b.add(t.toString());
???????? item.add(b);
????}
}
//System.out.println(item);
return?item;
}???
List>?apriori_gen(List>?preSet){//根據(jù)頻繁(k-1)項(xiàng)集生成頻繁k項(xiàng)集
????????List>?result?=?new?ArrayList>();???
????????int?preSetSize?=?preSet.size();?
????????
????????for?(int?i?=?0;?i?????????????for?(int?j?=?i?+?1;?j?????????????????String[]?strA1?=?preSet.get(i).toArray(new?String[0]);???
????????????????String[]?strA2?=?preSet.get(j).toArray(new?String[0]);??
????????????????
????????????????int?judge?=?1;//連接判斷,判斷兩個(gè)k-1項(xiàng)集是否符合連接成k項(xiàng)集的條件,不符合則將判斷條件置為0
????????????????if?(strA1.length?==?strA2.length)?{???
????????????????????for?(int?m?=?0;?m?????????????????????????if?(!strA1[m].equals(strA2[m]))?{???
????????????????????????????judge?=?0;???
????????????????????????????break;???
????????????????????????}
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件??????11875??2013-04-19?20:21??Apriori\Apriori.java
?????文件?????101607??2013-04-19?15:12??Apriori\Result.txt
?????目錄??????????0??2013-04-23?18:47??Apriori
-----------?---------??----------?-----??----
???????????????113482????????????????????3
評(píng)論
共有 條評(píng)論