knn算法 matlab实例
时间: 2023-09-06 08:11:56 浏览: 155
以下是一个简单的KNN算法的MATLAB实现示例,用于分类鸢尾花数据集:
```matlab
% 加载鸢尾花数据集
load fisheriris
% 将数据集分为训练集和测试集
idx = randperm(size(meas,1));
trainData = meas(idx(1:100),:);
testData = meas(idx(101:end),:);
trainLabels = species(idx(1:100));
testLabels = species(idx(101:end));
% 选择k值
k = 5;
% 计算测试集与训练集之间的距离
distances = pdist2(testData, trainData);
% 对测试集中的每个样本进行分类
predictedLabels = zeros(size(testLabels));
for i = 1 : length(testLabels)
% 获取与测试集中当前样本最近的k个训练样本的索引
[~, indices] = mink(distances(i,:), k);
% 获取k个训练样本的标签
nearestLabels = trainLabels(indices);
% 选择出现次数最多的标签作为当前测试样本的预测标签
predictedLabels(i) = mode(nearestLabels);
end
% 计算分类准确率
accuracy = sum(predictedLabels == testLabels) / length(testLabels);
fprintf('分类准确率: %.2f%%\n', accuracy * 100);
```
注:该示例使用欧氏距离作为距离度量方法。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)