matlab实现KNN
时间: 2023-11-13 11:53:40 浏览: 103
实现KNN算法步骤如下:
1. 导入数据集,对数据进行预处理;
2. 计算测试样本与训练样本之间的距离(一般使用欧式距离),并按照距离递增排序;
3. 选取距离最近的K个样本,统计它们的类别出现的次数;
4. 返回出现次数最多的类别作为测试样本的预测类别。
以下是MATLAB实现KNN算法的代码:
```matlab
function prediction = KNN(train_data, train_label, test_data, k)
% train_data: 训练数据
% train_label: 训练数据标签
% test_data: 测试数据
% k: K值
%% 计算距离
n = size(train_data, 1); % 训练数据数量
m = size(test_data, 1); % 测试数据数量
dis = zeros(m,n);
for i = 1:m
for j = 1:n
dis(i,j) = sqrt(sum((test_data(i,:) - train_data(j,:)) .^ 2));
end
end
%% 找到距离最近的K个样本
[~, idx] = sort(dis,2);
idx_k = idx(:, 1:k);
%% 统计K个样本中各个分类出现的次数
prediction = zeros(m,1);
for i = 1:m
label_k = train_label(idx_k(i,));
[label, ~, count] = unique(label_k);
[~, max_idx] = max(count);
prediction(i) = label(max_idx);
end
end
```
阅读全文