电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

Apriori算法实验报告材料

  • 资源ID:468167237       资源大小:132.50KB        全文页数:22页
  • 资源格式: DOC        下载积分:20金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要20金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

Apriori算法实验报告材料

word题 目Apriori算法实现学生某某学生学号专业班级指导教师2014-12-27实验一 Apriori算法实现一、 实验目的1. 加强对Apriori算法的理解;2. 锻炼分析问题、解决问题并动手实践的能力。二、 实验要求使用一种你熟悉的程序设计语言,如C+或Java,实现Apriori算法,至少在两种不同的数据集上比拟算法的性能。三、 实验环境Win7 旗舰版 + Visual Studio 2010语言:C+四、 算法描述1、 Apriori算法说明在Apriori算法中,寻找频繁项集的根本思想是:A. 简单统计所有含一个元素项目集出现的频率,找出不小于最小支持度的项目集, 即频繁项集;B. 从第二步开始,循环处理直到再没有最大项目集生成。循环过程是: 第k步中, 根据第k-1步生成的频繁(k-1)项集产生侯选k项集。根据候选k项集,算出候选k项集支持度,并与最小支持度比拟, 找到频繁k项集。下文中遇到的以下符号,分别代表相应的内容k-itemsetk项集Lk频繁k项集Ck侯选k项集2、 Apriori算法描述数据结构说明double minsup; /设置最小支持度map<string,int> items_count; /统计各个项集的数目vector<vector<string>> datavec; /原始数据项集vector<vector<string>> candidatevec; /候选项集vector<vector<string>> frequentvec; /频繁项集ofstream outFile;int round=1; /生成项集轮次long trancount=0; /原始事务总数/判断某个项目在某一个事务中是否存在,存在如此值为1,反之为0vector<map<string,bool> > bitmap;Apriori算法的第一步是简单统计所有含一个元素的项集出现的频率,来决定频繁1项集。在第k步,分两个阶段:1,用函数genCanItemsetK,通过第(k-1)步中生成的频繁(k-1)项集来生成侯选k项集;2.计算侯选k项集的支持度,并找出频繁k项集。Apriori算法描述如下getOriData();/获取原始数据集,并统计事务个数genCanItemset1(); /产生输出候选1项集genFreItemset1(); /产生频繁项集if(!frequentvec.empty() /根据频繁1项集,执行程序dogenCanItemsetK();/生成并输出候选k项集genFreItemsetK();/计算并输出频繁k项集while(!frequentvec.empty(); /频繁项集不为空,如此循环继续其中,产生候选k项集函数genCanItemsetK中涉与两个重要函数,项集合并函数mergeItem和剪枝函数cutNotCanItemsetK。3、 函数方法说明/获取原始数据集,并统计事务个数void getOriData();/合并生成新的候选项集vector<string> mergeItem(vector<string> vect1,vector<string> vect2,int round);/判断项集item是否已经存在候选项集集合items中,存在如此返回1int isExist(vector<string> item,vector<vector<string> >items);/产生并输出候选1项集void genCanItemset1();/产生并输出频繁1项集void genFreItemset1();/产生并输出候选k-项集k>=2void genCanItemsetK();/产生并输出频繁k-项集k>=2void genFreItemsetK();/剪枝:剪去合并后项集中含有非频繁项集中的项void cutNotCanItemsetK(vector<string> & item);五、 实验截图1. 程序运行界面2. 输出文件截图13. 输出文件截图1六、 实验总结做完这个实验,有如下收获:1. 同一数据集,最小支持度越小,那么产生的频繁项集维数越高,程序运行时间越长;2. 更加深刻理解了:频繁子集的任何子集一定是频繁的,子集频繁父亲一定频繁;3. Apriori也存在缺点:第一在每一步产生侯选项目集时循环产生的组合过多,没有排除不应该参与组合的元素;第二,每次计算项集的支持度时,开销会随着数据的增多而成几何级增长。七、 附1.#include <iostream>#include <fstream>#include <string>#include <vector>#include <map>#include <algorithm>#include <iomanip>using namespace std;double minsup; /设置最小支持度map<string,int> items_count; /统计各个项集的数目vector<vector<string>> datavec; /原始数据项集vector<vector<string>> candidatevec; /候选项集vector<vector<string>> frequentvec; /频繁项集ofstream outFile;int round=1; /生成项集轮次long trancount=0; /原始事务总数/判断某个项目在某一个事务中是否存在,存在如此值为1,反之为0vector<map<string,bool> > bitmap;/获取原始数据集,并统计事务个数void getOriData();/合并生成新的候选项集vector<string> mergeItem(vector<string> vect1,vector<string> vect2,int round);/判断项集item是否已经存在候选项集集合items中,存在如此返回1int isExist(vector<string> item,vector<vector<string> >items);/产生并输出候选1项集void genCanItemset1();/产生并输出频繁1项集void genFreItemset1();/产生并输出候选k-项集k>=2void genCanItemsetK();/产生并输出频繁k-项集k>=2void genFreItemsetK();/剪枝:剪去合并后项集中含有非频繁项集中的项void cutNotCanItemsetK(vector<string> & item);int main()getOriData();/获取原始数据集,并统计事务个数cout << "请输入结果文件名:" /pausestring fName;cin >> fName;cout << "请输入最小支持度:"cin >> minsup;outFile.open(fName,ios:trunc);outFile << "最小支持度为minsup = " << minsup << endl;genCanItemset1();genFreItemset1();if(!frequentvec.empty() /判断频繁1项集是否为空,为空如此退出dogenCanItemsetK();genFreItemsetK();while(!frequentvec.empty(); /频繁项集不为空,如此循环继续outFile.close();cout << "n结果已保存到" << fName << "文件!n"system("pause");return 0;/获取原始数据集,并统计事务个数void getOriData()int flag;cout << "数据集文件:n1.dataA.txtn2.dataB.txtn请输入1选择dataA,其他选择2n"cin >> flag;string filename;if(flag = 1)filename = "dataA.txt" /打开数据文件elsefilename = "dataB.txt"ifstream file(filename);if(!file) /检查文件是否打开成功cout<<"Fail to open data file!"<<endl;system("pause");exit(0);elsestring temp;vector<string> item; /项集的临时vector cout<<"原始数据集:"<<endl;int begin,end;while(getline(file,temp) /一行一行读入数据trancount+;begin=0;temp.erase(0,temp.find_first_not_of("rtn "); /去除字符串首部的空格temp.erase(temp.find_last_not_of("rtn")+1); /去除字符串尾部的空格while(end=temp.find(' ',begin)!=string:npos) /每一个事务中的项是以空格为分隔符的item.push_back(temp.substr(begin,end-begin); /将每一个项插入item中begin=end+1;item.push_back(temp.substr(begin); /一个事务中的最后一项datavec.push_back(item); /将一个事务中的所有项当成一个整体插入另一个大的vector中item.clear(); /清空itemcout <<temp<<endl;file.close();/产生并输出候选1项集void genCanItemset1()map<string,bool> item_map;for(int ix=0;ix!=datavec.size();+ix)for(int iy=0;iy!=datavecix.size();+iy)items_countdatavecix.at(iy)+; /该项集的计数加1item_mapdatavecix.at(iy)=true; /表示该项目在该事务中存在,值为1,否如此默认为0bitmap.push_back(item_map);item_map.clear(); /这里一定要清空一下

注意事项

本文(Apriori算法实验报告材料)为本站会员(cl****1)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.