长沙学院信息与计算科学系 数据挖掘实验指导书
2、整体算法流程 主程序:
InputData();
T=Build_ID3(Data,Record_No, Num_Attrib); OutputRule(T); 释放内存; 3、相关子函数: 3.1、 InputData()
{
输入属性集大小Num_Attrib; 输入样本数Num_Record;
分配内存Data[Num_Record][Num_Attrib];
输入样本数据Data[Num_Record][Num_Attrib]; 获取类别数C(从最后一列中得到); }
3.2、Build_ID3(Data,Record_No, Num_Attrib)
{
Int Class_Distribute[C];
If (Record_No==0) { return Null }
N=new tree_node();
计算Data中各类的分布情况存入Class_Distribute Temp_Num_Attrib=0;
For (i=0;i If (Data[0][i]>=0) Temp_Num_Attrib++; If Temp_Num_Attrib==0 { N->ClassNo=最多的类; 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; 第11页 长沙学院信息与计算科学系 数据挖掘实验指导书 For i=0;i TempGain=Compute_InforGain(Data,Record_No,I,Num_Attrib); If (InforGain { InforGain=TempGain; CurrentCol=I;} } N->Attrib_Col=CurrentCol; //记录CurrentCol所对应的不同值放入DiferentValue[]; I=0;Value_No=-1; While i For (k=0;k if (DiferentValu[k]=Data[i][CurrentCol]) flag=true; if (flag==false) {Value_No++;DiferentValue[Value_No]=Data[i][CurrentCol] } I++; } SubData=以Data大小申请内存空间; For (i=0;i k=-1; for (j=0;j if (Data[j][CurrentCol]==DiferentValu[i]) {k=k++; For(int i1=0;i1 If (i1<>CurrentCol)SubData[k][i1]=Data[j][i1]; Else SubData[k][i1]=-1; } N->Attrib_Col=CurrentCol; N->Value=DiferentValu[i]; 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_Node; } } 3.3、计算信息增益 Compute_InforGain(Data,Record_No, Col_No, Num_Attrib) 第12页 长沙学院信息与计算科学系 数据挖掘实验指导书 { Int DifferentValue[MaxDifferentValue]; Int Total_DifferentValue; Int s[ClassNo][MaxDifferentValue]; s=0;// 数组清0; Total_DifferentValue=-1; For (i=0;i J=GetPosition(DifferentValue, Total_DifferentValue,Data[i][Col_no]); If (j<0) {Total_DifferentValue++; DifferentValue[Total_DifferentValue]=Data[i][Col_no]; J=Total_DifferentValue;} S[Data[i][Num_Attrib-1]][j]++; } Total_I=0; For (i=0;i Sum=0; For(j=0;j For (i=0;i { temp=0;sj=0; //sj是数据子集中属于类j的样本个数; For (j=0;j For (j=0;j EA+=sj/Record_No*Compute_PI(s[j][i]/sj); } Return total_I-EA; } 3.4、得到某数字在数组中的位置 GetPosition(Data, DataSize,Value) { For (i=0;i 第13页 长沙学院信息与计算科学系 数据挖掘实验指导书 3.5、计算Pi*LogPi Float Compute_PI(float pi) { If pi<=0 then return 0; If pi>=1 then return 0; Return 0-pi*log2(pi); } 五、实验报告要求 1、用C语言实现上述相关算法。 2、实验操作步骤和实验结果,实验中出现的问题和解决方法。 六、注意事项 1、信息增益的计算; 2、选择相关字段后根据相关字段的取值对数据集合进行划分。 3、决策树构建的终止条件 第14页 长沙学院信息与计算科学系 数据挖掘实验指导书 实验四 贝叶斯算法实现 一、实验目的 通过对贝叶斯算法的编程实现,加深对贝叶斯算法的理解,同时利用贝叶斯算法对简单应用实现预测分类 实验类型:验证 计划课间:4学时 二、实验内容 1、分析贝叶斯算法; 2、计算条件概率; 3、预测精度的计算与评估; 4、编程实现贝叶斯分类算法,并对简单应用样本数据实现预测分类 三、实验方法 1、 实现贝叶斯算法 2、 利用实验数据对贝叶斯算法进行检测 3、 求解精确度计算 4、 调试程序 5、 完成整个分类与评估的过程 四、实验步骤 4.1 算法过程描述: 1)输入训练数据,将数据保存在DataBase二维数组中(数组的最后一个属性对应类别标号) 2)设定训练数据集与测试数据集大小(指定从数组下标0开始到TrainSetSize-1所对应的数据为训练数据,其余为测试数据); 3)计算训练数据集数据中各属性在各类中的概率分布情况; 4)利用测试数据计算贝叶斯算法的分类精度; 5)输出分类结果; 4.2 数据处理 A、实验数据 RID 1 2 3 age ≦30 ≦30 31~40 income High High High student Credit_rating No No No Fair Excellent Fair BuyComputer No No Yes 第15页 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据挖掘实验指导书(3)在线全文阅读。
相关推荐: