版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、標(biāo)準(zhǔn)文檔實用文案Apriori算法實驗報告計算機應(yīng)用技術(shù)計算機學(xué)院實用文案1 APRIORI 實驗 11.1 實驗背景11.1.1 國內(nèi)外研究概況11.1.2 發(fā)展趨勢11.2 實驗內(nèi)容與要求 11.2.1 實驗內(nèi)容11.2.2 實驗要求11.2.3 實驗?zāi)康?2 APRIORI算法分析與實驗環(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è)計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ù)庫的設(shè)計與數(shù)據(jù)的來源 1.1 正確性驗證數(shù)據(jù) 71.2 實驗數(shù)據(jù)71.3 本章小結(jié)85 實驗結(jié)果與性能分析 5.1 APRIORI實驗界面 95.2 實驗的正確性驗證 95.3 實驗性能分析 105.3.1 固定最小支持度改變數(shù)據(jù)量105.3.2 固定數(shù)據(jù)量改變最小支持度115.3.3 實驗結(jié)果分析 115.4 本章小結(jié)12136 總結(jié)與體會 標(biāo)準(zhǔn)文檔實用文案1 Apriori 實驗1.1 實驗背景現(xiàn)在,數(shù)據(jù)挖掘作為從數(shù)據(jù)中獲取信息的有效方法,越來越受到人們的重視。關(guān)聯(lián) 規(guī)則挖掘首先是用來發(fā)現(xiàn)購物籃數(shù)據(jù)事務(wù)中各項之間的有趣聯(lián)系。從那以后,關(guān)聯(lián)規(guī)則就成為數(shù)據(jù)
3、挖掘的重要研究方向,它是要找出隱藏在數(shù)據(jù)間的相互關(guān)系。目前關(guān)聯(lián)規(guī)則 挖掘的研究工作主要包括:Apriori算法的擴展、數(shù)量關(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ī)則挖掘算法等。 關(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ī)則
4、挖掘經(jīng)典算法。針對該算法的缺點,許多學(xué)者提出了改進算法,主要有基于哈希 優(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ù)項之間隱藏的、有趣的規(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 算法的改進和優(yōu)化。研究者還對數(shù)據(jù)挖掘的理論進行了有益的探索,將概念格和粗糙集 應(yīng)用于關(guān)聯(lián)規(guī)則挖掘中,獲得了顯著的效果。到目前為止,關(guān)聯(lián)規(guī)則的挖掘已經(jīng)取得了 令人矚目的成績,
5、包括:單機環(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 實驗內(nèi)容與要求1.2.1 實驗內(nèi)容編程實現(xiàn) Apriori 算法:要求使用a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g', 'h' , 'i ' , 'j ' 10個項目隨機產(chǎn)生數(shù)據(jù)記錄并存入數(shù)據(jù)庫。從數(shù)據(jù)庫讀取記錄進行Apriori實驗,獲得頻繁集以及關(guān)聯(lián)規(guī)則,實現(xiàn)可視化
6、。并用課堂上PPT的實例測試其正確性。1.2.2 實驗要求1、程序結(jié)構(gòu):包括前臺工具和數(shù)據(jù)庫;2、設(shè)定項目種類為10個,隨機產(chǎn)生事務(wù),生成數(shù)據(jù)庫;3、正確性驗證(可用課堂上的例子);4、算法效率的研究:在支持度固定數(shù)據(jù)量不同的時候測量運行時間;在數(shù)據(jù)量固定,支持度不同的時候測量運行時間;5、注意界面的設(shè)計,輸入最小支持度和最小可信度,能夠輸出并顯示頻繁項目集 以及關(guān)聯(lián)規(guī)則。標(biāo)準(zhǔn)文檔實用文案1.2.3實驗?zāi)康?、加強對Apriori算法的理解;2、鍛煉分析問題、解決問題并動手實踐的能力標(biāo)準(zhǔn)文檔實用文案2 Apriori算法分析與實驗環(huán)境2.1 Apriori 算法的描述Apriori算法是一種找
7、頻繁項目集的基本算法。其基本原理是逐層搜索的迭代:頻 繁K項Lk集用于搜索頻繁(K+1)項集Lk+1,如此下去,直到不能找到維度更高的頻繁 項集為止。這種方法依賴連接和剪枝這兩步來實現(xiàn)。算法的第一次遍歷僅僅計算每個項 目的具體值的數(shù)量,以確定大型l項集。隨后的遍歷,第k次遍歷,包括兩個階段。首 先,使用在第(k-1)次遍歷中找到的大項集Lk-1和產(chǎn)生候選項集Ck。接著掃描數(shù)據(jù)庫, 計算Ck中候選的支持度。用Hash樹可以有效地確定Ck中包含在一個給定的事務(wù)t中 的候選。如果某項集滿足最小支持度,則稱它為頻繁項集。2.2 Apriori 算法的步驟步驟如下:1、設(shè)定最小支持度s和最小置信度c;2
8、、Apriori算法使用候選項集。首先產(chǎn)生出候選的項的集合,即候選項集,若候選項 集的支持度大于或等于最小支持度,則該候選項集為頻繁項集;3、在Apriori算法的過程中,首先從數(shù)據(jù)庫讀入所有的事務(wù),每個項都被看作候選 1-項集,得出各項的支持度,再使用頻繁1-項集集合來產(chǎn)生候選2-項集集合,因為先驗原 理保證所有非頻繁的1-項集的超集都是非頻繁的;4、再掃描數(shù)據(jù)庫,得出候選2-項集集合,再找出頻繁2-項集,并利用這些頻繁2-項 集集合來產(chǎn)生候選3-項集;5、重復(fù)掃描數(shù)據(jù)庫,與最小支持度比較,產(chǎn)生更高層次的頻繁項集,再從該集合里產(chǎn) 生下一級候選項集,直到不再產(chǎn)生新的候選項集為止。2.3 開發(fā)環(huán)
9、境2.3.1 軟件環(huán)境(1) 編程軟件:Jdk開發(fā)包+eclipse集成開發(fā)環(huán)境Eclipse 是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它 只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse附帶了一個標(biāo)準(zhǔn)的插件集,包括 Java開發(fā)工具(Java Development Kit , JDK)。(2) 數(shù)據(jù)庫軟件:SQL Server 2008SQL Server 2008在Microsoft的數(shù)據(jù)平臺上發(fā)布,可以組織管理任何數(shù)據(jù)??梢?將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化文檔的數(shù)據(jù)直接存儲到數(shù)據(jù)庫中??梢詫?shù)據(jù)進行查詢、搜索、同步、報告和分析之類的操
10、作。數(shù)據(jù)可以存儲在各種設(shè)備上,從數(shù)據(jù)中心最大的 服務(wù)器一直到桌面計算機和移動設(shè)備,它都可以控制數(shù)據(jù)而不用管數(shù)據(jù)存儲在哪里。(3) 辦公軟件:Excel 2010Excel是一款試算表辦公軟件。它是微軟辦公套裝軟件 office的重要的組成部分, 它是集統(tǒng)計分析、數(shù)據(jù)處理和輔助決策等功能于一身,現(xiàn)在金融、統(tǒng)計財經(jīng)、管理等眾 多領(lǐng)域廣泛應(yīng)用。本實驗主要用來為固定數(shù)據(jù)量改變最小支持數(shù)以及固定最小支持數(shù)改 變數(shù)據(jù)量兩種情況進行時間分析提供可視化圖表。標(biāo)準(zhǔn)文檔實用文案2.3.2 硬件環(huán)境裝有Windows 7旗艦版電腦2.4 本章小結(jié)本章的內(nèi)容主要是為了引出本實驗的主要算法以及對算法的實現(xiàn)環(huán)境做了介紹。
11、標(biāo)準(zhǔn)文檔實用文案3算法的設(shè)計3.1 Apriori算法整體框架Apriori 開始Apriori 結(jié)束圖3.1 Apriori實驗流程圖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)文檔實用文案public ArrayList<Transaction> Query(String sql) 該類用于訪問數(shù)據(jù)庫操作。class Kfp public char kfpstr二new charApriori.ITEMSIZE;publi
12、c int index=-1;public int support=0;public boolean isfp=true;該類代表一個頻繁項目。3.2.2 主要的程序Java中最常用的集合類是 List 和Map。List的具體實現(xiàn)包括ArrayList 和Vector ,它們是可變大小的列表,比較適合構(gòu)建、存儲和操作任何類型對象的元素列表。 List適用于按數(shù)值索引訪問元素的情形。HashMap Map接口的常用實現(xiàn)類,系統(tǒng)<key,value>當(dāng)成一個整體進行處理,系統(tǒng)總是根據(jù) Hash算法來計算<key,value>的存 儲位置,這樣可以保證能快速存、取 Map的
13、<卜6丫,丫226>對。ArrayList<Transaction> alTransactions :保存表中的所有記錄ArrayList<Kfp> alKfpsl :臨時存儲頻繁項目的集合,存儲連接后的結(jié)果ArrayList<Kfp> SureFpset :保存頻繁 k 項集ArrayList<Kfp> SureFpsetPrio :保存頻繁 k-1 項集ArrayList<String> notFpList:保存一定不是頻繁項目的集合,用于剪枝HashMap<String, IntegerKfpSuppor:頻繁
14、項目集及其對應(yīng)的支持數(shù)HashMap<String,Double> guanlianguize:關(guān)聯(lián)規(guī)則及其置信度3.2.3 連接與剪枝操作對于連接操作的兩個字符串(長度為k),它們必須有k-1個相同的字符才能做連接 操作。例如:abc和abd可以連接成abcd, abd和bcd可以連接成abcd,而abc和ade就 不可以做連接操作。整個連接過程類似歸并排序中的歸并操作對于任一頻繁項目集的所有非空子集也必須是頻繁的,反之,如果某個候選的非空 子集不是頻繁的,那么該候選集肯定不是頻繁的,將其剪枝。3.3 本章小結(jié)本章主要介紹了算法設(shè)計的整體流程并且也對主要程序和操作作了簡要的說明。
15、標(biāo)準(zhǔn)文檔實用文案4數(shù)據(jù)庫的設(shè)計與數(shù)據(jù)的來源本實驗的數(shù)據(jù)均存儲于數(shù)據(jù)庫中。數(shù)據(jù)庫yuzm中共產(chǎn)生6張表。表test為測試用yuzm表,用于程序的正確性驗證。還有5張表存儲隨機產(chǎn)生的實驗數(shù)據(jù)。其中數(shù)據(jù)庫的結(jié)構(gòu) 如下圖所示。日q田_數(shù)據(jù)庫關(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ù)庫結(jié)構(gòu)4.1 正確性驗證數(shù)據(jù)表test為PPT上的實例,用于正確性驗證。數(shù)據(jù)的item個數(shù)為5,其中的九行數(shù) 據(jù)均由SQL語句產(chǎn)生,表的每一行都
16、是一個“ 0” “1”的字符串,字符串長度等于商品 種類,其中“ 0”表示該商品不存在,“1”表示該商品存在。表的全部數(shù)據(jù)如圖 4.2 o11001201010340110011010561010001100710100391110111100米:、NULLiditem圖4.2表 test4.2 實驗數(shù)據(jù)5張表是通過算法隨機產(chǎn)生的具有不同數(shù)據(jù)量的數(shù)據(jù)集, 假設(shè)商品種類為10種,表 的每一行都是一個“ 0” “1”的字符串,字符串長度等于商品種類,其中“ 0”表示該商 品不存在,“1”表示該商品存在。其中表data1共隨機產(chǎn)生1萬行數(shù)據(jù),表data2產(chǎn)生標(biāo)準(zhǔn)文檔實用文案5萬行數(shù)據(jù),表data3產(chǎn)
17、生25萬行數(shù)據(jù),表data4產(chǎn)生50萬行數(shù)據(jù),表data5產(chǎn)生75 萬行數(shù)據(jù)。部分數(shù)據(jù)如圖4.3。iditem13900111100111的1011110000141001110000014201010011111430000101100144iio 111001114510100000001k1001110111147iiooonooo1不0000111111圖4.3 實驗用表(部分)4.3 本章小結(jié)本章主要對數(shù)據(jù)庫的設(shè)計與數(shù)據(jù)來源做出了說明標(biāo)準(zhǔn)文檔實用文案5實驗結(jié)果與性能分析5.1 Apriori實驗界面其中可信度可自由設(shè)置,默認為 0.7。而支持度記為最小支持度與數(shù)據(jù)量的比例。 實驗數(shù)據(jù)
18、可以下拉選擇6張表中的任意一張。如下圖所示:圖5.1 實驗界面5.2 實驗的正確性驗證運行程序,我們選擇表test ,即可進行正確性驗證,實驗結(jié)果如下圖:標(biāo)準(zhǔn)文檔實用文案圖5.2 正確性驗證最終實驗結(jié)果與ppt的結(jié)果相吻合,表明程序編寫正確5.3 實驗性能分析為了對本程序的實驗進行性能分析,我們分別采用固定數(shù)據(jù)量改變最小支持數(shù)以及 固定最小支持數(shù)改變數(shù)據(jù)量兩種情況進行時間分析,其中最小置信度設(shè)為0.7不變。5.3.1 固定最小支持度改變數(shù)據(jù)量設(shè)支持度為0.2,最小可信度為0.7。具體實驗數(shù)據(jù)量與執(zhí)行時間如下:表5.1數(shù)據(jù)量對性能的影響數(shù)據(jù)量(萬行)15255075時間(秒)48.2128.23
19、66.9623.41032.3標(biāo)準(zhǔn)文檔實用文案圖5.3數(shù)據(jù)量對性能的影響5.3.2 固定數(shù)據(jù)量改變最小支持度設(shè)實驗數(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.5185.6154.0固定數(shù)據(jù)量改變最小支持度60050040030020010000.15最小支持度T一時間C秒九萬)T-時間(秒乃萬)時間(秒/25萬)圖5.4最小支持度對性能的影響5.3.3 實驗結(jié)
20、果分析由以上實驗我們可以看出,實驗時間會隨著數(shù)據(jù)量的增大而增大,并且隨著最小支標(biāo)準(zhǔn)文檔實用文案持度的增大而減小。并且他們之間的變化類似于某種指數(shù)函數(shù)的變化趨勢。Apriori的時間主要消耗在4個方面:1、利用K頻繁集連接產(chǎn)生K+1候選集時,判斷連接的條件時比較的次數(shù)太多。假 設(shè)項集個數(shù)為m的頻繁集合Lk,判斷連接條件時比較的時間復(fù)雜度為O (K*m2。而且本實驗的m都很大;2、對Ck中任意的一個c的k個(k-1)子集是否都在Lk-1中。在平均情況下,對 所有彳8選k項集需要掃描次數(shù)為|Ck|*|Lk-1|*k/2;3、為了得到所有的候選頻集的支持度,需要掃描 N次;4、掃描一次數(shù)據(jù)庫需時間O
21、(k|T| )。|T|為交易數(shù)量,k交易長度5.4 本章小結(jié)Apriori算法因自身需要多次掃描數(shù)據(jù)庫,并且經(jīng)過復(fù)雜的連接剪枝操作而產(chǎn)生大 量候選集以及進行大量的模式匹配計算的缺陷,使得其在I/O上的花費時間很多,從而導(dǎo)致算法的效率不是太高。標(biāo)準(zhǔn)文檔實用文案6 總結(jié)與體會通過本次實驗,讓我明白了什么是 Apriori算法和數(shù)據(jù)之間的關(guān)聯(lián)性,Apriori算 法是一種最有影響的挖掘布爾關(guān)聯(lián)規(guī)則頻繁項集的算法,為以后進步學(xué)習(xí)數(shù)據(jù)挖掘知識打下了良好的基礎(chǔ)。同時我也更加深刻理解了 Apriori算法的原理及其實現(xiàn)的內(nèi)部細節(jié), 同時通過實現(xiàn)這一經(jīng)典的數(shù)據(jù)挖掘算法,也讓我更深刻的體會到數(shù)據(jù)挖掘?qū)τ谥R發(fā)現(xiàn)
22、的重要性,盡管實現(xiàn)了算法,但其中可能還有可以改進的地方,尤其是程序的運行效率 方面。Apriori算法實驗不僅使得我對該算法的理解更加上升了一個層次,同時也使得 我更加了解了 java編程語言,使用更加得心應(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)文檔實用文案/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)文檔實用文案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ù))挖)掘)實”)");Apriori");實用文案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)文檔實用文案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)+”項集 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)文檔實用文案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)文檔實用文案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)文檔實用文案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)文檔實用文案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)文檔實用文案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)文檔實用文案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)文檔實用文案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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度EPS環(huán)保設(shè)施施工合同
- 凝血系統(tǒng)課件教學(xué)課件
- 2024年度婚姻心理咨詢服務(wù)協(xié)議
- 2024年全球互聯(lián)網(wǎng)金融服務(wù)協(xié)議
- 2024年廢舊書籍收購協(xié)議
- 2024代理授權(quán)協(xié)議合同租房合同模板
- 洗手絹課件教學(xué)課件
- 2024年度通信網(wǎng)絡(luò)建設(shè)與維護合同
- 2024機械使用合同
- (2024版)網(wǎng)絡(luò)安全系統(tǒng)設(shè)計與實施合同
- DL5009.2-2013電力建設(shè)安全工作規(guī)程第2部分:電力線路
- GA/T 2097-2023執(zhí)法辦案管理場所信息應(yīng)用技術(shù)要求
- GB 20052-2024電力變壓器能效限定值及能效等級
- 手術(shù)切口感染PDCA案例
- 依托國家中小學(xué)智慧教育平臺開展有效教學(xué)的研究課題申報評審書
- 小學(xué)大思政課實施方案設(shè)計
- 供應(yīng)室消防應(yīng)急預(yù)案演練
- 校運會裁判員培訓(xùn)
- 潮濕相關(guān)性皮炎的護理
- 洪恩識字配套字庫完整版識字啟蒙200字-生字組詞句子完整版可打印-點讀指讀
- 幼兒園園長的幼教教研與項目管理
評論
0/150
提交評論