![Apriori算法實(shí)驗(yàn)報告及程序_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/23/62430d01-250f-4ad0-8e0b-c6f6d7d33a08/62430d01-250f-4ad0-8e0b-c6f6d7d33a081.gif)
![Apriori算法實(shí)驗(yàn)報告及程序_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/23/62430d01-250f-4ad0-8e0b-c6f6d7d33a08/62430d01-250f-4ad0-8e0b-c6f6d7d33a082.gif)
![Apriori算法實(shí)驗(yàn)報告及程序_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/23/62430d01-250f-4ad0-8e0b-c6f6d7d33a08/62430d01-250f-4ad0-8e0b-c6f6d7d33a083.gif)
![Apriori算法實(shí)驗(yàn)報告及程序_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/23/62430d01-250f-4ad0-8e0b-c6f6d7d33a08/62430d01-250f-4ad0-8e0b-c6f6d7d33a084.gif)
![Apriori算法實(shí)驗(yàn)報告及程序_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/23/62430d01-250f-4ad0-8e0b-c6f6d7d33a08/62430d01-250f-4ad0-8e0b-c6f6d7d33a085.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Ap riori學(xué)姓專教口號名業(yè)師算法實(shí)驗(yàn)報告計(jì)算機(jī)應(yīng)用技術(shù)計(jì)算機(jī)學(xué)院6APRIORI實(shí)驗(yàn) .1.1實(shí)驗(yàn)背景 .1.1.1 國內(nèi)外研究概況 .1.1.2 發(fā)展趨勢 .1.2實(shí)驗(yàn)內(nèi)容與要求. .實(shí)驗(yàn)內(nèi)容 .實(shí)驗(yàn)要求 .實(shí)驗(yàn)?zāi)康?.算法分析與實(shí)驗(yàn)環(huán)境1.2.11.2.21.2.3APRIORI2.1 APRIORI算法的描述.2.2 APRIORI算法的步驟.2.3開發(fā)環(huán)境 .2.3.1 軟件環(huán)境 .2.3.2 硬件環(huán)境 .2.4本章小結(jié) .算法的設(shè)計(jì) .3.1 APRIORI算法整體框架3.2主要的數(shù)據(jù)結(jié)構(gòu)與函數(shù)3.2.13.2.2數(shù)據(jù)結(jié)構(gòu) .主要的程序 .連接與剪枝操作3.2.33.3本章小結(jié)
2、 .數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)的來源. .4.1正確性驗(yàn)證數(shù)據(jù) .4.2實(shí)驗(yàn)數(shù)據(jù) .4.3本章小結(jié) .實(shí)驗(yàn)結(jié)果與性能分析 .5.1 APRIORI實(shí)驗(yàn)界面 .5.2實(shí)驗(yàn)的正確性驗(yàn)證. .5.3實(shí)驗(yàn)性能分析. .5.3.1 固定最小支持度改變數(shù)據(jù)量 .5.3.2 固定數(shù)據(jù)量改變最小支持度 .5.3.3 實(shí)驗(yàn)結(jié)果分析 .5.4本章小結(jié) .總結(jié)與體會 .目錄1 Apriori實(shí)驗(yàn)1.1實(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)系。
3、目前關(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ù)數(shù)據(jù)庫D中找出具有用戶給定的滿足一定條件的最小支持度Minsup和最小置信度Minconf的關(guān)聯(lián)規(guī)則。1.1.1國內(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)算法,主要
4、有基于哈希優(yōu)化和基于事務(wù)壓縮等。1.1.2發(fā)展趨勢關(guān)聯(lián)規(guī)則挖掘作為數(shù)據(jù)挖掘的重要研究內(nèi)容之一,主要研究事務(wù)數(shù)據(jù)庫、關(guān) 系數(shù)據(jù)庫和其他信息存儲中的大量數(shù)據(jù)項(xiàng)之間隱藏的、有趣的規(guī)律。關(guān)聯(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ī)則更
5、新算法;基于約束條件 的關(guān)聯(lián)規(guī)則挖掘;關(guān)聯(lián)規(guī)則并行及分布挖掘算法等。1.2實(shí)驗(yàn)內(nèi)容與要求1.2.1實(shí)驗(yàn)內(nèi)容集以及關(guān)聯(lián)規(guī)則,實(shí)現(xiàn)可視化。并用課堂上PPT的實(shí)例測試其正確性。1.2.2實(shí)驗(yàn)要求1、程序結(jié)構(gòu):包括前臺工具和數(shù)據(jù)庫;2、設(shè)定項(xiàng)目種類為10個,隨機(jī)產(chǎn)生事務(wù),生成數(shù)據(jù)庫;3、正確性驗(yàn)證(可用課堂上的例子)4、算法效率的研究:在支持度固定數(shù)據(jù)量不同的時候測量運(yùn)行時間;在數(shù)據(jù)量固定,支持度不同的時候測量運(yùn)行時間;5、注意界面的設(shè)計(jì),輸入最小支持度和最小可信度,能夠輸出并顯示頻繁項(xiàng)目集以及關(guān)聯(lián)規(guī)則。1.2.3實(shí)驗(yàn)?zāi)康?、加強(qiáng)對Apriori算法的理解;2、鍛煉分析問題、解決問題并動手實(shí)踐的能力。
6、編 程 實(shí) 現(xiàn)Apriori算法要求使用a,b,c,d,e,f,g,h,10個項(xiàng)目隨機(jī)產(chǎn)生數(shù)據(jù)記錄并存入數(shù)據(jù)庫。從數(shù)據(jù)庫讀取記錄進(jìn)行Apriori實(shí)驗(yàn),獲得頻繁算法是一種找頻繁項(xiàng)目集的基本算法。其基本原理是逐層搜索的迭 代:頻繁K項(xiàng)Lk集用于搜索頻繁(K+1)項(xiàng)集Lk+1,如此下去,直到不能找到維 度更高的頻繁項(xiàng)集為止。這種方法依賴連接和剪枝這兩步來實(shí)現(xiàn)。算法的第一次 遍歷僅僅計(jì)算每個項(xiàng)目的具體值的數(shù)量,以確定大型l項(xiàng)集。隨后的遍歷,第k次遍歷,包括兩個階段。首先,使用在第(k-1)次遍歷中找到的大項(xiàng)集Lk-1和產(chǎn) 生候選項(xiàng)集Ck。接著掃描數(shù)據(jù)庫,計(jì)算Ck中候選的支持度。用Hash樹可以有效
7、地確定Ck中包含在一個給定的事務(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ù),每個項(xiàng)都被看 作候選1-項(xiàng)集,得出各項(xiàng)的支持度,再使用頻繁1 -項(xiàng)集集合來產(chǎn)生候選2-項(xiàng)集集合,因?yàn)橄闰?yàn)原理保證所有非頻繁的1-項(xiàng)集的超集都是非頻繁的;4、再掃描數(shù)據(jù)庫,得出候選2-項(xiàng)集集合,再找出頻繁2-項(xiàng)集,并利用這些頻 繁2-
8、項(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)境2.3.1軟件環(huán)境(1)編程軟件:Jdk開發(fā)包+eclipse集成開發(fā)環(huán)境Eclipse是一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而2 Apriori算法分析與實(shí)驗(yàn)環(huán)境2.1 Apriori算法的描述Apriori言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK。(2)數(shù)據(jù)庫軟件:SQ
9、L Server 2008SQLServer 2008在Microsoft的數(shù)據(jù)平臺上發(fā)布, 可以組織管理任何數(shù)據(jù)??梢詫⒔Y(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)直接存儲到數(shù)據(jù)庫中??梢詫?shù) 據(jù)進(jìn)行查詢、搜索、同步、報告和分析之類的操作。數(shù)據(jù)可以存儲在各種設(shè)備上,從數(shù)據(jù)中心最大的服務(wù)器一直到桌面計(jì)算機(jī)和移動設(shè)備, 用管數(shù)據(jù)存儲在哪里。(3)辦公軟件:Excel 2010Excel是一款試算表辦公 軟件。它是微軟辦公套裝軟件office的重要的組成部分,它是集統(tǒng)計(jì)分析、數(shù)據(jù)處理和輔助決策等功能于一身,現(xiàn)在金融、統(tǒng)計(jì)財 經(jīng)、管理等眾多領(lǐng)域廣泛應(yīng)用。本實(shí)驗(yàn)主要用來為固定數(shù)據(jù)量改變最小支持?jǐn)?shù)以 及固定最小
10、支持?jǐn)?shù)改變數(shù)據(jù)量兩種情況進(jìn)行時間分析提供可視化圖表。2.3.2硬件環(huán)境裝有Windows 7旗艦版電腦。2.4本章小結(jié)本章的內(nèi)容主要是為了引出本實(shí)驗(yàn)的主要算法以及對算法的實(shí)現(xiàn)環(huán)境做了 介紹。它都可以控制數(shù)據(jù)而不3算法的設(shè)計(jì)3.1 Apriori算法整體框架圖3.1 Apriori實(shí)驗(yàn)流程圖3.2主要的數(shù)據(jù)結(jié)構(gòu)與函數(shù)3.2.1數(shù)據(jù)結(jié)構(gòu)class Transactionpublic int pid;public String itemset;該類表示表中的一條記錄。class Daopublic ArrayList Query(String sql)該類用于訪問數(shù)據(jù)庫操作。class Kfppub
11、lic char kfpstr=new charApriori.ITEMSIZE;public int index=-1;public int support=0;public boolean isfp=true;HashMap KfpSuppor:頻繁項(xiàng)目集及其對應(yīng)的支持?jǐn)?shù)HashMap guanlianguize:關(guān)聯(lián)規(guī)則及其置信度3.2.3連接與剪枝操作對于連接操作的兩個字符串(長度為k),它們必須有k-1個相同的字符才能 做連接操作。例如:abc和abd可以連接成abed,abd和bed可以連接成abed,而abc和ade就不可以做連接操作。整個連接過程類似歸并排序中的歸并操作對于任一
12、頻繁項(xiàng)目集的所有非空子集也必須是頻繁的,反之,如果某個候選該類代表一個頻繁項(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)vkey,value當(dāng)成一個整體進(jìn)行處理,系統(tǒng)總是根據(jù)Hash算法來計(jì)算的存儲位置,這樣可以保證能快速存、取Map的對。ArrayList alTransactions:保存表中的所有記錄ArrayList alKfp
13、sl:臨時存儲頻繁項(xiàng)目的集合,存儲連接后的結(jié)果ArrayList SureFpset:保存頻繁k項(xiàng)集ArrayList SureFpsetPrio:保存頻繁k-1項(xiàng)集ArrayList notFpList:保存一定不是頻繁項(xiàng)目的集合,用于剪枝的非空子集不是頻繁的,那么該候選集肯定不是頻繁的,將其剪枝。3.3本章小結(jié)本章主要介紹了算法設(shè)計(jì)的整體流程并且也對主要程序和操作作了簡要的說明。4數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)的來源本實(shí)驗(yàn)的數(shù)據(jù)均存儲于數(shù)據(jù)庫中。數(shù)據(jù)庫yuzm中共產(chǎn)生6張表。表test為測試用表,用于程序的正確性驗(yàn)證。還有5張表存儲隨機(jī)產(chǎn)生的實(shí)驗(yàn)數(shù)據(jù)。其中 數(shù)據(jù)庫的結(jié)構(gòu)如下圖所示。圖4.1數(shù)據(jù)庫結(jié)構(gòu)正
14、確性驗(yàn)證數(shù)據(jù)表test為PPT上的實(shí)例,用于正確性驗(yàn)證。 數(shù)據(jù)的item個數(shù)為5,其中的長度等于商品種類,其中“0”表示該商品不存在, “1”全部數(shù)據(jù)如圖4.2。圖4.2表test實(shí)驗(yàn)數(shù)據(jù)5張表是通過算法隨機(jī)產(chǎn)生的具有不同數(shù)據(jù)量的數(shù)據(jù)集,種,表的每一行都是一個“0”“1”的字符串,字符串長度等于商品種類,其中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)用表(部分)本章小結(jié)本章主要對數(shù)據(jù)庫的設(shè)計(jì)與數(shù)據(jù)來源做出
15、了說明。九行數(shù)據(jù)均由SQL語句產(chǎn)生,表的每一行都是一個“0”1”的字符串,字符串表示該商品存在。表的假設(shè)商品種類為105實(shí)驗(yàn)結(jié)果與性能分析5.1 Apriori實(shí)驗(yàn)界面其中可信度可自由設(shè)置,默認(rèn)為0.7。而支持度記為最小支持度與數(shù)據(jù)量的圖5.1實(shí)驗(yàn)界面5.2實(shí)驗(yàn)的正確性驗(yàn)證圖5.2正確性驗(yàn)證最終實(shí)驗(yàn)結(jié)果與ppt的結(jié)果相吻合,表明程序編寫正確。5.3實(shí)驗(yàn)性能分析為了對本程序的實(shí)驗(yàn)進(jìn)行性能分析,我們分別采用固定數(shù)據(jù)量改變最小支持?jǐn)?shù)以及固定最小支持?jǐn)?shù)改變數(shù)據(jù)量兩種情況進(jìn)行時間分析,其中最小置信度設(shè)為0.7不變。5.3.1固定最小支持度改變數(shù)據(jù)量設(shè)支持度為0.2,最小可信度為0.7。具體實(shí)驗(yàn)數(shù)據(jù)量與執(zhí)
16、行時間如下:表5.1數(shù)據(jù)量對性能的影響數(shù)據(jù)量(萬行)15255075時間(秒)48.2128.2366.9623.41032.3圖5.3數(shù)據(jù)量對性能的影響5.3.2固定數(shù)據(jù)量改變最小支持度比例。實(shí)驗(yàn)數(shù)據(jù)可以下拉選擇6張表中的任意一張。如下圖所示:運(yùn)行程序,我們選擇表test,即可進(jìn)行正確性驗(yàn)證,實(shí)驗(yàn)結(jié)果如下圖:設(shè)實(shí)驗(yàn)數(shù)據(jù)量固定改變最小支持度,具體如下所示:表5.2最小支持度對性能的影響最小支持度0.150.200.250.300.35時間(秒/ 1萬)175.64914.28.55.2時間(秒/ 5萬)294.1128.258.841.525.7時間(秒/ 25萬)531.3366.9246.
17、5185.6154.0圖5.4最小支持度對性能的影響由以上實(shí)驗(yàn)我們可以看出,實(shí)驗(yàn)時間會隨著數(shù)據(jù)量的增大而增大,并且隨著 最小支持度的增大而減小。并且他們之間的變化類似于某種指數(shù)函數(shù)的變化趨 勢。Apriori的時間主要消耗在4個方面:1、利用K頻繁集連接產(chǎn)生K+1候選集時,判斷連接的條件時比較的次數(shù)太多。假設(shè)項(xiàng)集個數(shù)為m的頻繁集合Lk,判斷連接條件時比較的時間復(fù)雜度為O(K*m2)。而且本實(shí)驗(yàn)的m都很大;2、對Ck中任意的一個c的k個(k-1)子集是否都在Lk-1中。在平均情況 下,對所有候選k項(xiàng)集需要掃描次數(shù)為|Ck|*|Lk-1|*k/23、為了得到所有的候選頻集的支持度,需要掃描N次;4
18、、掃描一次數(shù)據(jù)庫需時間0( k|T|)。|T|為交易數(shù)量,k交易長度5.4本章小結(jié)Ap riori算法因自身需要多次掃描數(shù)據(jù)庫,并且經(jīng)過復(fù)雜的連接剪枝操作而產(chǎn)生大量候選集以及進(jìn)行大量的模式匹配計(jì)算的缺陷,使得其在I/O上的花費(fèi)時 間很多,從而導(dǎo)致算法的效率不是太咼。6總結(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í)現(xiàn)的內(nèi)部細(xì)節(jié),同時通過實(shí)現(xiàn)這一經(jīng)典的數(shù)據(jù)挖掘算法,也讓我更深 刻的體會到數(shù)據(jù)挖掘?qū)τ谥R發(fā)現(xiàn)的重要性,盡管實(shí)現(xiàn)
19、了算法,但其中可能還有 可以改進(jìn)的地方,尤其是程序的運(yùn)行效率方面。Apriori算法實(shí)驗(yàn)不僅使得我對該算法的理解更加上升了一個層次,同時也使得我更加了解了 使用更加得心應(yīng)手。public class Apriori extends JFrame implements ActionListener/ public static intITEMSIZE=10;public final int FRAMEWIDTH=800;public final int FRAMEHEIGHT=600;/JPanel up=null;JPanel up_up=null;TextField textFieldNam
20、e=null;JPanel up_down=null;JPanel up_down_left=null;JLabel conflabel=null;JLabel c1=null;JLabel c2=null;Apriori算法的java編程語言,JLabel c3=null;JLabel c4=null;JLabel c5=null;JLabel c6=null;JLabel c7=null;JLabel c8=null;JTextField conf=null;JLabel supportlabel=null;JTextField support=null;JPanel up_down_ri
21、ght=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 alKfps=null;ArrayList notFpList=null;ArrayLis
22、t 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 Apriori()JPanel up=new JPanel(new GridLayout(2, 1);JPanel up_
23、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( up_up.add(c1);up_up.add(c2);c3=new JLabel(up_up.add(c3);up_up.add(c4);up_up.add(c5);c6=new JLabel(up_up.
24、add(c6);up_up.add(c7);up_up.add(c8);up_down=new JPanel(new GridLayout(1, 2);up_down_left=new JPanel(new GridLayout(1, 4);conflabel=new JLabel(可信度:);conf=new JTextField();c2=new JLabel(據(jù));c4=new JLabel(掘);c5=new JLabel(實(shí));c7=new JLabel();c8=new JLabel(Apriori);conf.setText(0.7);supportlabel=new JLabe
25、l(支持度:);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 JPanel(new GridLayout(1, 2);jComboBoxDateSize=new JComboBox();/下拉框jComboBoxDateSize.addItem(test);jComboBoxDateSize.addI
26、tem(data1);jComboBoxDateSize.addItem(data2);jComboBoxDateSize.addItem(data3);jComboBoxDateSize.addItem(data4);jComboBoxDateSize.addItem(data5);jComboBoxDateSize.addActionListener(this);jButtonMine=new JButton(開始挖掘);jButtonMine.addActionListener(this);up_down_right.add(jComboBoxDateSize);up_down_righ
27、t.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();/textArea.setFont(new Font(Font.DIALOG,Font.ITALIC , 20);textArea.setFont(new Font(Font.DIALOG,Font.PLAIN , 20);down.add(textArea);this.se
28、tLayout(new BorderLayout();this.setSize(FRAMEWIDTH, FRAMEHEIGHT);this.setLocation(100, 100);this.setSize(this.FRAMEWIDTH, this.FRAMEHEIGHT);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setTitle(Apriori);/up.setSize(this.FRAMEWIDTH, 100);this.add(up,BorderLayout.NORTH);/down.setLocation(0
29、, 100);/down.setSize(this.FRAMEWIDTH, this.FRAMEHEIGHT-100);this.add(down);this.setVisible(true);public void InitDate(String table)fpstep=1;AuxArr=new intITEMSIZE+1ITEMSIZE+1;alKfps=new ArrayList();notFpList=new ArrayList();SureFpset=new ArrayList();SureFpsetPrio=new ArrayList();dao=new Dao();KfpSup
30、port=new HashMap();alsurekfpstr=new ArrayList();guanlianguize=new HashMap();isaddarrStrings=new ArrayList();alTransactions=dao.Query(select * from +table);this.DateSize=alTransactions.size();public void ShowkFp(ArrayList SureFpset) intsteptemp=fpstep;textArea.a ppen d(頻繁+(ste ptemp)+項(xiàng)集rn);for(int i=
31、0;iSureFpset.size();i+)Kfp k=SureFpset.get(i);int tempindex=k.index;public void ShowkFp2(HashMap SureFpset)textArea.append(關(guān)聯(lián)規(guī)則rn);Set keys=(Set) SureFpset.keySet();for(String keyString:keys)rn);public void DataMine()int fpsteptemp=0;Stringstring=String.copyValueOf(k.kfpstr,0,+tempindex);int support
32、=KfpSupport.get(string);rn);textArea.append(keyString+SureFpset.get(keyString)+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);fpstep+;while
33、(!alKfps.isEmpty()alKfps.clear();for (int i = 0; i SureFpset.size(); i+)0, +tempindex);Kfp k1 = SureFpset.get(i);for (int j = i + 1; j SureFpset.size();j+)Kfp k2 = SureFpset.get(j);Kfp resultKfp = Joint(k1,k2);inttempindex=resultKfp.index;Stringstring=String.copyValueOf(resultKfp.kfpstr,if(string.ch
34、arAt(0) =0)continue;SubSet subSet= new SubSet();ArrayListalStrings=subSet.displaySubSet1(string.toCharArray();int p=0;for(;palStrings.size();p+)Stringstring2=alStrings.get(p);if(notFpList.contains(string2)break;if(p !=alStrings.size()continue;if(!isaddarrStrings.contains(string)isaddarrStrings.add(s
35、tring);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(SureFpset);fpstep+;public void Guanlianguize()for(int i=0;iSur
36、eFpsetPrio.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.size();i+)String kfpstr=alsurekfpstr.get(i);char kfpchararr=kfpstr.toCharAr
37、ray();ArrayListaList=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(indexinkfp kfpchararr.length &indexinchararr1 kfpchararr1.length)if(kfpchararr1
38、indexinchararr1kfpchararrindexinkfp)guizetemp=guizetemp+kfpchararrindexinkfp;indexinkfp+;elseindexinchararr1+;indexinkfp+;while(indexinkfp MinConfi)String temp=kfpstr1+-+guizetemp;guanlianguize.put(temp,support1/support2);ShowkFp2(guanlianguize);alsurekfpstr.clear();guanlianguize.clear();public Kfp
39、Joint(Kfp k1,Kfp k2)Kfp resultKfp=new Kfp();int temp_len=k1.index+1;char temp1=new chartemp_len;char temp2=new chartemp_len;for(int i=0;i=k1.index;i+)temp1i=k1.kfpstri;temp2i=k2.kfpstri;SubSet s=new SubSet();ArrayList alStrings1=s.SubSet2(temp1,fpstep);ArrayList alStrings2=s.SubSet2(temp2,fpstep);ch
40、ar result=new chartemp_len+1;boolean flag=false;for(int i=0;itemp2q)resultj+=temp2q;q+;if(p != temp1.length & q != temp2.length & temp1p= temp2q)if(resultj+=temp2q;q+;p+;if(p != temp1.length & q != temp2.length & temp1p temp2q)resultj+=temp1p;p+;if(p temp1.length)while(p!=temp1.lengt
41、h)resultj+=temp1p+;if(q temp2.length)while(q!=temp2.length)resultj+=temp2q+;flag=true;if(flag = true)break;for(int i=0;itemp_len+1;i+)resultKfp.kfpstr+resultKfp.index=resulti;return resultKfp;public void DealSupport()int len=alTransactions.size();for(int i=0;ilen;i+)Transaction t=alTransactions.get(
42、i);String itemset=t.itemset;int num=0;char tempchar=new charITEMSIZE;for(int i1=0;i1itemset.length();i1+)if(itemset.charAt(i1) = 1)tempcharnum=(char) (a+i1);num+;if(num fpstep)continue;char of1char=new charnum;for(int i3=0;i3num;i3+)of1chari3=tempchari3;ArrayList alListsunset=null;SubSet suSet=new S
43、ubSet();alListsunset=suSet.displaySubSet(of1char, fpstep);for(int p=0;palKfps.size();p+)Kfp kfp=alKfps.get(p);int tempindex=kfp.index;if(alListsunset.contains(string)kfp.support+;+tempindex);Stringstring=String.copyValueOf(kfp.kfpstr,0,public void Cut() public void SaveSureFp()for(int i=0;ialKfps.si
44、ze();i+)Kfp k=alKfps.get(i);SureFpset.add(k);int len=k.index;String string=String.copyValueOf(k.kfpstr,0, len+1);KfpSupport.put(string, k.support);public void SaveNotFpBySupport()for(int i=0;ialKfps.size();i+)Kfp kfp=alKfps.get(i);double tempSupport=kfp.support/(double)DateSize;if(tempSupport MinSup
45、port)kfp.isfp=false;char tempchar=kfp.kfpstr;notFpList.add(string);alKfps.remove(i);i=i-1;private int Numof1intstr(String str,charof1char)int num=0;char tempchar=new charITEMSIZE;for(int i=0;istr.length();i+)if(str.charAt(i) = 1)Stringstring=String.copyValueOf(tempchar,0,+kfp.index);tempcharnum=(cha
46、r) (a+i);num+;of1char=new charnum;for(int i=0;inum;i+)of1chari=tempchari;if(num fpstep)return num;elsereturn fpstep;Override public void actionPerformed(ActionEvente) MinSupport=Double.parseDouble(support.getText();MinConfi=Double.parseDouble(conf.getText();if(e.getSource() = jComboBoxDateSize)Strin
47、gdate=jComboBoxDateSize.getSelectedItem().toString();InitDate(date);if(e.getSource() = jButtonMine)textArea.setText();long start=System.currentTimeMillis();DataMine();long end=System.currentTimeMillis();import java.sql.*;class Daopublic Connection conn=null;public ResultSet rs=null;public Statement
48、statement=null;public String databasename=yuzm;public ArrayListalTransactions=null;/public static String user = root;/public static String password = root;public Dao()try/加載驅(qū)動程序Class.forName(driver);/連續(xù)數(shù)據(jù)庫conn = DriverManager.getConnection(url);if(conn = null)catch(Exception e)e.printStackTrace();pu
49、blic ArrayList Query(String sql)try statement =(Statement)conn.createStatement();rs = statement.executeQuery(sql);alTransactions=Query(rs); catch (SQLException e) e.printStackTrace();return alTransactions;/加載驅(qū)動程序private ArrayList Query(ResultSet rs)ArrayListalTransactions=newArrayList();try int pid_index=rs.findColumn(id);int item_index=rs.findColumn(item);while(rs.next()Transaction t=new Transaction();int pid=rs.getInt(pid_index);String itemset=rs.getString(item_index);t.pid=pid;t.itemset=itemset;alTransa
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年亞洲合作框架協(xié)議
- 2025年公共設(shè)施清潔與保養(yǎng)合同
- 2025年倉儲場地租用策劃合同樣本
- 2025年海洋服務(wù)項(xiàng)目規(guī)劃申請報告模范
- 2025年獨(dú)家代理授權(quán)合同文件
- 2025年企業(yè)復(fù)印紙張采購合同范文
- 2025年合同爭議上訴狀
- 2025年個體挖掘機(jī)租賃合同格式
- 2025年光纖系統(tǒng)維護(hù)勞務(wù)分包協(xié)議
- 2025年企業(yè)租車合作協(xié)議樣本
- 振動振動測試基礎(chǔ)知識培訓(xùn)課件
- 教學(xué)設(shè)計(jì) 分?jǐn)?shù)的再認(rèn)識 省賽一等獎
- sbl-ep16高低壓開關(guān)柜培訓(xùn)中法文kyn6140.5安裝使用說明書
- DBJ51-T 151-2020 四川省海綿城市建設(shè)工程評價標(biāo)準(zhǔn)
- GB/T 3795-2006錳鐵
- GB/T 31329-2014循環(huán)冷卻水節(jié)水技術(shù)規(guī)范
- 京東1+X理論考試試題及答案
- 人教版四年級下冊數(shù)學(xué)應(yīng)用題練習(xí)全
- 清新淡雅簡潔通用模板課件
- 北京市鄉(xiāng)鎮(zhèn)衛(wèi)生院街道社區(qū)衛(wèi)生服務(wù)中心地址醫(yī)療機(jī)構(gòu)名單(344家)
- 加油站新員工入職心得體會(篇)
評論
0/150
提交評論