线性判别分析(Linear Discriminant Analysis ,简称LDA)

线性判别分析(Linear Discriminant Analysis ,简称LDA)是一种经典的线性学习方法,在二分类问题上最早由【Fisher,1936】提出,也称为“Fisher 判别分析”
LDA的思想:给定训练样本例集,设法将例投影在一条直线上,使得同类例的投影点近可能近,异类样例尽可能地远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。如下图所示:
这里写图片描述
欲使同类例的投影点尽可能近,可以让同类例投影点的协方差尽可能小,而欲使异类样例投影点尽可能远可以让类中心之间的距离尽可能的大,同时考虑可得欲最大化的目标:
这里写图片描述
定义“类内散度矩阵”
这里写图片描述
“类间散度矩阵”
这里写图片描述
则最大化目标可写为:
这里写图片描述
其中u为数据的均值,这就是LDA欲最大化得目标。

matlab代码如下:

%%%%%%%%%%%%%%%%%%%%%%%%
%LDA线性判别式分析算法
%%%%%%%%%%%%%%%%%%%%%%%
clc;clear;
 x1=[4,2;2,4;2,3;3,6;4,4];
 x2=[9,10;6,8;9,5;8,7;10,8];

figure(1)
plot(x1(:,1),x1(:,2),'b*');
hold on;
plot(x2(:,1),x2(:,2),'ro');
title('数据分布');

u1=mean(x1)';%均值
u2=mean(x2)';%均值
s1=cov(x1);%协方差矩阵
s2=cov(x2);%协方差矩阵
%类内散度矩阵
sw=s1+s2;
%类间散度矩阵
sb=(u1-u2)*(u1-u2)';
invSw=inv(sw);
invSw_by_SB=invSw*sb;
%求最大特征值和特征向量
[V,D]=eig(invSw_by_SB);
[a,b]=max(max(D));
W=V(:,b);
k=W(2)/W(1);
%%%%%%%%训练后的数据
new_x1=x1*W;
new_x2=x2*W;

figure(2)
X1=0:0.1:10;
Y1=k.*X1;
plot(x1(:,1),x1(:,2),'b*');
hold on;
plot(x2(:,1),x2(:,2),'ro');
plot(X1,Y1);
%%%画投影
Xt1=(x1(:,1)+k.*x1(:,2))/(k*k+1);
Yt1=k.*Xt1;
Xt2=(x2(:,1)+k.*x2(:,2))/(k*k+1);
Yt2=k.*Xt2;
plot(Xt1,Yt1,'vc');
plot(Xt2,Yt2,'vc');
hold off;
grid on;

prediction=[7 3.46];
result=prediction*W;
T=new_x1-result;
T1=new_x2-result;
if(min(abs(T1))>min(abs(T)))
    disp('1');
else
    disp('2');
end
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: fulllda = lineardiscriminantanalysis() 是指创建一个线性判别分析Linear Discriminant AnalysisLDA)的对象 fulllda线性判别分析是一种常见的监督学习方法,广泛应用于分类问题中。它的主要思想是将不同类别的样本在低维空间中分离开来,使得同一类别的样本距离尽可能近,不同类别的样本距离尽可能远。 fulllda = lineardiscriminantanalysis() 中的 lineardiscriminantanalysis() 是 Python 中 Scikit-learn 库中 LDA 的一个实现,它提供了一系列方法和属性,方便用户对 LDA 对象进行模型训练、预测和评估操作。 其中,fulllda 表示创建的线性判别分析对象的名称,在后续的程序中可以通过该名称直接调用该对象,进行分类任务的操作。 ### 回答2: fulllda = lineardiscriminantanalysis() 是Python编程语言中的一行代码,它是用于创建线性判别分析Linear Discriminant AnalysisLDA)对象的语句。LDA是一种常用的多变量统计分析方法,它是一个有监督的线性降维技术,用于将高维数据降维到低维空间中,以便更好地进行分类或聚类等任务。 这个函数的完整名称是 sklearn.discriminant_analysis.LinearDiscriminantAnalysis(),它是Python第三方库scikit-learn中的一个函数。在使用这个函数时,需要先导入所需的库:from sklearn.discriminant_analysis import LinearDiscriminantAnalysis。使用LDA的主要步骤包括载入数据,实例化模型对象,拟合模型,以及使用模型进行预测等。 fulllda = lineardiscriminantanalysis() 创建的LDA对象可以用于数据处理和分析的各个阶段,包括数据预处理、特征提取、模型拟合、结果预测等。在建模过程中,可以通过调整LDA的参数,如正则化参数和降维维度等,来获得更好的效果。LDA作为一种强大而灵活的有监督学习算法,被广泛应用于机器学习、数据挖掘和图像处理等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值