数据挖掘Apriori算法C++实现(2)

时间:2025-04-20

- --

②然后通过连接运算,对于每个连接的到项直接进行最小支持度判断,如果大于最小支持度的加入频繁二项集,如果小于则舍弃,循环直到连接完毕;得到二项频繁集L2。

③如此进行下去,直到不能连接产生新的频繁项集为止。

3、代码实现的描述(详细描述文末附上):

使用C++,构造了一个Apriori类:

class Apriori

{

public:

//初始化,输入数据源,得到原始数据集、频繁1项集

void init(string fileName); //连接频繁k项集、并且直接剪枝,得到频繁k+1项集,加入到容器item_list void apri_gen();;//连接频繁k项集、并且直接剪枝,得到频繁k+1项集,加入到频繁项集集合frequentvec中float calculateSup(vector<string> judge_item); //求候选项的支持度

vector<string> mergeItem(vector<string> vect1,vector<string> vect2,int round); //判断两个项是否可以合并成一个新的项集做为新的候选项,能则合并,不能的返回空容器

void showItem();//输出频繁项集

private:

vector<set<string>> datavec; //原始数据集

int trancount; //原始数据项数量

vector<vector<pair<vector<string>,float>>> frequentvec; //频繁项集的集合

double minsup; //设置最小支持度和最小置信度

double minconf; //设置最小支持度和最小置信度

};

运行结果:

效果对比:

数据集大小:9835

数据元素多少:170

置信度:0.05

原始:频繁1项集28

候选2项集2^28

频繁2项集3

改进后:频繁1项集28

频繁2项集3

算法的改进2

第一次扫描数据库时,对于数据库中的数据,利用各项元素的数字编号来替换各数据元素的名称;即将数据元素的名称字符传用数字来替换,从而减少在求各候选项的支持度时的资源消耗;

代码中的改进之处,

string类型的元素转为对应的int代号:储存频繁项集的容器由vector<vector<pair<vector<string>,float>>>变为vector<vector<pair<vector<int>,float>>>;然后对代码进行相应的调整,使得代码正常运行;

代码的描述:

class Apriori

- . -word资料-

数据挖掘Apriori算法C++实现(2).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219