matlab不调用库函数编写一个完整的KNN算法
时间: 2024-05-02 15:23:54 浏览: 14
好的,以下是一个简单的KNN算法的MATLAB代码,它不依赖于任何库函数:
```
% 训练数据
train_data = [1 1; 2 2; 3 3; 4 4; 5 5; 6 6; 7 7; 8 8; 9 9; 10 10];
train_label = [1; 1; 1; 2; 2; 2; 3; 3; 3; 3];
% 待分类数据
test_data = [4 5];
% KNN算法
k = 3; % 设置K值
[m, ~] = size(train_data);
distance = zeros(m, 1); % 存储每个训练数据和待分类数据的距离
for i = 1:m
d = sqrt(sum((train_data(i,:) - test_data).^2)); % 欧氏距离公式
distance(i) = d;
end
[~, idx] = sort(distance); % 按距离从小到大排序,并返回排序后的索引
k_labels = train_label(idx(1:k)); % 取出距离最近的K个训练数据的标签
result = mode(k_labels); % 返回K个标签中出现次数最多的标签作为预测结果
% 输出结果
disp(['预测结果为:' num2str(result)]);
```
上述代码中,首先定义了训练数据和其对应的标签,然后定义了待分类的数据,接着使用欧氏距离公式计算训练数据和待分类数据之间的距离,并将距离从小到大排序,取出距离最近的K个训练数据的标签,最后返回这K个标签中出现次数最多的标签作为预测结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)