【问题标题】:Implement K-nn in matlab with an specific dataset使用特定数据集在 matlab 中实现 Knn
【发布时间】:2017-04-04 03:26:45
【问题描述】:

晚安!我正在尝试通过 K-nn 实现分类,而不使用任何工具箱,但现在我对使用 Matlab 非常无知,所以我不知道该怎么做。我正在尝试对来自加州大学机器学习存储库的数据集助教评估进行分类。现在,我刚刚成功地划分了我的训练集、标签集和测试集,并使用工具箱对它们进行了分类,但没有它我完全迷失了方向。 你能帮我想想如何开始吗?我一直在寻找模板或基本代码,但对我来说没有一个是可以理解的。提前,谢谢!

【问题讨论】:

    标签: matlab repository knn


    【解决方案1】:

    这是欧式距离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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-04
      • 2021-04-07
      • 2012-08-27
      • 2023-03-27
      • 2014-09-01
      • 2012-01-03
      • 2016-09-19
      • 1970-01-01
      相关资源
      最近更新 更多