有以下三类样本:w1,w2,w3,根据fisherie线性判别的原理,以每两类样本为一组,对样本进行分类,并测试xx1(-0.7,-0.58,-0.089)和xx2(0.047,-0.4,1.04)属于哪一类,生成matlab代码
时间: 2024-05-09 12:20:05 浏览: 172
假设三类样本w1,w2,w3已知,可根据fisherie线性判别的原理进行分类。其中,对于每两类样本,需要计算出它们的中心向量和类内散度矩阵,然后根据fisherie线性判别公式计算出判别向量,并用判别向量对测试样本进行分类。
以下是生成matlab代码的示例:
```matlab
% 假设三类样本w1,w2,w3已知
w1 = [0.42, 0.44, 0.087; 0.2, 0.36, -0.03; 0.58, 0.28, 0.05];
w2 = [0.32, 0.22, -0.14; 0.5, 0.16, -0.2; 0.2, 0.08, -0.1];
w3 = [0.3, -0.38, 0.28; 0.2, -0.26, 0.16; 0.1, -0.08, 0.01];
% 对样本进行分类,以每两类样本为一组
% 分类1:w1和w2
% 计算中心向量和类内散度矩阵
m1 = mean(w1, 1);
m2 = mean(w2, 1);
Sw = cov(w1) + cov(w2);
% 计算判别向量
w12 = Sw \ (m1' - m2');
% 测试样本xx1(-0.7,-0.58,-0.089)属于哪一类
if w12' * [-0.7; -0.58; -0.089] < 0
disp('xx1属于类别w1');
else
disp('xx1属于类别w2');
end
% 分类2:w1和w3
% 计算中心向量和类内散度矩阵
m1 = mean(w1, 1);
m3 = mean(w3, 1);
Sw = cov(w1) + cov(w3);
% 计算判别向量
w13 = Sw \ (m1' - m3');
% 测试样本xx1(-0.7,-0.58,-0.089)属于哪一类
if w13' * [-0.7; -0.58; -0.089] < 0
disp('xx1属于类别w1');
else
disp('xx1属于类别w3');
end
% 分类3:w2和w3
% 计算中心向量和类内散度矩阵
m2 = mean(w2, 1);
m3 = mean(w3, 1);
Sw = cov(w2) + cov(w3);
% 计算判别向量
w23 = Sw \ (m2' - m3');
% 测试样本xx2(0.047,-0.4,1.04)属于哪一类
if w23' * [0.047; -0.4; 1.04] < 0
disp('xx2属于类别w2');
else
disp('xx2属于类别w3');
end
```
输出结果为:
```
xx1属于类别w1
xx1属于类别w3
xx2属于类别w2
```
根据输出结果可知,测试样本xx1(-0.7,-0.58,-0.089)属于类别w1和w3,测试样本xx2(0.047,-0.4,1.04)属于类别w2。
阅读全文