-1-昆明理工大学信息工程与自动化学院学生实验报告(201—201学年第1学期)课程名称:人工智能开课实验室:年月日年级、专业、班学号姓名成绩实验项目名称天气决策树指导教师教师评语该同学是否了解实验原理:A.了解□B.基本了解□C.不了解□该同学的实验能力:A.强□B.中等□C.差□该同学的实验是否达到要求:A.达到□B.基本达到□C.未达到□实验报告是否规范:A.规范□B.基本规范□C.不规范□实验过程是否详细记录:A.详细□B.一般□C.没有□教师签名:年月日一、上机目的及内容1.上机内容根据下列给定的14个数据,运用InformationGain构造一个天气决策树。例子编号属性分类天况温度湿度风况1晴热大无N2晴热大有N3多云热大无P4雨中大无P5雨冷正常无P6雨冷正常有N7多云冷正常有P8晴中大无N-2-9晴冷正常无P10雨中正常无P11晴中正常有P12多云中大有P13多云热正常无P14雨中大有N2.上机目的(1)学习用InformationGain构造决策树的方法;(2)在给定的例子上,构造出正确的决策树;(3)理解并掌握构造决策树的技术要点。二、实验原理及基本技术路线图(方框原理图或程序流程图)(1)设计并实现程序,构造出正确的决策树;(2)对所设计的算法采用大O符号进行时间复杂性和空间复杂性分析;程序流程图:开始结束std::ifstreamifs(“in.txt”,std::ifstream::in)ifs.good()std::stringslinestd::stingdatasetmutiplexProcessQ.size0mutiplexYNYN-3-三、所用仪器、材料(设备名称、型号、规格等或使用软件)1台PC及VISUALC++6.0软件四、实验方法、步骤(或:程序代码或操作过程)源程序见同一文件夹下工程jueceshu。以下为部分程序代码:DataPointprocessLine(std::stringconst&sLine){std::istringstreamisLine(sLine,std::istringstream::in);std::vectorAttributeValueattributes;while(isLine.good()){std::stringrawfield;isLinerawfield;attributes.push_back(AttributeValue(rawfield));}AttributeValuev=attributes.back();attributes.pop_back();booltype=v.GetType();returnDataPoint(attributes,type);}voidmain(){std::ifstreamifs(in.txt,std::ifstream::in);DataSetinitDataset;while(ifs.good()){//TODO:needtohandleemptylines.std::stringsLine;std::getline(ifs,sLine);initDataset.addDataPoint(processLine(sLine));}std::listDataSetprocessQ;std::vectorDataSetfinishedDataSet;processQ.push_back(initDataset);while(processQ.size()0){std::vectorDataSetsplittedDataSets;DataSetdataset=processQ.front();dataset.splitDataSet(splittedDataSets);-4-processQ.pop_front();for(inti=0;isplittedDataSets.size();++i){floatprob=splittedDataSets[i].getPositiveProb();if(prob==0.0||prob==1.0){finishedDataSet.push_back(splittedDataSets[i]);}else{processQ.push_back(splittedDataSets[i]);}}}五、实验过程原始记录(测试数据、图表、计算等)-5-六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸或程序运行结果、改进、收获)通过这次实验,我对人工智能的应用有了更进一步的认识。我了解了如何采用InformationGain构建天气决策树,知道了怎样构造决策树。人工智能是一门综合性十分强的学科,它包括了以前我们学过的知识,还有一些是我们以前没有学习过,甚至没有接触过的领域。