人工智能实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《—人工智能方向实习—》实习报告专业:计算机科学与技术班级:12419013学号:姓名:江苏科技大学计算机学院2016年3月实验一数据聚类分析一、实验目的编程实现数据聚类的算法。二、实验内容k-means聚类算法。三、实验原理方法和手段k-means算法接受参数k;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高.四、实验条件Matlab2014b五、实验步骤(1)初始化k个聚类中心。(2)计算数据集各数据到中心的距离,选取到中心距离最短的为该数据所属类别。(3)计算(2)分类后,k个类别的中心(即求聚类平均距离)(4)继续执行(2)(3)直到k个聚类中心不再变化(或者数据集所属类别不再变化)六、实验代码%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%main.m%k-meansalgorithm%@authormatcloud%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear;closeall;loadfisheriris;X=[meas(:,3)meas(:,4)];figure;plot(X(:,1),X(:,2),'ko','MarkerSize',4);title('fisheririsdataset','FontSize',18,'Color','red');[idx,ctrs]=kmeans(X,3);figure;subplot(1,2,1);plot(X(idx==1,1),X(idx==1,2),'ro','MarkerSize',4);holdon;plot(X(idx==2,1),X(idx==2,2),'go','MarkerSize',4);holdon;plot(X(idx==3,1),X(idx==3,2),'bo','MarkerSize',4);holdon;plot(ctrs(:,1),ctrs(:,2),'kx','MarkerSize',12);title('officialkmeans','FontSize',16,'Color','red');[idx,ctrs]=my_kmeans(X,3);subplot(1,2,2);plot(X(idx==1,1),X(idx==1,2),'ro','MarkerSize',4);holdon;plot(X(idx==2,1),X(idx==2,2),'go','MarkerSize',4);holdon;plot(X(idx==3,1),X(idx==3,2),'bo','MarkerSize',4);holdon;plot(ctrs(:,1),ctrs(:,2),'kx','MarkerSize',12);title('customkmeans','FontSize',16,'Color','red');function[idx,ctrs]=my_kmeans(m,k)[rowcol]=size(m);%initkcentroidsp=randperm(size(m,1));fori=1:kctrs(i,:)=m(p(i),:);endidx=zeros(row,1);%idexispointerofgroupwhile1d=dist2matrix(m,ctrs);[z,g]=min(d,[],2);if(g==idx)break;elseidx=g;end%updatectroidsfori=1:kv=find(g==i);ifvctrs(i,:)=mean(m(v,:),1);endendendendfunction[idx,ctrs]=my_kmeans(m,k)[rowcol]=size(m);%initkcentroidsp=randperm(size(m,1));fori=1:kctrs(i,:)=m(p(i),:);endidx=zeros(row,1);%idexispointerofgroupwhile1d=dist2matrix(m,ctrs);[z,g]=min(d,[],2);if(g==idx)break;elseidx=g;end%updatectroidsfori=1:kv=find(g==i);ifvctrs(i,:)=mean(m(v,:),1);endendendend七、实验结果图1-1未聚类数据图1-2聚类后八、实验分析算法的时间复杂度上界为O(n*k*t),其中t是迭代次数。k-means算法是一种基于样本间相似性度量的间接聚类方法,属于非监督学习方法。此算法以k为参数,把n个对象分为k个簇,以使簇内具有较高的相似度,而且簇间的相似度较低。相似度的计算根据一个簇中对象的平均值(被看作簇的重心)来进行。此算法首先随机选择k个对象,每个对象代表一个聚类的质心。对于其余的每一个对象,根据该对象与各聚类质心之间的距离,把它分配到与之最相似的聚类中。然后,计算每个聚类的新质心。重复上述过程,直到准则函数收敛。k-means算法是一种较典型的逐点修改迭代的动态聚类算法,其要点是以误差平方和为准则函数。逐点修改类中心:一个象元样本按某一原则,归属于某一组类后,就要重新计算这个组类的均值,并且以新的均值作为凝聚中心点进行下一次象元素聚类;逐批修改类中心:在全部象元样本按某一组的类中心分类之后,再计算修改各类的均值,作为下一次分类的凝聚中心点。实验二主成分分析一、实验目的编程实现主成分的算法。二、实验内容PCA主成分分析算法。三、实验原理方法和手段PCA的原理就是将原来的样本数据投影到一个新的空间中,相当于我们在矩阵分析里面学习的将一组矩阵映射到另外的坐标系下。通过一个转换坐标,也可以理解成把一组坐标转换到另外一组坐标系下,但是在新的坐标系下,表示原来的原本不需要那么多的变量,只需要原来样本的最大的一个线性无关组的特征值对应的空间的坐标即可。四、实验条件Matlab2014b五、实验步骤(1)求dataAdjust矩阵(2)求dataAdjust的协方差矩阵协方差公式1))((),(covinYYXXYXni协方差矩阵)),cov(,(,,jijijinnDimDimccC(3)求协方差矩阵的特征向量及特征值(4)取特征值最大的的特征向量eigenVectors(5)降维矩阵finalData=dataAdjust*eigenVectors六、实验代码data=[2.52.4;0.50.7;2.22.9;1.92.2;3.13.0;2.32.7;21.6;11.1;1.51.6;1.10.9];dim1_mean=mean(data(:,1));dim2_mean=mean(data(:,2));dataAdjust=[data(:,1)-dim1_mean,data(:,2)-dim2_mean];c=cov(dataAdjust);[vectors,values]=eig(c);values=values*ones(2,1);[max_v,max_idx]=max(values,[],1);eigenVectors=vectors(:,max_idx);finalData=dataAdjust*eigenVectors;七、实验结果图2-1实验结果八、实验分析主成分分析,是考察多个变量间相关性一种多元统计方法,研究如何通过少数几个主成分来揭示多个变量间的内部结构,即从原始变量中导出少数几个主成分,使它们尽可能多地保留原始变量的信息,且彼此间互不相关.通常数学上的处理就是将原来P个指标作线性组合,作为新的综合指标。实验三最近邻分类器一、实验目的编程实现最近邻分类器算法。二、实验内容最近邻分类器算法,这里采用k近邻算法。三、实验原理方法和手段最近邻分类为监督学习方法,已知n个类别,判定给定样本属于哪个类别。四、实验条件Matlab2014b五、实验步骤(1)计算样本到各数据集点的距离D①欧式距离2112),(dniiiyxyxyxc②绝对值距离niiiyxyxyx1),(d③明氏距离p11),(nipiiyxyxyxd④马氏距离niiiiyxyxyxd1),((i为对应的特征值)⑤余弦距离21211),(cos),(niiniiniiiyxyxyxyxyxd(2)对D排序(3)给定k值(即邻居数),从D中选取k个数据,统计k个数据中所属类别的个数C。(4)C中值最大的便是该样本所属类别。六、实验代码closeall;clear;clc;red=randn(100,2)+ones(100,2);red=[redones(100,1)];green=randn(100,2)-ones(100,2);green=[greenones(100,1)*2];data=[red;green];figure;plot(red(:,1),red(:,2),'ro','MarkerSize',4);holdon;plot(green(:,1),green(:,2),'go','MarkerSize',4);blue_sample=randn(1,2);holdon;plot(blue_sample(:,1),blue_sample(:,2),'bo','MarkerSize',4);%giveakvaluek=input('inputneighborscount');[row,col]=size(data);fori=1:rowd(:,i)=norm(data(i,1:2)-blue_sample(1,:));end[d,idx]=sort(d);fori=1:kk_vector(:,i)=idx(:,i);end%caculatecategoryredCount=0;greenCount=0;fori=1:ktag=data(k_vector(1,i),3);if(tag==1)redCount=redCount+1;elseif(tag==2)greenCount=greenCount+1;endendendif(redCountgreenCount)blue_sample=[blue_sample1];disp('sampleisred');elseblue_sample=[blue_sample2];disp('sampleisgreen');end七、实验结果图3-1实验结果八、实验分析KNN算法本身简单有效,它是一种lazy-learning算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。KNN分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为n,那么KNN的分类时间复杂度为O(n)。实验四贝叶斯分类器一、实验目的编程实现贝叶斯分类器算法。二、实验内容贝叶斯分类器算法。三、实验原理方法和手段已知类别,给定一样本判定样本所属类别。四、实验条件Matlab2014b五、实验步骤(1)已知k个类别(2)计算k个类别所占全体的比重Pr(k)(3)给定值radius,在二维空间,以样本点为圆心以radiu为半径作圆。(4)统计圆内k个类别的分布情况(在圆内包含该类多少个数据点)记为C(k)(5)计算圆内分布比重Pr_c(k)(6)根据贝叶斯公式)()/()()/(PBPABPAPBA计算各类最终比重,取值大的作为样本类别。六、实验代码clear;closeall;%inittwoclutersrH=randi([80,100]);gH=randi([80,100]);red=randn(rH,2)+ones(rH,2);green=randn(gH,2)-ones(gH,2);red=[redones(rH,1)];green=[greenones(gH,1)*2];data=[red;green];total=rH+gH;pr_red=rH/(

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功