clear;
clc;
DATA = load('D.mat');
%% 绘制训练数据图
first = DATA.train_data(DATA.train_label==1,:,:);
second = DATA.train_data(DATA.train_label==2,:,:);
third = DATA.train_data(DATA.train_label==3,:,:);
fourth = DATA.train_data(DATA.train_label==4,:,:);
figure
scatter3(first(:,1),first(:,2),first(:,3),'*');
hold on
scatter3(second(:,1),second(:,2),second(:,3),'p');
scatter3(third(:,1),third(:,2),third(:,3),'s');
scatter3(fourth(:,1),fourth(:,2),fourth(:,3),'o');
title('训练数据');legend('第1类','第2类','第3类','第4类');
%% KNN寻优
acc = zeros(10,1);
for k = 1:10
% KNN 算法
label_test = knn(k, DATA.train_data', DATA.train_label', DATA.test_data');
% 计算最终结果
if k ==1
testResults = label_test;
else
[maxCount,idx] = max(label_test);
testResults = maxCount;
end
% 存储各分类结果
RESULTS(k,:) = testResults;
% 计算正确率
count = 0;
for i=1:30
if (testResults(i) == DATA.test_label(i))
count = count+1;
end
end
acc(k) = count/30;
end
disp('精度:')
disp(acc);
%% 求出最优 K
[~,K] = max(acc);
disp('最佳的K值为:');
disp(K);
%% 绘制K=1时的样本训练数据图,并在命令行窗口显示分类
%% 使用最优K进行一次测试
label_test = knn(K, DATA.train_data', DATA.train_label', DATA.test_data');
if K ==1
testResults = label_test
else
[maxCount,idx] = max(label_test);
testResults = maxCount
end
%% 绘制测试数据图
first = DATA.test_data(testResults==1,:,:);
second = DATA.test_data(testResults==2,:,:);
third = DATA.test_data(testResults==3,:,:);
fourth = DATA.test_data(testResults==4,:,:);
figure;
scatter3(first(:,1),first(:,2),first(:,3),'*');
hold on
scatter3(second(:,1),second(:,2),second(:,3),'p');
scatter3(third(:,1),third(:,2),third(:,3),'s');
scatter3(fourth(:,1),fourth(:,2),fourth(:,3),'o');
title('测试数据');legend('第1类','第2类','第3类','第4类');
没有合适的资源?快使用搜索试试~ 我知道了~
基于Matlab实现KNN算法(源码+数据).rar
共4个文件
m:3个
mat:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 3 下载量 199 浏览量
2023-05-20
19:25:14
上传
评论 2
收藏 3KB RAR 举报
温馨提示
1、资源内容:基于Matlab实现KNN算法(源码+数据).rar 2、适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 3、解压说明:本资源需要电脑端使用WinRAR、7zip等解压工具进行解压,没有解压工具的自行百度下载即可。 4、免责声明:本资源作为“参考资料”而不是“定制需求”不一定能够满足所有人的需求,需要有一定的基础能够看懂代码,能够自行调试代码并解决报错,能够自行添加功能修改代码。由于作者大厂工作较忙,不提供答疑服务,如不存在资源缺失问题概不负责,谢谢理解。
资源推荐
资源详情
资源评论
收起资源包目录
基于Matlab实现KNN算法(源码+数据).rar (4个子文件)
基于Matlab实现KNN算法(源码+数据)
knn.m 362B
main.m 2KB
D.mat 1KB
l2_distance.m 357B
共 4 条
- 1
资源评论
- m0_557246412023-12-06资源很实用,对我启发很大,有很好的参考价值,内容详细。
Matlab仿真实验室
- 粉丝: 2w+
- 资源: 2180
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功