数据仓库与数据挖掘实验数据挖掘实验指导书.docx
- 文档编号:9104133
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:18
- 大小:20.99KB
数据仓库与数据挖掘实验数据挖掘实验指导书.docx
《数据仓库与数据挖掘实验数据挖掘实验指导书.docx》由会员分享,可在线阅读,更多相关《数据仓库与数据挖掘实验数据挖掘实验指导书.docx(18页珍藏版)》请在冰豆网上搜索。
数据仓库与数据挖掘实验数据挖掘实验指导书
数据仓库与数据挖掘实验数据挖掘实验指导书
《数据挖掘》实验指导书
xx年3月1日
长沙学院信息与计算科学系
前言
随着数据库技术的发展,特别是数据仓库以及Web等新型数据源的日益普及,形成了数据丰富,知识缺乏的严重局面。
针对如何有效地利用这些海量的数据信息的挑战,数据挖掘技术应运而生,并显示出强大的生命力。
数据挖掘技术使数据处理技术进入了一个更高级的阶段,是对未来人类产生重大影响的十大新兴技术之一。
因此加强数据挖掘领域的理论与实践学习也已成为专业学生的必修内容。
本实验指导书通过大量的实例,循序渐进地引导学生做好各章的实验。
根据实验教学大纲,我们编排了五个实验,每个实验又分了五部分内容:
实验目的、实验内容、实验步骤、实验报告要求、注意事项。
在实验之前,由教师对实验作一定的讲解后,让学生明确实验目的,并对实验作好预习工作。
在实验中,学生根据实验指导中的内容进行验证与,然后再去完成实验步骤中安排的任务。
实验完成后,学生按要求完成实验报告。
整个教学和实验中,我们强调学生切实培养动手实践能力,掌握数据挖掘的基本方法。
实验一K-Means聚类算法实现
一、实验目的
通过分析K-Means聚类算法的聚类原理,利用Vc编程工具编程实现K-Means聚类算法,并通过对样本数据的聚类过程,加深对该聚类算法的理解与应用过程。
实验类型:
验证计划课间:
4学时
二、实验内容
1、分析K-Means聚类算法;2、分析距离计算方法;3、分析聚类的评价准则;
4、编程完成K-Means聚类算法,并基于相关实验数据实现聚类过程;
三、实验方法
1、K-means聚类算法原理
K-means聚类算法以k为参数,把n个对象分为k个簇,以使簇内的具有较高的相似度。
相似度的计算根据一个簇中对象的平均值来进行。
算法描述:
输入:
簇的数目k和包含n个对象的数据库
输出:
使平方误差准则最小的k个簇过程:
任选k个对象作为初始的簇中心;Repeat
forj=1tonDO
根据簇中对象的平均值,将每个对象赋给最类似的簇fori=1tokDO更新簇的平均值计算E
UnitlE不再发生变化按簇输出相应的对象
2、聚类评价准则:
E的计算为:
E=
∑∑|x-x
i=1x∈Ci
k
i
|2
四、实验步骤4.1实验数据
P192:
15
4.2初始簇中心的选择选择k个样本作为簇中心For(i=0;i
For(j=0;j
ClusterCenter[i][j]=DataBase[i][j]
4.3数据对象的重新分配
Sim=某一较大数;ClusterNo=-1;
For(i=0;i
If(Distance(DataBase[j],ClusterCenter[i])
ClusterNo=i;}
ObjectCluster[j]=ClusterNo;
4.4簇的更新
For(i=0;i
{Temp=0;Num=0;For(j=0;j
If(ObjectCluster[j]==i){Num++;Temp+=DataBase[j];}If(ClusterCenter[i]!
=Temp)HasChanged=TRUE;ClusterCenter[i]=Temp;}
4.5结果的输出For(i=0;i
Printf(“输出第%d个簇的对象:
”,i);For(j=0;j
If(ObjectCluster[j]==i)printf(“%d”,j);Printf(“\n”);
Printf(“\t\t\t簇平均值为(%d,%d)\n”,ClusterCenter[i][0],ClusterCenter[i][1]);}
五、注意事项1、距离函数的选择2、评价函数的计算
实验二DBSCAN算法实现
一、实验目的
要求掌握DBSCAN算法的聚类原理、了解DBSCAN算法的执行过程。
在此基础上,利用DBSCAN算法对给定样本数据实现聚类过程。
实验类型:
综合计划课间:
4学时
二、实验内容
1、了解DBSCAN算法的聚类原理;2、了解DBSCAN算法的执行过程;3、编程实现DBSCAN算法;4、对给定样本数据实现聚类过程
三、实验方法
3.1、DBSCAN算法的基本概念
●对象的ε-邻域:
给定对象在半径ε内的区域;
●核心对象:
若一个对象ε-邻域至少包含最小数目MinPts个对象,则称该对
象为核心对象;
●直接密度可达:
给定一个对象集合D,若p是在q的ε-邻域内,而q是一个核
心对象,则称对象p从对象q出发是直接密度可达的;
●密度可达:
若存在一个对象链p1,p2,?
pn,p1=q,pn=p,对pi∈D,pi+1是从pi
关于ε和MinPts直接密度可达的,则称对象p是从对象q关于ε和MinPts是密度可达的;
●密度相连:
若对象集合D中存在一个对象o,使得对象p和q是从o关于ε和
MinPts是密度可达的,则对象p和q是关于ε和MinPts密度相连的;●噪声:
一个基于密度的簇是基于密度可达性的最大的密度相连对象的集合,
不包含在任何簇中的对象被认为是噪声
3.2、实现的基本
通过检查数据集中每个对象的ε-邻域来寻找聚类。
如一个点p的ε-邻域包含多于MinPts个对象,则创建一个p作为核心对象的新簇。
然后,DBSCAN寻找从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并,当没有新的点可以被添加到任何簇时,聚类过程结束。
3.3算法描述
输入:
包含n个对象的数据库,半径,最小数目MinPts;输出:
所有生成的簇,达到密度要求过程:
Repeat
从数据库中抽取一个未处理的点;
IF抽出的点是核心点THEN找出所有从该店密度可达的对象,形成一个簇;ELSE抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一点;Until所有点都被处理
四、实验步骤4.1数据结构的分析StructList
{Intdata[TOTALPOINT];Inthead=0;Inttail=-1;}ListClusterList;StructNode
{intAttribute1;intAttribute2}NodeDataBase[TOTALPOINT];
BooleanNeighbor[TOTALPOINT][TOTALPOINT];IntClusterNo[TOTALPOINT];
4.2实验数据P186表5-8
4.3计算临近
For(i=0;i
For(j=0;j
If(dist(DataBase[i],DataBase[i])
4.4聚类划分CurrentClusterNO=0;For(i=0;i
NeighborPointsNum=0;
for(j=0;j
if(Neighbor[i][j]==true)NeighborPointsNum++;if(NeighborPointsNum)>=MinPts{
//记录邻居中已被划分的簇号ClusterList.tail=-1;ClusterList.head=0;For(j=0;j
If(Neighbor[i][j]==true)&&(ClusterNo[j]>0)
Then{ClusterList.tail++;
ClusterList.data[tail]=ClusterNo[j]}//当前核心对象的邻居对象划分为一簇For(j=0;j
ClusterNo[j]=CurrentClusterNO;
//将多个簇合并
WhileClusterList.head
If(ClusterNo[j]==ClusterList.data[head])ClusterNo[j]=CurrentClusterNO;
ClusterList.head++;}}}
4.5聚类结果输出
For(i=-1;i
Printf(“\n输出第%d簇的对象:
”,i);For(j=0;j
If(ClusterNo[j]=i)printf(“%d\t”,j);}
五、注意事项5.1.噪声数据的处理
5.2已划分的类存在直接密度可达时的相关类数据的合并
实验三ID3算法实现
一、实验目的
通过编程实现决策树算法,信息增益的计算、数据子集划分、决策树的构建过程。
加深对相关算法的理解过程。
实验类型:
验证计划课间:
4学时
二、实验内容
1、分析决策树算法的实现流程;
2、分析信息增益的计算、数据子集划分、决策树的构建过程;3、根据算法描述编程实现算法,调试运行;4、对课后P161的第10题进行验算,得到分析结果。
三、实验方法
算法描述:
以代表训练样本的单个结点开始建树;
若样本都在同一个类,则该结点成为树叶,并用该类标记;
否则,算法使用信息增益作为启发信息,选择能够最好地将样本分类的属性;对测试属性的每个已知值,创建一个分支,并据此划分样本;算法使用同样的过程,递归形成每个划分上的样本决策树递归划分步骤,当下列条件之一成立时停止:
给定结点的所有样本属于同一类;
没有剩余属性可以进一步划分样本,在此情况下,采用多数表决进行
四、实验步骤
1、算法实现过程中需要使用的数据结构描述:
Struct
{intAttrib_Col;//当前节点对应属性intValue;//对应边值Tree_Node*Left_Node;//子树
Tree_Node*Right_Node//同层其他节点BooleanIsLeaf;//是否叶子节点intClassNo;//对应分类标号}Tree_Node;
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)
{
IntClass_Distribute[C];
If(Record_No==0){returnNull}
N=newtree_node();
计算Data中各类的分布情况存入Class_DistributeTemp_Num_Attrib=0;
For(i=0;i
If(Data[0][i]>=0)Temp_Num_Attrib++;IfTemp_Num_Attrib==0{
N->ClassNo=最多的类;N->IsLeaf=TRUE;
N->Left_Node=NULL;N->Right_Node=NULL;ReturnN;
}
IfClass_Distribute中仅一类的分布大于0{
N->ClassNo=该类;N->IsLeaf=TRUE;
N->Left_Node=NULL;N->Right_Node=NULL;ReturnN;}
InforGain=0;CurrentCol=-1;
Fori=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;Whilei
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(inti1=0;i1
If(i1CurrentCol)SubData[k][i1]=Data[j][i1];ElseSubData[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=newTree_Node;N=N->Right_Node;}}
3.3、计算增益
Compute_InforGain(Data,Record_No,Col_No,Num_Attrib)
IntDifferentValue[MaxDifferentValue];IntTotal_DifferentValue;
Ints[ClassNo][MaxDifferentValue];
s=0;//数组清0;
Total_DifferentValue=-1;For(i=0;i
J=GetPosition(DifferentValue,
Total_DifferentValue,Data[i][Col_no]);If(j
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);}
Returntotal_I-EA;}
3.4、得到某数字在数组中的位置GetPosition(Data,DataSize,Value){
For(i=0;i
3.5、计算Pi*LogPi
FloatCompute_PI(floatpi){
Ifpi=1thenreturn0;Return0-pi*log2(pi);}
五、实验报告要求
1、用C语言实现上述相关算法。
2、实验操作步骤和实验结果,实验中出现的问题和解决方法。
六、注意事项
1、信息增益的计算;
2、选择相关字段后根据相关字段的取值对数据集合进行划分。
3、决策树构建的终止条件
实验四贝叶斯算法实现
一、实验目的
通过对贝叶斯算法的编程实现,加深对贝叶斯算法的理解,同时利用贝叶斯算法对简单应用实现预测分类实验类型:
验证课间:
4学时
二、实验内容
1、分析贝叶斯算法;2、计算条件概率;3、预测精度的计算与评估;
4、编程实现贝叶斯分类算法,并对简单应用样本数据实现预测分类
三、实验方法
1、实现贝叶斯算法
2、利用实验数据对贝叶斯算法进行检测3、求解精确度计算4、调试程序
5、完成整个分类与评估的过程
四、实验步骤
4.1算法过程描述:
1)输入训练数据,将数据保存在DataBase二维数组中(数组的最后一个属性对应类别标号)2)设定训练数据集与测试数据集大小(指定从数组下标0开始到TrainSetSize-1所对应的数据为训练数据,其余为测试数据);
3)计算训练数据集数据中各属性在各类中的概率分布情况;4)利用测试数据计算贝叶斯算法的分类精度;5)输出分类结果;4.2数据处理
B、对数据中的枚举类型数据进行转换以便于数据处理:
4.3计算训练数据集数据中各属性在各类中的概率分布情况如图3-1所示4.4利用测试数据计算贝叶斯算法的分类精度如图3-2所示
图3-1训练数据集各属性的概率分布计算
图3-2贝叶斯算法的分类精度计算
4.5输出分类结果
For(i=0;i
For(j=0;j
printf(“\n\nTotalCorrectis%d”,TotalCorrect);
五、注意事项
注意单个样例数据的概率计算与各字段的概率计算的关系
实验五Apriori算法实现
一、实验目的
1、掌握Apriori算法对于关联规则挖掘中频繁集的产生以及关联规则集合的产生过程;2、根据算法描述编程实现算法,调试运行。
并结合相关实验数据进行应用,得到分析结果。
数据和删除数据的操作。
实验类型:
验证计划课间:
2学时
二、实验内容
1、频繁项集的生成与Apriori算法实现;
2、关联规则的生成过程与Rule-generate算法实现;3、结合样例对算法进行分析;
三、实验步骤
编写程序完成下列算法:
1、Apriori算法
输入:
数据集D;最小支持数minsup_count;输出:
频繁项目集LL1={large1-itemsets}For(k=2;Lk-1≠Φ;k++)
Ck=apriori-gen(Lk-1);//Ck是k个元素的候选集Foralltransactionst∈Ddo
beginCt=subset(Ck,t);//Ct是所有t包含的候选集元素forallcandidatesc∈Ctdoc.count++;end
Lk={c∈Ck|c.count≧minsup_count}EndL=∪Lk;
2、apriori-gen(Lk-1)候选集产生算法输入:
(k-1)-频繁项目集Lk-1输出:
k-频繁项目集Ck
Forallitemsetp∈Lk-1doForallitemsetq∈Lk-1do
Ifp.item1=q.item1,p.item2=q.item2,…,p.itemk-2=q.itemk-2,p.itemk-1
ifhas_infrequent_subset(c,Lk-1)thendeletecelseaddctoCkEndReturnCk
3、has_infrequent_subset(c,Lk-1)功能:
判断候选集的元素
输入:
一个k-频繁项目集Lk-1,(k-1)-频繁项目集Lk-1输出:
c是否从候选集中删除的布尔判断Forall(k-1)-subsetsofcdoIfNot(S∈Lk-1)THENreturnTRUE;ReturnFALSE;
4、Rule-generate(L,minconf)输入:
频繁项目集;最小信任度输出:
强关联规则算法:
FOReachfrequentitemsetlkinLgenerules(lk,lk);
5、Genrules递归算法:
Genrules(lk:
frequentk-itemset,xm:
frequentm-itemset)X={(m-1)-itemsetsxm-1|xm-1inxm};Foreachxm-1inX
BEGINconf=support(lk)/support(xm-1);IF(conf≧minconf)THEN
长沙学院信息与计算科学系数据挖掘实验指导书
BEGIN
输出规则:
xm-1->(lk-xm-1),support,confidence;
IF(m-1)>1)THENgenrules(lk,xm-1);
END;
END;
结合相关样例数据对算法进行调试,并根据相关实验结果对数据进行分析,
四、实验要求
1、用C语言实现上述相关算法。
2、实验操作步骤和实验结果,实验中出现的问题和解决方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据仓库 数据 挖掘 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)