昆明理工大学人工智能第二次实验报告
人工智能实验报告八数码难题

昆明理工大学信息工程与自动化学院学生实验报告(201 —201 学年第一学期)课程名称:开课实验室:年月日一、实验内容八数码难题,问题描述:在3×3方格棋盘上,分别放置了标有数字1,2,3,4,5,6,7,8的八张牌,初始状态S0,目标状态S1如图所示,可以使用的操作有:空格上移,空格左移,空格右移,空格下移。
只允许位于空格左,上,右,下方的牌移入空格。
用广度优先搜索策略寻找从初始状态到目标状态的解路径。
二、实验原理算法思想:这是一种盲目搜索算法。
算法主要思想是从初始结点开始依次沿其上下左右四个方向扩展结点,并逐一检查这些后继结点是否为目标结点,若不等于目标结点则把该后继结点插入到数组末尾。
然后取数组中未扩展的第一个结点重复以上操作,直到得到目标结点为止或在限定步数以内未得到解。
广度优先搜索策略数据结构:void Bfs(){queue<Map> Queue;Queue.push(org);HashTable[ org.myindex ] = -1;while( NOT Queue.empty() ){Map node = Queue.front();Queue.pop( );for(int k =0 ; k < 4; k ++ ){Map tmp = node;tmp.position = node.position + derection[k];if(tmp.position < 0 || tmp.position > 8 || ( k > 1 && tmp.position / 3 != node.position /3 ) ) continue;tmp.myindex = HashValue( node , k );if(0 != HashTable[tmp.myindex] ) continue;tmp.detail[ node.position ] = tmp.detail[ tmp.position ] ;tmp.detail[ tmp.position ] = 0 ;HashTable[tmp.myindex] = node.myindex; // 状态记录到hashtable中if( node.myindex == EndIndex ) return ;Queue.push( tmp );}}return ;}三、所用仪器、材料1台PC及VISUAL C++6.0软件四、实验方法、步骤源代码见同一文件夹中bashuma.cpp部分程序代码:typedef struct Node {int num[9];int deepth;int diffnum;int value;struct Node * pre;struct Node * next;struct Node * parent;}numNode;int main ( int argc, char *argv[] ){open=create_numNode();close=create_numNode();open->pre=open->next=close->pre=close->next=NULL;init(); //由用户输入初始和目标状态numNode *p1;p1=create_numNode();p1->parent=NULL;p1->deepth=0;int i=0;for ( i=0; i<9; i++){p1->num[i]=origin[i];}open_insert(open,p1);numNode_num=1;p1=open_getfirst(open);while (p1!=NULL){close_append(close,p1);if(expand(p1))return EXIT_SUCCESS;p1=open_getfirst(open);}printf("No solution!\n");return EXIT_SUCCESS;}void init ( ){while(1){printf("输入初始状态S0(请从左到右依次输入每行数字,0代表空格):\n");char temp[10];scanf("%s",&temp);int i=0;for ( i=0;i<9 && temp[i]-'0'>=0 && temp[i]-'0'<=8; i++){origin[i]=temp[i]-'0';}printf("请输入目标状态S1:\n");scanf("%s",&temp);int j=0;for ( j=0; j<9 && temp[j]-'0'>=0 && temp[j]-'0'<=8; j++){target[j]=temp[j]-'0';}system("cls");if ( i==9&&j==9){break;}}}int operate(int m[], int op){int blank;blank=0;while (m[blank]!=0 && blank<9 )++blank;if (blank==9)return 1;switch (op) {case 1: /* up */if (blank>2)swap(m+blank,m+blank-3);break;case 2: /* down */if (blank<6)swap(m+blank,m+blank+3);break;case 3: /* left */if (blank!=0 && blank!=3 && blank!=6)swap(m+blank,m+blank-1);break;case 4: /* right */if (blank!=2 && blank!=5 && blank!=8)swap(m+blank,m+blank+1);break;default : return 1;}return 0;}五、实验过程原始记录六、实验总结:人工智能这门课程综合了许多学科的知识,这些知识面十分广,以及它的应用也是十分广泛的,才刚开始学习的时候就会感觉有点复杂,因为它毕竟综合了一些我们还没有学过的知识。
人工智能实验报告(熟悉专家系统开发工具)

实验结论(结果)
求N! 值的:
该程序通过递归算法有效的解决了求N! 值的问题。并熟悉了Visual Prolog软件开发平台。
该程序通过递归算法有效的解决了求N!值的问题。并熟悉了Visual Prolog软件开发平台。
实验心得与小结
通过这次实验我更加熟悉了 Prolog语言和该软件开发平台。对Prolog语言的基本语法规则和使用技巧有了更好的掌握。在使用Visual Prolog软件开发平台的过程中, 我从对软件的不熟悉, 经常出错, 到会编写一些小型完整的Visual Prolog应用程序, 在这过程中, 我增长了很多知识。最后经过本次试验, 我的动手能力和分析问题的能力得到提高。
father(name,name)
everybody
clauses
father(leonard,katherine).
father(carl,jason).
father(carl,marilyn).
everybody :-father(X,Y),write(X," is ",Y,"'s father\n"),fail.
Example3:
设定目标为: everybody.
结果为:
leonard is katherine's father
carl is jason's father
carl is marilyn's father
No
求N! 值的:
设定目标为: X=6,factorial(X, FactX).
结果为:
X=6, FactX=720
6.完成简单程序的编写:求N!的值。
实验准备(预习程序)
人工智能实验报告内容

人工智能实验报告内容人工智能实验报告内容人工智能(Artificial Intelligence, AI)作为一种重要的技术,正在逐渐影响到我们的日常生活和工作。
本次实验旨在学习和探索人工智能的基本技术,并通过实践加深对其原理和应用的理解。
首先,本次实验分为两个部分:人工智能基础技术的学习和人工智能应用的实践。
在人工智能基础技术学习的部分,我们研究了人工智能的核心技术包括机器学习、神经网络、深度学习等。
我们首先学习了机器学习的基本概念和算法,包括监督学习、无监督学习和强化学习等。
我们使用Python编程语言,利用机器学习库进行了实践,例如使用Scikit-learn库实现了线性回归和K-means 聚类算法。
其次,我们学习了神经网络的基本原理和算法,在激活函数、损失函数、优化算法等方面进行了深入研究。
我们利用TensorFlow库搭建了神经网络模型,并使用MNIST数据集进行了手写数字识别的实验。
通过不断调整网络结构和参数,我们逐渐提高了模型的准确率。
最后,我们学习了深度学习的原理和常用的深度学习模型,包括卷积神经网络(Convolutional Neural Network, CNN)、循环神经网络(Recurrent Neural Network, RNN)等。
我们使用Keras库搭建了CNN模型,并使用CIFAR-10数据集进行了图像分类实验。
通过优化网络结构和参数,我们的模型在测试集上取得了较高的准确率。
在人工智能应用的实践部分,我们选择了自然语言处理(Natural Language Processing, NLP)为主题,具体研究了文本分类和情感分析两个任务。
我们使用了Python编程语言和NLTK(Natural Language Toolkit)库进行了实践。
首先,我们使用朴素贝叶斯算法实现了文本分类的任务,通过比较不同的特征提取方法,我们找到了最适合该任务的特征提取方法。
其次,我们使用情感词典和机器学习算法实现了情感分析的任务,通过对情感分析模型进行评估和调优,我们提高了模型的准确率和鲁棒性。
人工智能实验报告

人工智能实验报告实验一 Chebyshev 神经网络建模1.1 非线性时间序列建模考虑如下非线性系统:y k F y k y k n ()[(),,()]=--1 这里y k k N N n n N ()(,,,,)=-<<1 是给定的时间序列样本值,F ()∙是未知非线性函数,其Chebyshev 神经网络模型如图1所示。
输入层:x y k i i n i =-=(),,,12隐层输入:net w x j m j ij ii n===∑112,,隐层输出为一组Chebyshev正交多项式:T T net T net T T l m l l l l 122121234===-=--,,,网络输出:y k c T m j j j m()==∑1其中w c ij j ,为权值。
网络的训练如图2所示。
1.2 Chebyshev 神经网络预测原理事实上,当所有的已知值被用于神经网络的输入时,网络仅给出了一步预测;为了进行多步预测,可将预测值y k m ()反馈至输入,相应地其它输入数据作一步移位,从而可预测y k m ()+1,以此类推。
其预测原理如图3所示。
Z –1y(k)Z -1y(k-1)y(k-n)……T 1T 2Tmy m (k)图1、Chebyshev 神经网络模型1.3 仿真与结果clears=input('请输入样本数s=') for j=1:sxu(j)=rand; endy(1)=0.28; for j=2:sy(j)=0.6/(1+exp(-0.5*xu(j-1)+0.4*y(j-1))+0.1); enda=input('请输入学习率a=') K=input('请输入学习次数K=')m=input('请输入隐神经元个数m=') n=input('请输入输入层神经元个数n=')w=rand(n,m); c=rand(1,m); for k=1:K se=0; for i=2:sxx=[xu(i-1),y(i-1)]; net=xx*w;t=cheb_bise(m,net); %求t yn=t*c'; %求y 的目标值 e=y(i)-yn;dt=cheb_deltt(m,t,net);神经 网络 模型 F(●)y(k) z -1z -1z -1y(k-1)y(k-2)… y(k-n)y m (k)e(k)=y(k)-y m (k)-+图2、网络训练框图z -1z -1y m (k)…y m (k+p-1) 神经 网络 模型 F(●)y m (k+p)y(k)z -1z -1y(k-1) …y(k-n+p)图3、网络预测原理框图dw=cheb_deltw(a,e,c,dt,xx,n,m);w=w+dw;dc=a*e*t;c=c+dc;se=se+0.5*e*e;endE=se/sif(abs(se)<1.0e-12)break;endendkyu(1)=0.28;k=1:500;u=0.15*sin(2*3.14*k/250)+0.22*sin(2*3.14*k/25)+0.2;for j=2:500yu(j)=0.6/(1+exp(-0.5*u(j-1)+0.4*yu(j-1))+0.1);endny(1)=0.28;for i=2:500for p=1:mnet(p)=u(i-1)*w(1,p)+yu(i-1)*w(2,p);endt=cheb_bise(m,net);ny(i)=t*c';end% subplot(2,2,1),plot(k,yu);% subplot(2,1,2),plot(k,ny)plot(k,yu,k,ny,'-')xlabel('k');ylabel('y(k)')function t=cbise(n,net)t(1)=1;t(2)=2*net(2);for i=3:nt(i)=2*net(i)*t(i-1)-t(i-2);endfunction dt=deltt(n,t,net)dt(1)=0;dt(2)=2;for i=3:ndt(i)=2*t(i-1)+2*net(i)*dt(i-1)-dt(i-2);endfunction dw=deltw(a,e,c,dt,xx,m,n) for i=1:mfor j=1:ndw(i,j)=a*e*c(j)*dt(j)*xx(i); endend运行结果:样本个数:200学习率:0.25运行次数:1000隐神经元:5输入层神经元:2实验二 神经网络数字水印隐藏2.1 基于Hermite 混沌神经网络数字图像隐藏原理利用Logistic 混沌序列1(1)k k k x x x μ+=-样本数据,构造如图1所示的Hermite 混沌神经网络模型,产生混沌序列密码,以此对需要隐藏的数字图像秘密信息进行XOR 加密,生成混沌数字水印;然后通过加密矩阵将其嵌入到载体图像中,其原理如图2所示,图中“⊕”表示XOR 运算,“⊗”表示嵌入运算。
人工智能深度学习实验报告

人工智能深度学习实验报告一、实验背景随着科技的迅猛发展,人工智能(AI)已经成为当今世界最具创新性和影响力的领域之一。
深度学习作为人工智能的一个重要分支,凭借其强大的学习能力和数据处理能力,在图像识别、语音处理、自然语言处理等众多领域取得了显著的成果。
本次实验旨在深入探索人工智能深度学习的原理和应用,通过实践操作和数据分析,进一步理解其工作机制和性能表现。
二、实验目的1、熟悉深度学习的基本概念和常用模型,如多层感知机(MLP)、卷积神经网络(CNN)和循环神经网络(RNN)。
2、掌握使用 Python 编程语言和相关深度学习框架(如 TensorFlow、PyTorch 等)进行模型训练和优化的方法。
3、通过实验数据,分析不同模型在不同任务中的性能差异,探索影响模型性能的关键因素。
4、培养解决实际问题的能力,能够运用深度学习技术解决简单的图像分类、文本分类等任务。
三、实验环境1、操作系统:Windows 102、编程语言:Python 383、深度学习框架:TensorFlow 244、开发工具:Jupyter Notebook四、实验数据1、图像分类数据集:CIFAR-10 数据集,包含 10 个不同类别的60000 张彩色图像,其中 50000 张用于训练,10000 张用于测试。
2、文本分类数据集:IMDB 电影评论数据集,包含 25000 条高度极性的电影评论,其中 12500 条用于训练,12500 条用于测试。
五、实验步骤1、数据预处理对于图像数据,进行图像归一化、数据增强(如随机旋转、裁剪、翻转等)操作,以增加数据的多样性和减少过拟合的风险。
对于文本数据,进行词向量化(如使用 Word2Vec、GloVe 等)、数据清洗(如去除特殊字符、停用词等)操作,将文本转换为可被模型处理的数值向量。
2、模型构建构建多层感知机(MLP)模型,包含输入层、隐藏层和输出层,使用 ReLU 激活函数和 Softmax 输出层进行分类任务。
人工智能深度学习实验报告

人工智能深度学习实验报告一、实验背景随着科技的飞速发展,人工智能已经成为当今最热门的研究领域之一。
深度学习作为人工智能的一个重要分支,凭借其强大的学习能力和数据处理能力,在图像识别、语音识别、自然语言处理等多个领域取得了显著的成果。
为了更深入地了解和掌握人工智能深度学习的原理和应用,我们进行了一系列的实验。
二、实验目的本次实验的主要目的是通过实际操作和实践,深入探究人工智能深度学习的工作原理和应用方法,掌握深度学习模型的构建、训练和优化技巧,提高对深度学习算法的理解和应用能力,并通过实验结果验证深度学习在解决实际问题中的有效性和可行性。
三、实验环境在本次实验中,我们使用了以下硬件和软件环境:1、硬件:计算机:配备高性能 CPU 和 GPU 的台式计算机,以加速模型的训练过程。
存储设备:大容量硬盘,用于存储实验数据和模型文件。
2、软件:操作系统:Windows 10 专业版。
深度学习框架:TensorFlow 和 PyTorch。
编程语言:Python 37。
开发工具:Jupyter Notebook 和 PyCharm。
四、实验数据为了进行深度学习实验,我们收集了以下几种类型的数据:1、图像数据:包括 MNIST 手写数字数据集、CIFAR-10 图像分类数据集等。
2、文本数据:如 IMDb 电影评论数据集、20 Newsgroups 文本分类数据集等。
3、音频数据:使用了一些公开的语音识别数据集,如 TIMIT 语音数据集。
五、实验方法1、模型选择卷积神经网络(CNN):适用于图像数据的处理和分类任务。
循环神经网络(RNN):常用于处理序列数据,如文本和音频。
长短时记忆网络(LSTM)和门控循环单元(GRU):改进的RNN 架构,能够更好地处理长序列数据中的长期依赖关系。
2、数据预处理图像数据:进行图像的裁剪、缩放、归一化等操作,以提高模型的训练效率和准确性。
文本数据:进行词干提取、词向量化、去除停用词等处理,将文本转换为可被模型处理的数值形式。
人工智能_实验报告

人工智能_实验报告在当今科技飞速发展的时代,人工智能(Artificial Intelligence,简称 AI)已经成为了备受瞩目的领域。
为了更深入地了解人工智能的原理和应用,我们进行了一系列的实验。
本次实验的目的是探究人工智能在不同场景下的表现和能力,以及其对人类生活和工作可能产生的影响。
实验过程中,我们使用了多种技术和工具,包括机器学习算法、深度学习框架以及大量的数据样本。
首先,我们对图像识别这一领域进行了研究。
通过收集大量的图像数据,并使用卷积神经网络(Convolutional Neural Network,简称 CNN)进行训练,我们试图让计算机学会识别不同的物体和场景。
在实验中,我们发现,随着训练数据的增加和网络结构的优化,计算机的图像识别准确率得到了显著提高。
然而,在面对一些复杂的图像,如光线昏暗、物体遮挡等情况下,识别效果仍有待提升。
接着,我们转向了自然语言处理(Natural Language Processing,简称 NLP)的实验。
利用循环神经网络(Recurrent Neural Network,简称RNN)和长短时记忆网络(Long ShortTerm Memory,简称 LSTM),我们尝试让计算机理解和生成人类语言。
在文本分类和情感分析任务中,我们取得了一定的成果,但在处理语义模糊和上下文依赖较强的文本时,计算机仍会出现理解偏差。
在实验过程中,我们还遇到了一些挑战和问题。
数据的质量和数量对人工智能模型的性能有着至关重要的影响。
如果数据存在偏差、噪声或不完整,模型可能会学到错误的模式,从而导致预测结果不准确。
此外,模型的训练时间和计算资源需求也是一个不容忽视的问题。
一些复杂的模型需要在高性能的计算机集群上进行长时间的训练,这对于普通的研究团队和个人来说是一个巨大的负担。
为了应对这些问题,我们采取了一系列的措施。
对于数据质量问题,我们进行了严格的数据清洗和预处理工作,去除噪声和异常值,并通过数据增强技术增加数据的多样性。
人工智能实验报告2解读

昆明理工大学信息工程与自动化学院学生实验报告(2012 —2013 学年第 1 学期)课程名称:人工智能开课实验室:信自楼445 2012 年11月 8日一、上机目的及内容1.上机内容:用深度优先、广度优先、或者是其它方法实现八数码问题2.上机目的(1)掌握图搜索遍历过程(2)掌握广度优先的算法和实现过程(3)掌握深度优先的算法和实现过程二、实验原理及基本技术路线图(方框原理图或程序流程图)(1)建立一个只含有起始节点S的搜索图G,把S放到一个叫做OPEN的未扩展节点的表中;(2)建立一个叫做CLOSED的已扩展节点表,其初始为空表;(3)LOOP:若OPEN表是空表,则失败退出;(4)选择OPEN表上的第一个节点,把它从OPEN表移除并放进CLOSED表中,称此节点为节点n(5)若n为一目标节点,则有解并成功退出,此解是追踪图G中沿着指针从n 到S这条路径而得到的(6)扩展节点n,同时生成不是n的祖先的那些后继节点的集合M。
把M的这些成员作为n的后继节点舔到图中;(7)对那些未曾在G中出现过的M成员设置一个通向n的指针。
把M的这些成员加进OPEN表。
对已经在OPEN表或CLOSED表上的成员,确定是否需要更改通到n的指针方向;(8)按某一任意方式或按某个探视值,重排OPEN表宽度优先算法实现过程(1)把起始节点放到OPEN表中;(2)如果OPEN是个空表,则没有解,失败退出;否则继续;(3)把第一个节点从OPEN表中移除,并把它放入CLOSED的扩展节点表中;(4)扩展节点n。
如果没有后继节点,则转向(2)(5)把n的所有后继结点放到OPEN表末端,并提供从这些后继结点回到n的指针;(6)如果n的任意一个后继结点是目标节点,则找到一个解答,成功退出,否则转向(2)。
深度优先实现过程(1)把起始节点S放入未扩展节点OPEN表中。
如果此节点为一目标节点,则得到一个解;(2)如果OPEN为一空表,则失败退出;(3)把第一个节点从OPEN表移到CLOSED表;(4)如果节点n的深度等于最大深度,则转向(2);(5)扩展节点n,产生其全部后裔,并把它们放入OPEN表的前头。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
理工大学信息工程与自动化学院学生实验报告( 2013 — 2014 学年第 1 学期)课程名称:人工智能开课实验室:信自楼445 2013 年12月 20日一、上机目的及容1.上机容用确定性推理算法求解教材65-66页介绍的八数码难题。
2.上机目的(1)复习程序设计和数据结构课程的相关知识,实现课程间的平滑过渡;(2)掌握并实现在小规模状态空间中进行图搜索的方法;(3)理解并掌握图搜索的技术要点。
二、实验原理及基本技术路线图(方框原理图或程序流程图)(1)设计并实现程序,求解出正确的解答路径;(2)对所设计的算法采用大O符号进行时间复杂性和空间复杂性分析;(3)对一般图搜索的技术要点和技术难点进行评述性分析。
三、所用仪器、材料(设备名称、型号、规格等或使用软件)1台PC及VISUAL C++6.0软件四、实验方法、步骤(或:程序代码或操作过程)建立工程后建立5个source Files文件分别为1.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"){return false;}else{throw DataErrException();}}2.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;3.DataPoint.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( attributes[i] );}}void DataPoint::display(){for (int i=0; i<m_attributes.size(); ++i){std::cout << "\t" << m_attributes[i].getValue();}if (true == m_type){std::cout << "\tP";}else{std::cout << "\tN";}std::cout << std::endl;}4.DataSet.cpp5.main.cpp#include <fstream>#include <iostream>#include <list>#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<AttributeValue> attributes;// TODO: need to handle beginning and ending empty spaces.while( isLine.good() ){std::string rawfield;isLine >> rawfield;attributes.push_back( AttributeValue( rawfield ) );}AttributeValue v = attributes.back();attributes.pop_back();bool type = v.GetType();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::vector<DataSet> finishedDataSet;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(); ++i){float prob = splittedDataSets[i].getPositiveProb();if (prob == 0.0 || prob == 1.0){finishedDataSet.push_back(splittedDataSets[i]);}else{processQ.push_back(splittedDataSets[i]);}}}std::cout << "The dicision tree is:" << std::endl;for (int i = 0; i < finishedDataSet.size(); ++i){finishedDataSet[i].display();}}建立4个Header Files文件1.AttributeValue.h#ifndef ATTRIBUTE_VALUE_H_#define ATTRIBUTE_VALUE_H_#include <string>class AttributeValue{public:AttributeValue(std::string const& instring);bool GetType();std::string const& getValue() const{return m_value;}private:std::string m_value;};struct AttributeValueCmp{bool operator() (AttributeValue const& lhs, AttributeValue const& rhs) const {return lhs.getValue() < rhs.getValue();}};#endif2.base.hclass DataErrException : public std::exception{};float calEntropy(float prob);3.DatePoint.h#ifndef DATA_POINT_H_#define DATA_POINT_H_#include <vector>#include "AttributeValue.h"class DataPoint{public:DataPoint(std::vector<AttributeValue> const& attributes, bool type);bool isPositive(){return m_type;}int getNAttributes(){return m_attributes.size();}AttributeValue const& getAttribute(int index){return m_attributes[index];}void display();private:std::vector<AttributeValue> m_attributes;bool m_type;};#endif4.DateSet.h#include <map>#include <utility>#include "DataPoint.h"class SplitAttributeValue{public:SplitAttributeValue(AttributeValue v, int id): m_v(v), m_attributeIndex(id){}int getAttributeIndex(){return m_attributeIndex;}void display();private:int m_attributeIndex;AttributeValue m_v;};class DataSet{public:void addDataPoint(DataPoint const& datapoint);float getPositiveProb();void splitDataSet(std::vector<DataSet>& splittedSets);void display();private:std::vector<SplitAttributeValue> m_splitAttributes;std::vector<DataPoint> m_data;};五、实验过程原始记录( 测试数据、图表、计算等)实验运行截图六、实验结果、分析和结论(误差分析与数据处理、成果总结等。