MATLAB實現LDA線性判別分析

2021-08-30 19:41:39 字數 2227 閱讀 5078

**如下

clear all;close all;clc;

x=[0.697,0.774,0.634,0.608,0.556,0.403,0.481,0.437,0.666,0.243,0.245,0.343,0.639,0.657,0.360,0.593,0.719];

y=[0.460,0.376,0.264,0.318,0.215,0.237,0.149,0.211,0.091,0.267,0.057,0.099,0.161,0.198,0.370,0.042,0.103];

z=[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0];

%data=[x;y;z]';

data=[4,2,2,3,4,9,6,9,8,10

2,4,3,6,4,10,8,5,7,8

1,1,1,1,1,0,0,0,0,0]';

[m,n]=size(data);

for i=1:m

if data(i,3)==1

plot(data(i,1),data(i,2),'r.','markersize', 12);hold on;

endif data(i,3)==0

plot(data(i,1),data(i,2),'b.','markersize', 12);

endendnew_data=zeros(m,n-1);

cen1=zeros(1,2);cen0=zeros(1,2);%定義類中心

sum1=zeros(1,2);sum0=zeros(1,2);

num1=0;num0=0;

%計算類中心

for i=1:m

if data(i,3)==1

sum1(1,1)=sum1(1,1)+data(i,1);

sum1(1,2)=sum1(1,1)+data(i,2);

num1=num1+1;

endif data(i,3)==0

sum0(1,1)=sum0(1,1)+data(i,1);

sum0(1,2)=sum0(1,2)+data(i,2);

num0=num0+1;

endendcen0=sum0/num0;cen1=sum1/num1;

%計算類內散度矩陣sw

sw=zeros(2,2);

for i=1:m

if data(i,3)==1

sw=sw+(data(i,[1 2])-cen1(1,:))'*(data(i,[1 2])-cen1(1,:));

endif data(i,3)==0

sw=sw+(data(i,[1 2])-cen0(1,:))'*(data(i,[1 2])-cen0(1,:));

endend%計算類間散度矩陣sb;

sb=(cen0-cen1)'*(cen0-cen1);

[l,d]=eigs(sw\sb',1);%計算最大特徵值和特徵向量

%顯示投影線

k=l(1)/l(2);

b=0;

xx=0:10;

yy=k*xx;

plot(xx,yy)

%計算投影點並顯示

new_data(:,1)=(k*data(:,2)+data(:,1))/(k*k+1);

new_data(:,2)=k*new_data(:,1);

new_data(:,3)=data(:,3);

for i=1:m

if new_data(i,3)==1

plot(new_data(i,1),new_data(i,2),'r+','markersize', 5);

endif new_data(i,3)==0

plot(new_data(i,1),new_data(i,2),'b+','markersize', 5);

endend%axis([0 1 0 1])

axis([0 15 0 15])

hold on;

下面是執行後的結果

下面是用周志華西瓜書資料集進行的,效果沒有上面的明顯

還進行過二組平行直線的判別。結果沒有很好符合。可能是選擇特徵向量時捨去的那部分導致的。

LDA 線性判別回歸

lda和pca一樣都是降維演算法,但不同的是lda是有監督的降維演算法,它的目的是將不同類別的資料降維後仍能較好的區別開。而pca是無監督的演算法,它的目的是將樣本資料降維後仍保留樣本資料間的方差。lda認為不同類的樣本服從均值不同的高斯分布,主要根據均值作為降維的導向,所以它在處理非高斯分布的資料...

LDA 線性判別分析 Fisher線性判別

1.lda是什麼 線性判別式分析 linear discriminant analysis 簡稱為lda。也稱為fisher線性判別 fisher linear discriminant,fld 是模式識別的經典演算法,在1996年由belhumeur引入模式識別和人工智慧領域。基本思想是將高維的模...

LDA(線性判別分析) python實現

求解最佳投影方向,使得同類投影點盡可能的進,異類投影點盡可能的遠 同類投影點距離用同類樣本協方差矩陣表示 omega t sigma i omega quad 異類投影點距離 omega t mu 0 omega t mu 1 2 2 mu i 優化函式 j omega frac 求上述函式極大值,...