C 實現apriori演算法

2021-06-27 22:48:03 字數 1644 閱讀 1352

#include "stdafx.h"  

#include #include #include #define t 2 //最小支援度

#define m 9 //樣本數

#define n 5 //資料項數

using namespace std;

//候選頻繁項集:維數,頻度,具體資料,獲取頻度

class freq_item

void getfreg(string *db,int m,int n);

};void freq_item::getfreg(string *db,int m,int n)

}if(flag == false)

break;

} //存在的個數等於維數,說明這條樣本包括項集

if(cnt == dim)

freq++; }}

int num[n]; //每一維頻繁項集的個數

string data[m][n]; //要處理的資料

freq_item res[100]; //各維頻繁項集

//獲取2維頻繁項集,因不用剪枝,單獨處理

void get2dim()

} }/*cout << num[1] << endl;

for(int i = num[0]; i < num[0]+num[1]; i++)

cout << res[i].item[0] << " " << res[i].item[1] << " " << res[i].freq << endl;*/

}//獲取2維以上的頻繁項集

int ge***im()

}//相等則判斷兩個i項集的item[i-1]組成的2項集是否頻繁,即剪枝

if(flag == true)

}//計算頻度,判斷是否為頻繁項集

if(flag1 == true)}}

}} //若i+1項集無頻繁的,則i頻繁項集為所求

if(num[i] == 0)*/

return i;

} }}int main()

for(int i = 0; i < m; i++)

} //讀入頻繁1項集

for(int i = 0; i < n; i++)

input.close();

get2dim();

//ge***im();

//輸出所有頻繁項集

int w = 0,x = 0,y = ge***im();

for(int i = 0; i < y; i++)

x += num[i];

for(int i = 1; i < y; i++)

num[i] = num[i] + num[i-1];

for(int i = 0; i < x; i++)

for(int j = 0; j < res[i].dim; j++)

cout << res[i].item[j] << " ";

cout << " frequence: " << res[i].freq << endl;

} system("pause");

return 0;

}

Apriori演算法C 實現

最近剛上了資料探勘這門課,老師講了兩個演算法,即apriori演算法和fp growth演算法,然後布置了上機作業,挖掘乙個有8萬行的記錄的retail.dat,需要從中找出強規則,即同時滿足最小支援度和最小置信度的規則。在這裡給出乙個實現找出所有頻繁模式集的c 其中主要使用的儲存結構是二維陣列,有...

Apriori演算法的C 實現

include using namespace std 1.若x為頻繁專案集,則x的所有子集都是頻繁專案集 2.若x為非頻繁專案集,則x的所有超集均為非頻繁專案集 int min sup 最小支援度 vector item 儲存最開始的事務及其項 map,int k item 頻繁k項集 map,i...

Apriori演算法Matlab實現

clc clear 最小支援度設定 min sup 2 最小置信度 min conf 0.7 讀取檔案,當前的檔案型別是txt檔案,事務資料用數字來表示的,測試資料可以用 資料探勘概念與技術 第三版中的資料為樣本 fid fopen d matlabfile apriori dataapriori....