Numpy实现LDA

这篇博客探讨了LDA与PCA的区别,并详细解释了LDA的原理。通过Numpy实现的LDA代码示例,展示了如何将二维数据降为一维,同时保持类别间距离增大和类别内散度减小的效果。
摘要由CSDN通过智能技术生成

LDA与PCA的区别如下表:

LDA的原理如下:

LDA降维的流程总结。
 
输入:数据集D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本xi为n维向量,yi∈{C1,C2,...,Ck},降维到的维度d。
 
输出:降维后的样本集$D′$
 
1) 计算类内散度矩阵Sw
2) 计算类间散度矩阵Sb
3) 计算矩阵Sw^−1*Sb
4)计算Sw^−1*Sb的最大的d个特征值和对应的d个特征向量(w1,w2,...wd),得到投影矩阵W
5) 对样本集中的每一个样本特征xi,转化为新的样本zi=WT*xi
6) 得到输出样本集

代码实现如下,这里使用的a,b是Nx2的二维点集合,经过LDA后,二维的点变为一维。更高维度的也是可以做到的。函数里的dim是原始数据的维度,d是想要降到的维度。

def lda():
    a=np.random.randn(100,2)/5 +[2,1]
    b=np.random.randn(100,2)/5 +[1,2]
    dim = a.shape[-1]
    # plt.scatter(a[:, 0], a[:, 1], c='b')
    # plt.scatter(b[:, 0], b[:, 1], c='r')
    # plt.show()
    centroid_a, centroid_b= np.mean(a, axis=0), 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值