KNN algo in matlab

后端 未结 3 1178
醉话见心
醉话见心 2020-12-30 18:22

I am working on thumb recognition system. I need to implement KNN algorithm to classify my images. according to this, it has only 2 measurements, through which it is calcula

3条回答
  •  误落风尘
    2020-12-30 18:27

    Here is an illustration code for k-nearest neighbor classification (some functions used require the Statistics toolbox):

    %# image size
    sz = [25,42];
    
    %# training images
    numTrain = 200;
    trainData = zeros(numTrain,prod(sz));
    for i=1:numTrain
        img = imread( sprintf('train/image_%03d.jpg',i) );
        trainData(i,:) = img(:);
    end
    
    %# testing images
    numTest = 200;
    testData = zeros(numTest,prod(sz));
    for i=1:numTest
        img = imread( sprintf('test/image_%03d.jpg',i) );
        testData(i,:) = img(:);
    end
    
    %# target class (I'm just using random values. Load your actual values instead)
    trainClass = randi([1 5], [numTrain 1]);
    testClass = randi([1 5], [numTest 1]);
    
    %# compute pairwise distances between each test instance vs. all training data
    D = pdist2(testData, trainData, 'euclidean');
    [D,idx] = sort(D, 2, 'ascend');
    
    %# K nearest neighbors
    K = 5;
    D = D(:,1:K);
    idx = idx(:,1:K);
    
    %# majority vote
    prediction = mode(trainClass(idx),2);
    
    %# performance (confusion matrix and classification error)
    C = confusionmat(testClass, prediction);
    err = sum(C(:)) - sum(diag(C))
    

提交回复
热议问题