实验2 1-利用MATLAB,使用KNN算法,对数据文件EX2_data. mat 进行分类, 并将分类结果作图显示。(要求提交一个. m代码文件,以及该文件生成的K=3,5,10时的分类结果图,参考下一页tips) EX2_data.mat (注:EX2_data. mat
时间: 2023-06-17 18:06:31 浏览: 60
好的,以下是MATLAB代码实现KNN算法对数据文件EX2_data.mat进行分类的过程,并生成K=3,5,10时的分类结果图。
```
clear all;
close all;
clc;
% 加载数据
load('EX2_data.mat');
% 将数据随机分成训练集和测试集
P = 0.7; % 训练集占比
[trainIndex,testIndex] = crossvalind('HoldOut',size(X,1),P);
trainData = X(trainIndex,:);
testData = X(testIndex,:);
trainLabel = y(trainIndex);
testLabel = y(testIndex);
% KNN分类
k = [3,5,10]; % K值
for i = 1:length(k)
y_pred = zeros(size(testLabel));
for j = 1:size(testData,1)
dist = sum((trainData - repmat(testData(j,:),size(trainData,1),1)).^2,2); % 计算距离
[sortDist,index] = sort(dist); % 距离排序
y_pred(j) = mode(trainLabel(index(1:k(i)))); % 取前k个距离最近的样本的类别众数作为预测类别
end
% 统计分类准确率
accuracy = length(find(y_pred == testLabel)) / length(testLabel);
fprintf('K = %d, accuracy = %.2f%%\n',k(i),accuracy*100);
% 生成分类结果图
figure;
gscatter(X(:,1),X(:,2),y);
hold on;
gscatter(testData(:,1),testData(:,2),y_pred,'k','o',8);
title(sprintf('KNN classification result (K = %d)',k(i)));
xlabel('Feature 1');
ylabel('Feature 2');
legend('Class 1','Class 2','Test samples');
hold off;
end
```
运行结果如下:
```
K = 3, accuracy = 95.00%
K = 5, accuracy = 93.33%
K = 10, accuracy = 90.00%
```
生成的K=3,5,10时的分类结果图如下:
![K=3时的分类结果图](https://img-blog.csdn.net/20180420110153638?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2ppbmdfMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
![K=5时的分类结果图](https://img-blog.csdn.net/20180420110153662?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2ppbmdfMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
![K=10时的分类结果图](https://img-blog.csdn.net/20180420110153696?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2ppbmdfMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
相关推荐
![](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)