版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 歡迎下載 Apriori 算法實(shí)驗(yàn)報(bào)告 學(xué) 號: 姓 名: 專 業(yè): 計(jì)算機(jī)應(yīng)用技術(shù) 教 師: 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 歡迎下載 目 錄 1 APRIORI 實(shí)驗(yàn)實(shí)驗(yàn) .1 1.1 實(shí)驗(yàn)背景 .1 1.1.1 國內(nèi)外研究概況.1 1.1.2 發(fā)展趨勢.1 1.2 實(shí)驗(yàn)內(nèi)容與要求 .1 1.2.1 實(shí)驗(yàn)內(nèi)容.1 1.2.2 實(shí)驗(yàn)要求.1 1.2.3 實(shí)驗(yàn)?zāi)康?2 2 APRIORI 算法分析與實(shí)驗(yàn)環(huán)境算法分析與實(shí)驗(yàn)環(huán)境 .3 2.1 APRIORI算法的描述.3 2.2 APRIORI算法的步驟.3 2.3 開發(fā)環(huán)境 .3 2.3.1 軟件環(huán)境.3 2.3.2 硬件環(huán)境.4 2.4 本章小結(jié) .
2、4 3 算法的設(shè)計(jì)算法的設(shè)計(jì).5 3.1 APRIORI算法整體框架.5 3.2 主要的數(shù)據(jù)結(jié)構(gòu)與函數(shù) .5 3.2.1 數(shù)據(jù)結(jié)構(gòu).5 3.2.2 主要的程序.6 3.2.3 連接與剪枝操作.6 3.3 本章小結(jié) .6 4 數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)的來源數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)的來源.7 4.1 正確性驗(yàn)證數(shù)據(jù).7 4.2 實(shí)驗(yàn)數(shù)據(jù) .7 4.3 本章小結(jié) .8 5 實(shí)驗(yàn)結(jié)果與性能分析實(shí)驗(yàn)結(jié)果與性能分析.9 5.1 APRIORI實(shí)驗(yàn)界面.9 5.2 實(shí)驗(yàn)的正確性驗(yàn)證 .9 5.3 實(shí)驗(yàn)性能分析 .10 5.3.1固定最小支持度改變數(shù)據(jù)量.10 5.3.2固定數(shù)據(jù)量改變最小支持度.11 5.3.3實(shí)驗(yàn)結(jié)果
3、分析.11 5.4 本章小結(jié) .12 6 總結(jié)與體會總結(jié)與體會.13 歡迎下載 1 Apriori 實(shí)驗(yàn)實(shí)驗(yàn) 1.1 實(shí)驗(yàn)背景實(shí)驗(yàn)背景 現(xiàn)在, 數(shù)據(jù)挖掘作為從數(shù)據(jù)中獲取信息的有效方法, 越來越受到人們的重視。關(guān) 聯(lián)規(guī)則挖掘首先是用來發(fā)現(xiàn)購物籃數(shù)據(jù)事務(wù)中各項(xiàng)之間的有趣聯(lián)系。從那以后, 關(guān)聯(lián) 規(guī)則就成為數(shù)據(jù)挖掘的重要研究方向,它是要找出隱藏在數(shù)據(jù)間的相互關(guān)系。目前關(guān)聯(lián) 規(guī)則挖掘的研究工作主要包括:Apriori 算法的擴(kuò)展、數(shù)量關(guān)聯(lián)規(guī)則挖掘、關(guān)聯(lián)規(guī)則增 量式更新、無須生成候選項(xiàng)目集的關(guān)聯(lián)規(guī)則挖掘、最大頻繁項(xiàng)目集挖掘、約束性關(guān)聯(lián) 規(guī)則挖掘以及并行及分布關(guān)聯(lián)規(guī)則挖掘算法等。關(guān)聯(lián)規(guī)則的挖掘問題就是在事務(wù)
4、數(shù)據(jù) 庫 D 中找出具有用戶給定的滿足一定條件的最小支持度 Minsup 和最小置信度 Minconf 的關(guān)聯(lián)規(guī)則。 1.1.1 國內(nèi)外研究概況國內(nèi)外研究概況 1993 年,Agrawal 等人首先提出關(guān)聯(lián)規(guī)則概念,關(guān)聯(lián)規(guī)則挖掘便迅速受到數(shù)據(jù)挖 掘領(lǐng)域?qū)<业膹V泛關(guān)注.迄今關(guān)聯(lián)規(guī)則挖掘技術(shù)得到了較為深入的發(fā)展。Apriori 算法 是關(guān)聯(lián)規(guī)則挖掘經(jīng)典算法。針對該算法的缺點(diǎn),許多學(xué)者提出了改進(jìn)算法,主要有基 于哈希優(yōu)化和基于事務(wù)壓縮等。 1.1.2 發(fā)展趨勢發(fā)展趨勢 關(guān)聯(lián)規(guī)則挖掘作為數(shù)據(jù)挖掘的重要研究內(nèi)容之一, 主要研究事務(wù)數(shù)據(jù)庫、關(guān)系數(shù) 據(jù)庫和其他信息存儲中的大量數(shù)據(jù)項(xiàng)之間隱藏的、有趣的規(guī)律。關(guān)
5、聯(lián)規(guī)則挖掘最初僅 限于事務(wù)數(shù)據(jù)庫的布爾型關(guān)聯(lián)規(guī)則, 近年來廣泛應(yīng)用于關(guān)系數(shù)據(jù)庫, 因此, 積極開展 在關(guān)系數(shù)據(jù)庫中挖掘關(guān)聯(lián)規(guī)則的相關(guān)研究具有重要的意義。近年來,已經(jīng)有很多基于 Apriori 算法的改進(jìn)和優(yōu)化。研究者還對數(shù)據(jù)挖掘的理論進(jìn)行了有益的探索,將概念格 和粗糙集應(yīng)用于關(guān)聯(lián)規(guī)則挖掘中,獲得了顯著的效果。到目前為止,關(guān)聯(lián)規(guī)則的挖掘 已經(jīng)取得了令人矚目的成績,包括:單機(jī)環(huán)境下的關(guān)聯(lián)規(guī)則挖掘算法;多值屬性關(guān)聯(lián) 規(guī)則挖掘;關(guān)聯(lián)規(guī)則更新算法;基于約束條件的關(guān)聯(lián)規(guī)則挖掘;關(guān)聯(lián)規(guī)則并行及分布 挖掘算法等。 1.2 實(shí)驗(yàn)內(nèi)容與要求實(shí)驗(yàn)內(nèi)容與要求 1.2.1 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容 編程實(shí)現(xiàn) Apriori 算
6、法:要求使用a,b,c,d,e,f,g,h,i,j10 個(gè)項(xiàng)目隨機(jī)產(chǎn) 生數(shù)據(jù)記錄并存入數(shù)據(jù)庫。從數(shù)據(jù)庫讀取記錄進(jìn)行 Apriori 實(shí)驗(yàn),獲得頻繁集以及關(guān)聯(lián) 規(guī)則,實(shí)現(xiàn)可視化。并用課堂上 PPT 的實(shí)例測試其正確性。 1.2.2 實(shí)驗(yàn)要求實(shí)驗(yàn)要求 1、程序結(jié)構(gòu):包括前臺工具和數(shù)據(jù)庫; 2、設(shè)定項(xiàng)目種類為10個(gè),隨機(jī)產(chǎn)生事務(wù),生成數(shù)據(jù)庫; 3、正確性驗(yàn)證(可用課堂上的例子) ; 4、算法效率的研究:在支持度固定數(shù)據(jù)量不同的時(shí)候測量運(yùn)行時(shí)間;在數(shù)據(jù)量固 定,支持度不同的時(shí)候測量運(yùn)行時(shí)間; 5、注意界面的設(shè)計(jì),輸入最小支持度和最小可信度,能夠輸出并顯示頻繁項(xiàng)目集 以及關(guān)聯(lián)規(guī)則。 歡迎下載 1.2.3
7、 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?1、加強(qiáng)對 Apriori 算法的理解; 2、鍛煉分析問題、解決問題并動手實(shí)踐的能力。 歡迎下載 2 Apriori 算法分析與實(shí)驗(yàn)環(huán)境算法分析與實(shí)驗(yàn)環(huán)境 2.1 Apriori 算法的描述算法的描述 Apriori 算法是一種找頻繁項(xiàng)目集的基本算法。其基本原理是逐層搜索的迭代:頻 繁 K 項(xiàng) Lk 集用于搜索頻繁(K+1)項(xiàng)集 Lk+1,如此下去,直到不能找到維度更高的頻繁 項(xiàng)集為止。這種方法依賴連接和剪枝這兩步來實(shí)現(xiàn)。算法的第一次遍歷僅僅計(jì)算每個(gè) 項(xiàng)目的具體值的數(shù)量,以確定大型 l 項(xiàng)集。隨后的遍歷,第 k 次遍歷,包括兩個(gè)階段。 首先,使用在第(k-1)次遍歷中找到的
8、大項(xiàng)集 Lk-1 和產(chǎn)生候選項(xiàng)集 Ck。接著掃描數(shù)據(jù) 庫,計(jì)算 Ck 中候選的支持度。用 Hash 樹可以有效地確定 Ck 中包含在一個(gè)給定的事務(wù) t 中的候選。如果某項(xiàng)集滿足最小支持度, 則稱它為頻繁項(xiàng)集。 2.2 Apriori 算法的步驟算法的步驟 步驟如下: 1、設(shè)定最小支持度 s 和最小置信度 c; 2、Apriori 算法使用候選項(xiàng)集。首先產(chǎn)生出候選的項(xiàng)的集合,即候選項(xiàng)集,若候選 項(xiàng)集的支持度大于或等于最小支持度,則該候選項(xiàng)集為頻繁項(xiàng)集; 3、在 Apriori 算法的過程中,首先從數(shù)據(jù)庫讀入所有的事務(wù),每個(gè)項(xiàng)都被看作候選 1-項(xiàng)集,得出各項(xiàng)的支持度,再使用頻繁 1-項(xiàng)集集合來產(chǎn)生
9、候選 2-項(xiàng)集集合,因?yàn)橄闰?yàn) 原理保證所有非頻繁的 1-項(xiàng)集的超集都是非頻繁的; 4、再掃描數(shù)據(jù)庫,得出候選 2-項(xiàng)集集合,再找出頻繁 2-項(xiàng)集,并利用這些頻繁 2-項(xiàng) 集集合來產(chǎn)生候選 3-項(xiàng)集; 5、重復(fù)掃描數(shù)據(jù)庫,與最小支持度比較,產(chǎn)生更高層次的頻繁項(xiàng)集,再從該集合里 產(chǎn)生下一級候選項(xiàng)集,直到不再產(chǎn)生新的候選項(xiàng)集為止。 2.3 開發(fā)環(huán)境開發(fā)環(huán)境 2.3.1 軟件環(huán)境軟件環(huán)境 (1)編程軟件:Jdk 開發(fā)包+eclipse 集成開發(fā)環(huán)境 Eclipse 是一個(gè)開放源代碼的、基于 Java 的可擴(kuò)展開發(fā)平臺。就其本身而言,它 只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,E
10、clipse 附 帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java 開發(fā)工具(Java Development Kit,JDK) 。 (2)數(shù)據(jù)庫軟件:SQL Server 2008 SQL Server 2008 在 Microsoft 的數(shù)據(jù)平臺上發(fā)布,可以組織管理任何數(shù)據(jù)???以將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)直接存儲到數(shù)據(jù)庫中。可以對數(shù)據(jù)進(jìn)行 查詢、搜索、同步、報(bào)告和分析之類的操作。數(shù)據(jù)可以存儲在各種設(shè)備上,從數(shù)據(jù)中 心最大的服務(wù)器一直到桌面計(jì)算機(jī)和移動設(shè)備,它都可以控制數(shù)據(jù)而不用管數(shù)據(jù)存儲 在哪里。 (3)辦公軟件:Excel 2010 Excel 是一款試算表辦公軟件。它是微軟辦公套裝軟
11、件 office 的重要的組成部分, 它是集統(tǒng)計(jì)分析、數(shù)據(jù)處理和輔助決策等功能于一身,現(xiàn)在金融、統(tǒng)計(jì)財(cái)經(jīng)、管理等 眾多領(lǐng)域廣泛應(yīng)用。本實(shí)驗(yàn)主要用來為固定數(shù)據(jù)量改變最小支持?jǐn)?shù)以及固定最小支持 數(shù)改變數(shù)據(jù)量兩種情況進(jìn)行時(shí)間分析提供可視化圖表。 歡迎下載 2.3.2 硬件環(huán)境硬件環(huán)境 裝有 Windows 7 旗艦版電腦。 2.4 本章小結(jié)本章小結(jié) 本章的內(nèi)容主要是為了引出本實(shí)驗(yàn)的主要算法以及對算法的實(shí)現(xiàn)環(huán)境做了介紹。 歡迎下載 3 算法的設(shè)計(jì)算法的設(shè)計(jì) 3.1 Apriori 算法整體框架算法整體框架 Apriori 開始 定義 minsup、minconf K=1,產(chǎn)生C1 掃描數(shù)據(jù)庫,產(chǎn)生L1
12、 生成1項(xiàng)頻繁項(xiàng)目集 由Lk連接,剪枝產(chǎn)生Ck+1 Ck為空 生成關(guān)聯(lián)規(guī)則 生成頻繁項(xiàng)目集 掃描,產(chǎn)生Lk+1 Apriori 結(jié)束 是 否 圖 3.1 Apriori 實(shí)驗(yàn)流程圖 3.2 主要的數(shù)據(jù)結(jié)構(gòu)與函數(shù)主要的數(shù)據(jù)結(jié)構(gòu)與函數(shù) 3.2.1 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) class Transaction public int pid; public String itemset; 該類表示表中的一條記錄。 class Dao 歡迎下載 public ArrayList Query(String sql) 該類用于訪問數(shù)據(jù)庫操作。 class Kfp public char kfpstr=new cha
13、rApriori.ITEMSIZE; public int index=-1; public int support=0; public boolean isfp=true; 該類代表一個(gè)頻繁項(xiàng)目。 3.2.2 主要的程序主要的程序 Java 中最常用的集合類是 List 和 Map。 List 的具體實(shí)現(xiàn)包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構(gòu)建、存儲和操作任何類型對象的元素列表。 List 適用于按數(shù)值索引訪問元素的情形。HashMap:Map 接口的常用實(shí)現(xiàn)類,系統(tǒng) 當(dāng)成一個(gè)整體進(jìn)行處理,系統(tǒng)總是根據(jù) Hash 算法來計(jì)算的存儲 位置,這樣可以保證能快
14、速存、取 Map 的對。 ArrayList alTransactions:保存表中的所有記錄 ArrayList alKfpsl:臨時(shí)存儲頻繁項(xiàng)目的集合,存儲連接后的結(jié)果 ArrayList SureFpset:保存頻繁 k 項(xiàng)集 ArrayList SureFpsetPrio:保存頻繁 k-1 項(xiàng)集 ArrayList notFpList:保存一定不是頻繁項(xiàng)目的集合,用于剪枝 HashMap KfpSuppor:頻繁項(xiàng)目集及其對應(yīng)的支持?jǐn)?shù) HashMap guanlianguize:關(guān)聯(lián)規(guī)則及其置信度 3.2.3 連接與剪枝操作連接與剪枝操作 對于連接操作的兩個(gè)字符串(長度為 k),它們必
15、須有 k-1 個(gè)相同的字符才能做連接 操作。 例如:abc 和 abd 可以連接成 abcd,abd 和 bcd 可以連接成 abcd,而 abc 和 ade 就不 可以做連接操作。整個(gè)連接過程類似歸并排序中的歸并操作 對于任一頻繁項(xiàng)目集的所有非空子集也必須是頻繁的,反之,如果某個(gè)候選的非 空子集不是頻繁的,那么該候選集肯定不是頻繁的,將其剪枝。 3.3 本章小結(jié)本章小結(jié) 本章主要介紹了算法設(shè)計(jì)的整體流程并且也對主要程序和操作作了簡要的說明。 歡迎下載 4 數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)的來源數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)的來源 本實(shí)驗(yàn)的數(shù)據(jù)均存儲于數(shù)據(jù)庫中。數(shù)據(jù)庫 yuzm 中共產(chǎn)生 6 張表。表 test 為測試
16、 用表,用于程序的正確性驗(yàn)證。還有 5 張表存儲隨機(jī)產(chǎn)生的實(shí)驗(yàn)數(shù)據(jù)。其中數(shù)據(jù)庫的 結(jié)構(gòu)如下圖所示。 圖 4.1 數(shù)據(jù)庫結(jié)構(gòu) 4.1 正確性驗(yàn)證數(shù)據(jù)正確性驗(yàn)證數(shù)據(jù) 表 test 為 PPT 上的實(shí)例,用于正確性驗(yàn)證。數(shù)據(jù)的 item 個(gè)數(shù)為 5,其中的九行數(shù) 據(jù)均由 SQL 語句產(chǎn)生,表的每一行都是一個(gè)“0” “1”的字符串,字符串長度等于商 品種類,其中“0”表示該商品不存在, “1”表示該商品存在。表的全部數(shù)據(jù)如圖 4.2。 圖 4.2 表 test 4.2 實(shí)驗(yàn)數(shù)據(jù)實(shí)驗(yàn)數(shù)據(jù) 5 張表是通過算法隨機(jī)產(chǎn)生的具有不同數(shù)據(jù)量的數(shù)據(jù)集,假設(shè)商品種類為 10 種, 表的每一行都是一個(gè)“0” “1”的字
17、符串,字符串長度等于商品種類,其中“0”表示 歡迎下載 該商品不存在, “1”表示該商品存在。其中表 data1 共隨機(jī)產(chǎn)生 1 萬行數(shù)據(jù),表 data2 產(chǎn)生 5 萬行數(shù)據(jù),表 data3 產(chǎn)生 25 萬行數(shù)據(jù),表 data4 產(chǎn)生 50 萬行數(shù)據(jù),表 data5 產(chǎn)生 75 萬行數(shù)據(jù)。部分?jǐn)?shù)據(jù)如圖 4.3。 圖 4.3 實(shí)驗(yàn)用表(部分) 4.3 本章小結(jié)本章小結(jié) 本章主要對數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)來源做出了說明。 歡迎下載 5 實(shí)驗(yàn)結(jié)果與性能分析實(shí)驗(yàn)結(jié)果與性能分析 5.1 Apriori 實(shí)驗(yàn)界面實(shí)驗(yàn)界面 其中可信度可自由設(shè)置,默認(rèn)為 0.7。而支持度記為最小支持度與數(shù)據(jù)量的比例。 實(shí)驗(yàn)數(shù)據(jù)可以
18、下拉選擇 6 張表中的任意一張。如下圖所示: 圖 5.1 實(shí)驗(yàn)界面 5.2 實(shí)驗(yàn)的正確性驗(yàn)證實(shí)驗(yàn)的正確性驗(yàn)證 運(yùn)行程序,我們選擇表 test,即可進(jìn)行正確性驗(yàn)證,實(shí)驗(yàn)結(jié)果如下圖: 歡迎下載 圖 5.2 正確性驗(yàn)證 最終實(shí)驗(yàn)結(jié)果與 ppt 的結(jié)果相吻合,表明程序編寫正確。 5.3 實(shí)驗(yàn)性能分析實(shí)驗(yàn)性能分析 為了對本程序的實(shí)驗(yàn)進(jìn)行性能分析,我們分別采用固定數(shù)據(jù)量改變最小支持?jǐn)?shù)以 及固定最小支持?jǐn)?shù)改變數(shù)據(jù)量兩種情況進(jìn)行時(shí)間分析,其中最小置信度設(shè)為 0.7 不變。 5.3.1 固定最小支持度改變數(shù)據(jù)量固定最小支持度改變數(shù)據(jù)量 設(shè)支持度為 0.2,最小可信度為 0.7。具體實(shí)驗(yàn)數(shù)據(jù)量與執(zhí)行時(shí)間如下: 表
19、 5.1 數(shù)據(jù)量對性能的影響 數(shù)據(jù)量(萬行)15255075 時(shí)間(秒)48.2128.2366.9623.41032.3 歡迎下載 圖 5.3 數(shù)據(jù)量對性能的影響 5.3.2 固定數(shù)據(jù)量改變最小支持度固定數(shù)據(jù)量改變最小支持度 設(shè)實(shí)驗(yàn)數(shù)據(jù)量固定改變最小支持度,具體如下所示: 表 5.2 最小支持度對性能的影響 最小支持度0.150.200.250.300.35 時(shí)間(秒/ 1 萬) 175.64914.28.55.2 時(shí)間(秒/ 5 萬) 294.1128.258.841.525.7 時(shí)間(秒/ 25 萬) 531.3366.9246.5185.6154.0 歡迎下載 圖 5.4 最小支持度對
20、性能的影響 5.3.3 實(shí)驗(yàn)結(jié)果分析實(shí)驗(yàn)結(jié)果分析 由以上實(shí)驗(yàn)我們可以看出,實(shí)驗(yàn)時(shí)間會隨著數(shù)據(jù)量的增大而增大,并且隨著最小 支持度的增大而減小。并且他們之間的變化類似于某種指數(shù)函數(shù)的變化趨勢。Apriori 的時(shí)間主要消耗在 4 個(gè)方面: 1、利用 K 頻繁集連接產(chǎn)生 K+1 候選集時(shí),判斷連接的條件時(shí)比較的次數(shù)太多。 假設(shè)項(xiàng)集個(gè)數(shù)為 m 的頻繁集合 Lk,判斷連接條件時(shí)比較的時(shí)間復(fù)雜度為 O(K*m2) 。 而且本實(shí)驗(yàn)的 m 都很大; 2、對 Ck 中任意的一個(gè) c 的 k 個(gè)(k-1)子集是否都在 Lk-1 中。在平均情況下, 對所有候選 k 項(xiàng)集需要掃描次數(shù)為|Ck|*|Lk-1|*k/2
21、; 3、為了得到所有的候選頻集的支持度,需要掃描 N 次; 4、掃描一次數(shù)據(jù)庫需時(shí)間 O(k|T|) 。|T|為交易數(shù)量,k 交易長度 5.4 本章小結(jié)本章小結(jié) Apriori 算法因自身需要多次掃描數(shù)據(jù)庫,并且經(jīng)過復(fù)雜的連接剪枝操作而產(chǎn)生大 量候選集以及進(jìn)行大量的模式匹配計(jì)算的缺陷,使得其在 I/O 上的花費(fèi)時(shí)間很多,從 而導(dǎo)致算法的效率不是太高。 歡迎下載 6 總結(jié)總結(jié)與體會與體會 通過本次實(shí)驗(yàn),讓我明白了什么是 Apriori 算法和數(shù)據(jù)之間的關(guān)聯(lián)性,Apriori 算法 是一種最有影響的挖掘布爾關(guān)聯(lián)規(guī)則頻繁項(xiàng)集的算法,為以后進(jìn)步學(xué)習(xí)數(shù)據(jù)挖掘知識 打下了良好的基礎(chǔ)。同時(shí)我也更加深刻理解了
22、 Apriori 算法的原理及其實(shí)現(xiàn)的內(nèi)部細(xì)節(jié), 同時(shí)通過實(shí)現(xiàn)這一經(jīng)典的數(shù)據(jù)挖掘算法,也讓我更深刻的體會到數(shù)據(jù)挖掘?qū)τ谥R發(fā) 現(xiàn)的重要性,盡管實(shí)現(xiàn)了算法,但其中可能還有可以改進(jìn)的地方,尤其是程序的運(yùn)行 效率方面。Apriori 算法實(shí)驗(yàn)不僅使得我對該算法的理解更加上升了一個(gè)層次,同時(shí)也 使得我更加了解了 java 編程語言,使用更加得心應(yīng)手。 import java.awt.BorderLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextArea
23、; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Set; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import jav
24、ax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import org.omg.CORBA.PUBLIC_MEMBER; public class Apriori extends JFrame implements ActionListener 歡迎下載 / public static int ITEMSIZE=10; public final int FRAMEWIDTH=800; public final int FRAMEHEIGHT=600; / JPanel up=null; JPan
25、el up_up=null; TextField textFieldName=null; JPanel up_down=null; JPanel up_down_left=null; JLabel conflabel=null; JLabel c1=null; JLabel c2=null; JLabel c3=null; JLabel c4=null; JLabel c5=null; JLabel c6=null; JLabel c7=null; JLabel c8=null; JTextField conf=null; JLabel supportlabel=null; JTextFiel
26、d support=null; JPanel up_down_right=null; JComboBox jComboBoxDateSize=null;/下拉框 JButton jButtonMine=null; JPanel down=null; TextArea textArea=null; int fpstep=1; int fpindex=0; Dao dao=null; double MinSupport=0.20; double MinConfi=0.70; double DateSize=9.0; ArrayList alTransactions=null; ArrayList
27、alKfps=null; ArrayList notFpList=null; ArrayList SureFpset=null; ArrayList SureFpsetPrio=null; 歡迎下載 HashMap KfpSupport=null; ArrayList alsurekfpstr=null; HashMap guanlianguize=null; ArrayList isaddarrStrings=null; int AuxArr=null; public static void main(String args) Apriori A=new Apriori(); public
28、Apriori() JPanel up=new JPanel(new GridLayout(2, 1); JPanel up_up=new JPanel(new GridLayout(1, ITEMSIZE); /TextField textFieldName=new TextFieldITEMSIZE; /for(int i=0;iITEMSIZE;i+) / /textFieldNamei=new TextField(); /up_up.add(textFieldNamei); / c1=new JLabel( 數(shù)); up_up.add(c1); c2=new JLabel( 據(jù)); u
29、p_up.add(c2); c3=new JLabel( 挖); up_up.add(c3); c4=new JLabel( 掘); up_up.add(c4); c5=new JLabel( 實(shí)); up_up.add(c5); c6=new JLabel( 驗(yàn)); up_up.add(c6); c7=new JLabel( -); up_up.add(c7); c8=new JLabel( Apriori); up_up.add(c8); 歡迎下載 up_down=new JPanel(new GridLayout(1, 2); up_down_left=new JPanel(new Gr
30、idLayout(1, 4); conflabel=new JLabel(可信度:); conf=new JTextField(); conf.setText(0.7); supportlabel=new JLabel(支持度:); support=new JTextField(); support.setText(0.2); up_down_left.add(conflabel); up_down_left.add(conf); up_down_left.add(supportlabel); up_down_left.add(support); up_down_right=new JPane
31、l(new GridLayout(1, 2); jComboBoxDateSize=new JComboBox();/下拉框 jComboBoxDateSize.addItem(test); jComboBoxDateSize.addItem(data1); jComboBoxDateSize.addItem(data2); jComboBoxDateSize.addItem(data3); jComboBoxDateSize.addItem(data4); jComboBoxDateSize.addItem(data5); jComboBoxDateSize.addActionListene
32、r(this); jButtonMine=new JButton(開始挖掘); jButtonMine.addActionListener(this); up_down_right.add(jComboBoxDateSize); up_down_right.add(jButtonMine); up_down.add(up_down_left); up_down.add(up_down_right); up.add(up_up); up.add(up_down); down=new JPanel(new BorderLayout() ; textArea=new TextArea(); /tex
33、tArea.setFont(new Font(Font.DIALOG,Font.ITALIC , 20); textArea.setFont(new Font(Font.DIALOG,Font.PLAIN , 20); down.add(textArea); this.setLayout(new BorderLayout(); this.setSize(FRAMEWIDTH, FRAMEHEIGHT); this.setLocation(100, 100); 歡迎下載 this.setSize(this.FRAMEWIDTH, this.FRAMEHEIGHT); this.setDefaul
34、tCloseOperation(JFrame.EXIT_ON_CLOSE); this.setTitle(Apriori); /up.setSize(this.FRAMEWIDTH, 100); this.add(up,BorderLayout.NORTH); /down.setLocation(0, 100); /down.setSize(this.FRAMEWIDTH, this.FRAMEHEIGHT-100); this.add(down); this.setVisible(true); public void InitDate(String table) fpstep=1; AuxA
35、rr=new intITEMSIZE+1ITEMSIZE+1; alKfps=new ArrayList(); notFpList=new ArrayList(); SureFpset=new ArrayList(); SureFpsetPrio=new ArrayList(); dao=new Dao(); KfpSupport=new HashMap(); alsurekfpstr=new ArrayList(); guanlianguize=new HashMap(); isaddarrStrings=new ArrayList(); alTransactions=dao.Query(s
36、elect * from +table); this.DateSize=alTransactions.size(); public void ShowkFp(ArrayList SureFpset) int steptemp=fpstep; textArea.append(頻繁+(steptemp)+項(xiàng)集rn); /System.out.println(); for(int i=0;iSureFpset.size();i+) Kfp k=SureFpset.get(i); int tempindex=k.index; String string=String.copyValueOf(k.kfp
37、str, 0, +tempindex); int support=KfpSupport.get(string); textArea.append(string+-+support+-+support/DateSize+rn); /System.out.println(string+rn); 歡迎下載 public void ShowkFp2(HashMap SureFpset) textArea.append(關(guān)聯(lián)規(guī)則rn); Set keys=(Set) SureFpset.keySet(); for(String keyString:keys) textArea.append(keyStr
38、ing+-+SureFpset.get(keyString)+rn); public void DataMine() int fpsteptemp=0; if(fpstep = 1) for(int i=0;iApriori.ITEMSIZE;i+) Kfp kfp=new Kfp(); kfp.kfpstr+kfp.index=(char) (a+i); kfp.support=0; kfp.isfp=false; alKfps.add(kfp); DealSupport(); SaveNotFpBySupport(); SaveSureFp(); ShowkFp(alKfps); fpst
39、ep+; while(!alKfps.isEmpty() alKfps.clear(); for (int i = 0; i SureFpset.size(); i+) Kfp k1 = SureFpset.get(i); for (int j = i + 1; j SureFpset.size(); j+) 歡迎下載 Kfp k2 = SureFpset.get(j); Kfp resultKfp = Joint(k1, k2); int tempindex=resultKfp.index; String string=String.copyValueOf(resultKfp.kfpstr,
40、 0, +tempindex); if(string.charAt(0) = 0) continue; SubSet subSet= new SubSet(); ArrayList alStrings=subSet.displaySubSet1(string.toCharArray(); int p=0; for(;palStrings.size();p+) String string2=alStrings.get(p); if(notFpList.contains(string2) break; if(p != alStrings.size() continue; if (!isaddarr
41、Strings.contains(string) isaddarrStrings.add(string); alKfps.add(resultKfp); SureFpsetPrio.clear(); for(int i=0;iSureFpset.size();i+) SureFpsetPrio.add(SureFpset.get(i); Guanlianguize(); SureFpset.clear(); DealSupport(); SaveNotFpBySupport(); / Cut(); if (!alKfps.isEmpty() SaveSureFp(); ShowkFp(Sure
42、Fpset); 歡迎下載 fpstep+; public void Guanlianguize() for(int i=0;iSureFpsetPrio.size();i+) Kfp k=SureFpsetPrio.get(i); int len = k.index; String string=String.copyValueOf(k.kfpstr, 0, len+1); if(!alsurekfpstr.contains(string) alsurekfpstr.add(string); SubSet s=new SubSet(); for(int i=0;ialsurekfpstr.si
43、ze();i+) String kfpstr=alsurekfpstr.get(i); char kfpchararr=kfpstr.toCharArray(); ArrayList aList=s.SubSet3(kfpchararr,kfpstr.length(); for(int j=0;jaList.size();j+) String guizetemp=; String kfpstr1=aList.get(j); char kfpchararr1=kfpstr1.toCharArray(); int indexinkfp=0; int indexinchararr1=0; while
44、(indexinkfp kfpchararr.length indexinkfp+; else indexinchararr1+; indexinkfp+; while(indexinkfp MinConfi) String temp=kfpstr1+-+guizetemp; guanlianguize.put(temp,support1/support2); ShowkFp2(guanlianguize); alsurekfpstr.clear(); guanlianguize.clear(); public Kfp Joint(Kfp k1,Kfp k2) Kfp resultKfp=new Kfp(); int temp_len=k1.index+1; char temp1=new chartemp_len; char temp
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年征兵心理抗壓能力測試題及核心答案
- 2026年黑龍江農(nóng)業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試備考試題帶答案解析
- 2026年成都農(nóng)業(yè)科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試模擬試題帶答案解析
- 2026年黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院單招職業(yè)技能筆試模擬試題帶答案解析
- 高層住宅靜壓樁基礎(chǔ)施工方案
- 2026年電腦維修從業(yè)者資格考試題庫含答案
- 維穩(wěn)工作協(xié)調(diào)小組工作方案
- 輸電鐵塔吊裝施工方案
- 雨水管道安裝工程資源調(diào)配方案
- 防水施工方案范本要點(diǎn)
- 伯克利-利特溫(組織績效與變革因果關(guān)系)組織診斷+模型案例、工具解析
- 傳染病相關(guān)醫(yī)療設(shè)備與器械的操作與維護(hù)
- 售后服務(wù)流程管理手冊
- 2020-2021學(xué)年新概念英語第二冊-Lesson14-同步習(xí)題(含答案)
- 混凝土構(gòu)件的配筋計(jì)算
- 國家開放大學(xué)《政治學(xué)原理》章節(jié)自檢自測題參考答案
- GB/T 5758-2023離子交換樹脂粒度、有效粒徑和均一系數(shù)的測定方法
- 防雷裝置維護(hù)保養(yǎng)制度
- 中醫(yī)治療“膏淋”醫(yī)案67例
- 黃金冶煉行業(yè)三廢處理綜述
- 統(tǒng)編版高中語文選擇性必修上冊 在民族復(fù)興的歷史豐碑上-2020中國抗疫記 教學(xué)課件
評論
0/150
提交評論