數(shù)據(jù)挖掘 副本new_第1頁
數(shù)據(jù)挖掘 副本new_第2頁
數(shù)據(jù)挖掘 副本new_第3頁
數(shù)據(jù)挖掘 副本new_第4頁
數(shù)據(jù)挖掘 副本new_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Apriori算法簡介Apriori算法是一種最有影響的挖掘 HYPERLINK /view/46060.htm布爾關(guān)聯(lián)規(guī)則頻繁項集的算法。其核心是基于兩階段頻集思想的遞推算法。該關(guān)聯(lián)規(guī)則在分類上屬于單維、單層、布爾關(guān)聯(lián)規(guī)則。在這里,所有支持度大于最小支持度的項集稱為頻繁項集,簡稱頻集。 該算法的基本思想是:首先找出所有的頻集,這些項集出現(xiàn)的頻繁性至少和預(yù)定義的最小支持度一樣。然后由頻集產(chǎn)生強關(guān)聯(lián)規(guī)則,這些規(guī)則必須滿足最小支持度和最小可信度。然后使用第1步找到的頻集產(chǎn)生期望的規(guī)則,產(chǎn)生只包含集合的項的所有規(guī)則,其中每一條規(guī)則的右部只有一項,這里采用的是中規(guī)則的定義。一旦這些規(guī)則被生成,那么只有

2、那些大于用戶給定的最小可信度的規(guī)則才被留下來。為了生成所有頻集,使用了遞推的方法。Apriori算法步驟連接步為找L k , 通過L k- 1與自己連接產(chǎn)生候選k2項目集的集合。該候選項的集合記做Ck。設(shè)l1 和l2 是 L k - 1中的項集。記號li j 表示li 的第j 項。執(zhí)行連接L k - 1L k - 1 其中L k- 1的元素l1 和l2 是可以連接的,如果( l1 1 = l2 1 ) ( l1 2 = l2 2 ) ( l1 k - 2 = l2 k - 2 ) ( l1 k - 1 =l2 k - 1 )連接產(chǎn)生的結(jié)果項集是l1 1 l1 2 l1 k - 1 2 k -

3、1 。2剪枝步Ck 的成員可以是也可以不是頻繁的,但所有的頻繁k2項目集都包含在Ck中掃描數(shù)據(jù)庫,確定Ck 中每個候選集計數(shù)(設(shè)置一個標志位Flag)。從而確定L k。Apriori算法演示1.事物數(shù)據(jù)表掃描D,對每個候選計數(shù)2Apriori算法圖解項集比較候選支持度計數(shù)與最小支持度計數(shù)支持度計數(shù)1627 3642 52項集支持度計數(shù)1627 3642 52 項集掃描D,對每個候選計數(shù)由L1產(chǎn)生的候選C21,21,31,41,52,32,42,53,43,54,5項集支持度計數(shù)1,241,341,411,522,342,422,523,403,514,50項集支持度計數(shù)1,241,341,52

4、2,342,422,52比較候選支持度計數(shù)與最小支持度計數(shù)由L2產(chǎn)生的候選C3項集1,2,31,2,5比較候選支持度計數(shù)與最小支持度計數(shù)掃描D,對每個候選計數(shù)項集支持度計數(shù)1,2,321,2,52項集支持度計數(shù)1,2,321,2,52Apriori算法核心代碼掃描數(shù)據(jù)庫,對每個候選碼進行計數(shù)比較候選碼支持度計數(shù)與最小支持度計數(shù)產(chǎn)生下一步的項集,并進行剪枝核心代碼如下:1./得到的候選集public class getLnLinkedHashSet C1; /得到頻繁1項集 public LinkedHashSet getSources() C1 = new LinkedHashSet(); L

5、inkedHashSet hashSet=new LinkedHashSet(); /從數(shù)據(jù)庫中得到值 String sql=select * from datasourse ; /事務(wù)解析排序while(rs.next()strings = rs.getString(list).split(,); /獲得支持度計數(shù) public int getSupcount(String item) /把1,2解析成 %1%2%形式,以便在數(shù)據(jù)庫中計算支持度計數(shù) /得到Ln集合 public LinkedHashMap gettingLn(LinkedHashSet Ck2,int min_support

6、) LinkedHashMap Ln = new LinkedHashMap= min_support) Ln.put(tempi, sup_count); 篩選 /把Linkedhashset中的項合并成list中的一個元素,即把 1 2 變成2,1public class Joint ;/連接操作,得到候選集Ck,每個事務(wù)的項不超過20個 public LinkedHashSet link(int k,LinkedHashSet Ln) /把Ln中的每個事物解析到hashSet數(shù)組中 LinkedHashSet hashSets = new LinkedHashSetLn.size();

7、/生成的候選集 LinkedHashSet Ck = new LinkedHashSet(); /得到的候選項 String candi_item = new String(); /則得到新的候選項 /生成了新的候選項,并把候選項放入Ck中 candi_item = change(hashSetsj); Ck.add(candi_item); /把HashMap型數(shù)據(jù)轉(zhuǎn)換為LinkedHashSet型數(shù)據(jù) public LinkedHashSet mapToSet(LinkedHashMap Ln) 3.剪枝/剪枝step Ck為沒剪枝前的候選集,Ck2為剪枝后的候選集,Ln為Ln項集 pub

8、lic LinkedHashSet cut(LinkedHashSet Ck,LinkedHashSet Ln) /生成二元子集并剪枝 /分析數(shù)組中的每一個字符串:把字符串轉(zhuǎn)換成字符數(shù)組,再把字符數(shù)組中的兩項連接起來 /如:“1,2,3”-1 , 2 ,3 -1,2 1,3 2,3 for (int i = 0; i temp_ck.length; i+) /循環(huán)字符串數(shù)組 char temp_char = new chartemp_cki.length(); temp_char = temp_cki.toCharArray(); /把字符串轉(zhuǎn)換成字符數(shù)組 a:for (int j = 0; j temp_char.length; j+) /循環(huán)每個字符串數(shù)組,生成二項元素.即檢查每個項集if (temp_charj = ,) /若為,,則跳過continue; b:for (int m = j+1; m temp_char.length; m+)if (temp_charm = ,) /若為,,則跳過continue;String sub = String.valueOf(temp_charj) + , + String.valueOf(temp_charm);if(!isIn(sub, temp_ln) /若Ln中沒有,則剪枝temp_cki = $

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論