人工智能实验报告文档格式.docx
- 文档编号:18929796
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:18
- 大小:324.69KB
人工智能实验报告文档格式.docx
《人工智能实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《人工智能实验报告文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
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);
subplot(1,2,1);
plot(X(idx==1,1),X(idx==1,2),'
ro'
holdon;
plot(X(idx==2,1),X(idx==2,2),'
go'
plot(X(idx==3,1),X(idx==3,2),'
bo'
plot(ctrs(:
1),ctrs(:
kx'
12);
officialkmeans'
16,'
[idx,ctrs]=my_kmeans(X,3);
subplot(1,2,2);
customkmeans'
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;
%updatectroids
v=find(g==i);
ifv
)=mean(m(v,:
),1);
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个类别,判定给定样本属于哪个类别。
(1)计算样本到各数据集点的距离D
欧式距离
c
绝对值距离
明氏距离
马氏距离
(
为对应的特征值)
余弦距离
(2)对D排序
(3)给定k值(即邻居数),从D中选取k个数据,统计k个数据中所属类别的个数C。
(4)C中值最大的便是该样本所属类别。
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];
plot(red(:
1),red(:
plot(green(:
1),green(:
blue_sample=randn(1,2);
plot(blue_sample(:
1),blue_sample(:
%giveakvalue
k=input('
inputneighborscount'
[row,col]=size(data);
fori=1:
row
d(:
i)=norm(data(i,1:
2)-blue_sample(1,:
));
[d,idx]=sort(d);
k_vector(:
i)=idx(:
i);
%caculatecategory
redCount=0;
greenCount=0;
tag=data(k_vector(1,i),3);
if(tag==1)
redCount=redCount+1;
elseif(tag==2)
greenCount=greenCount+1;
if(redCount>
greenCount)
blue_sample=[blue_sample1];
disp('
sampleisred'
else
blue_sample=[blue_sample2];
sampleisgreen'
图3-1实验结果
KNN算法本身简单有效,它是一种lazy-learning算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。
KNN分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为n,那么KNN的分类时间复杂度为O(n)。
实验四贝叶斯分类器
编程实现贝叶斯分类器算法。
贝叶斯分类器算法。
已知类别,给定一样本判定样本所属类别。
(1)已知k个类别
(2)计算k个类别所占全体的比重Pr(k)
(3)给定值radius,在二维空间,以样本点为圆心以radiu为半径作圆。
(4)统计圆k个类别的分布情况(在圆包含该类多少个数据点)记为C(k)
(5)计算圆分布比重Pr_c(k)
(6)根据贝叶斯公式
计算各类最终比重,取值大的作为样本类别。
%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];
total=rH+gH;
pr_red=rH/(total);
pr_green=gH/(total);
%initasample
sample_blue=randn(1,2);
plot(sample_blue(:
1),sample_blue(:
b*'
6);
total
p=data(i,1:
2);
tmp=sample_blue-p;
i)=sqrt(dot(tmp,tmp));
%selectancircle(centerissample_blue)
radius=5;
if(d(:
i)<
=radius)
if(data(i,3)==1)%redcluster
redCount=redCount+1;
elseif(data(i,3)==2)%greencluster
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);
finalgreenpr=%f\n'
pr_greenFinal);
if(pr_redFinal>
=pr_greenFinal)
sampleisredcluster'
sampleisgreencluster'
图4-1实验结果
对于某些类型的概率模型,在监督式学习的样本集中能获取得非常好的分类效果。
在许多实际应用中,朴素贝叶斯模型参数估计使用最大似然估计方法;
换而言之,在不用到贝叶斯概率或者任何贝叶斯模型的情况下,朴素贝叶斯模型也能奏效。
实验五特征提取算法
编程实现特征提取算法。
harris特征提取算法。
图像中的特征点即为图像边缘直线形成夹角而成的角点。
图像中较突出的尖锐点和其它有特殊意义的点,这些点反映了地物的特征,对研究具有重要意义。
在点特征提取的算法中,主要包含了Susan算法、Harris算法和Moravec算法,这些算法可以对图像中角点进行提取,从而应用于实践生产中,例如对建筑物角点提取,人脸中眼睛部位角点的提取。
(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默认保持一致
%
%清空变量,读取图像
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
%用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:
width-1));
%绘制提取到的角点
figure('
name'
Result'
subplot(1,2,1),imshow(gray),title('
my-Harris'
),
holdon
plot(col,row,'
holdoff
%用matlab自带的edge函数提取Harris角点,对比效果
C=corner(gray);
subplot(1,2,2),imshow(gray),title('
matlab-conner'
plot(C(:
1),C(:
2),'
r*'
图5-1实验结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人工智能 实验 报告