Matlab LDA学习

1、关于SVD分解

[U1,D1,V1] = svd(Ht,0);     % Ht = U1 D1 V1'

如果Ht是10*5维,那么上行代码得到的结果为:U1 10*5, D1 5*5, V1 5*5;

否则[U1,D1,V1] = svd(Ht);     % Ht = U1 D1 V1' 得到的结果为 U1 10*10, D1 10*5, V1 5*5;

转载于:https://www.cnblogs.com/Jerry-PR/articles/5264435.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LDA在不同领域有不同的含义。在自然语言处理领域,LDA指的是隐含狄利克雷分布(Latent Dirichlet Allocation),是一种处理文档的主题模型。而在监督学习LDA指的是线性判别分析(Linear Discriminant Analysis),是一种常用的降维方法。[1][2] 在Matlab,可以使用LDA算法对数据进行降维。下面是一个使用Matlab实现LDA的示例代码: ```matlab % 加载数据 data = readmatrix('iris.xlsx'); % 将数据按行归一化 data_norm = zscore(data(:,1:end-1)); % 计算类内散度矩阵和类间散度矩阵 S_w = zeros(size(data_norm,2), size(data_norm,2)); S_b = zeros(size(data_norm,2), size(data_norm,2)); labels = unique(data(:,end)); for i = 1:length(labels) label = labels(i); X = data_norm(data(:,end)==label, :); n = size(X, 1); mu = mean(X); X_c = X - mu; S_w = S_w + (X_c'*X_c) / (n-1); mu_all = mean(data_norm); mu_c = mu - mu_all; S_b = S_b + n * (mu_c' * mu_c); end % 计算特征值和特征向量 [V, D] = eig(S_b, S_w); [D_sorted, idx] = sort(diag(D),'descend'); V_sorted = V(:,idx); % 选择前k个特征向量 k = 2; % 降到2维 W = V_sorted(:,1:k); % 计算降维后的数据点 data_lda = data_norm * W; % 绘制降维结果 gscatter(data_lda(:,1), data_lda(:,2), data(:,end)); xlabel('Component 1'); ylabel('Component 2'); title('LDA of Iris Dataset'); ``` 这段代码使用了鸢尾花数据集(iris.xlsx)进行LDA降维,并将降维后的数据点在二维空间进行可视化展示。[3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值