精华内容
下载资源
问答
  • LDA matlab

    2014-09-23 18:30:13
    matlab编写程序,最终实现LDA分析,获得相应数据的结果。
  • LDA matlab软件包

    2014-03-12 11:05:13
    LDA matlab软件包,标准变分贝叶斯估计
  • LDAmatlab函数

    2018-01-11 11:02:17
    线性判别分析的matlab代码,代码有注释
  • lda matlab算法

    2010-04-02 21:10:25
    lda implemented by matlab
  • LDA matlab 源代码

    热门讨论 2011-03-31 12:51:36
    该代码可直接运行,并附有清晰的注释说明,便于读者阅读
  • LDA matlab code

    千次阅读 2014-02-19 13:39:29
    % prophet Mohammed said [ALLAH will help any one helped his/her brother/sister] PBUH %This code to apply LDA (Linear Discriminant Analysis) % for any information please send to engalaatharwat@hotmail
    % prophet Mohammed said [ALLAH will help any one helped his/her brother/sister] PBUH
    %This code to apply LDA (Linear Discriminant Analysis) 
    % for any information please send to engalaatharwat@hotmail.com
    %Egypt - HICIT - +20106091638
    
    % This example deals with 2 classes
    c1=[1 2;2 3;3 3;4 5;5 5]  % the first class 5 observations
    c2=[1 0;2 1;3 1;3 2;5 3;6 5] % the second class 6 observations
    scatter(c1(:,1),c1(:,2),6,'r'),hold on;
    scatter(c2(:,1),c2(:,2),6,'b');
    
    
    % Number of observations of each class
    n1=size(c1,1)
    n2=size(c2,1)
    
    %Mean of each class
    mu1=mean(c1)
    mu2=mean(c2)
    
    % Average of the mean of all classes
    mu=(mu1+mu2)/2
    
    % Center the data (data-mean)
    d1=c1-repmat(mu1,size(c1,1),1)
    d2=c2-repmat(mu2,size(c2,1),1)
    
    
    % Calculate the within class variance (SW)
    s1=d1'*d1
    s2=d2'*d2
    sw=s1+s2
    invsw=inv(sw)
    
    % in case of two classes only use v
    % v=invsw*(mu1-mu2)'
    
    % if more than 2 classes calculate between class variance (SB)
    sb1=n1*(mu1-mu)'*(mu1-mu)
    sb2=n2*(mu2-mu)'*(mu2-mu)
    SB=sb1+sb2
    v=invsw*SB
    
    % find eigne values and eigen vectors of the (v)
    [evec,eval]=eig(v)
    
    % Sort eigen vectors according to eigen values (descending order) and
    % neglect eigen vectors according to small eigen values
    % v=evec(greater eigen value)
    % or use all the eigen vectors
    
    % project the data of the first and second class respectively
    y2=c2*v
    y1=c1*v

    运行结果:

    c1 =

         1     2
         2     3
         3     3
         4     5
         5     5


    c2 =

         1     0
         2     1
         3     1
         3     2
         5     3
         6     5


    n1 =

         5


    n2 =

         6


    mu1 =

        3.0000    3.6000


    mu2 =

        3.3333    2.0000


    mu =

        3.1667    2.8000


    d1 =

       -2.0000   -1.6000
       -1.0000   -0.6000
             0   -0.6000
        1.0000    1.4000
        2.0000    1.4000


    d2 =

       -2.3333   -2.0000
       -1.3333   -1.0000
       -0.3333   -1.0000
       -0.3333         0
        1.6667    1.0000
        2.6667    3.0000


    s1 =

       10.0000    8.0000
        8.0000    7.2000


    s2 =

       17.3333   16.0000
       16.0000   16.0000


    sw =

       27.3333   24.0000
       24.0000   23.2000


    invsw =

        0.3991   -0.4128
       -0.4128    0.4702


    sb1 =

        0.1389   -0.6667
       -0.6667    3.2000


    sb2 =

        0.1667   -0.8000
       -0.8000    3.8400


    SB =

        0.3056   -1.4667
       -1.4667    7.0400


    v =

        0.7274   -3.4917
       -0.8157    3.9156


    evec =

       -0.9790    0.6656
       -0.2040   -0.7463


    eval =

             0         0
             0    4.6430


    y2 =

        0.7274   -3.4917
        0.6391   -3.0679
        1.3666   -6.5596
        0.5508   -2.6440
        1.1900   -5.7119
        0.2859   -1.3725


    y1 =

       -0.9041    4.3394
       -0.9924    4.7633
       -0.2649    1.2716
       -1.1690    5.6110
       -0.4415    2.1193


    我的理解:

    将特征值降序排列,对应的特征向量为:

    w1:evec(:,2)

    w2:evec(:,1)

     z1=c1*evec
    z2=c2*evec
    z1 =

       -1.3869   -0.8271
       -2.5698   -0.9079
       -3.5488   -0.2424
       -4.9357   -1.0695
       -5.9147   -0.4040

    z2 =

       -0.9790    0.6656
       -2.1619    0.5848
       -3.1409    1.2503
       -3.3448    0.5040
       -5.5068    1.0887
       -6.8937    0.2616

    c1*w1>c1*w2,c1属于类别1

    c2*w2>c2*w1,c2属于类别2

    展开全文
  • # -*- coding: utf-8 -*-# author: Xin Chenimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt# 多分类通用:# data 的格式应该是DataFrame的格式,其中前几列为特征,最后一列为标签# label从0...

    # -*- coding: utf-8 -*-

    # author: Xin Chen

    import numpy as np

    import pandas as pd

    import matplotlib.pyplot as plt

    # 多分类通用:

    # data 的格式应该是DataFrame的格式,其中前几列为特征,最后一列为标签

    # label从0开始取得数字

    def calWeights(data, K):

    labels = np.unique(data['label'])

    cNum = len(labels)

    if K >= cNum:

    print 'K is too large, please input again'

    exit(0)

    # Sw 类内散度矩阵

    dim = np.shape(data)[1]-1 # 减1是因为有label

    Sw = np.mat(np.zeros((dim, dim)))

    for i in labels:

    datai = data.ix[data['label'] == i]

    Ci = np.mat(datai.drop('label', axis=1))

    ui = np.mean(Ci, axis=0)

    Si = (Ci-ui).T * (Ci-ui)

    Sw += Si

    # St 全局散度矩阵

    C = np.mat(data.drop('label', axis=1))

    u = np.mean(C, axis=0)

    St = (C-u).T *(C-u)

    # Sb 类间散度矩阵

    Sb = St - Sw

    S = Sw.I * Sb

    eigValues, eigVectors = np.linalg.eig(S) # 用来求特征值和特征向量

    order= eigValues.argsort()[::-1]

    select = order[:K]

    Weights = eigVectors[:, select]

    return Weights

    def LDAplot(data):

    # 也要注意这个函数画的是投影点而不是原始的点

    w = calWeights(data, K=2)

    if np.shape(w)[1] != 2:

    print '维度太大,无法画图!'

    return

    labels = np.unique(data['label'])

    C = np.mat(data.drop('label', axis=1))

    CC = C * w

    corlist = ['r', 'y', 'g', 'b', 'w']

    for i in labels:

    CCi = CC[:, data['label'] == i]

    plt.scatter(CCi[:, 0], CCi[:, 1], c=corlist[i], marker="o")

    plt.show()

    from sklearn import datasets

    iris = datasets.load_iris()

    X = iris.data

    Y = iris.target

    data = pd.DataFrame(X)

    data['label'] = Y

    Weights = calWeights(data, K=2)

    print "opticalweights=", Weights

    LDAplot(data)

    展开全文
  • lda-MATLAB

    2013-03-19 09:44:37
    blei提出的潜在狄利克雷算法的MATLAB实现
  • LDA人脸识别matlab程序代码! LDA人脸识别matlab程序代码! LDA人脸识别matlab程序代码! LDA人脸识别matlab程序代码!
  • LDAmatlab实现

    热门讨论 2012-07-16 14:30:19
    LDA( Linear Discriminant Analysis),很不错
  • LDAmatlab实现

    2013-03-15 16:32:10
    用于铜浮选工况识别的,多类训练集的线性判别分析源代码(matlab
  • 二维LDAmatlab源代码

    2013-10-31 23:01:56
    2D-LDAmatlab 源代码 可运行,有一定的参考价值。可作为实验对比用,也可进一步修改算法。
  • 此为LDA(线性判别分系的matlab代码)有兴趣的可以下,共同学习啊。还是免费的好,大家可以交流一下。
  • LDA分类器 MATLAB

    2015-02-22 00:30:57
    LDA(Linear discriminate analysis) 分类器 。写成了MATLAB函数,效果还不错。
  • LDA详解及其matlab代码

    热门讨论 2015-03-25 10:35:26
    主题模型(Topic Model)LDA详解及其Matlab代码
  • Matlab关于LDA人脸识别-lda.m 请问谁有一些关于 LDA 人脸识别的源程序!谢谢大家了!
  • LDA程序(matlab

    2012-11-06 16:21:24
    老外写的matlab写的LDA程序,初学者好用!
  • LDA人脸识别matlab code

    2011-10-24 00:26:40
    LDA人脸识别 Matlab code 。。。。。。。。。。。
  • LDA算法MATLAB代码及其结果截图

    热门讨论 2010-08-07 17:23:16
    这是一个LDA算法,有实例分析,并给出数据进行验证预测。对于初学者很有帮助。
  • LDA算法对于两类问题的LDA(Matlab实现)1 function [ W] = FisherLDA(w1,w2)2 %W最大特征值对应的特征向量3 %w1 第一类样本4 %w2 第二类样本56 %第一步:计算样本均值向量7 m1=mean(w1);%第一类样本均值8 m2=mean(w2)...

    LDA算法

    对于两类问题的LDA(Matlab实现)

    1 function [ W] = FisherLDA(w1,w2)2 %W最大特征值对应的特征向量3 %w1 第一类样本4 %w2 第二类样本5

    6 %第一步:计算样本均值向量7 m1=mean(w1);%第一类样本均值8 m2=mean(w2);%第二类样本均值9 m=mean([w1;w2]);%总样本均值10

    11 %第二步:计算类内离散度矩阵Sw12 n1=size(w1,1);%第一类样本数13 n2=size(w2,1);%第二类样本数14 %求第一类样本的散列矩阵s115 s1=0;16 for i=1:n117 s1=s1+(w1(i,:)-m1)‘*(w1(i,:)-m1);18 end19 %求第二类样本的散列矩阵s220 s2=0;21 for i=1:n222 s2=s2+(w2(i,:)-m2)‘*(w2(i,:)-m2);23 end24 Sw=(n1*s1+n2*s2)/(n1+n2);25 %第三步:计算类间离散度矩阵Sb26 Sb=(n1*(m-m1)‘*(m-m1)+n2*(m-m2)‘*(m-m2))/(n1+n2);27 %第四步:求最大特征值和特征向量28 %[V,D]=eig(inv(Sw)*Sb);%特征向量V,特征值D29 A = repmat(0.1,[1,size(Sw,1)]);30 B = diag(A);31 [V,D]=eig(inv(Sw + B)*Sb);32 [a,b]=max(max(D));33 W=V(:,b);%最大特征值对应的特征向量34 end

    测试:

    cls1_data=[2.95 6.63;2.53 7.79;3.57 5.65;3.16 5.47];

    cls2_data=[2.58 4.46;2.16 6.22;3.27 3.52];

    %样本投影前

    plot(cls1_data(:,1),cls1_data(:,2),‘.r‘);

    hold on;

    plot(cls2_data(:,1),cls2_data(:,2),‘*b‘);

    hold on;

    W=FisherLDA(cls1_data,cls2_data);

    %样本投影后

    new1=cls1_data*W;

    new2=cls2_data*W;

    k=W(2)/W(1);

    plot([0,6],[0,6*k],‘-k‘);

    axis([2 6 0 11]);

    hold on;

    %画出样本投影到子空间点

    for i=1:4

    temp=cls1_data(i,:);

    newx=(temp(1)+k*temp(2))/(k*k+1);

    newy=k*newx;

    plot(newx,newy,‘*r‘);

    end;

    for i=1:3

    temp=cls2_data(i,:);

    newx=(temp(1)+k*temp(2))/(k*k+1);

    newy=k*newx;

    plot(newx,newy,‘ob‘);

    end;

    结果:

    af58687fe17cc4471b571c9b2c6644bd.png

    原文:http://www.cnblogs.com/simon-c/p/4961942.html

    展开全文
  • LDA算法(MATLAB实现)

    热门讨论 2012-11-06 16:02:33
    matlab写的LDA代码,比较好用!
  • 线性判别式分析(Linear Discriminant Analysis, LDA)算法,利用MATLAB实现。附实例原始代码以及结果图
  • Matlab LDA学习

    2019-09-21 02:54:53
    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,...

    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

    展开全文
  • Latent Dirichlet Allocation的matlab版本。具有很高的参考价值。
  • 实用文案 LDA 人脸识别的 matlab 程序 以下是 LDA 的 m 文件函数 你稍稍改改就能用了 function [eigvector, eigvalue, elapse] = LDA(gnd,options,data) % LDA: Linear Discriminant Analysis % % [eigvector, ...
  • 本文使用LDA作为分类器在matlab下做实验。其中投影转换矩阵W按照LDA的经典理论生成,如下的LDA函数,并返回各个类的投影后的(k-1)维的类均值。LDA.m代码如下:按 Ctrl+C 复制代码function [W,centers]=LDA(Input,...
  • 比较好用的LDA的代码,一个外国人编写的,有8个输入参数可以去调,可以互相学习!!

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 264
精华内容 105
关键字:

ldamatlab

matlab 订阅