




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、標(biāo)準(zhǔn)文檔實(shí)用文案Apriori算法實(shí)驗(yàn)報(bào)告計(jì)算機(jī)應(yīng)用技術(shù)計(jì)算機(jī)學(xué)院實(shí)用文案1 APRIORI 實(shí)驗(yàn) 11.1 實(shí)驗(yàn)背景11.1.1 國(guó)內(nèi)外研究概況11.1.2 發(fā)展趨勢(shì)11.2 實(shí)驗(yàn)內(nèi)容與要求 11.2.1 實(shí)驗(yàn)內(nèi)容11.2.2 實(shí)驗(yàn)要求11.2.3 實(shí)驗(yàn)?zāi)康?2 APRIORI算法分析與實(shí)驗(yàn)環(huán)境 32.1 APRIORI算法的描述 32.2 APRIORI算法的步驟 32.3 開發(fā)環(huán)境32.3.1 軟件環(huán)境32.3.2 硬件環(huán)境42.4 本章小結(jié)43 算法的設(shè)計(jì)3.1 APRIORI算法整體框架 53.2 主要的數(shù)據(jù)結(jié)構(gòu)與函數(shù) 53.2.1 數(shù)據(jù)Z勾53.2.2 主要的程序63.2.3 連接
2、與剪枝操作 63.3 本章小結(jié)64數(shù)據(jù)庫(kù)的設(shè)計(jì)與數(shù)據(jù)的來源 1.1 正確性驗(yàn)證數(shù)據(jù) 71.2 實(shí)驗(yàn)數(shù)據(jù)71.3 本章小結(jié)85 實(shí)驗(yàn)結(jié)果與性能分析 5.1 APRIORI實(shí)驗(yàn)界面 95.2 實(shí)驗(yàn)的正確性驗(yàn)證 95.3 實(shí)驗(yàn)性能分析 105.3.1 固定最小支持度改變數(shù)據(jù)量105.3.2 固定數(shù)據(jù)量改變最小支持度115.3.3 實(shí)驗(yàn)結(jié)果分析 115.4 本章小結(jié)12136 總結(jié)與體會(huì) 標(biāo)準(zhǔn)文檔實(shí)用文案1 Apriori 實(shí)驗(yàn)1.1 實(shí)驗(yàn)背景現(xiàn)在,數(shù)據(jù)挖掘作為從數(shù)據(jù)中獲取信息的有效方法,越來越受到人們的重視。關(guān)聯(lián) 規(guī)則挖掘首先是用來發(fā)現(xiàn)購(gòu)物籃數(shù)據(jù)事務(wù)中各項(xiàng)之間的有趣聯(lián)系。從那以后,關(guān)聯(lián)規(guī)則就成為數(shù)據(jù)
3、挖掘的重要研究方向,它是要找出隱藏在數(shù)據(jù)間的相互關(guān)系。目前關(guān)聯(lián)規(guī)則 挖掘的研究工作主要包括:Apriori算法的擴(kuò)展、數(shù)量關(guān)聯(lián)規(guī)則挖掘、關(guān)聯(lián)規(guī)則增量式 更新、無(wú)須生成候選項(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ù)庫(kù)D中找出具有用戶給定的滿足一定條件的最小支持度Minsup和最小置信度Minconf的關(guān)聯(lián)規(guī)則。1.1.1 國(guó)內(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ī)則
4、挖掘經(jīng)典算法。針對(duì)該算法的缺點(diǎn),許多學(xué)者提出了改進(jìn)算法,主要有基于哈希 優(yōu)化和基于事務(wù)壓縮等。1.1.2 發(fā)展趨勢(shì)關(guān)聯(lián)規(guī)則挖掘作為數(shù)據(jù)挖掘的重要研究?jī)?nèi)容之一,主要研究事務(wù)數(shù)據(jù)庫(kù)、關(guān)系數(shù)據(jù) 庫(kù)和其他信息存儲(chǔ)中的大量數(shù)據(jù)項(xiàng)之間隱藏的、有趣的規(guī)律。關(guān)聯(lián)規(guī)則挖掘最初僅限于 事務(wù)數(shù)據(jù)庫(kù)的布爾型關(guān)聯(lián)規(guī)則,近年來廣泛應(yīng)用于關(guān)系數(shù)據(jù)庫(kù),因此,積極開展在關(guān) 系數(shù)據(jù)庫(kù)中挖掘關(guān)聯(lián)規(guī)則的相關(guān)研究具有重要的意義。近年來,已經(jīng)有很多基于Apriori 算法的改進(jìn)和優(yōu)化。研究者還對(duì)數(shù)據(jù)挖掘的理論進(jìn)行了有益的探索,將概念格和粗糙集 應(yīng)用于關(guān)聯(lián)規(guī)則挖掘中,獲得了顯著的效果。到目前為止,關(guān)聯(lián)規(guī)則的挖掘已經(jīng)取得了 令人矚目的成績(jī),
5、包括:?jiǎn)螜C(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)容與要求1.2.1 實(shí)驗(yàn)內(nèi)容編程實(shí)現(xiàn) Apriori 算法:要求使用a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g', 'h' , 'i ' , 'j ' 10個(gè)項(xiàng)目隨機(jī)產(chǎn)生數(shù)據(jù)記錄并存入數(shù)據(jù)庫(kù)。從數(shù)據(jù)庫(kù)讀取記錄進(jìn)行Apriori實(shí)驗(yàn),獲得頻繁集以及關(guān)聯(lián)規(guī)則,實(shí)現(xiàn)可視化
6、。并用課堂上PPT的實(shí)例測(cè)試其正確性。1.2.2 實(shí)驗(yàn)要求1、程序結(jié)構(gòu):包括前臺(tái)工具和數(shù)據(jù)庫(kù);2、設(shè)定項(xiàng)目種類為10個(gè),隨機(jī)產(chǎn)生事務(wù),生成數(shù)據(jù)庫(kù);3、正確性驗(yàn)證(可用課堂上的例子);4、算法效率的研究:在支持度固定數(shù)據(jù)量不同的時(shí)候測(cè)量運(yùn)行時(shí)間;在數(shù)據(jù)量固定,支持度不同的時(shí)候測(cè)量運(yùn)行時(shí)間;5、注意界面的設(shè)計(jì),輸入最小支持度和最小可信度,能夠輸出并顯示頻繁項(xiàng)目集 以及關(guān)聯(lián)規(guī)則。標(biāo)準(zhǔn)文檔實(shí)用文案1.2.3實(shí)驗(yàn)?zāi)康?、加強(qiáng)對(duì)Apriori算法的理解;2、鍛煉分析問題、解決問題并動(dòng)手實(shí)踐的能力標(biāo)準(zhǔn)文檔實(shí)用文案2 Apriori算法分析與實(shí)驗(yàn)環(huán)境2.1 Apriori 算法的描述Apriori算法是一種找
7、頻繁項(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)次遍歷中找到的大項(xiàng)集Lk-1和產(chǎn)生候選項(xiàng)集Ck。接著掃描數(shù)據(jù)庫(kù), 計(jì)算Ck中候選的支持度。用Hash樹可以有效地確定Ck中包含在一個(gè)給定的事務(wù)t中 的候選。如果某項(xiàng)集滿足最小支持度,則稱它為頻繁項(xiàng)集。2.2 Apriori 算法的步驟步驟如下:1、設(shè)定最小支持度s和最小置信度c;2
8、、Apriori算法使用候選項(xiàng)集。首先產(chǎn)生出候選的項(xiàng)的集合,即候選項(xiàng)集,若候選項(xiàng) 集的支持度大于或等于最小支持度,則該候選項(xiàng)集為頻繁項(xiàng)集;3、在Apriori算法的過程中,首先從數(shù)據(jù)庫(kù)讀入所有的事務(wù),每個(gè)項(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ù)庫(kù),得出候選2-項(xiàng)集集合,再找出頻繁2-項(xiàng)集,并利用這些頻繁2-項(xiàng) 集集合來產(chǎn)生候選3-項(xiàng)集;5、重復(fù)掃描數(shù)據(jù)庫(kù),與最小支持度比較,產(chǎn)生更高層次的頻繁項(xiàng)集,再?gòu)脑摷侠锂a(chǎn) 生下一級(jí)候選項(xiàng)集,直到不再產(chǎn)生新的候選項(xiàng)集為止。2.3 開發(fā)環(huán)
9、境2.3.1 軟件環(huán)境(1) 編程軟件:Jdk開發(fā)包+eclipse集成開發(fā)環(huán)境Eclipse 是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它 只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 Java開發(fā)工具(Java Development Kit , JDK)。(2) 數(shù)據(jù)庫(kù)軟件:SQL Server 2008SQL Server 2008在Microsoft的數(shù)據(jù)平臺(tái)上發(fā)布,可以組織管理任何數(shù)據(jù)??梢?將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)直接存儲(chǔ)到數(shù)據(jù)庫(kù)中??梢詫?duì)數(shù)據(jù)進(jìn)行查詢、搜索、同步、報(bào)告和分析之類的操
10、作。數(shù)據(jù)可以存儲(chǔ)在各種設(shè)備上,從數(shù)據(jù)中心最大的 服務(wù)器一直到桌面計(jì)算機(jī)和移動(dòng)設(shè)備,它都可以控制數(shù)據(jù)而不用管數(shù)據(jù)存儲(chǔ)在哪里。(3) 辦公軟件:Excel 2010Excel是一款試算表辦公軟件。它是微軟辦公套裝軟件 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ù)以及固定最小支持?jǐn)?shù)改 變數(shù)據(jù)量?jī)煞N情況進(jìn)行時(shí)間分析提供可視化圖表。標(biāo)準(zhǔn)文檔實(shí)用文案2.3.2 硬件環(huán)境裝有Windows 7旗艦版電腦2.4 本章小結(jié)本章的內(nèi)容主要是為了引出本實(shí)驗(yàn)的主要算法以及對(duì)算法的實(shí)現(xiàn)環(huán)境做了介紹。
11、標(biāo)準(zhǔn)文檔實(shí)用文案3算法的設(shè)計(jì)3.1 Apriori算法整體框架Apriori 開始Apriori 結(jié)束圖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 Dao標(biāo)準(zhǔn)文檔實(shí)用文案public ArrayList<Transaction> Query(String sql) 該類用于訪問數(shù)據(jù)庫(kù)操作。class Kfp public char kfpstr二new charApriori.ITEMSIZE;publi
12、c 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)建、存儲(chǔ)和操作任何類型對(duì)象的元素列表。 List適用于按數(shù)值索引訪問元素的情形。HashMap Map接口的常用實(shí)現(xiàn)類,系統(tǒng)<key,value>當(dāng)成一個(gè)整體進(jìn)行處理,系統(tǒng)總是根據(jù) Hash算法來計(jì)算<key,value>的存 儲(chǔ)位置,這樣可以保證能快速存、取 Map的
13、<卜6丫,丫226>對(duì)。ArrayList<Transaction> alTransactions :保存表中的所有記錄ArrayList<Kfp> alKfpsl :臨時(shí)存儲(chǔ)頻繁項(xiàng)目的集合,存儲(chǔ)連接后的結(jié)果ArrayList<Kfp> SureFpset :保存頻繁 k 項(xiàng)集ArrayList<Kfp> SureFpsetPrio :保存頻繁 k-1 項(xiàng)集ArrayList<String> notFpList:保存一定不是頻繁項(xiàng)目的集合,用于剪枝HashMap<String, IntegerKfpSuppor:頻繁
14、項(xiàng)目集及其對(duì)應(yīng)的支持?jǐn)?shù)HashMap<String,Double> guanlianguize:關(guān)聯(lián)規(guī)則及其置信度3.2.3 連接與剪枝操作對(duì)于連接操作的兩個(gè)字符串(長(zhǎng)度為k),它們必須有k-1個(gè)相同的字符才能做連接 操作。例如:abc和abd可以連接成abcd, abd和bcd可以連接成abcd,而abc和ade就 不可以做連接操作。整個(gè)連接過程類似歸并排序中的歸并操作對(duì)于任一頻繁項(xiàng)目集的所有非空子集也必須是頻繁的,反之,如果某個(gè)候選的非空 子集不是頻繁的,那么該候選集肯定不是頻繁的,將其剪枝。3.3 本章小結(jié)本章主要介紹了算法設(shè)計(jì)的整體流程并且也對(duì)主要程序和操作作了簡(jiǎn)要的說明。
15、標(biāo)準(zhǔn)文檔實(shí)用文案4數(shù)據(jù)庫(kù)的設(shè)計(jì)與數(shù)據(jù)的來源本實(shí)驗(yàn)的數(shù)據(jù)均存儲(chǔ)于數(shù)據(jù)庫(kù)中。數(shù)據(jù)庫(kù)yuzm中共產(chǎn)生6張表。表test為測(cè)試用yuzm表,用于程序的正確性驗(yàn)證。還有5張表存儲(chǔ)隨機(jī)產(chǎn)生的實(shí)驗(yàn)數(shù)據(jù)。其中數(shù)據(jù)庫(kù)的結(jié)構(gòu) 如下圖所示。日q田_數(shù)據(jù)庫(kù)關(guān)系圖 日口表S 至珠表 田 口 dbo.datal +1 1 dbo.data2 it) dbo.data3 ti dbo.dta4 +j n dbo.data5 +J 口 dbo.test I祝圜 S同義詞 圖4.1數(shù)據(jù)庫(kù)結(jié)構(gòu)4.1 正確性驗(yàn)證數(shù)據(jù)表test為PPT上的實(shí)例,用于正確性驗(yàn)證。數(shù)據(jù)的item個(gè)數(shù)為5,其中的九行數(shù) 據(jù)均由SQL語(yǔ)句產(chǎn)生,表的每一行都
16、是一個(gè)“ 0” “1”的字符串,字符串長(zhǎng)度等于商品 種類,其中“ 0”表示該商品不存在,“1”表示該商品存在。表的全部數(shù)據(jù)如圖 4.2 o11001201010340110011010561010001100710100391110111100米:、NULLiditem圖4.2表 test4.2 實(shí)驗(yàn)數(shù)據(jù)5張表是通過算法隨機(jī)產(chǎn)生的具有不同數(shù)據(jù)量的數(shù)據(jù)集, 假設(shè)商品種類為10種,表 的每一行都是一個(gè)“ 0” “1”的字符串,字符串長(zhǎng)度等于商品種類,其中“ 0”表示該商 品不存在,“1”表示該商品存在。其中表data1共隨機(jī)產(chǎn)生1萬(wàn)行數(shù)據(jù),表data2產(chǎn)生標(biāo)準(zhǔn)文檔實(shí)用文案5萬(wàn)行數(shù)據(jù),表data3產(chǎn)
17、生25萬(wàn)行數(shù)據(jù),表data4產(chǎn)生50萬(wàn)行數(shù)據(jù),表data5產(chǎn)生75 萬(wàn)行數(shù)據(jù)。部分?jǐn)?shù)據(jù)如圖4.3。iditem13900111100111的1011110000141001110000014201010011111430000101100144iio 111001114510100000001k1001110111147iiooonooo1不0000111111圖4.3 實(shí)驗(yàn)用表(部分)4.3 本章小結(jié)本章主要對(duì)數(shù)據(jù)庫(kù)的設(shè)計(jì)與數(shù)據(jù)來源做出了說明標(biāo)準(zhǔn)文檔實(shí)用文案5實(shí)驗(yàn)結(jié)果與性能分析5.1 Apriori實(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)證運(yùn)行程序,我們選擇表test ,即可進(jìn)行正確性驗(yàn)證,實(shí)驗(yàn)結(jié)果如下圖:標(biāo)準(zhǔn)文檔實(shí)用文案圖5.2 正確性驗(yàn)證最終實(shí)驗(yàn)結(jié)果與ppt的結(jié)果相吻合,表明程序編寫正確5.3 實(shí)驗(yàn)性能分析為了對(duì)本程序的實(shí)驗(yàn)進(jìn)行性能分析,我們分別采用固定數(shù)據(jù)量改變最小支持?jǐn)?shù)以及 固定最小支持?jǐn)?shù)改變數(shù)據(jù)量?jī)煞N情況進(jìn)行時(shí)間分析,其中最小置信度設(shè)為0.7不變。5.3.1 固定最小支持度改變數(shù)據(jù)量設(shè)支持度為0.2,最小可信度為0.7。具體實(shí)驗(yàn)數(shù)據(jù)量與執(zhí)行時(shí)間如下:表5.1數(shù)據(jù)量對(duì)性能的影響數(shù)據(jù)量(萬(wàn)行)15255075時(shí)間(秒)48.2128.23
19、66.9623.41032.3標(biāo)準(zhǔn)文檔實(shí)用文案圖5.3數(shù)據(jù)量對(duì)性能的影響5.3.2 固定數(shù)據(jù)量改變最小支持度設(shè)實(shí)驗(yàn)數(shù)據(jù)量固定改變最小支持度,具體如下所示:表5.2最小支持度對(duì)性能的影響最小支持度0.150.200.250.300.35時(shí)間(秒/ 1萬(wàn))175.64914.28.55.2時(shí)間(秒/ 5萬(wàn))294.1128.258.841.525.7時(shí)間(秒/ 25萬(wàn))531.3366.9246.5185.6154.0固定數(shù)據(jù)量改變最小支持度60050040030020010000.15最小支持度T一時(shí)間C秒九萬(wàn))T-時(shí)間(秒乃萬(wàn))時(shí)間(秒/25萬(wàn))圖5.4最小支持度對(duì)性能的影響5.3.3 實(shí)驗(yàn)結(jié)
20、果分析由以上實(shí)驗(yàn)我們可以看出,實(shí)驗(yàn)時(shí)間會(huì)隨著數(shù)據(jù)量的增大而增大,并且隨著最小支標(biāo)準(zhǔn)文檔實(shí)用文案持度的增大而減小。并且他們之間的變化類似于某種指數(shù)函數(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、對(duì)Ck中任意的一個(gè)c的k個(gè)(k-1)子集是否都在Lk-1中。在平均情況下,對(duì) 所有彳8選k項(xiàng)集需要掃描次數(shù)為|Ck|*|Lk-1|*k/2;3、為了得到所有的候選頻集的支持度,需要掃描 N次;4、掃描一次數(shù)據(jù)庫(kù)需時(shí)間O
21、(k|T| )。|T|為交易數(shù)量,k交易長(zhǎng)度5.4 本章小結(jié)Apriori算法因自身需要多次掃描數(shù)據(jù)庫(kù),并且經(jīng)過復(fù)雜的連接剪枝操作而產(chǎn)生大 量候選集以及進(jìn)行大量的模式匹配計(jì)算的缺陷,使得其在I/O上的花費(fèi)時(shí)間很多,從而導(dǎo)致算法的效率不是太高。標(biāo)準(zhǔn)文檔實(shí)用文案6 總結(jié)與體會(huì)通過本次實(shí)驗(yàn),讓我明白了什么是 Apriori算法和數(shù)據(jù)之間的關(guān)聯(lián)性,Apriori算 法是一種最有影響的挖掘布爾關(guān)聯(lián)規(guī)則頻繁項(xiàng)集的算法,為以后進(jìn)步學(xué)習(xí)數(shù)據(jù)挖掘知識(shí)打下了良好的基礎(chǔ)。同時(shí)我也更加深刻理解了 Apriori算法的原理及其實(shí)現(xiàn)的內(nèi)部細(xì)節(jié), 同時(shí)通過實(shí)現(xiàn)這一經(jīng)典的數(shù)據(jù)挖掘算法,也讓我更深刻的體會(huì)到數(shù)據(jù)挖掘?qū)τ谥R(shí)發(fā)現(xiàn)
22、的重要性,盡管實(shí)現(xiàn)了算法,但其中可能還有可以改進(jìn)的地方,尤其是程序的運(yùn)行效率 方面。Apriori算法實(shí)驗(yàn)不僅使得我對(duì)該算法的理解更加上升了一個(gè)層次,同時(shí)也使得 我更加了解了 java編程語(yǔ)言,使用更加得心應(yīng)手。import java.awt.BorderLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.Panel;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionEvent;import jav
23、a.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 javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import org
24、.omg.CORBA.PUBLIC_MEMBER;public class Apriori extends JFrame implements ActionListener 標(biāo)準(zhǔn)文檔實(shí)用文案/public static int ITEMSIZE=10;public final int FRAMEWIDTH=800;public final int FRAMEHEIGHT=600;/JPanel up=null;JPanel up_up=null;TextField textFieldName二null;JPanel up_down=null;JPanel up_down_left=null;J
25、Label conflabel=null;兒abel c1=null;兒abel c2=null;兒abel c3=null;兒abel c4=null;JLabel c5=null;兒abel c6=null;JLabel c7=null;兒abel c8=null;JTextField conf=null;JLabel supportlabel=null;JTextField support=null;JPanel up_down_right=null;JComboBox jComboBoxDateSize=null;/ 下拉框JButton jButtonMine=null;JPanel
26、 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<Transaction> alTransactions=null;ArrayList<Kfp> alKfps=null;ArrayList<String> notFpList=null;ArrayList<Kfp> SureFpset=null;Array
27、List<Kfp> SureFpsetPrio=null;標(biāo)準(zhǔn)文檔實(shí)用文案HashMap<String, IntegerKfpSupport=null;ArrayList<String> alsurekfpstr=null;HashMap<String,Double> guanlianguize=null;ArrayList<String> isaddarrStrings=null;int AuxArr=null;public static void main(String口 args) Apriori A=new Apriori();pu
28、blic 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;i<ITEMSIZE;i+)/ textFieldNamei=new TextField();/ up_up.add(textFieldNamei);標(biāo)準(zhǔn)文檔/c1=new JLabel(" up_up.add(c1);c2=new JLabel(
29、" up_up.add(c2);c3=new 兒abel(" up_up.add(c3);c4=new JLabel(" up_up.add(c4);c5=new JLabel(" up_up.add(c5);c6=new JLabel(" up_up.add(c6);c7=new JLabel(" up_up.add(c7);c8=new 兒abel(" up_up.add(c8);數(shù))據(jù))挖)掘)實(shí)”)");Apriori");實(shí)用文案up_down=new JPanel(new GridLayout
30、(1,2);up_down_left=new JPanel(new GridLayout(1,4);conflabel=new 兒abel("可信度:");conf=new JTextField();conf.setText("0.7");supportlabel=new 兒abel("支持度:");support=new JTextField();support.setText("0.2");up_down_left.add(conflabel);up_down_left.add(conf);up_down_le
31、ft.add(supportlabel);up_down_left.add(support);up_down_right=new JPanel(new GridLayout(1,2); jComboBoxDateSize=new JComboBox();/ 下拉框 jComboBoxDateSize.addItem("test");jComboBoxDateSize.addItem("data1");jComboBoxDateSize.addItem("data2");jComboBoxDateSize.addItem("d
32、ata3");jComboBoxDateSize.addItem("data4");jComboBoxDateSize.addItem("data5");jComboBoxDateSize.addActionListener(this);jButtonMine=new JButton("開始挖掘");jButtonMine.addActionListener(this);up_down_right.add(jComboBoxDateSize);up_down_right.add(jButtonMine);up_down.ad
33、d(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.setLayout(new BorderLayout();th
34、is.setSize(FRAMEWIDTH, FRAMEHEIGHT);this.setLocation(100, 100);標(biāo)準(zhǔn)文檔實(shí)用文案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, 100);/do
35、wn.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<Kfp>();notFpList=new ArrayList<String>();SureFpset=new ArrayList<Kfp>();SureFpsetPrio=new ArrayL
36、ist<Kfp>();dao=new Dao();KfpSupport=new HashMap<String, Integer>();alsurekfpstr=new ArrayList<String>();guanlianguize=new HashMap<String,Double>();isaddarrStrings=new ArrayList<String>();alTransactions=dao.Query("select * from "+table); this.DateSize=alTransac
37、tions.size();public void ShowkFp(ArrayList<Kfp> SureFpset)int steptemp=fpstep;textArea.append(" 頻繁"+(steptemp)+”項(xiàng)集 rn");/System.out.println();for(int i=0;i<SureFpset.size();i+)Kfp k=SureFpset.get(i);int tempindex=k.index;String string=String.copyValueOf(k.kfpstr, 0, +tempinde
38、x); int support=KfpSupport.get(string);textArea.append(string+""+support+""+support/DateSize+"rn");標(biāo)準(zhǔn)文檔實(shí)用文案System.out.println(string+"rn"); public void ShowkFp2(HashMap<String,Double> SureFpset) textArea.append("關(guān)聯(lián)規(guī)則 rn");textArea.append(keyStr
39、ing+”Set<String> keys=(Set<String>) SureFpset.keySet(); for(String keyString:keys) "+SureFpset.get(keyString)+"rn")public void DataMine() int fpsteptemp=0;if(fpstep = 1)for(int i=0;i<Apriori.ITEMSIZE;i+)Kfp kfp=new Kfp();kfp.kfpstr+kfp.index=(char) ('a'+i);kfp.s
40、upport=0;kfp.isfp=false;alKfps.add(kfp);DealSupport();SaveNotFpBySupport();SaveSureFp();ShowkFp(alKfps);fpstep+; while(!alKfps.isEmpty()alKfps.clear();for (int i = 0; i < SureFpset.size(); i+)標(biāo)準(zhǔn)文檔實(shí)用文案Kfp k1 = SureFpset.get(i);for (int j = i + 1; j < SureFpset.size(); j+) Kfp k2 = SureFpset.get
41、(j);Kfp resultKfp = Joint(k1, k2);int tempindex=resultKfp.index;String string=String.copyValueOf(resultKfp.kfpstr,0,+tempindex);if(string.charAt(0) = 0) continue;SubSet subSet= new SubSet();ArrayList<String>alStrings=subSet.displaySubSet1(string.toCharArray();int p=0;for(;p<alStrings.size()
42、;p+) String string2=alStrings.get(p);if(notFpList.contains(string2) break;if(p != alStrings.size() continue;if (!isaddarrStrings.contains(string) isaddarrStrings.add(string);alKfps.add(resultKfp);SureFpsetPrio.clear();for(int i=0;i<SureFpset.size();i+)SureFpsetPrio.add(SureFpset.get(i);Guanliangu
43、ize();SureFpset.clear();DealSupport();SaveNotFpBySupport();/ Cut();if (!alKfps.isEmpty()SaveSureFp();標(biāo)準(zhǔn)文檔實(shí)用文案ShowkFp(SureFpset);fpstep+;public void Guanlianguize() for(int i=0;i<SureFpsetPrio.size();i+) Kfp k=SureFpsetPrio.get(i);int len = k.index;String string=String.copyValueOf(k.kfpstr, 0, len
44、+1);if(!alsurekfpstr.contains(string)alsurekfpstr.add(string);SubSet s=new SubSet();for(int i=0;i<alsurekfpstr.size();i+)String kfpstr=alsurekfpstr.get(i);char kfpchararr=kfpstr.toCharArray();ArrayList<String> aList=s.SubSet3(kfpchararr,kfpstr.length();for(int j=0;j<aList.size();j+)Strin
45、g guizetemp=”";String kfpstr1=aList.get(j);char kfpchararr1=kfpstr1.toCharArray();int indexinkfp=0;int indexinchararr1=0;while(indexinkfp < kfpchararr.length && indexinchararr1 <kfpchararr1.length)!=if(kfpchararr1indexinchararr1kfpchararrindexinkfp)guizetemp=guizetemp+kfpchararrin
46、dexinkfp; indexinkfp+;elseindexinchararr1+;indexinkfp+;標(biāo)準(zhǔn)文檔實(shí)用文案while(indexinkfp < kfpchararr.length)guizetemp=guizetemp+kfpchararrindexinkfp+;double support1=(double)KfpSupport.get(kfpstr);double support2=(double)KfpSupport.get(kfpstr1);if(support1/support2 > MinConfi) String temp=kfpstr1+&quo
47、t;>"+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 temp2=new chartemp_len;for(int i=0;i<=k1.index;i+)tem
48、p1i=k1.kfpstri;temp2i=k2.kfpstri;SubSet s=new SubSet();ArrayList<String> alStrings1=s.SubSet2(temp1,fpstep);ArrayList<String> alStrings2=s.SubSet2(temp2,fpstep);char result=new chartemp_len+1;boolean flag=false;for(int i=0;i<alStrings1.size();i+)String tempstr=alStrings1.get(i);if(alS
49、trings2.contains(tempstr)int p=0;int q=0;標(biāo)準(zhǔn)文檔實(shí)用文案int j=0;while(p != templ.length && q != temp2.length)if( p != templ.length && q != temp2.length && temp1p > temp2q)resultj+=temp2q;q+;if(p != templ.length && q != temp2.length && temp1p= temp2q)resultj+=temp2
50、q;q+;p+;if(p != templ.length && q != temp2.length && temp1p < temp2q)resultj+=temp1p;p+;if(p < templ.length)while(p!=temp1.length)resultj+=temp1p+;if(q < temp2.length)/System.out.println("fpstep="+fpstep+","+"j="+j+","+"q="+q
51、+","+"temp_le n="+temp_len);while(q!=temp2.length)resultj+=temp2q+;flag=true;if(flag = true)break;for(int i=0;i<temp_len+1;i+).resultKfp.kfpstr+resultKfp.index=resulti;標(biāo)準(zhǔn)文檔實(shí)用文案return resultKfp;public void DealSupport()int len=alTransactions.size();for(int i=0;i<len;i+)Trans
52、action t=alTransactions.get(i);String itemset=t.itemset;int num=0;char tempchar=new charITEMSIZE;for(int i1=0;i1<itemset.length();i1+)if(itemset.charAt(i1) = '1')tempcharnum=(char) ('a'+i1); num+;if(num < fpstep) continue;char of1char=new charnum;for(int i3=0;i3<num;i3+)of1c
53、hari3=tempchari3;ArrayList<String> alListsunset=null;SubSet suSet=new SubSet();alListsunset=suSet.displaySubSet(of1char, fpstep);for(int p=0;p<alKfps.size();p+)Kfp kfp=alKfps.get(p);int tempindex=kfp.index;0,String string=String.copyValueOf(kfp.kfpstr, +tempindex);if(alListsunset.contains(s
54、tring) kfp.support+;/System.out.println(string);標(biāo)準(zhǔn)文檔實(shí)用文案public void Cut()public void SaveSureFp()for(int i=0;i<alKfps.size();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 SaveNotFpBySuppor
55、t()for(int i=0;i<alKfps.size();i+)Kfp kfp=alKfps.get(i);double tempSupport=kfp.support/(double)DateSize;if(tempSupport < MinSupport) kfp.isfp=false;char tempchar=kfp.kfpstr;String string=String.copyValueOf(tempchar, 0, +kfp.index); notFpList.add(string);alKfps.remove(i);i=i-1;private int Numof1intstr(String str,char of1char)in
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)氣力發(fā)送裝置市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)四層單柱雙面書架市場(chǎng)調(diào)查研究報(bào)告
- 2025至2030年中國(guó)全自動(dòng)充氣熬糖機(jī)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025━2030年鐵路機(jī)械配件行業(yè)深度研究報(bào)告
- 2025-2035年全球及中國(guó)廢水潷水器行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展前景研究報(bào)告
- 2025-2035年全球及中國(guó)個(gè)性化禮品行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及發(fā)展前景研究報(bào)告
- “事物之間的聯(lián)系”大概念教學(xué)設(shè)計(jì)研究報(bào)告
- 防汛防暴雨學(xué)生安全教育
- 2025年醫(yī)用穿刺器械項(xiàng)目建議書
- 音像制品、電子和數(shù)字出版物批發(fā)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報(bào)告
- 《數(shù)學(xué)家的故事》課件
- 配電箱配管施工方案
- 機(jī)車司副司機(jī)安全操作規(guī)程
- 【大班戶外體育游戲活動(dòng)的問題及對(duì)策研究S幼兒園為例7000字(論文)】
- 法學(xué)論文寫作課件
- 勞務(wù)費(fèi)結(jié)算單
- 攪拌器檢修施工方案
- 親子關(guān)系和家庭教育 課件(共29張PPT)
- 貫入法檢測(cè)混合砂漿計(jì)算表
- 化工技術(shù)研發(fā)崗位職責(zé)
- 物流、倉(cāng)儲(chǔ)危險(xiǎn)源及風(fēng)險(xiǎn)辨識(shí)與評(píng)價(jià)表
評(píng)論
0/150
提交評(píng)論