PDA

View Full Version : الگوريتم k نزديکترين همسايه



msabori
شنبه 20 مهر 1392, 20:23 عصر
سلام
من باید الگوريتم k نزديکترين همسايه knn را در مطلب پیاده کنم
کسی می تونه کمکم کنه ؟
من زمینه کد نویسی مطلب هم ندارم

ممنون

ASedJavad
شنبه 20 مهر 1392, 21:48 عصر
سلام
اگه احیانا کسی از دوستان جواب نداد، تئوری الگوریتم رو بذارید اینجا تاببینم چه میشه کرد.
البته مسلما میدونید که طبق قوانین سایت ما نهایتا میتونیم کمکتون کنیم و پروژه نهایی رو باید خودتون انجام بدید!

rahnema1
یک شنبه 21 مهر 1392, 22:51 عصر
زبان matlab مشکل نیست با کمی سعی می تونید یاد بگیرید فایل های مختصر آموزش فارسی هم تو اینترنت هست فکر کنم خودتون بتونید این کار رو انجام بدید
روش الگوریتم knn هم ساده هست هر جور که شده کد رو بنویسید حتی ناقص بذارید اینجا اگر باز نشد بگویید کجای کار اشکال پیدا کردید و به مانع خوردید تا ببینیم اشکالش چیه

coral
سه شنبه 27 اسفند 1392, 13:19 عصر
سلام
من هم روی همین الگوریتم مشکل دارم به نحوی که وقتی اون رو در مطلب میذارم error می دهد. فکر می کنم باید دوباره فراخوانی اش بکنم اما نمی دانم چطور. الگوریتم من :
function net = knn(nin, nout, k, tr_in, tr_targets)
%KNN Creates a K-nearest-neighbour classifier.
%
% Description
% NET = KNN(NIN, NOUT, K, TR_IN, TR_TARGETS) creates a KNN model NET
% with input dimension NIN, output dimension NOUT and K neighbours.
% The training data is also stored in the data structure and the
% targets are assumed to be using a 1-of-N coding.
%
% The fields in NET are
% type = 'knn'
% nin = number of inputs
% nout = number of outputs
% tr_in = training input data
% tr_targets = training target data
%
% See also
% KMEANS, KNNFWD
%

% Copyright (c) Ian T Nabney (1996-2001)


net.type = 'knn';
net.nin = nin;
net.nout = nout;
net.k = k;
errstring = consist(net, 'knn', tr_in, tr_targets);
if ~isempty(errstring)
error(errstring);
end
net.tr_in = tr_in;
net.tr_targets = tr_targets;

-------------------------


function [resultClass, classes] = knn(sampleData, testData, k)

% [resultClass, classes] = knn(sampleData, testData, k)
%
% Simple k-Nearest Neighbour algorithm
%
% Example : sampledata = [1 3 1; 2 1 1; 3 2 2; 0 3 2];
% testdata=[1 1];
% k=3;
% knn(sampledata,testdata,k)

N = size(sampleData,1); % N is length of data
M = size(sampleData,2); % M is index for class

% Calculate euclidean distance for each sample
distance = dist(sampleData(1:N, 1:(M-1)), reshape(testData,M-1,1));

% Sort distances ascending
[sorted, idx] = sort(distance);

% Order classes according to distance and
% choose k first (nearest neighbourhood)
classes = sampleData(idx(1:min(N, k)), M);

% Result is classified in class with most neighbours
resultClass = mode(classes);

% Plot bars for classes of nearest neighbours
figure(2);
hist(classes,[1:max(2,max(sampleData(:,M)))]);