人工智能实验报告.docx

上传人:b****4 文档编号:6208469 上传时间:2023-05-09 格式:DOCX 页数:22 大小:324.65KB
下载 相关 举报
人工智能实验报告.docx_第1页
第1页 / 共22页
人工智能实验报告.docx_第2页
第2页 / 共22页
人工智能实验报告.docx_第3页
第3页 / 共22页
人工智能实验报告.docx_第4页
第4页 / 共22页
人工智能实验报告.docx_第5页
第5页 / 共22页
人工智能实验报告.docx_第6页
第6页 / 共22页
人工智能实验报告.docx_第7页
第7页 / 共22页
人工智能实验报告.docx_第8页
第8页 / 共22页
人工智能实验报告.docx_第9页
第9页 / 共22页
人工智能实验报告.docx_第10页
第10页 / 共22页
人工智能实验报告.docx_第11页
第11页 / 共22页
人工智能实验报告.docx_第12页
第12页 / 共22页
人工智能实验报告.docx_第13页
第13页 / 共22页
人工智能实验报告.docx_第14页
第14页 / 共22页
人工智能实验报告.docx_第15页
第15页 / 共22页
人工智能实验报告.docx_第16页
第16页 / 共22页
人工智能实验报告.docx_第17页
第17页 / 共22页
人工智能实验报告.docx_第18页
第18页 / 共22页
人工智能实验报告.docx_第19页
第19页 / 共22页
人工智能实验报告.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

人工智能实验报告.docx

《人工智能实验报告.docx》由会员分享,可在线阅读,更多相关《人工智能实验报告.docx(22页珍藏版)》请在冰点文库上搜索。

人工智能实验报告.docx

人工智能实验报告

 

《—人工智能方向实习—》

实习报告

 

专业:

计算机科学与技术

班级:

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);

%initkcentroids

p=randperm(size(m,1));

fori=1:

k

ctrs(i,:

)=m(p(i),:

);

end

idx=zeros(row,1);%idexispointerofgroup

while1

d=dist2matrix(m,ctrs);

[z,g]=min(d,[],2);

if(g==idx)

break;

else

idx=g;

end

%updatectroids

fori=1:

k

v=find(g==i);

ifv

ctrs(i,:

)=mean(m(v,:

),1);

end

end

end

end

function[idx,ctrs]=my_kmeans(m,k)

[rowcol]=size(m);

%initkcentroids

p=randperm(size(m,1));

fori=1:

k

ctrs(i,:

)=m(p(i),:

);

end

idx=zeros(row,1);%idexispointerofgroup

while1

d=dist2matrix(m,ctrs);

[z,g]=min(d,[],2);

if(g==idx)

break;

else

idx=g;

end

%updatectroids

fori=1:

k

v=find(g==i);

ifv

ctrs(i,:

)=mean(m(v,:

),1);

end

end

end

end

七、实验结果

图1-1未聚类数据

图1-2聚类后

八、实验分析

算法的时间复杂度上界为O(n*k*t),其中t是迭代次数。

k-means算法是一种基于样本间相似性度量的间接聚类方法,属于非监督学习方法。

此算法以k为参数,把n个对象分为k个簇,以使簇内具有较高的相似度,而且簇间的相似度较低。

相似度的计算根据一个簇中对象的平均值(被看作簇的重心)来进行。

此算法首先随机选择k个对象,每个对象代表一个聚类的质心。

对于其余的每一个对象,根据该对象与各聚类质心之间的距离,把它分配到与之最相似的聚类中。

然后,计算每个聚类的新质心。

重复上述过程,直到准则函数收敛。

k-means算法是一种较典型的逐点修改迭代的动态聚类算法,其要点是以误差平方和为准则函数。

逐点修改类中心:

一个象元样本按某一原则,归属于某一组类后,就要重新计算这个组类的均值,并且以新的均值作为凝聚中心点进行下一次象元素聚类;逐批修改类中心:

在全部象元样本按某一组的类中心分类之后,再计算修改各类的均值,作为下一次分类的凝聚中心点。

 

实验二主成分分析

一、实验目的

编程实现主成分的算法。

二、实验内容

PCA主成分分析算法。

三、实验原理方法和手段

PCA的原理就是将原来的样本数据投影到一个新的空间中,相当于我们在矩阵分析里面学习的将一组矩阵映射到另外的坐标系下。

通过一个转换坐标,也可以理解成把一组坐标转换到另外一组坐标系下,但是在新的坐标系下,表示原来的原本不需要那么多的变量,只需要原来样本的最大的一个线性无关组的特征值对应的空间的坐标即可。

四、实验条件

Matlab2014b

五、实验步骤

(1)求dataAdjust矩阵

(2)求dataAdjust的协方差矩阵

协方差公式

协方差矩阵

(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

欧式距离

c

绝对值距离

明氏距离

马氏距离

为对应的特征值)

余弦距离

(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);

%giveakvalue

k=input('inputneighborscount');

[row,col]=size(data);

fori=1:

row

d(:

i)=norm(data(i,1:

2)-blue_sample(1,:

));

end

[d,idx]=sort(d);

fori=1:

k

k_vector(:

i)=idx(:

i);

end

%caculatecategory

redCount=0;

greenCount=0;

fori=1:

k

tag=data(k_vector(1,i),3);

if(tag==1)

redCount=redCount+1;

elseif(tag==2)

greenCount=greenCount+1;

end

end

end

if(redCount>greenCount)

blue_sample=[blue_sample1];

disp('sampleisred');

else

blue_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)根据贝叶斯公式

计算各类最终比重,取值大的作为样本类别。

六、实验代码

clear;

closeall;

%inittwocluters

rH=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/(total);

pr_green=gH/(total);

%initasample

sample_blue=randn(1,2);

plot(red(:

1),red(:

2),'ro','MarkerSize',4);

holdon;

plot(green(:

1),green(:

2),'go','MarkerSize',4);

holdon;

plot(sample_blue(:

1),sample_blue(:

2),'b*','MarkerSize',6);

fori=1:

total

p=data(i,1:

2);

tmp=sample_blue-p;

d(:

i)=sqrt(dot(tmp,tmp));

end

%selectancircle(centerissample_blue)

radius=5;

redCount=0;

greenCount=0;

fori=1:

total

if(d(:

i)<=radius)

if(data(i,3)==1)%redcluster

redCount=redCount+1;

elseif(data(i,3)==2)%greencluster

greenCount=greenCount+1;

end

end

end

end

pr_redInCircle=redCount/rH;

pr_greenInCircle=greenCount/gH;

pr_redFinal=pr_red*pr_redInCircle;

pr_greenFinal=pr_green*pr_greenInCircle;

fprintf('finalredpr=%f\n',pr_redFinal);

fprintf('finalgreenpr=%f\n',pr_greenFinal);

if(pr_redFinal>=pr_greenFinal)

disp('sampleisredcluster');

else

disp('sampleisgreencluster');

end

七、实验结果

图4-1实验结果

八、实验分析

对于某些类型的概率模型,在监督式学习的样本集中能获取得非常好的分类效果。

在许多实际应用中,朴素贝叶斯模型参数估计使用最大似然估计方法;换而言之,在不用到贝叶斯概率或者任何贝叶斯模型的情况下,朴素贝叶斯模型也能奏效。

 

实验五特征提取算法

一、实验目的

编程实现特征提取算法。

二、实验内容

harris特征提取算法。

三、实验原理方法和手段

图像中的特征点即为图像边缘直线形成夹角而成的角点。

图像中较突出的尖锐点和其它有特殊意义的点,这些点反映了地物的特征,对研究具有重要意义。

在点特征提取的算法中,主要包含了Susan算法、Harris算法和Moravec算法,这些算法可以对图像中角点进行提取,从而应用于实践生产中,例如对建筑物角点提取,人脸中眼睛部位角点的提取。

四、实验条件

Matlab2014b

五、实验步骤

(1)计算图像I(x,y)在x和y方向的梯度

.

(2)计算图像两个方向梯度的乘积

(3)使用高斯函数对

(4)计算每个像素的Harris响应值R,并对小于某一阈值t的R置为零

(5)在3*3或5*5的邻域内进行非最大值抑制,局部最大值点即为图像中的角点

六、实验代码

%function:

%Harris角点检测

%注意:

%matlab自带的corner函数即可实现harris角点检测。

但考虑到harris角点的经典性,本程序将其实现,纯粹出于学习目的,了解特征点检测的方法。

%其中所有参数均与matlab默认保持一致

%

%清空变量,读取图像

clear;closeall

src=imread('images/girl.jpg');

gray=rgb2gray(src);

gray=im2double(gray);

%缩放图像,减少运算时间

gray=imresize(gray,0.2);

%计算X方向和Y方向的梯度及其平方

X=imfilter(gray,[-101]);

X2=X.^2;

Y=imfilter(gray,[-101]');

Y2=Y.^2;

XY=X.*Y;

%生成高斯卷积核,对X2、Y2、XY进行平滑

h=fspecial('gaussian',[51],1.5);

w=h*h';

A=imfilter(X2,w);

B=imfilter(Y2,w);

C=imfilter(XY,w);

%k一般取值0.04-0.06

k=0.04;

RMax=0;

size=size(gray);

height=size

(1);

width=size

(2);

R=zeros(height,width);

forh=1:

height

forw=1:

width

%计算M矩阵

M=[A(h,w)C(h,w);C(h,w)B(h,w)];

%计算R用于判断是否是边缘

R(h,w)=det(M)-k*(trace(M))^2;

%获得R的最大值,之后用于确定判断角点的阈值

if(R(h,w)>RMax)

RMax=R(h,w);

end

end

end

%用Q*RMax作为阈值,判断一个点是不是角点

Q=0.01;

R_corner=(R>=(Q*RMax)).*R;

%寻找3x3邻域内的最大值,只有一个交点在8邻域内是该邻域的最大点时,才认为该点是角点

fun=@(x)max(x(:

));

R_localMax=nlfilter(R,[33],fun);

%寻找既满足角点阈值,又在其8邻域内是最大值点的点作为角点

%注意:

需要剔除边缘点

[row,col]=find(R_localMax(2:

height-1,2:

width-1)==R_corner(2:

height-1,2:

width-1));

%绘制提取到的角点

figure('name','Result');

subplot(1,2,1),imshow(gray),title('my-Harris'),

holdon

plot(col,row,'b*'),

holdoff

%用matlab自带的edge函数提取Harris角点,对比效果

C=corner(gray);

subplot(1,2,2),imshow(gray),title('matlab-conner'),

holdon

plot(C(:

1),C(:

2),'r*');

holdoff

七、实验结果

图5-1实验结果

八、实验分析

对于某些类型的概率模型,在监督式学习的样本集中能获取得非常好的分类效果。

在许多实际应用中,朴素贝叶斯模型参数估计使用最大似然估计方法;换而言之,在不用到贝叶斯概率或者任何贝叶斯模型的情况下,朴素贝叶斯模型也能奏效。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2