k-近邻分类算法matlab实现程序
时间: 2023-11-02 11:10:18 浏览: 115
以下是一个简单的k-近邻分类算法matlab实现程序:
```matlab
% k-近邻分类算法
% 设定训练数据
train_data = [
1,2,1;
1,4,1;
2,1,1;
2,3,1;
3,2,2;
3,4,2;
4,1,2;
4,3,2;
];
% 设定训练数据对应的分类标签
train_label = [1,1,1,1,2,2,2,2];
% 设定测试数据
test_data = [
2.5,2.5;
4.5,3.5;
];
% 设定k值
k = 3;
% 预测测试数据的分类标签
test_label = zeros(size(test_data,1),1);
for i = 1:size(test_data,1)
% 计算测试数据与所有训练数据的欧氏距离
distances = sqrt(sum((train_data - repmat(test_data(i,:),size(train_data,1),1)).^2,2));
% 找出距离最近的k个训练数据
[~,nearest_idxs] = sort(distances,'ascend');
nearest_idxs = nearest_idxs(1:k);
% 统计k个训练数据中出现最多的分类标签
nearest_labels = train_label(nearest_idxs);
test_label(i) = mode(nearest_labels);
end
% 输出测试数据的分类标签
disp(test_label);
```
该程序中,设定了训练数据、训练数据对应的分类标签、测试数据和k值。程序首先计算测试数据与所有训练数据的欧氏距离,找出距离最近的k个训练数据,并统计k个训练数据中出现最多的分类标签作为测试数据的分类标签。最后输出测试数据的分类标签。
阅读全文