数据挖掘Apriori算法C++实现(2)
时间:2025-04-20
时间: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资料-
上一篇:并列句详解与复习含中考真题解析
下一篇:私人定制计划书