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

📄 bayesclassvalidationset.m

📁 Feature Selection using matlab
💻 M
字号:
%------------------------------------------------------------------
%---------  Bayes Classifier with Gaussian pdf---------------------
%------------------------------------------------------------------

function TargetsProbs = BayesClassValidationSet(...
    TrainSetPatterns, TrainSetTargets, TestSetPatterns)

[NPatternsToTrain, KFeatures] = size(TrainSetPatterns);
CClasses                      = max(TrainSetTargets);

GaussConst = (2*pi)^(-KFeatures/2); % Pre-estimation
Prior      = zeros(1,CClasses);

NTestPatterns  = size(TestSetPatterns,1);
% ------------- Pre-allocate --------------------------------------
TargetsProbs   = zeros(NTestPatterns, CClasses);
% the P(Omega|u) = P(u|\Omega)P(\Omega)

MuV    = zeros(CClasses, KFeatures);
CovMat = zeros(KFeatures, KFeatures, CClasses);
CovDet = zeros(CClasses);
CovInv = zeros(KFeatures, KFeatures, CClasses);
%------------------------------------------------------------------

for IndexClass = 1:CClasses
    TrainSetIndexPerClass= find(TrainSetTargets == IndexClass);
    TrainSetPatternPerClass = TrainSetPatterns( ...
                                       TrainSetIndexPerClass,: );
    MuV(IndexClass,:)         = mean(TrainSetPatternPerClass);
    CovMat(:,:,IndexClass)    = cov(TrainSetPatternPerClass);
    CovDet(IndexClass)        = det(CovMat(:,:,IndexClass));
    if CovDet(IndexClass)    ~= 0
        CovInv(:,:,IndexClass)= inv(CovMat(:,:,IndexClass));
%        Prior(IndexClass)= length(TrainSetIndexPerClass) ...
%                                                 / NTrainPatterns;
        Prior(IndexClass) = 1/CClasses;   % In Test Set no Info
        ClassConst = GaussConst* Prior(IndexClass)* ...
                                         CovDet(IndexClass)^(-0.5);
        % Fastest way to estim. Probs is with Matrix operations
        DistMeanVectorTest = TestSetPatterns - ...
            repmat( MuV(IndexClass,:), NTestPatterns, 1);
        A = DistMeanVectorTest * CovInv(:,:,IndexClass);
        G = sum(A.*DistMeanVectorTest,2);
        TargetsProbs(1:NTestPatterns, IndexClass)= ...
            ClassConst * exp(-0.5*G);
    else % The case of singular covariance matrix is
        % treated with random classification.
        TargetsProbs(1:NTestPatterns, IndexClass) = eps* ...
            rand(NTestPatterns,1);
    end
end

⌨️ 快捷键说明

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