#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....