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

合集下载

数据挖掘实验报告1

数据挖掘实验报告1

实验一 ID3算法实现一、实验目的通过编程实现决策树算法,信息增益的计算、数据子集划分、决策树的构建过程。

加深对相关算法的理解过程。

实验类型:验证计划课间:4学时二、实验内容1、分析决策树算法的实现流程;2、分析信息增益的计算、数据子集划分、决策树的构建过程;3、根据算法描述编程实现算法,调试运行;4、对所给数据集进行验算,得到分析结果。

三、实验方法算法描述:以代表训练样本的单个结点开始建树;若样本都在同一个类,则该结点成为树叶,并用该类标记;否则,算法使用信息增益作为启发信息,选择能够最好地将样本分类的属性;对测试属性的每个已知值,创建一个分支,并据此划分样本;算法使用同样的过程,递归形成每个划分上的样本决策树递归划分步骤,当下列条件之一成立时停止:给定结点的所有样本属于同一类;没有剩余属性可以进一步划分样本,在此情况下,采用多数表决进行四、实验步骤1、算法实现过程中需要使用的数据结构描述:Struct{int 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;分配内存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<Num_Attrib;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;For i=0;i<Num_Attrib-1;i++){TempGain=Compute_InforGain(Data,Record_No,I,Num_Attrib); If (InforGain<TempGain){ InforGain=TempGain; CurrentCol=I;}}N->Attrib_Col=CurrentCol;//记录CurrentCol所对应的不同值放入DiferentValue[];I=0;Value_No=-1;While i<Record_No {Flag=false;For (k=0;k<Value_No;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<Value_No;i++){k=-1;for (j=0;j<Record_No-1;j++)if (Data[j][CurrentCol]==DiferentValu[i]){k=k++;For(int i1=0;i1<Num_Attrib;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) {Int DifferentValue[MaxDifferentValue];Int Total_DifferentValue;Int s[ClassNo][MaxDifferentValue];s=0;// 数组清0;Total_DifferentValue=-1;For (i=0;i<Record_No;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<ClassNo;i++){Sum=0;For(j=0;j<Record_No;j++) if Data[j][Num_Attrib-1]==i sum++; Total_I=Compute_PI(Sum/Record_No);}EA=0;For (i=0;i<Total_DifferentValue;i++);{ temp=0;sj=0; //sj是数据子集中属于类j的样本个数;For (j=0;j<ClassNO;j++)sj+=s[j][i];For (j=0;j<ClassNO;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<DataSize;i++) if (Data[i]=value) return I;Return -1;}3.5、计算Pi*LogPiFloat Compute_PI(float pi){If pi<=0 then return 0;If pi>=1 then return 0;Return 0-pi*log2(pi);}五、实验报告要求1、用C语言实现上述相关算法(可选择利用matlab函数实现)2、实验操作步骤和实验结果,实验中出现的问题和解决方法。

数据挖掘实验指导书

数据挖掘实验指导书

《数据仓库与数据挖掘》实验指导书主编张磊审校2012-1-11目录实验报告模板 (1)实验一、SSIS教程1-3课 (3)实验二、SSAS教程1-3课 (5)实验三、数据挖掘教程 (10)实验报告模板见下页。

青岛大学实验报告年月日姓名系年级组别同组者科目题目仪器编号[注:下面空白处明确实验目的、内容和要求,简要概括实验过程,适量拷屏部分关键界面放到实验报告中,评价最终结果是否正确,记录实验过程遇到的问题及解决结果,简单总结心得体会。

必要时加页,每个实验报告1-3页篇幅为宜。

]实验一、SSIS教程1-3课实验目的:采用SQL Server 2005的Integration Service,熟悉ETL工具的功能和使用方法实验内容:结合教材的ETL知识,打开SQL Server 2005的SSIS教程,按教程步骤完成1-3课,4学时,其中第1课2学时,第2、3课2学时。

实验要求:每次实验课结束前5分钟关闭SQL Server Business Intelligence Development Studio和SQL Server Management Studio,将项目文件夹拷贝到U盘或压缩后发到自己邮箱保存起来,以便下次实验课可以继续往下做或最后上交。

每次实验课开始时先使用SQL Server Configuration Manager启动必需的SQL Server 服务。

按时完成实验内容,整理实验报告。

实验说明:注意SQL Server 2005与SQL Server 2000的差异,如“框架”,访问表时必须使用框架名来限定,如SalesOrders.Employee;注意因中文教程是由英文教程翻译而来,所以有些地方出现名称翻译不足(即软件界面上是中文而教程中是英文)或过翻译(即软件界面上是英文而教程中是中文),因为大家懂英文所以这点应该不成问题;注意因为我们安装的SQL Server不是采用默认实例名(而是DWDM),而教程中假设的是采用默认实例名,所以有些地方的配置受到影响,需要进行更改;注意解决方案、项目和项的区别:解决方案可以包含多个项目;每个项目包含一个或多个项;按下图打开SSIS教程,做的过程中,注意以下问题:(1)创建的项目放到一个方便找到的自定义文件夹中以便每次下课时可以拷贝带走(2)第1课的“添加和配置平面文件连接管理器”步骤中的“重新映射列数据类型”部分,将【但现在,请不要进行任何更改,单击“取消”返回“平面文件连接管理器编辑器”对话框的“高级”窗格,查看建议的列数据类型。

数据挖掘实验报告-实验1-Weka基础操作

数据挖掘实验报告-实验1-Weka基础操作

数据挖掘实验报告-实验1-W e k a基础操作学生实验报告学院:信息管理学院课程名称:数据挖掘教学班级: B01姓名:学号:实验报告课程名称数据挖掘教学班级B01 指导老师学号姓名行政班级实验项目实验一: Weka的基本操作组员名单独立完成实验类型■操作性实验□验证性实验□综合性实验实验地点H535 实验日期2016.09.281. 实验目的和要求:(1)Explorer界面的各项功能;注意不能与课件上的截图相同,可采用打开不同的数据文件以示区别。

(2)Weka的两种数据表格编辑文件方式下的功能介绍;①Explorer-Preprocess-edit,弹出Viewer对话框;②Weka GUI选择器窗口-Tools | ArffViewer,打开ARFF-Viewer窗口。

(3)ARFF文件组成。

2.实验过程(记录实验步骤、分析实验结果)2.1 Explorer界面的各项功能2.1.1 初始界面示意其中:explorer选项是数据挖掘梳理数据最常用界面,也是使用weka最简单的方法。

Experimenter:实验者选项,提供不同数值的比较,发现其中规律。

KnowledgeFlow:知识流,其中包含处理大型数据的方法,初学者应用较少。

Simple CLI :命令行窗口,有点像cmd 格式,非图形界面。

2.1.2 进入Explorer 界面功能介绍(1)任务面板Preprocess(数据预处理):选择和修改要处理的数据。

Classify(分类):训练和测试分类或回归模型。

Cluster(聚类):从数据中聚类。

聚类分析时用的较多。

Associate(关联分析):从数据中学习关联规则。

Select Attributes(选择属性):选择数据中最相关的属性。

Visualize(可视化):查看数据的二维散布图。

(2)常用按钮Openfile:打开文件Open URL:打开URL格式文件Open DB:打开数据库文件Generate:数据生成Undo:撤销操作Edit:编辑数据Save:保存数据文件,可实现文件格式的转换,比如csv 格式文件向ARFF格式文件转换等等。

数据仓库与数据挖掘课程实验指导书

数据仓库与数据挖掘课程实验指导书

潘怡编著《数据仓库与数据挖掘》课程实验指导书长沙学院计算机科学与技术系2009年9月前言本书是《数据仓库与数据挖掘》课程及《数据分析与挖掘》的实验指导书。

全书分为三个部分,第一部分为实验内容对每个实验的实验目的、实验类型、实验学时、实验原理及知识点、实验环境(硬件环境、软件环境)和实验内容及步骤进行简单介绍,第二部分为实验指导对每个实验的实验方法,实验步骤及补充的实验知识进行详细介绍,第三部分为实验报告。

本实践课程主要介绍数据仓库的工作机理及其构建过程,。

要求学生熟练使用数据库管理系统MS SQL Server,掌握典型的数据仓库系统及其开发工具的使用,理解数据挖掘的工作原理与流程,掌握典型数据挖掘技术及其工具的使用方法,熟悉SQL SERVER BI DE V集成挖掘环境。

要求学生实验前认真准备,实验后提供实验报告,给出详细设计方法以及设计依据。

实验报告的格式应采用统一封面,统一的实验报告纸。

封面应包括:课程名称、实验序号、名称、专业、班级、姓名、同组实验者、实验时间。

实验报告内容应包括:实验名称、目的、内容、实验步骤、实验记录、数据处理(或原理论证、或实验现象描述、或结构说明等)。

目录第一部分实验内容实验1:实践SQL Server数据多维分析环境实验2:实践关联规则挖掘方法实验3:实践决策树挖掘方法实验4:实践聚类挖掘方法实验5:实践神经网络挖掘方法第二部分实验指导实验1:实践SQL Server数据多维分析环境实验2:实践关联规则挖掘方法实验3:实践决策树挖掘方法实验4:实践聚类挖掘方法实验5:实践神经网络挖掘方法第三部分实验报告第一部分实验内容实验1:实践SQL Server数据多维分析环境一.实验目的学习和掌握Sql Server 2005 Analysis Services 工具集,包括如何在BI Development Studio 的Analysis Services 项目中定义数据源、数据源视图、维度、属性、层次结构和多维数据集,如何查看多维数据集和维度,理解并掌握OLAP分析的基本过程与方法。

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

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

叶志伟数据挖掘实验指导书(算法编程部分)-CAL-FENGHAI.-(YICAI)-Company One1《数据挖掘与数据仓库》实验指导书2013年计算机学院计算应用实验1 Apriori算法实现一、实验目的1、掌握Apriori算法对于关联规则挖掘中频繁集的产生以及关联规则集合的产生过程;2、根据算法描述编程实现算法,调试运行。

并结合相关实验数据进行应用,得到分析结果。

数据和删除数据的操作。

实验类型:综合计划课间:2学时二、实验内容1、频繁项集的生成与Apriori算法实现;2、关联规则的生成过程与Rule-generate算法实现;3、结合样例对算法进行分析;三、实验步骤编写程序完成下列算法:1、Apriori算法输入:数据集D;最小支持数minsup_count;输出:频繁项目集LL1={large 1-itemsets}For (k=2; Lk-1≠Φ; k++)Ck=apriori-gen (Lk-1); // Ck是k个元素的候选集For all transactions t∈D dobegin 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 itemset p∈Lk-1 doFor all itemset q∈Lk-1 doIf p.item1=q.item1, p.item2=q.item2, …,p.itemk-2=q.itemk-2, p.itemk-1<q.itemk-1thenbegin c=p∞qif has_infrequent_subset(c, Lk-1)then delete celse add c to CkEndReturn Ck3、has_infrequent_subset(c, Lk-1)功能:判断候选集的元素输入:一个k-频繁项目集Lk-1 ,(k-1)-频繁项目集Lk-1输出:c是否从候选集中删除的布尔判断For all (k-1)-subsets of c doIf Not(S∈Lk-1) THEN return TRUE;Return FALSE;4、Rule-generate(L,minconf)输入:频繁项目集;最小信任度输出:强关联规则算法:FOR each frequent itemset lk in Lgenerules(lk,lk);5、Genrules递归算法:Genrules(lk:frequent k-itemset, xm:frequent m-itemset)X={(m-1)-itemsets xm-1 | xm-1 in xm};For each xm-1 in XBEGIN conf=support(lk)/support(xm-1);IF (conf≧minconf) THENBEGIN输出规则:xm-1->(lk-xm-1),support,confidence;IF (m-1)>1) THEN genrules(lk,xm-1);END;END;结合相关样例数据对算法进行调试,并根据相关实验结果对数据进行分析,四、实验报告要求1、用C语言或者其他语言实现上述相关算法。

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

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

《数据挖掘与数据仓库》实验指导书2013年计算机学院计算应用实验1 Apriori算法实现一、实验目的1、掌握Apriori算法对于关联规则挖掘中频繁集的产生以及关联规则集合的产生过程;2、根据算法描述编程实现算法,调试运行。

并结合相关实验数据进行应用,得到分析结果。

数据和删除数据的操作。

实验类型:综合计划课间:2学时二、实验内容1、频繁项集的生成与Apriori算法实现;2、关联规则的生成过程与Rule-generate算法实现;3、结合样例对算法进行分析;三、实验步骤编写程序完成下列算法:1、Apriori算法输入:数据集D;最小支持数minsup_count;输出:频繁项目集LL1={large 1-itemsets}For (k=2; Lk-1≠Φ; k++)Ck=apriori-gen (Lk-1); // Ck是k个元素的候选集For all transactions t∈D dobegin 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 itemset p∈Lk-1 doFor all itemset q∈Lk-1 doIf p.item1=q.item1, p.item2=q.item2, …,p.itemk-2=q.itemk-2, p.itemk-1<q.itemk-1 thenbegin c=p∞qif has_infrequent_subset(c, Lk-1)then delete celse add c to CkEndReturn Ck3、has_infrequent_subset(c, Lk-1)功能:判断候选集的元素输入:一个k-频繁项目集Lk-1 ,(k-1)-频繁项目集Lk-1输出:c是否从候选集中删除的布尔判断For all (k-1)-subsets of c doIf Not(S∈Lk-1) THEN return TRUE;Return FALSE;4、Rule-generate(L,minconf)输入:频繁项目集;最小信任度输出:强关联规则算法:FOR each frequent itemset lk in Lgenerules(lk,lk);5、Genrules递归算法:Genrules(lk:frequent k-itemset, xm:frequent m-itemset)X={(m-1)-itemsets xm-1 | xm-1 in xm};For each xm-1 in XBEGIN conf=support(lk)/support(xm-1);IF (conf≧minconf) THENBEGIN输出规则:xm-1->(lk-xm-1),support,confidence;IF (m-1)>1) THEN genrules(lk,xm-1);END;END;结合相关样例数据对算法进行调试,并根据相关实验结果对数据进行分析,四、实验报告要求1、用C语言或者其他语言实现上述相关算法。

数据挖掘技术与应用实验报告

数据挖掘技术与应用实验报告

数据挖掘技术与应用 实 验 报 告专业:_______________________班级:_______________________学号:_______________________姓名:_______________________2012-2013学年 第二学期经济与管理学院实验名称:SPSS Clementine 软件安装、功能演练指导教师: 实验日期: 成绩:实验目的1、熟悉SPSS Clementine 软件安装、功能和操作特点。

2、了解SPSS Clementine 软件的各选项面板和操作方法。

3、熟练掌握SPSS Clementine 工作流程。

实验内容1、打开SPSS Clementine 软件,逐一操作各选项,熟悉软件功能。

2、打开一有数据库、或新建数据文件,读入SPSS Clementine,并使用各种输出节点,熟悉数据输入输出。

(要求:至少做access数据库文件、excel文件、txt文件、可变文件的导入、导出)实验步骤一 实验前准备:1.下载SPSS Clementine 软件安装包和一个虚拟光驱。

2.选择任意盘区安装虚拟光驱,并把下载的安装包的文件(后缀名bin)添加到虚拟光驱上,然后双击运行。

3.运行安装完成后,把虚拟光驱中CYGiSO文件中的lservrc文件和PlatformSPSSLic7.dll文件复制替换到安装完成后的bin文件中,完成破解,获得永久免费使用权。

4.运行中文破解程序,对SPSS Clementine 软件进行汉化。

二 实验操作:从 Windows 的“开始”菜单中选择:所有程序/SPSS 1、启动 Clementine:Clementine 12.0/SPSS Clementine client 12.02、Clementine窗口当第一次启动 Clementine 时,工作区将以默认视图打开。

中中,这将是用来工作的主要区域。

间的区域称作流工作区。

数据挖掘实验报告-数据预处理

数据挖掘实验报告-数据预处理

数据挖掘实验报告-数据预处理数据挖掘实验报告数据预处理一、实验目的本次实验的主要目的是深入了解和掌握数据预处理在数据挖掘过程中的重要性及相关技术,通过对实际数据集的处理,提高数据质量,为后续的数据挖掘和分析工作奠定良好的基础。

二、实验背景在当今数字化时代,数据的规模和复杂性不断增加,而原始数据往往存在着各种问题,如缺失值、噪声、异常值、不一致性等。

这些问题如果不加以处理,将会严重影响数据挖掘算法的性能和结果的准确性。

因此,数据预处理成为了数据挖掘过程中不可或缺的重要环节。

三、实验数据集本次实验使用了一个名为“销售数据”的数据集,该数据集包含了某公司在过去一年中不同产品的销售记录,包括产品名称、销售日期、销售数量、销售价格、客户信息等字段。

四、数据预处理技术(一)数据清洗1、处理缺失值首先,对数据集中的缺失值进行了识别和分析。

通过观察发现,“客户信息”字段存在部分缺失。

对于这些缺失值,采用了两种处理方法:一是如果缺失比例较小(小于5%),直接删除含有缺失值的记录;二是如果缺失比例较大,采用均值填充的方法进行补充。

2、处理噪声数据数据中的噪声通常表现为数据中的错误或异常值。

通过对销售数量和销售价格的观察,发现了一些明显不合理的数值,如销售数量为负数或销售价格过高或过低的情况。

对于这些噪声数据,采用了基于统计的方法进行识别和处理,将超出合理范围的数据视为噪声并进行删除。

(二)数据集成由于原始数据集可能来自多个数据源,存在着重复和不一致的问题。

在本次实验中,对“销售数据”进行了集成处理,通过对关键字段(如产品名称、销售日期)的比较和合并,消除了重复的记录,并确保了数据的一致性。

(三)数据变换1、数据标准化为了消除不同字段之间量纲的影响,对销售数量和销售价格进行了标准化处理,使其具有可比性。

2、数据离散化对于连续型的数据字段,如销售价格,采用了等宽离散化的方法将其转换为离散型数据,以便于后续的数据挖掘算法处理。

数据挖掘试验指导书

数据挖掘试验指导书

《商务数据分析》实验指导书(适用于国际经济与贸易专业)江西财经大学国际经贸学院编写人:戴爱明目录前言 (1)实验一、SPSS Clementine 软件功能演练 (5)实验二、SPSS Clementine 数据可视化 (9)实验三、决策树C5.0 建模 (17)实验四、关联规则挖掘 (28)实验五、聚类分析(异常值检测) (35)前言一、课程简介商务数据分析充分利用数据挖掘技术从大量商务数据中获取有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程。

数据挖掘的广义观点:数据挖掘就是从存放在数据库,数据仓库或其他信息库中的大量的数据中“挖掘”有趣知识的过程。

数据挖掘,又称为数据库中知识发现(Knowledge Discovery in Database, KDD),因此,数据挖掘和数据仓库的协同工作,一方面,可以迎合和简化数据挖掘过程中的重要步骤,提高数据挖掘的效率和能力,确保数据挖掘中数据来源的广泛性和完整性。

另一方面,数据挖掘技术已经成为数据仓库应用中极为重要和相对独立的方面和工具。

数据挖掘有机结合了来自多学科技术,其中包括:数据库、数理统计、机器学习、高性能计算、模式识别、神经网络、数据可视化、信息检索、图像与信号处理、空间数据分析等,这里我们强调商务数据分析所处理的是大规模数据,且其算法应是高效的和可扩展的。

通过数据分析,可从数据库中挖掘出有意义的知识、规律,或更高层次的信息,并可以从多个角度对其进行浏览察看。

所挖掘出的知识可以帮助进行商务决策支持。

当前商务数据分析应用主要集中在电信、零售、农业、网络日志、银行等方面。

二、课程的任务和实验的教学目标课程编号:课程属性:专业任选课实验学时:8适用专业:国际经济与贸易先修课程:数据库技术、概率论与数理统计、统计学《商务数据分析》是一门理论和实践相结合的课程,其上机实验的目的主要是实现数据挖掘的主要算法,训练学生实际动手进行数据挖掘设计和软件应用的能力,加深对数据挖掘相关概念和算法的理解。

数据挖掘实验报告

数据挖掘实验报告

机器学习与数据挖掘实验报告一、第一部分: 实验综述二、实验工具介绍三、WEKA是新西兰怀卡托大学开发的开源项目, 全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis)。

WEKA是由JAVA编写的, 它的源代码可通过/ml/weka/得到, 是一款免费的, 非商业化的机器学习以及数据挖掘软件。

WEKA作为一个公开的数据挖掘工作平台, 集合了大量能承担数据挖掘任务的学习算法, 包括对数据进行预处理, 分类, 回归, 聚类, 关联规则以及在新的交互式界面上的可视化。

数据挖掘就是通过分析存在于数据库里的数据来解决问题, WEKA的出现使得数据挖掘无需编程即可轻松搞定。

四、实验环境搭建在PC机上面安装java运行环境即JDK环境, 然后安装WEKA。

三、实验目的(1)探索数据集大小与C4.5模型的精度之间的关系。

(2)探索属性的个数对数据集大小与C4.5模型精度之间关系的影响。

四、实验理论依据测试分类模型精度的方法依据如下表所示。

Accuracy=(a+d)/(a+b+c+d)五、实验思路(1)为探索数据集大小与C4.5模型精度之间的关系, 采用实例数据集的训练集进行测试。

对数据集进行多次筛选采样, 通过移除不同百分比的数据实例形成大小的训练集(wake设置为Filter.filters.unsupervised.instance.RemovePercentage), 在分类测试中采用use training set 方法进行测试, 并记录测试模型的精度, 在实验过程中不改变属性值得个数。

换用不同的数据集, 重复该实验过程, 并记录实验结果, 最后进行实验分析总结得出实验结论。

(2)为探索属性的个数对数据集大小与C4.5模型精度之间关系的影响, 使用一个数据集, 采用一个带筛选器的分类器。

对该数据集的属性进行随机抽样筛选, 并对处理后的训练集进行测试, 采用Cross-validation方法, 并记录测试结果。

数据挖掘实验指导书

数据挖掘实验指导书

《商务数据分析》实验指导书(适用于国际经济与贸易专业)江西财经大学国际经贸学院编写人:戴爱明目录前言 (1)实验一、SPSS Clementine 软件功能演练 (5)实验二、SPSS Clementine 数据可视化 (9)实验三、决策树C5.0 建模 (17)实验四、关联规则挖掘 (30)实验五、聚类分析(异常值检测) (38)前言一、课程简介商务数据分析充分利用数据挖掘技术从大量商务数据中获取有效的、新颖的、潜在有用的、最终可理解的模式的非平凡过程。

数据挖掘的广义观点:数据挖掘就是从存放在数据库,数据仓库或其他信息库中的大量的数据中“挖掘”有趣知识的过程。

数据挖掘,又称为数据库中知识发现(Knowledge Discovery in Database, KDD),因此,数据挖掘和数据仓库的协同工作,一方面,可以迎合和简化数据挖掘过程中的重要步骤,提高数据挖掘的效率和能力,确保数据挖掘中数据来源的广泛性和完整性。

另一方面,数据挖掘技术已经成为数据仓库应用中极为重要和相对独立的方面和工具。

数据挖掘有机结合了来自多学科技术,其中包括:数据库、数理统计、机器学习、高性能计算、模式识别、神经网络、数据可视化、信息检索、图像与信号处理、空间数据分析等,这里我们强调商务数据分析所处理的是大规模数据,且其算法应是高效的和可扩展的。

通过数据分析,可从数据库中挖掘出有意义的知识、规律,或更高层次的信息,并可以从多个角度对其进行浏览察看。

所挖掘出的知识可以帮助进行商务决策支持。

当前商务数据分析应用主要集中在电信、零售、农业、网络日志、银行等方面。

二、课程的任务和实验的教学目标课程编号:课程属性:专业任选课实验学时:8适用专业:国际经济与贸易先修课程:数据库技术、概率论与数理统计、统计学《商务数据分析》是一门理论和实践相结合的课程,其上机实验的目的主要是实现数据挖掘的主要算法,训练学生实际动手进行数据挖掘设计和软件应用的能力,加深对数据挖掘相关概念和算法的理解。

数据挖掘实例实验报告(3篇)

数据挖掘实例实验报告(3篇)

第1篇一、实验背景随着大数据时代的到来,数据挖掘技术逐渐成为各个行业的重要工具。

数据挖掘是指从大量数据中提取有价值的信息和知识的过程。

本实验旨在通过数据挖掘技术,对某个具体领域的数据进行挖掘,分析数据中的规律和趋势,为相关决策提供支持。

二、实验目标1. 熟悉数据挖掘的基本流程,包括数据预处理、特征选择、模型选择、模型训练和模型评估等步骤。

2. 掌握常用的数据挖掘算法,如决策树、支持向量机、聚类、关联规则等。

3. 应用数据挖掘技术解决实际问题,提高数据分析和处理能力。

4. 实验结束后,提交一份完整的实验报告,包括实验过程、结果分析及总结。

三、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 数据挖掘库:pandas、numpy、scikit-learn、matplotlib四、实验数据本实验选取了某电商平台用户购买行为数据作为实验数据。

数据包括用户ID、商品ID、购买时间、价格、商品类别、用户年龄、性别、职业等。

五、实验步骤1. 数据预处理(1)数据清洗:剔除缺失值、异常值等无效数据。

(2)数据转换:将分类变量转换为数值变量,如年龄、性别等。

(3)数据归一化:将不同特征的范围统一到相同的尺度,便于模型训练。

2. 特征选择(1)相关性分析:计算特征之间的相关系数,剔除冗余特征。

(2)信息增益:根据特征的信息增益选择特征。

3. 模型选择(1)决策树:采用CART决策树算法。

(2)支持向量机:采用线性核函数。

(3)聚类:采用K-Means算法。

(4)关联规则:采用Apriori算法。

4. 模型训练使用训练集对各个模型进行训练。

5. 模型评估使用测试集对各个模型进行评估,比较不同模型的性能。

六、实验结果与分析1. 数据预处理经过数据清洗,剔除缺失值和异常值后,剩余数据量为10000条。

2. 特征选择通过相关性分析和信息增益,选取以下特征:用户ID、商品ID、购买时间、价格、商品类别、用户年龄、性别、职业。

《数据挖掘技术与应用》实验指导书(排)

《数据挖掘技术与应用》实验指导书(排)

《数据挖掘技术与应用》实验指导书邓克文编重庆大学经济与工商管理学院2014年7月目录第一章数据挖掘及工具简介 (1)1.1数据挖掘的基本概念 (1)1.2数据挖掘的基本框架及流程 (1)1.3数据挖掘软件工具 (1)第二章基础实验篇 (2)2.1实验一分类 (2)2.2实验二预测 (21)2.3实验三聚类 (33)2.4实验四关联分析 (45)2.5实验五RFM模型 (51)2.6基于遗传算法的变量选择 (66)参考文献 (77)附录 (78)第一章数据挖掘及工具简介1.1数据挖掘的基本概念1.2数据挖掘的基本框架及流程1.3 数据挖掘软件工具第二章基础实验篇2.1 实验一分类一、实验目的通过本次实验,学会使Clememtine软件及R软件进行数据挖掘的分类实验,撑握以下知识点:(1) Logistic分类模型;(2) 决策树C5.0分类模型及其Cost矩阵设置的重要作用;(3) 贝叶斯网络分类模型;(5) 支持向量机模型;(6) 神经网络模型;(7) 运用R软件进行连续函数离散化数据预处理,并对该数据用上述3个模型进行挖掘,最后与连续性原始数据的挖掘结果进行对比,并得出相关结论;(8) 运用Clememtine软件解决数据预处理中的缺失值填充问题。

二、实验安排1.学时:本实验安排8个学时,主要用于完成实验及实验报告。

2.时间:由实验室统一安排3.地点:由实验室统一安排三、实验工具PC电脑1台,Windows 7系统,Clememtine 12.0 数据挖掘软件,R软件,以及上市公司ST数据集和Clememtine自带的telco.sav数据集。

四、知识准备五、实验背景六、实验过程实验1:基础模型1.按顺序拖动并设置以下节点。

(1)设置数据来源(source中的excel来源)。

(2)将320.xls指向table,运行table。

结果如下。

点击此处选择数据源。

Table节点运行后,我们可以看到数据源的具体内容,其包含320个上市公司的财务指标以及在该财务指标下第二年是否被ST的数据,ST=1表示次年被ST,ST=0则表示未被ST,其中X1至X18表示净利润率、资产收益率等18边续性的财务变量,最后一个变量为Flag类型ST变量。

数据挖掘6个实验实验报告

数据挖掘6个实验实验报告

中南民族大学计算机科学学院《数据挖掘与知识发现》综合实验报告姓名年级专业软件工程指导教师学号序号实验类型综合型2016年12 月10 日一、使用Weka建立决策树模型1、准备数据:在记事本程序中编制ColdType-training.arff,ColdType-test.arff。

2、加载和预处理数据。

3、建立分类模型。

(选择C4.5决策树算法)4、分类未知实例二、使用Weka进行聚类1、准备数据:使用ColdType.csv文件作为数据集。

2、加载和预处理数据。

3、聚类(用简单K -均值算法)4、解释和评估聚类结果三、完成感冒类型的相关操作及相应处理结果1.加载了ColdType-training.arff文件后的Weka Explorer界面:2.感冒类型诊断分类模型输出结果:Sore-throat = Yes| Cooling-effect = Good: Viral (2.0)4.感冒类型诊断聚类结果:Cluster centroids:Cluster#Attribute Full Data 0 1(10) (5) (5) ================================================= Increased-lym Yes Yes No Leukocytosis Yes No Yes Fever Yes Yes Yes Acute-onset Yes Yes No Sore-throat Yes No Yes Cooling-effect Good Good Notgood Group Yes Yes NoTime taken to build model (full training data) : 0 seconds=== Model and evaluation on training set ===Clustered Instances0 5 ( 50%)1 5 ( 50%)Class attribute: Cold-typeClasses to Clusters:0 1 <-- assigned to cluster5 1 | Viral0 4 | BacterialCluster 0 <-- ViralCluster 1 <-- BacterialIncorrectly clustered instances : 1.010 %分析:由诊断聚类结果图可知,聚类中有两个簇Cluster0和Cluster1,分别对应Viral类和Bacterial类,但有一个实例被聚类到错误的簇,聚类错误率为10%。

《数据仓库与数据挖掘》实验指导书

《数据仓库与数据挖掘》实验指导书

五邑大学实验指导书数据仓库与数据挖掘V1.0执笔:何国辉 开课系部:计算机学院二零一三年十月实验一 数据仓库的建立一、实验目的:通过本实验加深在SQL Server 2008环境下建立数据仓库,并对数据仓库进行管理的方法。

二、实验内容:使用SQL Server 2008中的Analysis Server工具建立数据仓库和数据源,能察看和编辑数据仓库中的基本模型(即事实表与维度表之间的关系)。

 三、实验要求:结合SQL Server 2008提供的示例数据库AdventureWorks建立数据仓库数据源,并能通过相关设置察看和编辑数据仓库中的基本模型,为数据挖掘做好准备。

四、实验学时:4学时 五、实验步骤:1.创建Analysis Service 项目步骤如下:开始-程序-Microsoft SQL Server 2008 R2-SQL Server Business Intelligence Development Studio,如图1所示,进入新建一个Business Intelligence Solution界面,如图2所示,为工程命名并保存。

【说明一】:即使你安装了vs2010 sp1,也不会有现成的Analysis Services项目模板(在线模板也没有)。

因此,还得在vs2008环境下新建BI项目。

图1 进入BI界面 2、创建数据源在解决方案资源管理器中的“数据源”中,右击“新建数据源”,创建数据源界面如图3所示,进入数据源向导。

图3 数据源向导界面图2 新建工程界面 点击“Next”按钮,在图4界面中设置连接数据库参数,包括对应的服务器名、数据库名、登录帐号和密码。

图4 设置连接数据库参数界面通过点击“Test Connection”可以测试连接情况。

当确认连接无误后点击“OK”按钮,进入图5。

图5 数据源向导界面点击“Next”按钮,进入设置Analysis Server连接数据源方式界面,如图6所示。

数据挖掘技术实验指导书

数据挖掘技术实验指导书

实验指导书数据挖掘技术适用专业:信息与计算科学及相关专业计算机与信息学院编2011年5月实验一一、实验名称WEKA的使用与数据准备二、实验目的熟悉数据挖掘的常用软件WEKA的安装和环境,理解weka的数据格式,掌握数据格式的转换,理解数据预处理的必要性和基本方法。

三、实验平台计算机、软件WEKA、UtraEdit四、实验数据bank-data.csv(在教材配套光盘的\CompanionCD\Datafiles\Chapter_7_AR 目录下)weather.arff(WEKA安装目录的“data”子目录)五、实验方法和步骤1、实验准备(1)访问WEKA网站/ml/weka,下载带JAVA虚拟机版本的WEKA,保存在U盘中。

(2)阅读课本第8章5.11-8.14小结的内容。

(3)将实验所需数据bank-data.csv 从光盘拷贝只U盘中。

2、了解weka的环境(1)安装weka,了解weka的环境(2)打WEKA自带的“weather.arff”文件,了解arff文件的格式3、数据准备(1)将原来的“bank-data.csv”文件转化为arff文件“bank-data.arff”。

(2)把“ID”属性去掉。

(3)把“Children”属性转换成数值型的值{0,1,2,3}。

(4)使用“Discretize”的Filter把“age”和“income”的离散化,另存文件为bank_data_final.arff六、实验指导1. 简介WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过/ml/weka得到。

同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。

WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。

数据挖掘实验指导2

数据挖掘实验指导2

实验3:微软决策树-挖掘模型建立及应用1.实验目的1) 学习使用Microsoft决策树创建 OLAP 数据挖掘模型。

2) 深入理解决策树分类的数据挖掘意义。

2.实验软硬件环境1)安装SQL Server 2000 Analysis Services的计算机系统。

2)Analysis Services中已经安装了FoodMart演示数据。

3.实验说明数据挖掘对查找和描述特定多维数据集中的隐藏模式非常有用。

随着多维数据集中的数据迅速增长,手动查找信息变得非常困难。

数据挖掘提供的算法允许自动模式查找及交互式分析。

为了重新定义会员卡方案,市场部想分析当前销售事务并找出客户人口统计信息(婚姻状况、年收入、在家子女数等等)和所申请卡之间的模式。

然后根据这些信息和申请会员卡的客户的特征重新定义会员卡。

本节将创建一个数据挖掘模型以训练销售数据,并使用“Microsoft 决策树”算法在客户群中找出会员卡选择模式。

请将要挖掘的维度(事例维度)设置为客户,再将Member_Card 成员的属性设置为数据挖掘算法识别模式时要使用的信息。

然后选择人口统计特征列表,算法将从中确定模式:婚姻状况、年收入、在家子女数和教育程度。

下一步需要训练模型,以便能够浏览树视图并从中读取模式。

市场部将根据这些模式设计新的会员卡,使其适应申请各类会员卡的客户类型。

4.实验内容和步骤4.1 建立决策树1).在 Analysis Manager 树视图中,展开“多维数据集”文件夹,右击“Sales”多维数据集,然后选择“新建挖掘模型”命令。

2).打开挖掘模型向导。

在“选择数据挖掘技术”步骤中的“技术”框中选择“Microsoft 决策树”。

单击“下一步”按钮。

3).在“选择事例”步骤中,在“维度”框中选择“Customer”。

在“级别”框中,确保选择了“Name”。

单击“下一步”按钮。

4).在“选择被预测实体”步骤中,选择“事例级别的成员属性”。

算法设计与分析实验指导书(080200050)

算法设计与分析实验指导书(080200050)

算法设计与分析实验指导书东北大学软件学院2014年目录算法设计与分析 (1)实验指导书 (1)前言 (3)实验要求 (4)实验1 分治法的应用(2学时) (5)1.实验目的 (5)2.实验类型 (5)3.预习要求 (5)4.实验基本要求 (5)5.实验基本步骤 (7)实验2动态规划(2学时) (9)1.实验目的 (9)2.实验类型 (9)3.预习要求 (9)4.实验基本要求 (9)5.实验基本步骤 (10)实验3 回溯法(4学时) (12)1.实验目的 (12)2.实验类型 (12)3.预习要求 (12)4.实验基本要求 (12)5.实验基本步骤 (13)前言《算法设计与分析》是一门面向设计,处于计算机科学与技术学科核心地位的教育课程。

通过对计算机算法系统的学习,使学生理解和掌握计算机算法的通用设计方法,培养对算法的计算复杂性正确分析的能力,为独立设计算法和对算法进行复杂性分析奠定基础。

要求掌握算法复杂度分析、分治法、动态规划法、贪心法、回溯法、分支限界法等算法的设计方法及其分析方法。

能将这些方法灵活的应用到相应的问题中,并且能够用C++实现所涉及的算法,并尽量做到低复杂度,高效率。

通过本课程的实验,使学生加深对课程内容的理解,培养学生严密的思维能力,运用所学知识结合具体问题设计适用的算法的能力;培养学生良好的设计风格,激励学生创造新算法和改进旧算法的愿望和热情。

希望同学们能够充分利用实验条件,认真完成实验,从实验中得到应有的锻炼和培养。

希望同学们在使用本实验指导书及进行实验的过程中,能够帮助我们不断地发现问题,并提出建议,使《算法设计与分析》课程成为对大家有益的课程。

实验要求《算法设计与分析》课程实验的目的是为了使学生在课堂学习的同时,通过一系列的实验,使学生加深理解和更好地掌握《算法设计与分析》课程教学大纲要求的内容。

在《算法设计与分析》的课程实验过程中,要求学生做到:(1)仔细观察调试程序过程中出现的各种问题,记录主要问题,做出必要说明和分析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据挖掘与数据仓库》实验指导书2013年计算机学院计算应用实验1 Apriori算法实现一、实验目的1、掌握Apriori算法对于关联规则挖掘中频繁集的产生以及关联规则集合的产生过程;2、根据算法描述编程实现算法,调试运行。

并结合相关实验数据进行应用,得到分析结果。

数据和删除数据的操作。

实验类型:综合计划课间:2学时二、实验内容1、频繁项集的生成与Apriori算法实现;2、关联规则的生成过程与Rule-generate算法实现;3、结合样例对算法进行分析;三、实验步骤编写程序完成下列算法:1、Apriori算法输入:数据集D;最小支持数minsup_count;输出:频繁项目集LL1={large 1-itemsets}For (k=2; Lk-1≠Φ; k++)Ck=apriori-gen (Lk-1); // Ck是k个元素的候选集For all transactions t∈D dobegin 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 itemset p∈Lk-1 doFor all itemset q∈Lk-1 doIf p.item1=q.item1, p.item2=q.item2, …,p.itemk-2=q.itemk-2, p.itemk-1<q.itemk-1 thenbegin c=p∞qif has_infrequent_subset(c, Lk-1)then delete celse add c to CkEndReturn Ck3、has_infrequent_subset(c, Lk-1)功能:判断候选集的元素输入:一个k-频繁项目集Lk-1 ,(k-1)-频繁项目集Lk-1输出:c是否从候选集中删除的布尔判断For all (k-1)-subsets of c doIf Not(S∈Lk-1) THEN return TRUE;Return FALSE;4、Rule-generate(L,minconf)输入:频繁项目集;最小信任度输出:强关联规则算法:FOR each frequent itemset lk in Lgenerules(lk,lk);5、Genrules递归算法:Genrules(lk:frequent k-itemset, xm:frequent m-itemset)X={(m-1)-itemsets xm-1 | xm-1 in xm};For each xm-1 in XBEGIN conf=support(lk)/support(xm-1);IF (conf≧minconf) THENBEGIN输出规则:xm-1->(lk-xm-1),support,confidence;IF (m-1)>1) THEN genrules(lk,xm-1);END;END;结合相关样例数据对算法进行调试,并根据相关实验结果对数据进行分析,四、实验报告要求1、用C语言或者其他语言实现上述相关算法。

2、实验操作步骤和实验结果,实验中出现的问题和解决方法。

五、注意事项1、集合的表示及相关操作的实现;2、项目集的数据结构描述;参考核心代码如下:(相关的测试main函数可以自己书写。

根据频繁k项集生成关联规则相对简单,只需要计算最小置信度即可从频繁K项集中找到所有的满足条件的关联规则。

)//对事物进行第一次扫描,生成频繁一项集,并返回一项集中个数int init_pass(char *item,char tran[len_t][len],int len,charres_item[len_t][len],float min_sup){float t_sup;int number=0;for(int i=0;i<len;i++){int count=0;for(int j=0;j<len_t;j++){for(int k=0;k<len;k++)if(item[i]==tran[j][k]){count++;break;}break;}t_sup=count*1.0/len;if(t_sup>=min_sup)res_item[number++][0]=item[i];}return number-1;}//生成候选K项集,返回k项集中事物的个数int candidate_gen(char ktran[len][k],char kktran[len][k+1]) {char temp[k],temp1[k],ktemp[k+1];int number=0;for(int i=0;i<len;i++){strcpy(temp,ktran[i]);bool flag;for(j=i+1;j<len;j++){strcpy(temp1,ktran[i]);for(int m=0;m<k;m++){if((m<k-1 && temp[m]==temp1[m])||m==k-1){continue;flag=true;}else {flag=false;break;}}if(flag){if(temp[k-1]>temp1[k-1]){strcpy(ktemp,temp1);ktemp[k]=temp[k-1];}else{strcpy(ktemp,temp);ktemp[k]=temp1[k-1]}break;}}flag=judge(kemp,ktran[len][k]);if(flag==true)strcpy(kktran[number++],ktemp);}return number-1;}//判断子集是否在k项集中bool judge(char *srcstr,char desstr[len][k]) {char temp[k];int count=0;for(int i=0;i<k-1;i++){for(int j=0;j<i;j++)temp[j]=srcstr[j];for(int j=i+1;j<k+1;j++)temp[j]=srcstr[j];for(int p=0;p<len;p++)if(strcmp(temp,desstr[i])==0){count++;break;}}if(count==k-1)return true;return false;}//apriori算法int apriori(char item[len],char tran[length][len],char res_tran[length][len],float min_sup){char ttran[length][len];int number,count,t_num;for(int i=0;i<length;i++)for(int j=0;j<len;j++)ttran[i][j]='0';number=init_pass(item,tran[length][len],len,ttran[length][len],min_sup);for(int i=0i<length;i++)res_tran[i][0]=ttran[i][0];for(int k=2;number!=0;k++){t_num=number;number=candidate_gen(res_item[number][k-1],ttran[number][k]);if(k==2)continue;else{count=0;for(int i=0;i<number;i++){char temp[k];strcpy(temp,ttran[i]);bool t_flag=false;for(int j=0;j<length;j++){//求出候选K项集中每个事物的支持计数int t_k=0;for(int n=0;n<k;n++){bool m_flag=falsefor(int g=t_k;g<len;g++){if(temp[k]==tran[j][g]){m_flag=true;t_k=g;break;}}if(m_flag==true && n==k-1)t_flag=true;}if(t_flag==true)count++;flag = false;}if(count/length > min_sup)strcpy(res_item[i],temp);count=0;}}}return t_num; }实验2-1 ID3算法实现一、实验目的通过编程实现决策树算法,信息增益的计算、数据子集划分、决策树的构建过程。

加深对相关算法的理解过程。

实验类型:综合计划课间:4学时二、实验内容1、分析决策树算法的实现流程;2、分析信息增益的计算、数据子集划分、决策树的构建过程;3、根据算法描述编程实现算法,调试运行;三、实验方法算法描述:以代表训练样本的单个结点开始建树;若样本都在同一个类,则该结点成为树叶,并用该类标记;否则,算法使用信息增益作为启发信息,选择能够最好地将样本分类的属性;对测试属性的每个已知值,创建一个分支,并据此划分样本;算法使用同样的过程,递归形成每个划分上的样本决策树递归划分步骤,当下列条件之一成立时停止:给定结点的所有样本属于同一类;没有剩余属性可以进一步划分样本,在此情况下,采用多数表决进行四、实验步骤1、算法实现过程中需要使用的数据结构描述:Struct{int 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;分配内存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<Num_Attrib;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;For i=0;i<Num_Attrib-1;i++){TempGain=Compute_InforGain(Data,Record_No,I,Num_Attrib); If (InforGain<TempGain){ InforGain=TempGain; CurrentCol=I;}}N->Attrib_Col=CurrentCol;//记录CurrentCol所对应的不同值放入DiferentValue[];I=0;Value_No=-1;While i<Record_No {Flag=false;For (k=0;k<Value_No;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<Value_No;i++){k=-1;for (j=0;j<Record_No-1;j++)if (Data[j][CurrentCol]==DiferentValu[i]){k=k++;For(int i1=0;i1<Num_Attrib;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)Int DifferentValue[MaxDifferentValue];Int Total_DifferentValue;Int s[ClassNo][MaxDifferentValue];s=0;// 数组清0;Total_DifferentValue=-1;For (i=0;i<Record_No;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<ClassNo;i++){Sum=0;For(j=0;j<Record_No;j++) if Data[j][Num_Attrib-1]==i sum++; Total_I=Compute_PI(Sum/Record_No);}EA=0;For (i=0;i<Total_DifferentValue;i++);{ temp=0;sj=0; //sj是数据子集中属于类j的样本个数;For (j=0;j<ClassNO;j++)sj+=s[j][i];For (j=0;j<ClassNO;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<DataSize;i++) if (Data[i]=value) return I;Return -1;}3.5、计算Pi*LogPiFloat Compute_PI(float pi){If pi<=0 then return 0;If pi>=1 then return 0;Return 0-pi*log2(pi);}五、实验报告要求1、用C语言或者其他语言实现上述相关算法。

相关文档
最新文档