付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、WORD格式實(shí)用昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院學(xué)生實(shí)驗(yàn)報(bào)告( 2011 2012學(xué)年 第1學(xué)期 )課程名稱:人工智能開課實(shí)驗(yàn)室:信自樓計(jì)算機(jī)機(jī)房4442011年12 月16 日專業(yè)班級(jí) 0學(xué)號(hào)200姓名成績實(shí)驗(yàn)名稱天氣決策樹指導(dǎo)教師教該同學(xué)是否了解實(shí)驗(yàn)原理:A.了解B.基本了解C. 不了解該同學(xué)的實(shí)驗(yàn)?zāi)芰Γ篈.強(qiáng)B.中等C. 差師該同學(xué)的實(shí)驗(yàn)是否達(dá)到要求:A. 達(dá)到B.基本達(dá)到C. 未達(dá)到評(píng)實(shí)驗(yàn)報(bào)告是否規(guī)范:A. 規(guī)范B.基本規(guī)范C. 不規(guī)范語實(shí)驗(yàn)過程是否詳細(xì)記錄:A. 詳細(xì)B.一般C. 沒有教師簽名:2011年 12月日一、上機(jī)目的及內(nèi)容1.上機(jī)內(nèi)容根據(jù)下列給定的14 個(gè)數(shù)據(jù) ,運(yùn)用 In
2、formation Gain構(gòu)造一個(gè)天氣決策樹。屬 性例子編號(hào)分類天況溫度濕度風(fēng)況1晴熱大無N2晴熱大有N3多云熱大無P4雨中大無P5雨冷正常無P6雨冷正常有N7多云冷正常有P8晴中大無N9晴冷正常無P10雨中正常無P11晴中正常有P12多云中大有P專業(yè)資料整理WORD格式文檔專業(yè)資料整理WORD格式實(shí)用13多云熱正常無P14雨中大有N2. 上機(jī)目的( 1)學(xué)習(xí)用 Information Gain構(gòu)造決策樹的方法;( 2)在給定的例子上,構(gòu)造出正確的決策樹;( 3)理解并掌握構(gòu)造決策樹的技術(shù)要點(diǎn)。二、實(shí)驗(yàn)原理及基本技術(shù)路線圖(方框原理圖或程序流程圖)( 1)設(shè)計(jì)并實(shí)現(xiàn)程序,構(gòu)造出正確的決策樹;
3、( 2)對所設(shè)計(jì)的算法采用大 O 符號(hào)進(jìn)行時(shí)間復(fù)雜性和空間復(fù)雜性分析;主函數(shù)流程圖:Attributevalue.cpp流程圖文檔專業(yè)資料整理WORD格式實(shí)用Basefun流程圖:Datapiont.cpp流程圖:Dataset主要流程圖:文檔專業(yè)資料整理WORD格式實(shí)用三、所用儀器、材料(設(shè)備名稱、型號(hào)、規(guī)格等或使用軟件)1 臺(tái) PC 及 VISUAL C+6.0軟件四、實(shí)驗(yàn)方法、步驟(或:程序代碼或操作過程)工程源代碼:Main.cpp:#include <fstream>#include <iostream>#include <list>文檔專業(yè)資料整
4、理WORD格式實(shí)用#include <sstream>#include <string>#include <vector>#include "AttributeValue.h"#include "DataPoint.h"#include "DataSet.h"DataPoint processLine(std:string const& sLine)std:istringstream isLine(sLine, std:istringstream:in);std:vector<Attr
5、ibuteValue> attributes;/ TODO: need to handle beginning and ending empty spaces.while( isLine.good() )std:string rawfield;isLine >> rawfield;attributes.push_back( AttributeValue( rawfield ) );文檔專業(yè)資料整理WORD格式實(shí)用AttributeValue v = attributes.back();attributes.pop_back();bool type = v.GetType();
6、return DataPoint(attributes, type);void main()std:ifstream ifs("in.txt", std:ifstream:in);DataSet initDataset;while( ifs.good() )/ TODO: need to handle empty lines. std:string sLine;std:getline(ifs, sLine); initDataset.addDataPoint( processLine(sLine) );std:list<DataSet> processQ;std
7、:vector<DataSet> finishedDataSet;文檔專業(yè)資料整理WORD格式實(shí)用processQ.push_back(initDataset);while ( processQ.size() > 0 )std:vector<DataSet> splittedDataSets;DataSet dataset = processQ.front();dataset.splitDataSet(splittedDataSets);processQ.pop_front();for (int i=0; i<splittedDataSets.size();
8、 +i)float prob = splittedDataSetsi.getPositiveProb();if (prob = 0.0 | prob = 1.0)finishedDataSet.push_back(splittedDataSetsi);elseprocessQ.push_back(splittedDataSetsi);文檔專業(yè)資料整理WORD格式實(shí)用std:cout << "The dicision tree is:" << std:endl;for (int i = 0; i < finishedDataSet.size();
9、 +i)finishedDataSeti.display();Attributevalue.cpp:#include "AttributeValue.h"#include "base.h"AttributeValue:AttributeValue(std:string const& instring): m_value(instring)bool AttributeValue:GetType()if (m_value = "P")return true;else if (m_value = "N")retu
10、rn false;elsethrow DataErrException();專業(yè)資料整理WORD格式文檔專業(yè)資料整理WORD格式實(shí)用Basefun.cpp:#include <math.h>float log2 (float x)return 1.0 / log10(2) * log10(x);float calEntropy(float prob)float sum=0;if (prob = 0 | prob = 1)return 0;sum -= prob * log2(prob);sum -= (1 - prob) * log2 ( 1 - prob );return sum
11、;Datapiont.cpp:#include <iostream>#include "DataPoint.h"DataPoint:DataPoint(std:vector<AttributeValue> const& attributes, bool type): m_type(type)for (int i=0; i<attributes.size(); +i)m_attributes.push_back( attributesi );void DataPoint:display()for (int i=0; i<m_attr
12、ibutes.size(); +i)專業(yè)資料整理WORD格式std:cout << "t" << m_attributesi.getValue();文檔專業(yè)資料整理WORD格式實(shí)用if (true = m_type)std:cout << "tP"elsestd:cout << "tN"std:cout << std:endl;Dataset.cpp:#include <iostream>#include <map>#include "bas
13、e.h"#include "DataSet.h"void SplitAttributeValue:display()std:cout << "tSplit attribute ID(" << m_attributeIndex << ")t"std:cout << "Split attribute value(" << m_v.getValue() << ")" << std:endl;void Data
14、Set:addDataPoint(DataPoint const& datapoint)m_data.push_back(datapoint);float DataSet:getPositiveProb()float nPositive = 0;for(int i=0; i<m_data.size(); +i)if ( m_datai.isPositive() )nPositive+;專業(yè)資料整理WORD格式return nPositive / m_data.size();文檔專業(yè)資料整理WORD格式實(shí)用struct Statint nPos;int nNeg;int id;vo
15、id DataSet:splitDataSet(std:vector<DataSet>& splittedSets)/ find all available splitting attributesint nAttributes = m_data0.getNAttributes();int i, j;std:vector<bool> splittingAttributeBV;splittingAttributeBV.resize(nAttributes);for (i=0; i<nAttributes; +i)splittingAttributeBVi =
16、 true;for (i=0; i<m_splitAttributes.size(); +i)splittingAttributeBV m_splitAttributesi.getAttributeIndex() = false;std:vector<int> splittingAttributeIds;for (i=0; i<nAttributes; +i)if (true = splittingAttributeBVi)splittingAttributeIds.push_back(i);typedef std:map<AttributeValue, Stat
17、, AttributeValueCmp> AttributeValueStat; typedef std:map<AttributeValue, Stat, AttributeValueCmp>:iteratorAttributeValueStat_iterator;typedefstd:map<AttributeValue,Stat,AttributeValueCmp>:const_iterator專業(yè)資料整理WORD格式AttributeValueStat_const_iterator;/ go through data once, and collect n
18、eeded statistics to calculate entropy std:vector< AttributeValueStat > splittingStats;splittingStats.resize( splittingAttributeIds.size() );文檔專業(yè)資料整理WORD格式實(shí)用for (i=0; i<m_data.size(); +i)for (j=0; j<splittingAttributeIds.size(); +j)AttributeValueconst&v=m_datai.getAttribute(splittingA
19、ttributeIdsj);AttributeValueStat_iterator it = splittingStatsj.find(v);if ( splittingStatsj.end() = it )Stat stat;if ( m_datai.isPositive() )stat.nPos = 1;stat.nNeg = 0;stat.id = 0;elsestat.nPos = 0;stat.nNeg = 1;stat.id = 0;splittingStatsj.insert(std:pair<AttributeValue, Stat>(v, stat);elseif
20、 ( m_datai.isPositive() )it->second.nPos+;elseit->second.nNeg+;/ display collected statisticsfor (j=0; j<splittingAttributeIds.size(); +j)專業(yè)資料整理WORD格式std:cout << "Attribute(" << splittingAttributeIdsj <<"):" << std:endl; std:cout << "tV
21、alue t nPos tnNeg" << std:endl;for (AttributeValueStat_const_iterator it =splittingStatsj.begin(); it !=splittingStatsj.end(); +it)文檔專業(yè)資料整理WORD格式實(shí)用std:cout << "t" << it->first.getValue() << " t " << it->second.nPos <<" t "
22、<< it->second.nNeg << std:endl;/findsplittingattributefloatminEntropy=0.0;intsplitAttributeId=-1;for (j=0; j<splittingStats.size(); +j)int n = m_data.size();float entropy = 0.0;for (AttributeValueStat_iterator it =splittingStatsj.begin(); it !=splittingStatsj.end(); +it)int nSample
23、s = it->second.nPos + it->second.nNeg;float p = it->second.nPos;p /= nSamples;entropy += calEntropy(p) * nSamples / n;if (entropy < minEntropy | -1 = splitAttributeId)minEntropy = entropy;splitAttributeId = j;std:cout << "Split at attribute(" << splittingAttributeId
24、ssplitAttributeId << ")"<< std:endl << std:endl;/ splitint attrId = splittingAttributeIdssplitAttributeId;AttributeValueStat const& attVStat =splittingStatssplitAttributeId;splittedSets.clear();專業(yè)資料整理WORD格式int k = 0;for (AttributeValueStat_iterator it =splittingStatss
25、plitAttributeId.begin();it != splittingStatssplitAttributeId.end();+it)it->second.id = k+;splittedSets.resize( k);for (i=0; i<k; +i)for (j=0; j<m_splitAttributes.size(); +j)文檔專業(yè)資料整理WORD格式實(shí)用splittedSetsi.m_splitAttributes.push_back( m_splitAttributesj );for (AttributeValueStat_iterator itt =splittingStatssplitAttributeId.begin();itt != splittingStatssplitAttributeId.end();+itt)splittedSetsitt->second.id.m_splitAttributes.push_back(SplitAttributeValue(itt ->first, attrId);for (i=0; i<m_data.size(); +i)AttributeValue const& v = m_datai.getAttribute(attrId);Attrib
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年水利工程建設(shè)與管理規(guī)范
- 北京市東城區(qū)2025-2026學(xué)年高三上學(xué)期期末考試語文試卷
- 2025年汽車租賃業(yè)務(wù)操作流程指南
- 漢初的選官制度
- 公共交通車輛性能檢測制度
- 企業(yè)內(nèi)部保密制度溝通手冊(標(biāo)準(zhǔn)版)
- 2025年企業(yè)資產(chǎn)管理手冊
- 義翹講堂《蟲媒病毒防控新策略:診斷與疫苗研究進(jìn)展》
- 2026年珠海城市職業(yè)技術(shù)學(xué)院招聘備考題庫及答案詳解1套
- 養(yǎng)老院服務(wù)質(zhì)量監(jiān)控制度
- 2026年直播服務(wù)合同
- 掛靠取消協(xié)議書
- 2026秋招:澳森特鋼集團(tuán)試題及答案
- 哲學(xué)史重要名詞解析大全
- 2026年寧夏黃河農(nóng)村商業(yè)銀行科技人員社會(huì)招聘備考題庫及答案詳解(易錯(cuò)題)
- 銀行借款抵押合同范本
- DB37-T4975-2025分布式光伏直采直控技術(shù)規(guī)范
- 兒童糖尿病的發(fā)病機(jī)制與個(gè)體化治療策略
- 脫硫廢水零排放項(xiàng)目施工方案
- 2026年海南衛(wèi)生健康職業(yè)學(xué)院單招綜合素質(zhì)考試題庫參考答案詳解
- 水泥產(chǎn)品生產(chǎn)許可證實(shí)施細(xì)則2025
評(píng)論
0/150
提交評(píng)論