Fisher線性判別算法原理及實現 MATLAB

Fisher線性判別算法原理及實現 MATLAB

一、Fisher判別器原理

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

二、代碼實現

clc;
close all;
clear;
%% 生成數據
rng(2020);   %指定一個種子
mu1 = [0 3];
sigma1 = [0.5 0; 0 0.5];
data1 = mvnrnd(mu1,sigma1,300); %生成一個300*2的矩陣,每一列的數據分別以03為均值,標準差都為0.5rng(2021);  %指定一個種子
mu2 = [6 7];
sigma2 = [0.5 0; 0 0.5];
data2 = mvnrnd(mu2,sigma2,300); %生成一個300*2的矩陣,每一列的數據分別以67為均值,標準差都為0.5% rng(2022);  %指定一個種子
% mu3 = [5 -5];
% sigma3 = [0.5 0; 
%          0 0.5];
% data3 = mvnrnd(mu3,sigma3,300); %生成一個300*2的矩陣,每一列的數據分別以5-5為均值,標準差都為0.5%% 
figure(1),plot(data1(:,1),data1(:,2),'r+');hold on;
plot(data2(:,1),data2(:,2),'b*');hold on;
% figure(3),plot(data3(:,1),data3(:,2),'m^');hold on;%%
mu_1=mean(data1,1);  %求data1數據集的均值 mean是求每一列的均值
mu_2=mean(data2,1);  %求data2數據集的均值 mean是求每一列的均值
tmp=data1-repmat(mu_1,[size(data1,1),1]); %size(data1,1)返回data1第一維的大小 repmat將mu_1矩陣當成一個數,然后按后面的向量排列
S1=tmp'*tmp;   %計算出S1 下面的操作是一樣的
tmp=data2-repmat(mu_2,[size(data2,1),1]);
S2=tmp'*tmp;
Sw=S1+S2;
w_star=Sw\(mu_1-mu_2)';  %這邊直接用結論 注意這里的mu_1 mu_2是行向量,而PPT上的為列向量,所以多了個轉置,實際上是一樣的%% Plot w_star
Data=[data1;data2]; %將兩個數據集合并成一個數據集
[xmin,ymin]=min(Data,[],1); %返回每一列的最小值
[xmax,ymax]=max(Data,[],1); %返回每一列的最大值
X=xmin:0.1:xmax; %采樣
k=w_star(2)/(w_star(1)+eps);%求出判別函數的斜率
plot(X,k*X-4,'k--'); %畫出判別函數,-4只是上下平移,并不會影響到判別函數的方向,這里只是為了不讓它穿過樣本%%
w_star=-w_star;  %反向
y1=data1*w_star; %計算data1中每一個樣本的投影
y2=data2*w_star; %計算data2中每一個樣本的投影
figure(2),plot(y1,zeros(length(y1)),'r+');hold on;
plot(y2,zeros(length(y2)),'b*');hold on; %橫坐標是它們的投影,縱坐標取零是便于在一維中比較,可以發現兩類樣本分開了%% Sw-1Sb特征值分解
Sb=(mu_1-mu_2)'*(mu_1-mu_2); %注意這里的mu_1 mu_2是行向量,而PPT上的為列向量,所以多了個轉置,實際上是一樣的
Tmp=Sw\Sb; % Jf矩陣
[V,D]=eig(Tmp); %V儲存特征向量,D儲存特征值,D是個對角陣,特征值儲存在對角線上
D=diag(D); %提取出特征值行向量
[~,ind]=max(D);%最大特征值的序號
v=V(:,ind); %提取出與最大特征值對應的特征向量
k1=v(2)/(v(1)+eps);
figure(3),plot(data1(:,1),data1(:,2),'r+');hold on;
plot(data2(:,1),data2(:,2),'b*');hold on;
plot(X,k*X-4,'k--');hold on;
plot(X,k1*X-6,'m--'); %可以發現與第一種方法得到的結果是一樣的%% G(x)=w'x+w0
mu_y1=mean(y1); %計算data1數據投影的平均值
mu_y2=mean(y2); %計算data2數據投影的平均值
d=(mu_y1+mu_y2)/2; %d就是閾值
w0=-d;
figure(4),plot(data1(:,1),data1(:,2),'r+');hold on;
plot(data2(:,1),data2(:,2),'b*');hold on;
plot(X,k*X-4,'k--');hold on;
Y=(-w_star(1)*X-w0)/(w_star(2));%G(x)=0解出y即可 注意x向量的第一個元素是橫坐標,第二個元素是縱坐標
plot(X,Y,'m-');
axis equal;

三、實驗結果

Figure 1:
在這里插入圖片描述

Figure 2:
在這里插入圖片描述
Figure 3:
在這里插入圖片描述
Figure 4:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258339.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258339.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258339.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大話設計模式之外觀模式

年年作品展,歲歲不相同,鵝黃新綠漣漪泛起思想的火花卻不盡相同。十期的作品展,從13年3月20號開始到完美落幕,時至今日,她已經在我的記憶中成為過去。這朵小小的浪花激起的漣漪漸漸褪去,或許已沒有或許&…

rdp協議打開 windows_CVE-2019-1182 windows 遠程桌面RDP協議漏洞修復

原標題:CVE-2019-1182 windows 遠程桌面RDP協議漏洞修復2019年8月14日,微軟發布更新了windows的系統補丁,代號:CVE-2019-1181,CVE-2019-1182補丁針對與windows遠程桌面遠程代碼執行漏洞進行了全面的修復,根…

HK算法原理及MATLAB實現

HK算法原理及MATLAB實現 一、編程原理 說明: 1、綠色框圖中,當alpha取為最優權向量時,會使 取為最小值。arg的意思是當后面那個函數滿足時,取出它的自變量的值。 2、注意后面那個式子是對b求偏導 3、e(t)大于0時,下…

軟件工程的實踐項目的自我目標

對實踐項目完成后學習到的能力的預期 1.要學會java的相關知識,并能利用java做一個項目,能知道做一個項目的基本流程。可以先是一個小項目,之后再根據自身情況進行嘗試。 2.學會團隊協作,之前的數據庫實踐大多是一個人完成的&#…

《數據驅動安全:數據安全分析、可視化和儀表盤》一1.2.4 統計學

本節書摘來異步社區《數據驅動安全:數據安全分析、可視化和儀表盤》一書中的第1章 ,第1.2.4節,[美]杰雅克布(Jay Jacobs)鮑布魯迪斯(Bob Rudis) 著 薛杰 王占一 張卓 胡開勇 蔣夢飏 趙爽 …

python列反過來_xlwings 教程:使用Python更快速地處理Excel

Excel在當今商業中的使用非常普遍。在Dataquest,出于很多原因,我們通常推薦使用代碼處理數據,并且我們的許多數據科學課程的目標是教授數據分析和數據科學的高效編碼。但是,無論您多么喜歡使用Python,在一天結束時&…

多類線性分類器算法原理及代碼實現 MATLAB

多類線性分類器算法原理及代碼實現 MATLAB 一、算法原理 下面舉例說明為何藍圈部分在case2中是確定的而在case1中不確定: 二、代碼實現 1、HK函數 function [] HK(w1_data,w2_data) %w1_data為第一類數據集 w2_data為第二類數據集 %此函數的作用為用HK算法對輸…

(轉) C#如何使用異步編程

怎么使用異步,就是用委托進行處理,如果委托對象在調用列表中只有一個方法,它就可以異步執行這個方法。委托類有兩個方法,叫做BeginInvoke和EndInvoke,它們是用來異步執行使用。 異步有三種模式 等待模式,在…

javascript 的 ~ 操作符作用

2019獨角獸企業重金招聘Python工程師標準>>> "~" operator in javascript. For anyone else who also didnt know what it does: it converts -1 to 0,可以節省用來比較-1的情況,如 if (~event.origin.indexOf(http://yoursite.com…

駐定相位原理(POSP)以及線性調頻信號的頻譜

最近看論文遇到了駐定相位原理,問老師直接給了我一本書讓我看,看半天只有一段…不是這個方向的,半路出家做畢業設計需要用到這個定理,有錯誤的話請不吝賜教。 一、駐定相位原理 在數字信號處理中,經常需要將一個時域…

vue怎么合并兩個視頻_【軟件分享】視頻分割合并軟件哪款好用呢?怎么剪切合并視頻?...

現在有很多小伙伴都喜歡喜歡自己拍視頻上傳到各大視頻平臺,有時候會遇到關于視頻剪輯方面的難題,比如說,視頻怎么剪切?怎么將兩段小視頻合并成一個呢?這些都是一些比較常常遇到的問題,今天小編就給大家介紹…

怎樣根據字段域查找到其在數據庫中關系與屬性

Infor SyteLine ERP中,很多時候需要做維護,我們需要從打開的window窗口的form中某一個輸入Textbox域或是DropDownList域,去找到它是綁定了數據庫中的哪一張表,哪一個字段的? 其相關的關系或是屬性等。比如下面這個form…

【手勢交互】9. PS Move

索尼研發體感控制技術已有10年,在過去那么多年里。嘗試了3D攝像頭、超聲波和電磁感應等各種技術。最后還是覺得眼下的MOVE所使用的技術最為合適。PS Move是索尼于2010年9月份推出。用來讓PS3主機具備動態感應功能的控制器。他利用動態控制器(手柄&#x…

多普勒效應及多普勒頻移的簡單推導

多普勒效應及多普勒頻移的簡單推導 fd≡fR?fT(1)f_d\equiv f_R-f_T \tag{1} fd?≡fR??fT?(1) ??式中,fdf_dfd?表示多普勒頻移,fRf_RfR?表示目標回波的頻率(Hz),fTf_TfT?表示發射信號的頻率(Hz)。 多普勒頻移…

amazons3 檢查連接是否_鋼筋機械連接接頭如何檢查是否合格?抽檢數量、合格率是多少?...

一、鋼筋機械連接介紹1、鋼筋機械連接在連接區段內接頭率的規定(35d):★接頭宜設置在結構構件中受拉應力較小的部位,當需要在高應力部位設置時,在同一連接區段內Ⅲ接頭的接頭率不應大于25%,Ⅱ接頭率不應大于50%,Ⅰ接頭…

學容器必須懂 bridge 網絡 - 每天5分鐘玩轉 Docker 容器技術(32)

上一節我們討論了 none 和 host 類型的容器網絡,本節學習應用最廣泛也是默認的 bridge 網絡。 Docker 安裝時會創建一個 命名為 docker0 的 linux bridge。如果不指定--network,創建的容器默認都會掛到 docker0 上。 當前 docker0 上沒有任何其他網絡設備…

駐定相位原理(POSP)的簡單應用

在SAR雷達成像中,POSP是相當基礎重要的一個定理,一般在對回波做傅里葉變換時經常用到,一般在論文的開頭就會出現。 ??下面簡單復習一下POSP的步驟: 1:列出傅里葉變換表達式 2:對相位在駐定相位點處泰勒展…

(轉)Unity3DUnity3D在android下調試

轉自:http://blog.csdn.net/zuoyamin/article/details/11827309 一、工具準備 1.JDK——由于android是基于Java平臺開發的,jdk是必須要安裝的。下載地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32…

Windows系統時間同步出錯解決辦法

有時候我們設置本地時間與Internet時間同步時,經常連接服務器time.windows.com超時,導致時間同步失敗,解決辦法如下: 利用快捷鍵"WinR"調出運行框,輸入:w32tm /register按回車,執行完…

vs2019 更新安裝錯誤_本月Windows 10累積更新再出BUG:安裝時跳出錯誤代碼

在本月的補丁星期二活動日中,微軟為所有支持的 Windows 10 系統帶來了新一輪的累積更新。和以往一樣,本次發布的 KB4566782 和 KB4565351 兩個累積更新又出現了新的 BUG。根據用戶反饋,Windows10 Version 2004/1909/1903 功能更新安裝這些累積…