昆明理工大学天气决策树

上传人:枫** 文档编号:558487932 上传时间:2022-09-28 格式:DOCX 页数:12 大小:149.62KB
返回 下载 相关 举报
昆明理工大学天气决策树_第1页
第1页 / 共12页
昆明理工大学天气决策树_第2页
第2页 / 共12页
昆明理工大学天气决策树_第3页
第3页 / 共12页
昆明理工大学天气决策树_第4页
第4页 / 共12页
昆明理工大学天气决策树_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《昆明理工大学天气决策树》由会员分享,可在线阅读,更多相关《昆明理工大学天气决策树(12页珍藏版)》请在金锄头文库上搜索。

1、昆明理工大学信息工程与自动化学院学生实验报告(学年第1学期)课程名称:人工智能开课实验室:信自楼504年12月24日年级、专业、班学号姓名成绩实验项目名称天气决策树指导教师吴霖教师该同学是否了解实验原理:该同学的实验能力:A.了解口A.强口B.基本了解口C.不JC.差解口B.中等评该同学的实验是否达到要求:A.达到口B.基本达到口C.未达到口语实验报告是否规范:A.规范口B.基本规范口C.不规范口实验过程是否详细记录:A.详细口B.一般C.没有口教师签名:年月日、上机目的及内容上机内容根据下列给定的14个数据,运用InformationGain构造一个天气决策树。例子编号属性分类天况温度湿度风

2、况1晴执八、大无N2晴执八、大有N3多云执八、大无P4雨中大无P5雨冷正常无P6雨冷正常有N7多云冷正常有P8晴中大无N9晴冷正常无P10雨中正常无P11晴中正常有P12多云中大有P13多云执八、正常无P14雨中大有N1. 上机目的(1) 学习用InformationGain构造决策树的方法;(2) 在给定的例子上,构造出正确的决策树;(3) 理解并掌握构造决策树的技术要点。二、实验原理及基本技术路线图(方框原理图或程序流程图)(1) 设计并实现程序,构造出正确的决策树;(2) 对所设计的算法采用大0符号进行时间复杂性和空间复杂性分析;实验考虑到几个属性:天况一一晴、雨、多云;温度一一热、中、

3、冷;湿度一一大、正常;风况有、无;然后根据每个属性来算出信息增益,接下来我们根据信息增益最大的来进行划分。根据问题设计算法,建立数据结构,设计需要用的类,然后通过编程实现问题求解。了解和求解最大信息增益和最小熵选择平均熵最小的属性作为根节点,用同样的方法选择其他节点直至形成整个决策树。dataset就是具体的划分过程,首先找到可用的划分项目,再第一次划分之后再相关的数据来计算熵。i-flLin_sp】itAltribuTesi.di.H口d:i低肝弗mitUinikm_anaiutbhliwndL;rDatapiont函数流程图三、所用仪器、材料(设备名称、型号、规格等或使用软件)1台PC及V

4、ISUALC+软件四、实验方法、步骤(或:程序代码或操作过程)源代码:main函数:#inelude#inelude#include#inelude#inelude#inelude#include#include#includeDataPointproeessLine(std:stringconst&sLine)std:istringstreamisLine(sLine,std:istringstream:in);std:vectorattributes;while()std:stringrawfield;isLinerawfield;(AttributeValue(rawfield);Att

5、ributeValuev=();();booltype=();returnDataPoint(attributes,type);voidmain()std:ifstreamifs(,std:ifstream:in);DataSetinitDataset;while()std:stringsLine;std:getline(ifs,sLine);(processLine(sLine);std:listprocessQ;std:vectorfinishedDataSet;(initDataset);while()0)std:vectorsplittedDataSets;DataSetdataset

6、=();(splittedDataSets);();for(inti=0;i();+i)floatprob=splittedDataSetsi.getPositiveProb();if(prob=|prob=(splittedDataSetsi);else(splittedDataSetsi);std:coutThedicisiontreeis:std:endl;for(inti=0;i();+i)finishedDataSeti.display();DataSet函数:#include#include#include#includevoidSplitAttributeValue:displa

7、y()std:couttSplitattributeID(m_attributeIndex)t;std:coutSplitattributevalue()std:endl;voidDataSet:addDataPoint(DataPointconst&datapoint)(datapoint);floatDataSet:getPositiveProb()floatnPositive=0;for(inti=0;i();+i)if(m_datai.isPositive()nPositive+;returnnPositive/();structStatintnPos;intnNeg;intid;vo

8、idDataSet:splitDataSet(std:vector&splittedSets)etNAttributes();inti,j;std:vectorsplittingAttributeBV;(nAttributes);for(i=0;inAttributes;+i)splittingAttributeBVi=true;for(i=0;i();+i)splittingAttributeBVm_splitAttributesi.getAttributeIndex()=false;std:vectorsplittingAttributeIds;for(i=0;inAttributes;+

9、i)if(true=splittingAttributeBVi)typedefstd:mapAttributeValueStat;typedefstd:map:iteratorAttributeValueStat_iterator;typedefstd:map:const_iteratorAttributeValueStat_const_iterator;etAttribute(splittingAttributeIdsj);AttributeValueStat_iteratorit=splittingStatsj.find(v);if(splittingStatsj.end()=it)Sta

10、tstat;if(m_datai.isPositive()=1;=0;=0;else=0;=1;=0;splittingStatsj.insert(std:pair(v,stat);elseif(m_datai.isPositive()it-+;elseit-+;egin();it!=splittingStatsj.end();+it)std:coutt()tt+it-;floatp=it-;p/=nSamples;entropy+=calEntropy(p)*nSamples/n;if(entropyminEntropy|-1=splitAttributeId)minEntropy=entr

11、opy;splitAttributeId=j;std:coutSplitatattribute(splittingAttributeIdssplitAttributeId)std:endl=k+;(k);for(i=0;ik;+i)for(j=0;j.(SplitAttributeValue(itt-first,attrId);for(i=0;i.addDataPoint(m_datai);elsethrowDataErrException();voidDataSet:display()inti;std:coutDataset(this)std:endl;for(i=0;i();+i)m_splitAttributesi.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号