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
FuzzyKNN matlab code
最新推荐文章于 2022-10-01 12:16:07 发布