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

📄 perceptron_vccore.m

📁 最新的模式识别分类工具箱,希望对朋友们有用!
💻 M
字号:
% Learns classifier and classifies test set%  using the perceptron learning algorithm%  Works with 2 class labels, any number of features%  when the class labels are 0 and 1.%  Invoke using Perceptron_VC%  % Inputs:% Usage%      [trainError, testError, estTrainLabels, estTestLabels] = ...%           Perceptron_VCcore(trainFeatures, trainLabels,algParam ,testFeatures, testLabels)% where%% Inputs:% 	trainFeatures  - the training set vectors, one vector per column%	trainLabels    - the labels of the above%       algParam       - algorithm parameters%	                  Number of iterations, or weights vector, or [weights, number of iterations]%       testFeatures   - test set, one column per vector%       testLabels     - labels  for test set%% Outputs%	trainError     - the error rate on the training set (one entry per%	                   class + total error)%	testError      - the error rate on the test set (one entry per class%	                  + total error)%       estTrainLabels - the labels produced by the algorithm for the%                          training samples%       estTestLabels - the labels produced by the algorithm for the%                          test samplesfunction   [trainError,testError, testTrainLabels, estTestLabels] = ...    Perceptron_VCcore(trainFeatures, trainLabels,algParam,testFeatures, testLabels)[Nclasses, classes] = find_classes([trainLabels(:);testLabels(:)]);if ( max(classes) > 1 | min(classes < 0)),  fprintf('When invoking this classifier, use only labels 0 and 1\n');  estTrainLabels = zeros(size(trainLabels));  estTestLabels  = zeros(size(testLabels));  return;end[Dim, r] = size(trainFeatures);%Weighted Perceptron or not?switch length(algParam),case r + 1,    %Ada boost form    p           = algParam(1:end-1);    max_iter    = algParam(end);case {r,0},    %No parameter given    p           = ones(1,r);    max_iter    = 5000;otherwise    %Number of iterations given    max_iter    = algParam;    p           = ones(1,r);endtrainFeatures = [trainFeatures ; ones(1,r)];train_one      = find(trainLabels == 1);train_zero     = find(trainLabels == 0);%PreprocessingprocessedFeatures = trainFeatures;processedFeatures(:,train_zero) = -processedFeatures(:,train_zero);%Initial weightsw_percept	   = rand(Dim+1,1);correct_classified = 0;n	           = length(trainLabels);iter		   = 0;while (  (longest_run(w_percept, processedFeatures) < 0.9*n) ...       & (iter < max_iter))   iter    = iter + 1;   indice = 1 + floor(rand(1)*n);   if (w_percept' *  processedFeatures(:,indice) <= 0)      w_percept = w_percept + p(indice)* processedFeatures(:,indice);   endendif (iter == max_iter)&(length(algParam)~= r + 1),   disp(['Maximum iteration (' num2str(max_iter) ') reached']);end% Now computesestTrainLabels = w_percept' * trainFeatures;estTrainLabels = estTrainLabels > 0;[Dim, Ntest]  = size(testFeatures);testFeatures  = [testFeatures ; ones(1,Ntest)];estTestLabels = w_percept' * testFeatures;estTestLabels = (estTestLabels > 0);trainError = computeError( classes, trainLabels, estTrainLabels);testError = computeError( classes, testLabels, estTestLabels);

⌨️ 快捷键说明

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