ImageVerifierCode 换一换
格式:DOCX , 页数:54 ,大小:83.45KB ,
资源ID:25005064      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25005064.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(叶志伟数据挖掘实验指导书算法编程部分.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

叶志伟数据挖掘实验指导书算法编程部分.docx

1、叶志伟数据挖掘实验指导书算法编程部分数据挖掘与数据仓库实验指导书2013年 计算机学院计算应用实验1 Apriori算法实现一、实验目的1、掌握Apriori算法对于关联规则挖掘中频繁集的产生以及关联规则集合的产生过程;2、根据算法描述编程实现算法,调试运行。并结合相关实验数据进行应用,得到分析结果。数据和删除数据的操作。实验类型:综合计划课间:2学时二、实验内容1、频繁项集的生成与Apriori算法实现;2、关联规则的生成过程与Rule-generate算法实现;3、结合样例对算法进行分析;三、实验步骤编写程序完成下列算法:1、Apriori算法输入: 数据集D;最小支持数minsup_co

2、unt;输出: 频繁项目集LL1=large 1-itemsetsFor (k=2; Lk-1; k+)Ck=apriori-gen (Lk-1); / Ck是k个元素的候选集For all transactions tD do begin Ct=subset(Ck,t); /Ct是所有t包含的候选集元素 for all candidates c Ct do c.count+; endLk=c Ck| c.count minsup_count EndL=Lk;2、apriori-gen (Lk-1) 候选集产生算法输入: (k-1)-频繁项目集Lk-1输出: k-频繁项目集CkFor all

3、itemset pLk-1 doFor all itemset qLk-1 doIf p.item1=q.item1, p.item2=q.item2, ,p.itemk-2=q.itemk-2, p.itemk-1(lk-xm-1),support,confidence; IF (m-1)1) THEN genrules(lk,xm-1); END;END;结合相关样例数据对算法进行调试,并根据相关实验结果对数据进行分析,四、实验报告要求1、用C语言或者其他语言实现上述相关算法。2、实验操作步骤和实验结果,实验中出现的问题和解决方法。五、注意事项1、集合的表示及相关操作的实现;2、项目集的数

4、据结构描述;参考核心代码如下:(相关的测试main函数可以自己书写。根据频繁k项集生成关联规则相对简单,只需要计算最小置信度即可从频繁K项集中找到所有的满足条件的关联规则。)/对事物进行第一次扫描,生成频繁一项集,并返回一项集中个数int init_pass(char *item,char tranlen_tlen,int len,char res_itemlen_tlen,float min_sup) float t_sup; int number=0; for(int i=0;ilen;i+) int count=0; for(int j=0;jlen_t;j+) for(int k=0;

5、k=min_sup) res_itemnumber+0=itemi; return number-1;/生成候选K项集,返回k项集中事物的个数int candidate_gen(char ktranlenk,char kktranlenk+1) char tempk,temp1k,ktempk+1; int number=0; for(int i=0;ilen;i+) strcpy(temp,ktrani); bool flag; for(j=i+1;jlen;j+) strcpy(temp1,ktrani); for(int m=0;mk;m+) if(mtemp1k-1) strcpy(k

6、temp,temp1); ktempk=tempk-1; else strcpy(ktemp,temp); ktempk=temp1k-1 break; flag=judge(kemp,ktranlenk); if(flag=true) strcpy(kktrannumber+,ktemp); return number-1;/判断子集是否在k项集中bool judge(char *srcstr,char desstrlenk) char tempk; int count=0; for(int i=0;ik-1;i+) for(int j=0;ji;j+) tempj=srcstrj; for

7、(int j=i+1;jk+1;j+) tempj=srcstrj; for(int p=0;plen;p+) if(strcmp(temp,desstri)=0) count+; break; if(count=k-1) return true; return false;/apriori算法int apriori(char itemlen,char tranlengthlen,char res_tranlengthlen,float min_sup) char ttranlengthlen; int number,count,t_num; for(int i=0;ilength;i+) f

8、or(int j=0;jlen;j+) ttranij=0; number=init_pass(item,tranlengthlen,len,ttranlengthlen,min_sup); for(int i=0ilength;i+) res_trani0=ttrani0; for(int k=2;number!=0;k+) t_num=number; number=candidate_gen(res_itemnumberk-1,ttrannumberk); if(k=2) continue; else count=0; for(int i=0;inumber;i+) char tempk;

9、 strcpy(temp,ttrani); bool t_flag=false; for(int j=0;jlength;j+) /求出候选K项集中每个事物的支持计数 int t_k=0; for(int n=0;nk;n+) bool m_flag=false for(int g=t_k;g min_sup) strcpy(res_itemi,temp); count=0; return t_num; 实验2-1 ID3算法实现一、实验目的通过编程实现决策树算法,信息增益的计算、数据子集划分、决策树的构建过程。加深对相关算法的理解过程。实验类型:综合计划课间:4学时二、实验内容1、分析决策树

10、算法的实现流程;2、分析信息增益的计算、数据子集划分、决策树的构建过程;3、根据算法描述编程实现算法,调试运行; 三、实验方法算法描述: 以代表训练样本的单个结点开始建树;若样本都在同一个类,则该结点成为树叶,并用该类标记;否则,算法使用信息增益作为启发信息,选择能够最好地将样本分类的属性;对测试属性的每个已知值,创建一个分支,并据此划分样本;算法使用同样的过程,递归形成每个划分上的样本决策树递归划分步骤,当下列条件之一成立时停止:给定结点的所有样本属于同一类;没有剩余属性可以进一步划分样本,在此情况下,采用多数表决进行四、实验步骤1、算法实现过程中需要使用的数据结构描述: Structint

11、 Attrib_Col; / 当前节点对应属性int Value; / 对应边值Tree_Node* Left_Node; / 子树Tree_Node* Right_Node / 同层其他节点Boolean IsLeaf; / 是否叶子节点int ClassNo; / 对应分类标号Tree_Node;2、整体算法流程 主程序: InputData(); T=Build_ID3(Data,Record_No, Num_Attrib); OutputRule(T); 释放内存;3、相关子函数:3.1、 InputData()输入属性集大小Num_Attrib;输入样本数Num_Record;分配内

12、存DataNum_RecordNum_Attrib;输入样本数据DataNum_RecordNum_Attrib;获取类别数C(从最后一列中得到);3.2、Build_ID3(Data,Record_No, Num_Attrib) Int Class_DistributeC; If (Record_No=0) return Null N=new tree_node(); 计算Data中各类的分布情况存入Class_Distribute Temp_Num_Attrib=0; For (i=0;i=0) Temp_Num_Attrib+; If Temp_Num_Attrib=0 N-ClassN

13、o=最多的类; N-IsLeaf=TRUE; N-Left_Node=NULL;N-Right_Node=NULL; Return N;If Class_Distribute中仅一类的分布大于0 N-ClassNo=该类; N-IsLeaf=TRUE; N-Left_Node=NULL;N-Right_Node=NULL; Return N; InforGain=0;CurrentCol=-1;For i=0;iNum_Attrib-1;i+) TempGain=Compute_InforGain(Data,Record_No,I,Num_Attrib); If (InforGainAttri

14、b_Col=CurrentCol;/记录CurrentCol所对应的不同值放入DiferentValue;I=0;Value_No=-1;While iRecord_No Flag=false; For (k=0;kValue_No;k+) if (DiferentValuk=DataiCurrentCol) flag=true; if (flag=false)Value_No+;DiferentValueValue_No=DataiCurrentCol I+;SubData=以Data大小申请内存空间;For (i=0;iValue_No;i+) k=-1; for (j=0;jRecord

15、_No-1;j+) if (DatajCurrentCol=DiferentValui) k=k+;For(int i1=0;i1Num_Attrib;i1+)If (i1CurrentCol)SubDataki1=Dataji1; Else SubDataki1=-1; N-Attrib_Col=CurrentCol; N-Value=DiferentValui; N-Isleaf=false; N-ClassNo=0; N-Left_Node=Build_ID3(SubData,k+1, Num_Attrib); N-Right_Node=new Tree_Node; N=N-Right_

16、Node; 3.3、计算信息增益 Compute_InforGain(Data,Record_No, Col_No, Num_Attrib) Int DifferentValueMaxDifferentValue; Int Total_DifferentValue; Int sClassNoMaxDifferentValue; s=0;/ 数组清0; Total_DifferentValue=-1; For (i=0;iRecord_No;i+) J=GetPosition(DifferentValue,Total_DifferentValue,DataiCol_no);If (j0) Tot

17、al_DifferentValue+;DifferentValueTotal_DifferentValue=DataiCol_no;J=Total_DifferentValue;SDataiNum_Attrib-1j+;Total_I=0;For (i=0;iClassNo;i+) Sum=0; For(j=0;jRecord_No;j+) if DatajNum_Attrib-1=i sum+; Total_I=Compute_PI(Sum/Record_No); EA=0;For (i=0;iTotal_DifferentValue;i+); temp=0;sj=0; /sj是数据子集中属

18、于类j的样本个数; For (j=0;jClassNO;j+) sj+=sji; For (j=0;jClassNO;j+) EA+=sj/Record_No*Compute_PI(sji/sj); Return total_I-EA;3.4、得到某数字在数组中的位置GetPosition(Data, DataSize,Value) For (i=0;iDataSize;i+) if (Datai=value) return I; Return -1;3.5、计算Pi*LogPiFloat Compute_PI(float pi) If pi=1 then return 0; Return 0

19、-pi*log2(pi);五、实验报告要求1、用C语言或者其他语言实现上述相关算法。2、实验操作步骤和实验结果,实验中出现的问题和解决方法。六、注意事项1、信息增益的计算;2、选择相关字段后根据相关字段的取值对数据集合进行划分。3、决策树构建的终止条件实验2-2 贝叶斯算法实现一、实验目的通过对贝叶斯算法的编程实现,加深对贝叶斯算法的理解,同时利用贝叶斯算法对简单应用实现预测分类实验类型:综合计划课间:2学时二、实验内容1、分析贝叶斯算法;2、计算条件概率;3、预测精度的计算与评估;4、编程实现贝叶斯分类算法,并对简单应用样本数据实现预测分类5. 参考实验数据http:/archive.ics

20、.uci.edu/ml/machine-learning-databases/wine/三、实验方法1、 实现贝叶斯算法2、 利用实验数据对贝叶斯算法进行检测3、 求解精确度计算4、 调试程序5、 完成整个分类与评估的过程四、实验步骤4.1 算法过程描述:1)输入训练数据,将数据保存在DataBase二维数组中(数组的最后一个属性对应类别标号)2)设定训练数据集与测试数据集大小(指定从数组下标0开始到TrainSetSize-1所对应的数据为训练数据,其余为测试数据);3)计算训练数据集数据中各属性在各类中的概率分布情况;4)利用测试数据计算贝叶斯算法的分类精度;5)输出分类结果;4.2 数据

21、处理A、实验数据RIDageincomestudentCredit_ratingBuyComputer130HighNoFairNo230HighNoExcellentNo33140HighNoFairYes440medNoFairYes540LowYesFairYes640LowYesExcellentNo73140LowYesExcellentYes830MedNoFairNo930LowYesFairYes1040MedYesFairYes1130MedYesExcellentYes123140MedNoExcellentYes133140HighYesFairYes1440medNoE

22、xcellentNo B、对数据中的枚举类型数据进行转换以便于数据处理:0123ClassNo100000200010310001421001522101622110712111801000902101102110111011111211011131010114210104.3 计算训练数据集数据中各属性在各类中的概率分布情况如图3-1所示4.4 利用测试数据计算贝叶斯算法的分类精度如图3-2所示NoNoYesYes申请AttSetSize*MaxAttSize*ClassSize大小的空间 AttributeDistributei=0iAttSetSizejTrainSetSizeAttri

23、buteDistributeiDataBasejiDataBasejAttSetSize-1+AttributeDistribute 0For (i=0;iAttSize;i+) For (j=0;jMaxAttSize;j+) For(k=0;kClassSize;k+) AttributeDistributeijk=0;j=0i+Noi=AttSetSize-1YesAttributeDistributei0DataBasejAttSetSize-1+j+ 图3-1 训练数据集各属性的概率分布计算申请ClassSize*ClassSize个空间 PreciseiSetSizePresize 0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1