<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                最近開始了模式識別的學習,在此之前需要對模式和模式類的概念有一個了解,這里使用MATLAB實現一些模式類的生成。在此之前,引用百科上對于模式識別和模式類的定義,也算加深以下了解: >模式識別(Pattern Recognition):人類在日常生活的每個環節,從事著模式識別的活動。可以說每個有正常思維的人,在他沒有入睡時都在進行模式識別的活動。坐公共汽車找汽車站,騎車判別可行進道路,對觀察到的現象作出判斷,對聽到的聲音作出反應,判斷東西的好與壞以及水果的成熟與否等等都是人們判斷是非,判別事物的過程。但是對模式識別這個詞就顯得陌生而難以理解了。確切地說,模式識別在這里是針對讓計算機來判斷事物而提出的,如檢測病理切片中是否有癌細胞,文字識別,話語識別,圖像中物體識別等等。該學科研究的內容是使機器能做以前只能由人類才能做的事,具備人所具有的、對各種事物與現象進行分析、描述與判斷的部分能力。 模式類與模式,或者模式與樣本在集合論中是子集與元素之間的關系。當用一定的度量來衡量兩個樣本,而找不出它們之間的差別時,它們在這種度量條件下屬于同一個等價類。這就是說它們屬于同一子集,是一個模式,或一個模式類。而不同的模式類之間應該是可以區分的,它們之間應有明確的界線。但是對實際樣本來說,有時又往往不能對它們進行確切的劃分,即在所使用的度量關系中,分屬不同的類別的樣本卻表現出相同的屬性,因而無法確鑿無誤地對它們進行區分。例如在癌癥初期,癌細胞與正常細胞的界線是含糊的,除非醫術有>了進一步發展,能找到更準確有效的分類方法。 下面是練習: 在Matlab 中提供了很多產生隨機數和隨機向量的函數,以及計算隨機函數的概率密度值的函數。下面是幾個較常用的函數:? rand() 生成均勻分布隨機數? randn() 生成高斯分布隨機數? mvnrnd() 生成多元高斯分布的隨機向量矩陣? mvnpdf() 計算多元高斯分布的概率密度函數值 在閱讀了上述函數的MATLAB在線幫助后,完成下面的程序實現,分為三個練習: 練習一:在一維區間[10,70]中,生成1000個均勻分布的隨機數,然后統計并繪制這些數的直方圖;在二維區間[1,5]?[20,30]中,生成5000 個均勻分布的二維隨機點,并繪制出它們的二維散點圖;在三維區間[10,50]?[30,60]?[10,15]中,生成10000 個均勻分布的三維隨機點量,并繪制出它們的三維散點圖。 ~~~ % rand()生成區間[10,70]的1000個隨機數 % 并顯示直方圖 for i = 1:1000 a(i) = rand() * 60 + 10; end b = hist(a, 10:70); figure,bar(10:70, b, 'g'); grid on title('rand()產生1000個[10,70]的隨機數直方圖'); for k = 1:5000 TwoDimension(k,1) = rand() * 4 + 1; TwoDimension(k,2) = rand() * 10 + 20; end figure,plot(TwoDimension(:,1), TwoDimension(:,2), '*'); xlim([0 6]); ylim([10 40]); grid on title('在[1,5]*[20,30]中產生5000個均勻分布的二維隨機點'); for j = 1:10000 ThreeDimension(j,1) = rand() * 40 + 10; ThreeDimension(j,2) = rand() * 30 + 30; ThreeDimension(j,3) = rand() * 5 + 10; end figure,scatter3(ThreeDimension(:,1),ThreeDimension(:,2),ThreeDimension(:,3),'r'); xlim([0 60]); ylim([20 70]); zlim([0 20]); grid on; title('產生10000個均勻分布的三維隨機點'); ~~~ 輸出一維、二維和三維隨機點生成效果(邊界限定參照要求): ![](https://box.kancloud.cn/2016-01-05_568b3687a8dfe.jpg) ![](https://box.kancloud.cn/2016-01-05_568b3687c8e53.jpg) ![](https://box.kancloud.cn/2016-01-05_568b3687dbd9b.jpg) 下面是在練習一基礎上的擴展:利用均勻分布的隨機數函數,編寫可以生成具有三角分布、以及梯形分布的隨機數的函數。用它們生成一定數量的樣本數據,并繪制數據分布圖。 ~~~ % 產生5000個隨機點,然后根據公式剔除三角形外的點 n = 5000; x = rand(n,2) * 2; % 變量名 = @(輸入參數列表)運算表達式 fx = @(x)(x < 1).*(2*x)+(x >= 1).*(4-2*x); g=0:0.2:2; y=fx(g); % 繪制邊界直線,設定直線粗細 figure,plot(g,y,'r-','linewidth',3); hold on % 判斷元素在y軸上的值是否超出三角形的邊界 % 對邊界外的點標記為一個值 for t = 1:n if x(t,2) > fx(x(t,1)) x(t,:) = [0, 0]; end end % 掃描標定的值并刪除這些元素,剩下邊界內的元素 for t = n:-1:1 if x(t,:) == [0, 0] x(t,:) = []; end end plot(x(:,1),x(:,2),'o'); title('若干個三角分布的隨機點'); % 繪制隨機點分布直方圖 [f, y] = hist(x(:,1), g); figure,bar(y,f,1); title('隨機點分布直方圖'); % 產生5000個隨機點,然后根據公式剔除梯形外的點 n = 5000; x = rand(n,2) * 3; % 變量名 = @(輸入參數列表)運算表達式 fx = @(x)(x <= 1).*(3*x)+( x > 1 & x <= 2).*3 + (x > 2).*(9-3*x); g=0:0.1:3; y=fx(g); % 繪制邊界直線,設定直線粗細 figure,plot(g,y,'r-','linewidth',3); hold on % 判斷元素在y軸上的值是否超出梯形的邊界 % 對邊界外的點標記為一個值 for t = 1:n if x(t,2) > fx(x(t,1)) x(t,:) = [0, 0]; end end % 掃描標定的值并刪除這些元素,剩下邊界內的元素 for t = n:-1:1 if x(t,:) == [0, 0] x(t,:) = []; end end plot(x(:,1),x(:,2),'o'); title('若干個梯形分布的隨機點'); % 繪制隨機點分布直方圖 [f, y] = hist(x(:,1), g); figure,bar(y,f,1); title('隨機點分布直方圖'); ~~~ 輸出三角分布和梯形分布的隨機點結果、直方圖: ![](https://box.kancloud.cn/2016-01-05_568b36880446f.jpg) ![](https://box.kancloud.cn/2016-01-05_568b36881fc0d.jpg) ![](https://box.kancloud.cn/2016-01-05_568b368833683.jpg) ![](https://box.kancloud.cn/2016-01-05_568b36884d224.jpg) 練習二:生成兩組各1000個具有不同均值和方差的一維高斯分布的隨機數,然后統計并繪制這些點的直方圖;生成三組各1000 個具有不同均值矢量和協方差矩陣的二維隨機矢量,并繪制出它們的二維散點圖;生成五組各1000個具有不同均值矢量和協方差矩陣的三維隨機矢量,并繪制出它們的三維散點圖。進一步,繪制上述三維隨機矢量數據集合的二維投影散點圖。可以指定模式向量的其中兩個分量,將集合中每個向量的這兩個分量提取出來構成一個2維模式子分量的向量集合,然后在二維平面上畫出該子分量集合的二維散點圖。 ~~~ % 使用randn()兩組1000個隨機數 % 并顯示直方圖 % 產生一個隨機分布的指定均值和方差的矩陣:將randn產生的結果乘以標準差,然后加上期望均值即可。 for i = 1:1000 Gaussian(i,1) = sqrt(1) * randn() + 5; Gaussian(i,2) = sqrt(2) * randn() + 10; end G1 = hist(Gaussian(:,1), 0:20); G2 = hist(Gaussian(:,2), 0:20); figure,subplot(1,2,1),bar(0:20, G1, 'g'); grid on title('均值為5,方差為1的高斯分布隨機數直方圖'); subplot(1,2,2),bar(0:20, G2, 'g'); grid on title('均值為10,方差為2的高斯分布隨機數直方圖'); % mvnrnd(mu,sigma,n) % 產生二維正態隨機數,mu為期望向量,sigma為協方差矩陣,n為規模。 mu = [2 2]; sigma = [1 0; 0 2]; r = mvnrnd(mu,sigma,1000); figure,plot(r(:,1),r(:,2),'r+'); hold on; mu = [7 10]; sigma = [ 3 0; 0 3]; r2 = mvnrnd(mu,sigma,1000); plot(r2(:,1),r2(:,2),'b*') hold on; mu = [15 20]; sigma = [ 2 0; 0 2]; r3 = mvnrnd(mu,sigma,1000); plot(r3(:,1),r3(:,2),'go') grid on; title('三組高斯二維隨機矢量散點圖'); % 產生五組不同的三維高斯隨機矢量 mu1 = [2 2 2]; sigma1 = [1 0 0; 0 2 0; 0 0 3]; r1 = mvnrnd(mu1,sigma1,1000); mu2 = [6 0 -4]; sigma2 = [1 0 0; 0 2 0; 0 0 3]; r2 = mvnrnd(mu2,sigma2,1000); mu3 = [-9 7 0]; sigma3 = [1 0 0; 0 2 0; 0 0 3]; r3 = mvnrnd(mu3,sigma3,1000); mu4 = [0 15 -2]; sigma4 = [1 0 0; 0 2 0; 0 0 3]; r4 = mvnrnd(mu4,sigma4,1000); mu5 = [-12 12 -12]; sigma5 = [1 0 0; 0 2 0; 0 0 3]; r5 = mvnrnd(mu5,sigma5,1000); figure,plot3(r1(:,1),r1(:,2),r1(:,3),'r+',... r2(:,1),r2(:,2),r2(:,3),'g+',... r3(:,1),r3(:,2),r3(:,3),'b+',... r4(:,1),r4(:,2),r4(:,3),'m+',... r5(:,1),r5(:,2),r5(:,3),'k+'); grid on title('五組不同的三維高斯隨機矢量'); % 繪制三維隨機矢量的二維投影散點圖 figure,plot(r1(:,2),r1(:,3),'r+',... r2(:,2),r2(:,3),'g+',... r3(:,2),r3(:,3),'b+',... r4(:,2),r4(:,3),'m+',... r5(:,2),r5(:,3),'k+'); grid on title('三維高斯隨機矢量的二維投影,取第2、3維'); ~~~ ![](https://box.kancloud.cn/2016-01-05_568b36885e8b9.jpg) ![](https://box.kancloud.cn/2016-01-05_568b3688759b1.jpg) ![](https://box.kancloud.cn/2016-01-05_568b368889fb2.jpg) ![](https://box.kancloud.cn/2016-01-05_568b36889f13d.jpg) 練習三:確定一個二維的均值矢量和協方差矩陣,然后利用matlab 中的meshgrid 函數生成一個二維網格,利用mvnpdf 函數計算在每個網格點上的概率密度函數值,并繪制出這些函數值的三維曲面圖。 ~~~ % 用meshgird,mvnpdf等函數繪制三維網格圖 mu = [0 0]; SIGMA = [1 0; 0 1]; [X,Y] = meshgrid(-5:0.2:5, -5:0.2:5); %在XOY面上,產生網格 p = mvnpdf([X(:),Y(:)],mu,SIGMA); % 求取聯合概率密度,相當于Z軸 p = reshape(p,size(X)); % 將Z值對應到相應的坐標上 mesh(X,Y,p); % 繪制 title('三維正態分布圖曲面圖'); ~~~ ![](https://box.kancloud.cn/2016-01-05_568b3688b7d1e.jpg) 擴展實驗2,編寫一個生成N 個d 維向量的混合高斯類數據集的函數。其中,生成的數據集中共有N個模式向量,它們分成c 類。各個類對應的樣本數分別為Ni,i = 1, 2, …, c,服從N(mi,Si),i = 1, 2, …, c 的高斯分布, mi,Si 分別是第i 類的均值向量和協方差矩陣。取不同的值,在二維空間和三維空間中生成數據,并繪制出散點圖進行驗證。這里我們創建一個函數實現這個功能MixGaussian(): ~~~ % 隨機點個數N ,類別C ,維度d ,均值mu, 方差sigma function result = MixGaussian(N, C, d, mu, sigma) color = {'r.', 'g.', 'm.', 'b.', 'k.', 'y.'}; % 用于存放不同類數據的顏色 % if nargin <= 3 & N < 0 & C < 1 & d < 1 % error('參數太少或參數錯誤'); if d == 1 for i = 1 : C for j = 1 : N/C r(j,i) = sqrt(sigma(1,i)) * randn() + mu(1,i); end X = round(mu(1,i)-5); Y = round(mu(1,i) + sqrt(sigma(1,i))+5); b = hist(r(:,i), X:Y); subplot(1,C,i),bar(X:Y, b,'b'); title('三類一維隨機點的分布直方圖'); grid on end elseif d == 2 for i = 1:C r(:,:,i) = mvnrnd(mu(:,:,i),sigma(:,:,i),round(N/C)); plot(r(:,1,i),r(:,2,i),char(color(i))); hold on; end elseif d == 3 for i = 1:C r(:,:,i) = mvnrnd(mu(:,:,i),sigma(:,:,i),round(N/C)); plot3(r(:,1,i),r(:,2,i),r(:,3,i),char(color(i))); hold on; end else disp('維數只能設置為1,2或3'); end result = r; ~~~ 效果如下,根據輸入的維度、方差、均值等參數的不同均可以輸出模式類: ![](https://box.kancloud.cn/2016-01-05_568b3688d6183.jpg) 擴展實驗3,編寫一個繪制由c類共N個d 維模式向量構成的多模式類集合的二維投影繪圖函數。其中,模式的類別標記已知,不同類別的模式繪制時用不同的顏色表示。其中,d維模式的2維子空間,簡單來說就是由d 維模式矢量中的其中2個分量構成向量空間,在作圖時以這兩個分量做為坐標量,這里定義一個函數TwoDProject()。 ~~~ % 輸入數據,輸出二維投影,X,Y為坐標軸選擇 function TwoDProject(data, X, Y) color = {'r.', 'g.', 'm.', 'b.', 'k.', 'y.'}; % 用于存放不同類數據的顏色 figure; [a,b,c] = size(data); if X == 1 && Y == 2 for i = 1:c plot(data(:,X,i),data(:,Y,i),char(color(i))); hold on; end elseif X == 1 && Y == 3 for i = 1:c plot(data(:,X,i),data(:,Y,i),char(color(i))); hold on; end elseif X == 2 && Y == 3 for i = 1:c plot(data(:,X,i),data(:,Y,i),char(color(i))); hold on; end else disp('維數設置錯誤'); end grid on; title('多維隨機點的二維投影圖'); ~~~ ![](https://box.kancloud.cn/2016-01-05_568b368916fb5.jpg) 以上完整代碼可在此處下載:[http://download.csdn.net/detail/liyuefeilong/8499915](http://download.csdn.net/detail/liyuefeilong/8499915)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看