用特定数据集在matlab中实现K-nn

用特定数据集在matlab中实现K-nn,matlab,repository,knn,Matlab,Repository,Knn,晚安!我试图用K-nn实现分类,而不使用任何工具箱,但现在我对使用Matlab非常无知,所以我不知道该怎么做。我试图从加利福尼亚大学机器学习库中对数据集教学辅助评估进行分类。现在,我刚刚设法划分了我的训练集、标签集和测试集,并用工具箱对它们进行了分类,但如果没有工具箱,我就完全不知所措了。 你能帮我想想怎么开始吗?我一直在寻找一个模板或基本代码,但没有一个是我可以理解的。提前,谢谢 这是欧几里德距离KNN,您可以根据需要更改距离的定义: % generate data dim = 2; K =

晚安!我试图用K-nn实现分类,而不使用任何工具箱,但现在我对使用Matlab非常无知,所以我不知道该怎么做。我试图从加利福尼亚大学机器学习库中对数据集教学辅助评估进行分类。现在,我刚刚设法划分了我的训练集、标签集和测试集,并用工具箱对它们进行了分类,但如果没有工具箱,我就完全不知所措了。
你能帮我想想怎么开始吗?我一直在寻找一个模板或基本代码,但没有一个是我可以理解的。提前,谢谢

这是欧几里德距离KNN,您可以根据需要更改距离的定义:

% generate data
dim = 2;
K = 3;
ntest = 10;
ntrain = 100;
nlabels = 3;
traindata = rand(ntrain,dim);
trainlabel = randi(nlabels,[ntrain 1]);
testdata = rand(ntest,dim);
testlabel = zeros(ntest,1);
for ii = 1:ntest
    % compute euclidean distances
    dists = sum(bsxfun(@minus,traindata,testdata(ii,:)).^2,2);
    % take the closest neighbors' label
    [~,idxs] = sort(dists);
    labels = trainlabel(idxs(1:K));
    % majority vote
    testlabel(ii) = mode(labels);
end
% plotting
scatter(traindata(:,1),traindata(:,2),50,trainlabel);
hold on
scatter(testdata(:,1),testdata(:,2),50,testlabel,'filled');
hold off
colormap('jet')
legend('train data','test data')