clear;
clc;
% 训练数据、训练数据标签、测试数据、测试数据标签
load(['C:\Users\Administrator\Desktop\MATLAb Programming practice\KNN算法的MATLAB代码实现\train_scale.mat']);
load(['C:\Users\Administrator\Desktop\MATLAb Programming practice\KNN算法的MATLAB代码实现\train_labels.mat']);
load(['C:\Users\Administrator\Desktop\MATLAb Programming practice\KNN算法的MATLAB代码实现\test_scale.mat']);
load(['C:\Users\Administrator\Desktop\MATLAb Programming practice\KNN算法的MATLAB代码实现\test_labels.mat']);
K=8; % k一般低于训练样本数的平方根
error=0;
[mtrain,ntrain]=size(train_scale);
[mtest,ntest]=size(test_scale);
% 外循环控制测试数据,内循环控制训练数据
for i=1:mtest
dist=zeros(mtrain,1);
for j=1:mtrain
dist(j)=norm(train_scale(j,:)-test_scale(i,:)); %计算训练数据集与测试数据之间的欧氏距离dist
end
%将dist从小到大进行排序
[Y,I]=sort(dist,1);
%将训练数据对应的类别与训练数据排序结果对应
train_labels=train_labels(I);
%确定前K个点所在类别的出现频率
classNum=length(unique(train_labels));%取集合中的单值元素的个数,得到类别数量
predict_labels=zeros(1,classNum);
% 以下for循环统计分类的标签数量
for j=1:K
j=train_labels(j);
predict_labels(j)=predict_labels(j)+1;
end
%返回前K个点中出现频率最高的类别作为测试数据的预测分类
[~,idx]=max(predict_labels);
fprintf('该测试数据属于类 %d\n',idx);
fprintf('该测试数据的真实类为:%d\n',test_labels(i));
if idx~=test_labels(i)
error=error+1;
end
end
accuracy=(1-error/mtest)*100;
fprintf('准确率为:%f%%\n',accuracy);

Radar_LFM
- 粉丝: 1w+
最新资源
- 物联网+智慧平台项目融资计划.pptx
- Sa-Token-Java资源
- 山东轻工业学院网络用户手册.doc
- 学习]网络营销的方法与策略.ppt
- 2023年西南大学网络与继续教育学院土木工程专业工程地质大作业答案3月.doc
- 构建身边的网络.pdf
- 综合布线资格认证.doc
- 我国银行财务管理信息化思考.doc
- (推荐下载)第二节--中国生物医学-文献数据库2013.5.2.docx
- 教育信息化校本培训方案.doc
- 楼宇自动化控制系统入门.ppt
- 胃肠道间质瘤GIST综合治疗经验分享.pptx
- ArcGIS影像配准及矢量化.doc
- 雅戈尔服饰有限公司营销网络建设项目建议书最终版.pptx
- java毕业设计,航空信息管理系统
- 项目管理部消防安全自查报告.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


