【Matlab】利用Fisher线性分类器训练样本并预测

本文介绍判别分析的基本概念及其在实际问题中的应用,通过一个产品评估案例,详细展示了如何使用Fisher线性判别算法进行分类预测,包括计算平均值、离差矩阵、判别函数及临界值等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.判别分析问题定义

       根据历史上划分类别的有关资料和某种最优准则,确定一种判别方法,判定一个新的样本归属哪一类。
       例如:在天气预报中,我们有一段较长时间关于某地区每天气象的记录资料 ( 晴阴雨、气温、气压、湿度等 ) ,现在想建立一种用连续五天的气象资料来预报第六天是什么天气的方法。这些问题都可以应用判别分析方法予以解决。


2.实例问题

        设某外贸公司生产一种产品,为正式上市之前,将样品寄往12个国家的进口代理商,并附意见调查表,要求对该产品进行评估。评估的内容有式样,包装,耐久性三个方面。评估的结果采用10分制计分,评估后并被要求说明是否愿意购买,调查结果列入表中,表中的分数,高者表示代理商认为其特性良好,否则即较差。问:

   
        今有第13个国家的进口代理商对该产品的评分分别是:式样9分,包装5分,耐久性4分,要预测该国是否愿意购买该产品。  

        利用Fisher算法求解本问题共需要6个步骤:

        1.计算两组的平均值;

        2.计算两组的离差矩阵;

        3.解线性方程组;

        4.根据计算结果,得出判别函数;

        5.求出判别临界值;

        6.对新数据进行判别预测。

Matlab程序如下:

%% 利用Fisher线性分类器训练样本

%待分类的数据
new_data = [9 5 4];%未知类别
%训练数据
data = [9 8 7 1;
    7 6 6 1;
    10 7 8 1;
    8 4 5 1;
    9 9 3 1;
    8 6 7 1;
    7 5 6 1;
    8 4 4 2;
    3 6 6 2;
    6 3 3 2;
    6 4 5 2;
    8 2 2 2];

%1.计算两组的平均值
data1 = data(data(:,4) == 1,1:3);
data2 = data(data(:,4) == 2,1:3);
evg1 = mean(data1);
evg2 = mean(data2);

%2.计算两组的离差矩阵
A = data1 - repmat(evg1,size(data1,1),1);
B = data2 - repmat(evg2,size(data2,1),1);
S1 = A'*A;
S2 = B'*B;
S = S1+S2;

%3.解线性方程组
b = evg1 - evg2;
c = linsolve(S,b');%判别系数

%4.根据计算结果,得出判别函数
sym x;
y = x * c;

%5.求出判别临界值
y1 = evg1 * c;
y2 = evg2 * c;
s = size(data1,1);
t = size(data2,1);
y0 = (s*y1 + t*y2)/(s + t);%临界值

%6.对新数据进行判别预测
y = new_data * c;
if y > y0
    type = 1;
else
    type = 2;
end

if type == 1
    fprintf('购买\n');
elseif type == 2
    fprintf('不购买\n');
end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值