数据挖掘实验报告1

合集下载

数据挖掘实验报告(一)

数据挖掘实验报告(一)

数据挖掘实验报告(一)数据预处理姓名:李圣杰班级:计算机1304学号:1311610602一、实验目的1.学习均值平滑,中值平滑,边界值平滑的基本原理2.掌握链表的使用方法3.掌握文件读取的方法二、实验设备PC一台,dev-c++5.11三、实验内容数据平滑假定用于分析的数据包含属性age。

数据元组中age的值如下(按递增序):13, 15, 16, 16, 19, 20, 20, 21, 22, 22, 25, 25, 25, 25, 30, 33, 33, 35, 35, 35, 35, 36, 40, 45, 46, 52, 70。

使用你所熟悉的程序设计语言进行编程,实现如下功能(要求程序具有通用性):(a) 使用按箱平均值平滑法对以上数据进行平滑,箱的深度为3。

(b) 使用按箱中值平滑法对以上数据进行平滑,箱的深度为3。

(c) 使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3。

四、实验原理使用c语言,对数据文件进行读取,存入带头节点的指针链表中,同时计数,均值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边界较近的边界值五、实验步骤代码#include <stdio.h>#include <stdlib.h>#include <math.h>#define DEEP 3#define DATAFILE "data.txt" #define VPT 10//定义结构体typedef struct chain{int num;struct chain *next;}* data;//定义全局变量data head,p,q;FILE *fp;int num,sum,count=0;int i,j;int *box;void mean();void medain();void boundary();int main (){//定义头指针head=(data)malloc(sizeof(struc t chain));head->next=NULL;/*打开文件*/fp=fopen(DATAFILE,"r");if(!fp)exit(0);p=head;while(!feof(fp)){q=(data)malloc(sizeof(struct chain));q->next=NULL;fscanf(fp,"%d",&q->num); /*读一个数据*/p->next=q;p=q;count++;}/* 关闭文件 */fclose(fp);//输出printf("源数据为:\n");printf("共%d箱%d个数据\n",count/DEEP,count);p=head->next;count=1;num=1;while(p!=NULL){if(count==1)printf("箱%d:",num);if(count==DEEP){printf("%d\n",p->num);num++;count=1;}else{printf("%d ",p->num);count++;}p=p->next;}mean();medain();boundary();scanf("%d",&i);return 0;}//均值void mean(){printf("均值平滑后为:");box=(int*)malloc(sizeof(int)*num);p=head->next;count=1;num=0;sum=0;while(p!=NULL){if(count==DEEP){count=1;sum=sum+p->num;box[num]=sum/DEEP;sum=0;num++;}else{sum=sum+p->num;count++;}p=p->next;}for (i=0;i<num;i++){printf("\n箱%d:",i+1);for (j=0;j<DEEP;j++)printf("%d ",box[i]);}p=head->next;printf("\n离群值为:");while(p!=NULL){for(i=0;i<num;i++){for (j=0;j<DEEP;j++){if(abs(p->num-box[i])>(int)VPT ){printf("\n箱%d:",i+1);printf("%d ",p->num);}p=p->next;}}}}//中值void medain(){printf("\n中值平滑后为:");p=head->next;count=1;num=0;int mid;while(p!=NULL){if(count==DEEP){box[num]=sum;count=1;num++;}else {if(count==DEEP/2||count==DEEP/ 2+1)if(DEEP%2){if(count==DEEP/2+1)sum=p->num;}else{if(count==DEEP/2+1)sum=(p->num+mid)/2;elsemid=p->num;}count++;}p=p->next;}for (i=0;i<num;i++){printf("\n箱%d:",i+1);for (j=0;j<DEEP;j++)printf("%d ",box[i]);}}//边界值void boundary(){printf("\n边界值平滑后为:\n");p=head->next;count=1;box=(int *)malloc(sizeof(int)*num*2);num=0;while(p!=NULL){if(count==DEEP){box[2*num+1]=p->num;count=1;num++;}else{if(count==1) {box[2*num]=p->num;}count++;}p=p->next;}p=head->next;count=1;num=0;while(p!=NULL){if(count==1)printf("箱%d:",num);if((p->num-box[2*num])>(box[2* num+1]-p->num)){printf("%d",box[2*num+1]);}elseprintf("%d ",box[2*num]);if(count==DEEP){printf("\n");count=0;num++;}count++;p=p->next;}}实验数据文件:data.txt用空格分开13 15 16 16 19 20 20 21 22 22 25 25 25 25 30 33 33 35 35 35 35 36 40 45 46 52 70六、结果截图。

数据挖掘实验报告-实验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格式文件转换等等。

数据挖掘安全实验报告

数据挖掘安全实验报告

一、实验背景随着信息技术的飞速发展,数据挖掘技术在各个领域得到了广泛应用。

然而,数据挖掘过程中涉及的大量个人信息和敏感数据,使得数据挖掘的安全和隐私问题日益突出。

为了提高数据挖掘的安全性,本实验针对数据挖掘过程中的安全风险进行了深入研究,并提出了相应的解决方案。

二、实验目的1. 分析数据挖掘过程中的安全风险;2. 设计数据挖掘安全实验方案;3. 验证实验方案的有效性;4. 提出提高数据挖掘安全性的建议。

三、实验方法1. 文献调研:通过查阅相关文献,了解数据挖掘安全领域的最新研究成果,为实验提供理论基础;2. 实验设计:根据文献调研结果,设计数据挖掘安全实验方案,包括实验环境、实验数据、实验方法等;3. 实验实施:在实验环境中,按照实验方案进行数据挖掘实验,并记录实验数据;4. 数据分析:对实验数据进行分析,评估实验方案的有效性;5. 结果总结:根据实验结果,提出提高数据挖掘安全性的建议。

四、实验内容1. 数据挖掘安全风险分析(1)数据泄露:数据挖掘过程中,未经授权的访问、篡改或泄露个人信息和敏感数据;(2)数据篡改:攻击者通过篡改数据,影响数据挖掘结果的准确性;(3)隐私侵犯:数据挖掘过程中,收集、存储、处理个人隐私信息时,可能侵犯个人隐私;(4)数据质量:数据挖掘过程中,数据质量低下可能导致挖掘结果不准确。

2. 数据挖掘安全实验方案(1)实验环境:搭建一个数据挖掘实验平台,包括数据源、数据挖掘工具、安全防护设备等;(2)实验数据:选取具有代表性的数据集,包括个人隐私信息、敏感数据等;(3)实验方法:采用数据加密、访问控制、数据脱敏等技术,提高数据挖掘安全性。

3. 实验实施(1)数据加密:对实验数据进行加密处理,确保数据在传输和存储过程中的安全性;(2)访问控制:设置访问权限,限制未经授权的访问;(3)数据脱敏:对个人隐私信息进行脱敏处理,降低隐私泄露风险;(4)数据质量检查:对实验数据进行质量检查,确保数据挖掘结果的准确性。

《网络数据挖掘》实验一

《网络数据挖掘》实验一

《网络数据挖掘》实验一一、实验目的在SQL Server2005上构建数据仓库二、实验内容1.每个学生按自己的学号创建一个空的数据库。

2.将“浙江经济普查数据”目录下的11个城市的生产总值构成表导入该数据库。

要求表中列的名称为EXCEL表中抬头的名称,表的名称分别为对应的excel文件名。

往城市表中输入前面导入的11个城市名称和城市ID(注意不能重复),5.仔细阅读excel表格,分析产业结构的层次,找出产业、行业大类、行业中类的关系。

有些行业的指标值为几个子行业的累加。

比如:第一产业→农林牧渔业第二产业→工业→采矿业、制造业、电力、燃气及水的生产和供应业类ID可按顺序编写。

8.创建一个新表汇总11个城市的生产总值,表的名称为“按城市和行业分组的生产总值表”。

表中的列名和第二步导入表的列名相同,同时添加一个新列(放在第一列),列名为“城市ID”,数据类型为整型;再添加一个新列(放在第二列),列名为“行业中类ID”,数据类型为整型。

9.将11个城市的生产总值构成表导入到第6步创建的新表中,注意不同的城市,要用不同的城市ID代入,行业中类ID可暂时为空值。

10.将行业门类表中的行业中类ID值输入至表“按城市和行业分组的生产总值表”中的“行业中类ID”列上。

11.检查3个表:“按城市和行业分组的生产总值表”、“城市表”、“行业门类表”中主键和外键是否一致(可通过关联查询检查)。

12.删除“按城市和行业分组的生产总值表”中除了行业中类纪录以外的其他高层次的记录,如指标为“第一产业”的行等等(如果不删除,将在汇总中出错)。

13.删除“按城市和行业分组的生产总值表”中原有的“指标”列(由于这列在行业门类表中已存在,因此是冗余的)。

14. 建立以下查询,和原EXCEL文件中的数据对比a)查询杭州市第二产业工业大类下各行业中类的总产出、增加值、劳动者报酬、营业盈余b)分别查询11个城市的第二产业总产出汇总值c)分别查询11个城市的工业劳动者报酬汇总值d)分别查询11个城市的第三产业增加值14.使用SSIS创建一个包,来完成第9步和第10步的过程,执行包,检查数据是否一致。

数据挖掘-WEKA实验报告一

数据挖掘-WEKA实验报告一

数据挖掘-WEKA 实验报告一一、实验内容1、Weka 工具初步认识(掌握weka程序运行环境)2、实验数据预处理。

(掌握weka中数据预处理的使用)对weka自带测试用例数据集weather.nominal.arrf文件,进行一下操作。

1)、加载数据,熟悉各按钮的功能。

2)、熟悉各过滤器的功能,使用过滤器Remove、Add对数据集进行操作。

3)、使用weka.unsupervised.instance.RemoveWithValue 过滤器去除humidity属性值为high的全部实例。

4)、使用离散化技术对数据集glass.arrf中的属性RI和Ba 进行离散化(分别用等宽,等频进行离散化)。

(1)打开已经安装好的weka,界面如下,点击openfile即可打开weka自带测试用例数据集weather.nominal.arrf文件(2)打开文件之后界面如下:(3)可对数据进行选择,可以全选,不选,反选等,还可以链接数据库,对数据进行编辑,保存等。

还可以对所有的属性进行可视化。

如下图:(4)使用过滤器Remove、Add对数据集进行操作。

(5)点击此处可以增加属性。

如上图,增加了一个未命名的属性unnamed.再点击下方的remove按钮即可删除该属性.(5)使用weka.unsupervised.instance.RemoveWithValue过滤器去除humidity属性值为high的全部实例。

没有去掉之前:(6)去掉其中一个属性之后:(7)选择choose里的removewithvalue:(8)选择huminity属性:(9)使用离散化技术对数据集glass.arrf中的属性RI和Ba进行离散化(分别用等宽,等频进行离散化)。

RI等宽:(10)Ba等频:二、思考与分析.1.使用数据集编辑器打开weather.nominal.arrf文件,实例编号为2的分类属性值是多少?如图所示:实例编号为2的分类值属性为no加载weather.nomina.arrf文件后,temperature属性可以有哪些合法值?Temperature可以取值为:hot、mild、coolWord 资料。

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

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

第1篇一、实验概述本次数据挖掘实验以Apriori算法为核心,通过对GutenBerg和DBLP两个数据集进行关联规则挖掘,旨在探讨数据挖掘技术在知识发现中的应用。

实验过程中,我们遵循数据挖掘的一般流程,包括数据预处理、关联规则挖掘、结果分析和可视化等步骤。

二、实验结果分析1. 数据预处理在实验开始之前,我们对GutenBerg和DBLP数据集进行了预处理,包括数据清洗、数据集成和数据变换等。

通过对数据集的分析,我们发现了以下问题:(1)数据缺失:部分数据集存在缺失值,需要通过插补或删除缺失数据的方法进行处理。

(2)数据不一致:数据集中存在不同格式的数据,需要进行统一处理。

(3)数据噪声:数据集中存在一些异常值,需要通过滤波或聚类等方法进行处理。

2. 关联规则挖掘在数据预处理完成后,我们使用Apriori算法对数据集进行关联规则挖掘。

实验中,我们设置了不同的最小支持度和最小置信度阈值,以挖掘出不同粒度的关联规则。

以下是实验结果分析:(1)GutenBerg数据集在GutenBerg数据集中,我们以句子为篮子粒度,挖掘了林肯演讲集的关联规则。

通过分析挖掘结果,我们发现:- 单词“the”和“of”在句子中频繁出现,表明这两个词在林肯演讲中具有较高的出现频率。

- “and”和“to”等连接词也具有较高的出现频率,说明林肯演讲中句子结构较为复杂。

- 部分单词组合具有较高的置信度,如“war”和“soldier”,表明在林肯演讲中提到“war”时,很可能同时提到“soldier”。

(2)DBLP数据集在DBLP数据集中,我们以作者为单位,挖掘了作者之间的合作关系。

实验结果表明:- 部分作者之间存在较强的合作关系,如同一研究领域内的作者。

- 部分作者在多个研究领域均有合作关系,表明他们在不同领域具有一定的学术影响力。

3. 结果分析和可视化为了更好地展示实验结果,我们对挖掘出的关联规则进行了可视化处理。

通过可视化,我们可以直观地看出以下信息:(1)频繁项集的分布情况:通过柱状图展示频繁项集的分布情况,便于分析不同项集的出现频率。

数据挖掘实验报告

数据挖掘实验报告

数据挖掘实验报告数据挖掘是一门涉及发现、提取和分析大量数据的技术和过程,它可以揭示出隐藏在数据背后的模式、关系和趋势,对决策和预测具有重要的价值。

本文将介绍我在数据挖掘实验中的一些主要收获和心得体会。

实验一:数据预处理在数据挖掘的整个过程中,最重要的一环就是数据预处理。

数据预处理包括数据清洗、数据集成、数据转换和数据规约等步骤,目的是为了提高数据的质量和可用性。

首先,我对所使用的数据集进行了初步的观察和探索。

发现数据集中存在着一些缺失值和异常值。

为此,我使用了一些常见的缺失值处理方法,如均值替代、中值替代和删除等。

对于异常值,我采用了离群值检测和修正等方法,使得数据在后续的分析过程中更加真实可信。

其次,我进行了数据集成的工作。

数据集合并是为了整合多个来源的数据,从而得到更全面和综合的信息。

在这个过程中,我需要考虑数据的一致性和冗余情况。

通过采用数据压缩和去重等技术,我成功地完成了数据集成的工作。

接着,我进行了数据转换的处理。

数据转换是为了将原始的数据转换成适合数据挖掘算法处理的形式。

在这个实验中,我采用了数据标准化和归一化等方法,使得不同属性之间具备了可比性和可计算性,从而便于后续的分析过程。

最后,我进行了数据规约的操作。

数据规约的目的在于减少数据的维数和复杂度,以提高数据挖掘的效果。

在这个阶段,我采用了主成分分析和属性筛选等方法,通过压缩数据集的维度和减少冗余属性,成功地简化了数据结构,提高了挖掘效率。

实验二:关联规则挖掘关联规则挖掘是数据挖掘中常用的一种方法,它用于发现数据集中项集之间的关联关系。

在这个实验中,我使用了Apriori算法来进行关联规则的挖掘。

首先,我对数据进行了预处理,包括数据清洗和转换。

然后,我选择了适当的最小支持度和最小置信度阈值,通过对数据集的扫描和频繁项集生成,找出了数据集中的频繁项集。

接着,我使用了关联规则挖掘算法,从频繁项集中挖掘出了具有一定置信度的关联规则。

在实验过程中,我发现挖掘出的关联规则具有一定的实用性和可行性。

数据挖掘实习报告

数据挖掘实习报告

数据挖掘实习报告一段充实而忙碌的实习生活结束了,相信大家这段时间来的收获肯定不少吧,这时候最关键的一步就是写实习报告了。

你想好怎么写实习报告了吗?下面是店铺帮大家整理的数据挖掘实习报告,希望对大家有所帮助。

数据挖掘实习报告1一、实习目的认识实习是本科教学计划中非常重要的实践性教学环节,其目的是使学生了解和掌握电力生产知识、印证、巩固和丰富已学过的计算机专业课程内容,培养学生理论联系实际,提高其在生产实践中调查研究、观察问题、分析问题以及解决问题的能力和方法,为后续专业课程的学习打下基础。

通过认识实习,还应使学生了解现电力生产方式,培养热爱软件工程专业思想。

二、实习内容为了达到上述实习目的,实习主要内容应包括:1.参观浦东软件园2.上海市高新技术产业展3.四场高水平的技术讲座三、实习过程1.参观浦东软件园进入主体大楼后,上海浦东软件园和它的图标赫然放置在最显眼的门口处,我们跟随着老师的步伐,一路向内层走去。

在路上我们注意到了墙上贴出来的优秀学员的照片,以及关于软件园的人才和研制软件对于国家信息技术的贡献,可以称之为一条荣誉回廊。

迈过这条回廊,我们走到了一个广阔的教室,里面整整齐齐摆放了数十台计算机,看其规模,我猜想这应该是一个大型的计算机学习教室,供里面的学员进行专业方面的开发和探索。

之后我们便各自找好座位,等待浦东软件园的老师给我们做一下关于软件园的介绍并阐述对我们未来工作的需求。

我们坐好后,一场对未来的探索之旅马上就开始了,浦软的老师非常厚道的给我们观看了两场激动人心的宣传视频,详细的介绍了浦软的来由,发展和辉煌以及对整个软件业的展望。

首先,上海浦东软件园做为第一批国家软件产业基地和第一批国家软件出口基地是与北京中关村,大连和西安这四个软件园是齐名的,并且是全国第一家软件园区,这三个一,奠定了浦东软件园在全国软件开发中无论是人才量还是创作量都处于不可动摇的位置。

之后她给我们介绍了浦东软件园是由满庭芳的郭守敬园和浣溪沙的祖冲之园联合组成的。

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

实验一 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*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语言实现上述相关算法(可选择利用matlab函数实现)
2、实验操作步骤和实验结果,实验中出现的问题和解决方法。

六、注意事项
1、信息增益的计算;
2、选择相关字段后根据相关字段的取值对数据集合进行划分。

3、决策树构建的终止条件
Matlab相关函数见另一附件。

相关文档
最新文档