apriori算法C語(yǔ)言版_第1頁(yè)
apriori算法C語(yǔ)言版_第2頁(yè)
apriori算法C語(yǔ)言版_第3頁(yè)
apriori算法C語(yǔ)言版_第4頁(yè)
apriori算法C語(yǔ)言版_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、apriori算法C語(yǔ)言版#include <dos h>#include <conio. h> nclude <math h> nclude <stdio. h>nclude <stdlibh>ttdefine ItemNUmSiZe 2 #define TranNUmSiZe 100 #define LlSTlNCREMENT 1 #define OK 1#define TRUE 1Mefine FASLE 0Mefine ERROR 0Mefine N!AX_ARRAY_DIM 100 Mefine MAXSlZE 100 ty

2、pedef Char ItemType;typedef int ElemType; float minSupport, IninCOnfidence;動(dòng)態(tài)內(nèi)存分配,item用什么數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)數(shù)組,線(xiàn)性表好:數(shù)組是整體創(chuàng) 建,整體刪除的typedef StrUCtItemTyPe *item;/項(xiàng)IJint length;/當(dāng)前項(xiàng)目個(gè)數(shù)int IiStSize;/當(dāng)前分配的存儲(chǔ)容量SqList;/事務(wù)數(shù)組集合typedef StrUCtSqLiSt rMAXSIZE+l;int Length;TranList;初始化項(xiàng)Ll的線(xiàn)性表int InitLiStSq(SqLiSt &L) L.

3、item=(ItemTyPe )malloc(ItemNUmSiZe *sizeof(ItemType);辻(!L. item) exit (OVERFLOW) ;/存儲(chǔ)分配失敗L. Iength=0;/空表長(zhǎng)度為0L. IiStSiZe=ItenINumSize;/初始化存儲(chǔ)容量return OK;/初始化事務(wù)的線(xiàn)性表int InitLiStTran(TranLiSt &TranL) /還有更好的動(dòng)態(tài)分配方式初始化for (int i=l;i<=TranNumSize;i+)InitLiStSq(TranL.ri);return OK;/插入項(xiàng)Ll線(xiàn)性表int IiStlnSe

4、rtSq(SqLiSt &L, int i, ItemTyPe e)在線(xiàn)性表L中笫i個(gè)位置之前插入新元素e/i 的合法值為 l<=i<=l. IiStIength+1ItenlTyPe *newbase, *q, *p;if(i<l I i>L. Iength+l)return ERROR;/i 值不合法if (L. Iength>=L. listsize)/當(dāng)前存儲(chǔ)空間已滿(mǎn),添加分配重新分配內(nèi)存空間newbase= (ItenlTyPe*)realIoc (L. item, (L. IiStSiZe+LISTINCRENffiNT) *sizeof (I

5、teInTyPe);if (!newbase)exit (OVERFLOW);L. item=newbase;/新基址L. IiStSiZe+=Listincrement;/增加存儲(chǔ)容量Q-&(L. itemi-l) ;/q 為插入位置for(P=&(L. itemL. Iength-I):p>=q;-P)*(p+l)二*p;插入位置,及之后的元素右移*Q=e;+L. length;return OK;VOid main()int C;ItelnTyPe e;SqLiSt L;int sn;int ItemNum; /項(xiàng) LI 個(gè)數(shù)int trannum20 = 0; /

6、事務(wù)數(shù)量Char b210010;Char b2110010;TranLiSt TranL;SqLiSt LI;InitLiStSq(L);InitLiStTran(TranL);Printf ("鏈表長(zhǎng)度:%dn", L. Iength); 線(xiàn)性表當(dāng)前的元素個(gè)數(shù)Printf ("鏈表大?。?dn", L. IiStSiZe) ; /線(xiàn)性表最多可存放元素的個(gè)數(shù)WhiIe (1)SySten("cls");Printf_s(z,n APriOri 算法的 C 語(yǔ)言實(shí)現(xiàn)n");Printf_s(z,1輸入項(xiàng)目集合n")

7、;Printf_s(z,2 添加事務(wù)n");Printf.S3設(shè)定最小支持度與最小置信度n);Printf_Sc 4 輸出結(jié)果n");Printf_s(, 5 退出n");Printf_s(z,請(qǐng)輸入:n");SCanf-S("%d", &c);SWitCh (C)CaSe 1:/構(gòu)造項(xiàng)Ll集int it;Char ItemValue;SySten("cls");Printf_s ("構(gòu)造項(xiàng) U 集n");Printf-S C請(qǐng)輸入項(xiàng)目個(gè)數(shù):n); 項(xiàng)目個(gè)數(shù)SCanf-S ("

8、%d", &ItemNUln);for (it=l; it<=ItemNum; it+) /依次輸入每個(gè)項(xiàng) U 集fflush(stdin);Printf_s (”n請(qǐng)輸入第%d個(gè)項(xiàng)目的字母(a, b, c, d, e, f,):n",it);SCanf("%c", &ItemVdIUe);IiStlnSertSq(L, it, ItemVaIUe);Printf-S (n初始化后,項(xiàng)LJ集各元素值:);for (int i-0;i<L. length;i+)printf_s("%cn", L. iteml

9、i);_getch();break;CaSe 2:SySten("cls");事務(wù)的數(shù)據(jù)結(jié)構(gòu),動(dòng)態(tài)數(shù)組int i, j;Char tranvalue;Printf_s 請(qǐng)輸入要添加的事務(wù)個(gè)數(shù):n");/事務(wù)個(gè)數(shù)SCanf-S("%d", &Sn);i應(yīng)當(dāng)從0開(kāi)始for (i=l; i<=sn; i+)/依次輸入每個(gè)事務(wù)所包含的項(xiàng)Ll, Printf-S (請(qǐng)輸入笫%d個(gè)事務(wù)包含的項(xiàng)目數(shù):",i);SCanf-S (,z%d,> trannumi);fflush(stdin);for (j=l;j<=trann

10、umi;j+)fflush(stdin);Printf_s ("輸入事務(wù)的第%d個(gè)項(xiàng)目:n", j);SCanf-S("%c", &tranvalue);/動(dòng)態(tài)分配內(nèi)存,插入事務(wù)數(shù)組集合IiStlnSertSq(TranL. r_i_, j,tranvalue);Printf_s n各事務(wù)的項(xiàng)U如下:n");for (i=l:i<=sn;i+)Printf_s Cn 第%d 個(gè)事務(wù)n", i);for (j=0;j<=trannumij;j+)Printf_s(,%c, TranL. r i. itemj);_ge

11、tch();break;CaSe 3:/設(shè)定最小支持度與最小置信度SySten("cls");Printf_s 請(qǐng)輸入最小支持度與最小置信度(空格隔開(kāi)):“);f flush (stdin); 最好在每個(gè) SCanf 前加上 fflush( Stdin );SCanf_s("%f%f", &minSupport, &minConfidence);Printf_s (/zn 最小支持度為:2. 2fn", minSupport);Printf_s C最小置信度為:2. 2fn'z, IninCOnfidenCe);_get

12、ch();break;CaSe 4:/APriOri 算法InitLiStSq(LI);Char generatedCandidate10:int c20 = 0;int f20 = 0;int jj=l;得到Cl,算法第一行for (int i=0; i<ItemNum; i+)/算法太復(fù)雜了,以后改為二義樹(shù)for (int j=l;trannumj!=0;j+)for (int k-0;TranL. rj. itemk!=0;k+)if (L. itemi-TranL. rj. itemkj)ci+;計(jì)算FI支持度辻(ci>=IninSUPPOrt*trannumIi+1) /

13、兩個(gè)整數(shù)相除得到整數(shù)fi=ci;IiStlnSertSq(L1, jj, L. itemi);/LIjj+;Printo(ZZFI 集合為:n);int templ=0;for (int i=0;i<ItemNum;i+)Printf_sC %c=%d ", L. itemi, f i);辻(templ+l)%3=0)Printf_sCn");tempi+;Printf_sCn");排序 TranL. rj. itemkint t;for (int i=l; i<=sn; i+) /每個(gè)事務(wù)for (int j=0; j<trannumj+l ;

14、 j+) /每個(gè)項(xiàng)目if (TranL. ri. itemj>TranL. ri. itemj+l)t-TranL. ri. itemj;TranL. rLiZ. itemLjJ-TranL. ri. itemj+l;TranL. ri. itemEjl=t;/GenerateCandidates 函數(shù)int jl;jl-Ll. length;/把 Ll->b2ifor (int i=0;i<jl;i+)b2i0二LI. itemi;int kk=0;for (int i-0;i<Ll. Iength;i+)generatedCandidatekk=Ll. item.i

15、;kk+;for (int j=i+l;j<Ll. Iength;j+)generatedCandidatekk=Ll. item.i+l;if (generatedCandidate!=0)Char temp;排序for (int i-0:generatedCandidateLi+1!=0:i+)辻(generatedCandidatei>generatedCandidate i+1)temp=generatedCandidatei-;generatedCandidatei=generatedCandidatei+lZ;generatedCandidatei+l=temp;Int

16、 u=0;int v=l;/用V來(lái)進(jìn)行輸出各種組合的標(biāo)識(shí)數(shù)V=I表示正在進(jìn)行輸出int c2100=0;int fIagl=I;int COUnter=zO;int temp;/getsupportfor (int k=2;b20 0!, 0, : k卄)u=0;v=l;for (int i=0;i<100;i+)c2i二0;for (int i=0;i<jl;i+)for (int il二i+l;iljl;il+)for (int j=0;j<k2;j+)if (b2ij!二b2ilj)flagl=0;break;進(jìn)行組合的部分if (flagl=l2ik-2 !=b2il

17、 k2)for (int j2=0;j2<k-l;j2)b21u j2=b2ij2;b21uk-l=b2ilk-2;u+;flagl=l;counter=0;for (int i=0;i<sn;i+)for (int il=O;il<u;il+)for (int jl=0;jl<k;jl+)for (int j-0;TranL. rLi+1. itemj!=, 0, ;j+)if (TranL. ri+l. itemj=b21 il jl)counter+;if (COUnter=k)c2il+;counter=0;Jl=O;temp-O;對(duì)U中情況進(jìn)行選擇,選出支持度計(jì)數(shù)大于2的 for (int i=O;i<u;i+)if (c2i>=minSupport)if (V=I)Printf_s ("nF%d 集合為:n", k);v=0;Printf_s C C);for (int j=0;j<k;j+)b2jlj=b21ij;Printf_

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論