FuzzyKNN matlab code

function predict_labels = fuzzyKNN(train_samples, k, fa, test_features)
% train_samples : samples_num * (feature_num + 1)
    feature_numPlus1 = size(train_samples, 2);
    train_features = train_samples(:, 1:feature_numPlus1-1);
    train_labels = train_samples(:, feature_numPlus1);
    [idx, dists] = knnsearch(train_features,test_features,'dist','euclidean','k', k);
    
    predict_labels = zeros(size(test_features, 1), 1);
    for tst = 1:size(test_features, 1)
        score_interaction = 0.0;
        score_noninteraction = 0.0;
        for R=1:10
            if train_labels(idx(tst, R), 1) == 1
                score_interaction = score_interaction + dists(tst, R).^(-2/(fa-1));
            else
                score_noninteraction = score_noninteraction + dists(tst, R).^(-2/(fa-1));
            end
        end
        if score_interaction > score_noninteraction
            predict_labels(tst, 1) = 1.0;
        else
            predict_labels(tst, 1) = 2.0;
        end
    end
end

發佈了59 篇原創文章 · 獲贊 17 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章