⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fld.m

📁 一个matlab的工具包,里面包括一些分类器 例如 KNN KMEAN SVM NETLAB 等等有很多.
💻 M
字号:
function [X_TRAIN_REDUCE, X_TEST_REDUCE] = FLD(X_TRAIN, Y_TRAIN, X_TEST, Y_TEST, NUM_REDUCE_DIM)

if nargin < 5
    NUM_REDUCE_DIM = 5;
end;

lambda = 0.8;
NUM_CLASS = 2;
CLASS_SET = unique(Y_TRAIN);
[NUM_DATA, NUM_FEATURE] = size(X_TRAIN);

% Apply Fisher discriminator
% Compute the within class covariance matrix
COV_IN_CLASS = zeros(NUM_FEATURE, NUM_FEATURE);
for class = 1:NUM_CLASS
    TRAIN_LAST = X_TRAIN(Y_TRAIN == CLASS_SET(class), :);
    [C, N] = size(TRAIN_LAST);
    COV_IN_CLASS = COV_IN_CLASS + cov(TRAIN_LAST) .* (C-1);
end

COV_IN_CLASS = lambda .* COV_IN_CLASS + (1 - lambda) .* diag(diag(COV_IN_CLASS));
fprintf('Finish in class matrix\n');
        
% compute the covariance matrix for between classes    
X_CLASS = zeros(NUM_CLASS, NUM_FEATURE);
COV_BETWEEN_CLASS = zeros(NUM_FEATURE, NUM_FEATURE);
T_MEAN = mean(X_TRAIN);
for class = 1:NUM_CLASS
    TRAIN_LAST = X_TRAIN(Y_TRAIN == CLASS_SET(class), :);
    [C, S] = size(TRAIN_LAST);
    X_CLASS(class, :) = mean(TRAIN_LAST) - T_MEAN;
    COV_BETWEEN_CLASS = COV_BETWEEN_CLASS + (X_CLASS(class, :)' * X_CLASS(class, :)) .* C;
end
fprintf('Finish between class matrix\n');
temp = pinv(COV_IN_CLASS);

fprintf('Finish inverse\n');
temp = temp * COV_BETWEEN_CLASS;
[V, D] = eigs(temp, NUM_REDUCE_DIM);
fprintf('Finish decomposition\n');        

X_TRAIN_REDUCE = X_TRAIN * V;
X_TEST_REDUCE = X_TEST * V;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -