k-NN регрессия с использованием Matlab?
У меня две таблицы а именно Training_table
а также Testing table
каждый содержит два параметра размером, скажем, 100. Я хочу использовать k-NN
для обучения с использованием training_table
и протестируйте алгоритм, используя значения 'Testing_table'.
давайте посмотрим, в Training table
x = [4 5.5 6.5 8 9 10] ; y = [100 200 400 600 900 10000]
В Testing_table
,
x1 = [7 8 9 ]; y1 = ?
Так что для данного x1
оценить, что является оценочным значением для y1
?
Я написал код до сих пор,
testing_data = size(test_data,1);
training_data = size(training_data,1);
% absolute distance between all test and training data
dist = abs(repmat(testing_data,1,training_data) - repmat(training_data(:,1)',testing_data,1));
% indicies of nearest neighbors
[~,nearest] = sort(dist,2);
% k nearest
nearest = nearest(:,1:k);
% mode of k nearest
val = reshape(training_data(nearest,2),[],k);
out_data = mode(val,2);
% if mode is 1, output nearest instead
output(output==1) = val(output==1,1);
Но, похоже, я ошибаюсь. Может кто-нибудь предложить или совет, где я делаю ошибку?