版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、GUIZHOU UNIVERSITY實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)課程名稱:數(shù)據(jù)挖掘 實(shí)驗(yàn)項(xiàng)目名稱: Apriori算法理學(xué)院實(shí)驗(yàn)時(shí)間: 2014年 11月11 日姓名學(xué) 號(hào)實(shí)驗(yàn)組實(shí)驗(yàn)時(shí)間指導(dǎo)教師成績(jī)實(shí)驗(yàn)項(xiàng)目名稱Apriori 算法實(shí)驗(yàn)?zāi)康募耙螅? .加強(qiáng)對(duì)Apriori算法的理解2 .鍛煉分析問(wèn)題、解決問(wèn)題以及動(dòng)手能力3 .編程實(shí)現(xiàn)Apriori算法實(shí)驗(yàn)(或算法)原理:Apriori算法是一種找頻繁項(xiàng)目集的基本算法。其基本原理是逐層搜索的迭代:頻繁K項(xiàng)Lk集用于搜索頻繁(K+1)®集Lk+1,如此下去,直到不能找到維度更高的頻繁項(xiàng)集為 止。這種方法依賴連接和剪枝這兩步來(lái)實(shí)現(xiàn)。算法的第一次遍歷僅僅計(jì)
2、算每個(gè)項(xiàng)目的具體值的數(shù)量,以確定大型l項(xiàng)集。隨后的遍歷,第k次遍歷,包括兩個(gè)階段。首先,使用在第(k-1)次遍歷中找到的大項(xiàng)集Lk-1和用Aprioir-gen函數(shù)廣生候選項(xiàng)集Ck。接右掃描數(shù)據(jù)庫(kù),計(jì)算Ck中候選的支持度。用Hash 樹(shù)可以肩效地確定Ck中包含在一個(gè)給定的事務(wù)t中的候選。算法如下:L1 =大項(xiàng)目集1項(xiàng)目集;(2) for (k = 2; Lk-1 !=空;k+) do begin(3) Ck = apriori-gen(Lk-1);學(xué)生所在學(xué)院:理學(xué)院專業(yè):統(tǒng)計(jì)學(xué)班級(jí):."<<endl;map< vector<string>,unsign
3、ed int> empty;return empty;while(1)map< vector<string>,unsigned int > K_itemTemp = K_item;K_item = apri_gen(i+,K_item);if (K_itemTemp = K_item)i = UINT_MAX;break;/判斷是否需要進(jìn)行下一次的尋找map< vector<string>,unsigned int > pre_K_item = K_item;size_t Kitemsize =();存儲(chǔ)應(yīng)該刪除的第 K級(jí)頻繁項(xiàng)集,不能和其
4、他K級(jí)頻繁項(xiàng)集構(gòu)成第 K+1級(jí)項(xiàng)集的集合if (Kitemsize != 1 && i != 1)vector< map< vector<string>,unsigned int >:iterator > eraseVecMit;map< vector<string>,unsigned int >:iterator pre_K_item_it1 = () , pre_K_item_it2;while (pre_K_item_it1 !=()map< vector<string>,unsigned in
5、t >:iterator mit = pre_K_item_it1;bool isExist = true;vector<string> vecl;vecl = pre_K_item_it1->first;vector<string> vec11(),()-1);while (mit !=()vector<string> vec2;vec2 = mit->first;vector<string> vec22(),()-1);if (vec11 = vec22)break;+mit;if (mit =()isExist = fal
6、se;if (!isExist && pre_K_item_it1 !=()(pre_K_item_it1);該第K級(jí)頻繁項(xiàng)應(yīng)該刪除+pre_K_item_it1;size_t eraseSetSize =();if (eraseSetSize = Kitemsize)break;elsevector< map< vector<string>,unsigned int >:iterator >:iterator currentErs =();while (currentErs != ()/刪除所有應(yīng)該刪除的第K級(jí)頻繁項(xiàng) map< vec
7、tor<string>,unsigned int >:iterator eraseMit = *currentErs;(eraseMit);+currentErs;elseif(Kitemsize = 1 )break;cout<<endl;showAprioriItem(i,K_item);return K_item;map< vector<string>,unsigned int > Apriori:apri_gen(unsigned int K , map< vector<string>,unsigned int &
8、gt; K_item)if (1 = K)/求候選集 C1size_t c1 = item_size;map< int , vector<string> >:iterator mapit =();vector<string> vec;map<string,unsigned int> c1_itemtemp;while (mapit != () )/將原事務(wù)中所有的單項(xiàng)統(tǒng)計(jì)出來(lái)vector<string> temp = mapit->second;vector<string>:iterator vecit =();wh
9、ile (vecit !=()(pair< map<string,unsigned int>:iterator , bool > ret = (make_pair(*vecit+ , 1);if (!(+ >second;+mapit;map<string,unsigned int>:iterator item_it =();map< vector<string>,unsigned int > c1_item;while (item_it != () )/構(gòu)造第一級(jí)頻繁項(xiàng)集(vector<string> temp;i
10、f ( item_it->second >= min_value)(item_it->first);(make_pair(temp , item_it->second);+item_it; return c1_item;else(cout<<endl;showAprioriItem(K-1,K_item);map< vector<string>,unsigned int >:iterator ck_item_it1 = (),ck_item_it2;map< vector<string>,unsigned int &
11、gt; ck_item;while (ck_item_it1 !=()(ck_item_it2 = ck_item_it1;+ck_item_it2;map< vector<string>,unsigned int >:iterator mit = ck_item_it2;取當(dāng)前第K級(jí)頻繁項(xiàng)與其后面的第K級(jí)頻繁項(xiàng)集聯(lián)合,但要注意聯(lián)合條件聯(lián)合條件:連個(gè)頻繁項(xiàng)的前K-1項(xiàng)完全相同,只是第K項(xiàng)不同,然后兩個(gè)聯(lián)合生成第K+1級(jí)候選頻繁項(xiàng)while(mit !=()(vector<string> vec,vec1,vec2;vec1 = ck_item_it1->
12、;first;vec2 = mit->first;vector<string>:iterator vit1,vit2;vit1 =();vit2 =();while (vit1 < () && vit2 < ()(string str1 = *vit1;string str2 = *vit2;+vit1;+vit2;if ( K =2 | strl = str2 )(if (vitl != () && vit2 !=()(strl);)elsebreak;)if (vit1 = () && vit2 =()(-vit
13、1;-vit2;string str1 = *vit1;string str2 = *vit2;if (str1>str2)(str2);(str1);) else(strl);(str2);)map< int , vector<string> >:iterator base_item =();unsigned int Acount = 0 ;while (base_item != () )/統(tǒng)計(jì)該K+1級(jí)候選項(xiàng)在原事務(wù)集出現(xiàn)次數(shù) (unsigned int count = 0 ,mincount = UINT_MAX;vector<string> v
14、v = base_item->second;vector<string>二iterator vecit , bvit ;for (vecit = ();vecit < ();vecit+)(string t = *vecit;count = 0;for (bvit=();bvit < ();bvit+)(if (t = *bvit)count+;)mincount = (count < mincount count : mincount );)if (mincount >=1 && mincount != UINT_MAX)Acount
15、 += mincount;+base_item;if (Acount >= min_value && Acount != 0) (sort(),();/該第K+1級(jí)候選項(xiàng)為頻繁項(xiàng),插入頻繁項(xiàng)集ret =pair< map< vector<string>,unsigned int >:iterator , bool> (make_pair(vec,Acount);if (!(>second += Acount; +mit;+ck_item_it1;if ()/該第K+1級(jí)頻繁項(xiàng)集為空,說(shuō)明調(diào)用結(jié)束,把上一級(jí)頻繁項(xiàng)集返回return
16、K_item;elsereturn ck_item;void Apriori:showAprioriItem(unsigned int K,map< vector<string>,unsigned int > showmap)(map< vector<string>,unsigned int >:iterator showit =();if (K != UINT_MAX) cout<<endl<<"第"<<K<<"級(jí)頻繁項(xiàng)集為:"<<endl;el
17、secout<<"最終的頻繁項(xiàng)集為:"<<endl;cout<<"項(xiàng)集"<<"t"<<"頻率"<<endl;while (showit !=()(vector<string> vec = showit->first;vector<string>:iterator vecit =();cout<<""while (vecit !=()cout<<*vecit<<
18、""+vecit;cout<<""<<"t"cout<<showit->second<<endl;+showit;unsigned int parseNumber(const char * str)/ 對(duì)用戶輸入的數(shù)字進(jìn)行判斷和轉(zhuǎn)換 if (str = NULL)return 0;elseunsigned int num = 0;size_t len = strlen(str);for (size_t i=0;i<len;i+)(num *= 10;if (stri>=
19、 '0' && stri <= '9')num += stri - '0'elsereturn 0;return num;void main()(/Apriori a;unsigned int itemsize = 0;unsigned int min;do(cout<<"請(qǐng)輸入事務(wù)數(shù):"char * str = new char;cin>>str;itemsize = parseNumber(str);cout<<"請(qǐng)輸入大于0正整數(shù)! "<
20、<endl;) while (itemsize = 0);do(cout<<"請(qǐng)輸入最小支持度:"char * str = new char;cin>>str;min = parseNumber(str);if (min = 0)(cout<<"請(qǐng)輸入大于0正整數(shù)! "<<endl; while (min = 0);Apriori a(itemsize,min);();map< vector<string>,unsigned int> AprioriMap =();/(UINT_MAX,AprioriMap);system("pause");運(yùn)行的結(jié)果:end) i end> : end): end>: ond> ; end> : end>: end>!ond> ; end>1U
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆陜西省西北大學(xué)附中高三第12次模擬(壓軸卷)數(shù)學(xué)試題試卷
- 5年中考3年模擬試卷初中道德與法治八年級(jí)下冊(cè)04專項(xiàng)素養(yǎng)綜合全練(四)
- 人教版一年級(jí)下冊(cè)音樂(lè)
- 2024-2025學(xué)年專題16.3 電阻-九年級(jí)物理人教版含答案
- DB11-T 1962-2022 食用林產(chǎn)品質(zhì)量安全追溯元數(shù)據(jù)
- 創(chuàng)意產(chǎn)業(yè)園施工合同樣本
- 體檢中心連鎖店裝修合同
- 主題公園涂料翻新服務(wù)合同
- 保健按摩店裝修延期備忘錄
- 個(gè)性化攀巖墻裝修合同模板
- 英語(yǔ)調(diào)查問(wèn)卷及英文結(jié)果分析報(bào)告經(jīng)典權(quán)威模板
- 河道土石方開(kāi)挖、河堤填筑施工方案
- PANTONE國(guó)際色卡CMYK色值對(duì)照表
- 電子商務(wù)基礎(chǔ)與實(shí)務(wù)PPT課件
- 有限元填空選擇題及答案3頁(yè)
- 財(cái)務(wù)報(bào)表模板[全套]
- SY4205-2019石油天然氣建設(shè)工程施工質(zhì)量驗(yàn)收規(guī)范自動(dòng)化儀表檢驗(yàn)批表格
- 附錄:常用液壓與氣動(dòng)元件圖形符號(hào)
- 國(guó)家重點(diǎn)研發(fā)計(jì)劃課題任務(wù)書(shū)模板
- 精益生產(chǎn)評(píng)價(jià)打分表
- 史上最全的線材基礎(chǔ)知識(shí)講解
評(píng)論
0/150
提交評(píng)論