人工智能實驗報告_第1頁
人工智能實驗報告_第2頁
人工智能實驗報告_第3頁
人工智能實驗報告_第4頁
人工智能實驗報告_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、 人工智能方向?qū)嵙晫?習 報 告專業(yè): 計算機科學與技術(shù) 班級: 12419013 學號: 姓名: 江蘇科技大學計算機學院2016年 3 月 實驗一 數(shù)據(jù)聚類分析一、實驗目的編程實現(xiàn)數(shù)據(jù)聚類的算法。二、實驗內(nèi)容 k-means聚類算法。三、實驗原理方法和手段 k-means算法接受參數(shù)k ;然后將事先輸入的n個數(shù)據(jù)對象劃分為k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高.四、實驗條件 Matlab2014b五、實驗步驟(1) 初始化k個聚類中心。(2) 計算數(shù)據(jù)集各數(shù)據(jù)到中心的距離,選取到中心距離最短的為該數(shù)據(jù)所屬類別。(3) 計算(2)分類后,k個類別的中心(即求聚類平均距離)

2、(4) 繼續(xù)執(zhí)行(2)(3)直到k個聚類中心不再變化(或者數(shù)據(jù)集所屬類別不再變化)六、實驗代碼% main.m% k-means algorithm% author matcloud%clear;close all;load fisheriris;X = meas(:,3) meas(:,4);figure;plot(X(:,1),X(:,2),'ko','MarkerSize',4);title('fisheriris dataset','FontSize',18,'Color','red');

3、idx,ctrs = kmeans(X,3);figure;subplot(1,2,1);plot(X(idx=1,1),X(idx=1,2),'ro','MarkerSize',4);hold on;plot(X(idx=2,1),X(idx=2,2),'go','MarkerSize',4);hold on;plot(X(idx=3,1),X(idx=3,2),'bo','MarkerSize',4);hold on;plot(ctrs(:,1),ctrs(:,2),'kx',&

4、#39;MarkerSize',12);title('official kmeans','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);hold on;plot(X(idx=2,1),X(idx=2,2),'go','MarkerSize',4);hold on;plot(

5、X(idx=3,1),X(idx=3,2),'bo','MarkerSize',4);hold on;plot(ctrs(:,1),ctrs(:,2),'kx','MarkerSize',12);title('custom kmeans','FontSize',16,'Color','red');function idx,ctrs = my_kmeans(m,k) row col = size(m); %init k centroids p = randperm(si

6、ze(m,1); for i = 1 : k ctrs(i,:) = m(p(i),:); end idx = zeros(row,1);%idex is pointer of group while 1 d = dist2matrix(m,ctrs); z,g = min(d,2); if(g = idx) break; else idx = g; end %update ctroids for i = 1 : k v = find(g = i); if v ctrs(i,:) = mean(m(v,:),1); end end endendfunction idx,ctrs = my_km

7、eans(m,k) row col = size(m); %init k centroids p = randperm(size(m,1); for i = 1 : k ctrs(i,:) = m(p(i),:); end idx = zeros(row,1);%idex is pointer of group while 1 d = dist2matrix(m,ctrs); z,g = min(d,2); if(g = idx) break; else idx = g; end %update ctroids for i = 1 : k v = find(g = i); if v ctrs(

8、i,:) = mean(m(v,:),1); end end endend七、實驗結(jié)果圖1-1 未聚類數(shù)據(jù)圖1-2 聚類后八、 實驗分析算法的時間復雜度上界為O(n*k*t), 其中t是迭代次數(shù)。k-means算法是一種基于樣本間相似性度量的間接聚類方法,屬于非監(jiān)督學習方法。此算法以k為參數(shù),把n 個對象分為k個簇,以使簇內(nèi)具有較高的相似度,而且簇間的相似度較低。相似度的計算根據(jù)一個簇中對象的平均值(被看作簇的重心)來進行。此算法首先隨機選擇k個對象,每個對象代表一個聚類的質(zhì)心。對于其余的每一個對象,根據(jù)該對象與各聚類質(zhì)心之間的距離,把它分配到與之最相似的聚類中。然后,計算每個聚類的新質(zhì)心。重

9、復上述過程,直到準則函數(shù)收斂。k-means算法是一種較典型的逐點修改迭代的動態(tài)聚類算法,其要點是以誤差平方和為準則函數(shù)。逐點修改類中心:一個象元樣本按某一原則,歸屬于某一組類后,就要重新計算這個組類的均值,并且以新的均值作為凝聚中心點進行下一次象元素聚類;逐批修改類中心:在全部象元樣本按某一組的類中心分類之后,再計算修改各類的均值,作為下一次分類的凝聚中心點。實驗二 主成分分析一、實驗目的編程實現(xiàn)主成分的算法。二、實驗內(nèi)容 PCA主成分分析算法。三、實驗原理方法和手段 PCA的原理就是將原來的樣本數(shù)據(jù)投影到一個新的空間中,相當于我們在矩陣分析里面學習的將一組矩陣映射到另外的坐標系下。通過一個

10、轉(zhuǎn)換坐標,也可以理解成把一組坐標轉(zhuǎn)換到另外一組坐標系下,但是在新的坐標系下,表示原來的原本不需要那么多的變量,只需要原來樣本的最大的一個線性無關組的特征值對應的空間的坐標即可。四、實驗條件Matlab2014b五、實驗步驟(1) 求dataAdjust矩陣(2) 求dataAdjust的協(xié)方差矩陣協(xié)方差公式協(xié)方差矩陣(3) 求協(xié)方差矩陣的特征向量及特征值(4) 取特征值最大的的特征向量eigenVectors(5) 降維矩陣finalData = dataAdjust * eigenVectors六、實驗代碼data = 2.5 2.4;0.5 0.7;2.2 2.9;1.9 2.2;3.1

11、3.0;2.3 2.7;2 1.6;1 1.1;1.5 1.6;1.1 0.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 = dataAdj

12、ust * eigenVectors;七、實驗結(jié)果圖2-1 實驗結(jié)果八、實驗分析主成分分析,是考察多個變量間相關性一種多元統(tǒng)計方法,研究如何通過少數(shù)幾個主成分來揭示多個變量間的內(nèi)部結(jié)構(gòu),即從原始變量中導出少數(shù)幾個主成分,使它們盡可能多地保留原始變量的信息,且彼此間互不相關.通常數(shù)學上的處理就是將原來P個指標作線性組合,作為新的綜合指標。實驗三 最近鄰分類器一、實驗目的編程實現(xiàn)最近鄰分類器算法。二、實驗內(nèi)容最近鄰分類器算法,這里采用k近鄰算法。三、實驗原理方法和手段最近鄰分類為監(jiān)督學習方法,已知n個類別,判定給定樣本屬于哪個類別。四、實驗條件Matlab2014b五、實驗步驟(1) 計算樣本到各

13、數(shù)據(jù)集點的距離D 歐式距離 c 絕對值距離 明氏距離 馬氏距離 (為對應的特征值) 余弦距離 (2) 對D排序(3) 給定k值(即鄰居數(shù)),從D中選取k個數(shù)據(jù),統(tǒng)計k個數(shù)據(jù)中所屬類別的個數(shù)C。(4) C中值最大的便是該樣本所屬類別。六、實驗代碼close all;clear;clc;red = randn(100,2)+ones(100,2);red = red ones(100,1);green = randn(100,2)-ones(100,2);green = green ones(100,1)*2;data = red;green; figure;plot(red(:,1),red(:

14、,2),'ro','MarkerSize',4);hold on;plot(green(:,1),green(:,2),'go','MarkerSize',4); blue_sample = randn(1,2); hold on;plot(blue_sample(:,1),blue_sample(:,2),'bo','MarkerSize',4); %give a k valuek = input('input neighbors count');row,col = size(da

15、ta);for i = 1 : row d(:,i) = norm(data(i,1:2) - blue_sample(1,:);endd,idx = sort(d);for i = 1 : k k_vector(:,i) = idx(:,i);end %caculate categoryredCount = 0;greenCount = 0;for i = 1 : k tag = data(k_vector(1,i),3); if (tag = 1) redCount = redCount+1; else if(tag = 2) greenCount = greenCount+1; end

16、endend if(redCount > greenCount) blue_sample = blue_sample 1; disp('sample is red');else blue_sample = blue_sample 2; disp('sample is green');end七、實驗結(jié)果圖3-1 實驗結(jié)果八、實驗分析KNN 算法本身簡單有效,它是一種 lazy-learning 算法,分類器不需要使用訓練集進行訓練,訓練時間復雜度為0。KNN 分類的計算復雜度和訓練集中的文檔數(shù)目成正比,也就是說,如果訓練集中文檔總數(shù)為 n,那么 KNN 的分

17、類時間復雜度為O(n)。實驗四 貝葉斯分類器一、實驗目的編程實現(xiàn)貝葉斯分類器算法。二、實驗內(nèi)容貝葉斯分類器算法。三、實驗原理方法和手段已知類別,給定一樣本判定樣本所屬類別。四、實驗條件Matlab2014b五、實驗步驟(1) 已知k個類別(2) 計算k個類別所占全體的比重Pr(k)(3) 給定值radius,在二維空間,以樣本點為圓心以radiu為半徑作圓。(4) 統(tǒng)計圓內(nèi)k個類別的分布情況(在圓內(nèi)包含該類多少個數(shù)據(jù)點)記為C(k)(5) 計算圓內(nèi)分布比重Pr_c(k)(6) 根據(jù)貝葉斯公式計算各類最終比重,取值大的作為樣本類別。六、實驗代碼clear;close all;%init two

18、clutersrH = randi(80,100);gH = randi(80,100);red = randn(rH,2)+ones(rH,2);green = randn(gH,2)-ones(gH,2); red = red ones(rH,1);green = green ones(gH,1)*2;data = red;green; total = rH+gH;pr_red = rH/(total);pr_green = gH/(total); %init a samplesample_blue = randn(1,2); plot(red(:,1),red(:,2),'ro&

19、#39;,'MarkerSize',4);hold on;plot(green(:,1),green(:,2),'go','MarkerSize',4);hold on;plot(sample_blue(:,1),sample_blue(:,2),'b*','MarkerSize',6); for i = 1 : total p = data(i,1:2); tmp = sample_blue - p; d(:,i) = sqrt(dot(tmp,tmp);end%select an circle(center i

20、s sample_blue)radius = 5;redCount = 0;greenCount = 0;for i = 1 : total if(d(:,i) <= radius) if(data(i,3) = 1)%red cluster redCount = redCount + 1; else if(data(i,3) = 2)%green cluster greenCount = greenCount+1; end end endend pr_redInCircle = redCount/rH;pr_greenInCircle = greenCount/gH; pr_redFi

21、nal = pr_red * pr_redInCircle;pr_greenFinal = pr_green * pr_greenInCircle; fprintf('final red pr = %fn',pr_redFinal);fprintf('final green pr = %fn',pr_greenFinal);if(pr_redFinal >= pr_greenFinal) disp('sample is red cluster');else disp('sample is green cluster');en

22、d七、實驗結(jié)果圖4-1 實驗結(jié)果八、實驗分析對于某些類型的概率模型,在監(jiān)督式學習的樣本集中能獲取得非常好的分類效果。在許多實際應用中,樸素貝葉斯模型參數(shù)估計使用最大似然估計方法;換而言之,在不用到貝葉斯概率或者任何貝葉斯模型的情況下,樸素貝葉斯模型也能奏效。實驗五 特征提取算法一、實驗目的編程實現(xiàn)特征提取算法。二、實驗內(nèi)容harris特征提取算法。三、實驗原理方法和手段圖像中的特征點即為圖像邊緣直線形成夾角而成的角點。圖像中較突出的尖銳點和其它有特殊意義的點,這些點反映了地物的特征,對研究具有重要意義。在點特征提取的算法中,主要包含了Susan算法、Harris算法和Moravec算法,這些算

23、法可以對圖像中角點進行提取,從而應用于實踐生產(chǎn)中,例如對建筑物角點提取,人臉中眼睛部位角點的提取。四、實驗條件Matlab2014b五、實驗步驟(1) 計算圖像I(x,y)在x和y方向的梯度,.(2)計算圖像兩個方向梯度的乘積(3)使用高斯函數(shù)對(4)計算每個像素的Harris響應值R,并對小于某一閾值t的R置為零(5)在3*3或5*5的鄰域內(nèi)進行非最大值抑制,局部最大值點即為圖像中的角點六、實驗代碼%function: % Harris角點檢測 %注意: % matlab自帶的corner函數(shù)即可實現(xiàn)harris角點檢測。但考慮到harris角點的經(jīng)典性,本程序?qū)⑵鋵崿F(xiàn),純粹出于學習目的,了

24、解特征點檢測的方法。 % 其中所有參數(shù)均與matlab默認保持一致 % %清空變量,讀取圖像 clear;close all src= imread('images/girl.jpg'); gray=rgb2gray(src); gray = im2double(gray); %縮放圖像,減少運算時間 gray = imresize(gray, 0.2); %計算X方向和Y方向的梯度及其平方 X=imfilter(gray,-1 0 1); X2=X.2; Y=imfilter(gray,-1 0 1'); Y2=Y.2; XY=X.*Y; %生成高斯卷積核,對X2、Y2、XY進行平滑 h=fspecial('gaussian',5 1,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); for h=1:height for w=1:width %計算M矩陣 M=A(h,w) C(h,w);C(h,w) B(h,w); %計算R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論