Matlab实现KNN多分类问题

Matlab实现KNN多分类问题天⽓晴 但是刮超⼤的风 ⼩马的⼿还是⼀直都是冰凉的 看来我真的是体寒 哈哈哈
明天是第四次线上开会,希望⼩马汇报⼯作⼀切顺利!冲冲冲
今天总结的是使⽤Matlab实现KNN多分类问题
KNN算法流程描述:
1、初始化训练集和类别;
2、计算测试样本与训练集样本的欧⽒距离;
夏国玺3、根据欧⽒距离⼤⼩对训练集样本进⾏升序排序;
4、选取欧式距离最⼩的前K个训练样本,统计其在各类别中的频率;
5、返回频率最⼤的类别,即测试集样本属于该类别。
Matlab实现代码(KNN算法封装函数 ):
输⼊五个变量:训练数据集,训练数据集标签,测试数据集,测试数据集标签,KNN算法的K值
输出两个变量:测试数据集所属类别,算法的分类精度
function [class_test, Acc] = knn(trainData, sample_label, testData, test_labels, k) %KNN k-Nearest Neighbors Algorithm.
%
%  INPUT:  trainData:      training sample Data, M1-by-N matrix.
%          sample_label:      training sample labels, M1-by-1 row vector.
%          testData:              testing sample Data, M2-by-N_test matrix.
%          test_lables:          testing sample labels,M2-by-1 row vector.
%          K:                          the k in k-Nearest Neighbors.
%
%  OUTPUT: class_test:      predicted labels, M2-by-1_test row vector.
%            Acc:                          Classification accuracy of KNN algorithm.
[M_train, N] = size(trainData);远山的红叶主题曲
[M_test, N] = size(testData);
%calculate the distance between testData and trainData
Dis = zeros(M_train,1);
class_test = zeros(M_test,1);
for n = 1:M_test陈垣全集
传奇故事2010
for i = 1:M_train
distance1 = 0;
for j = 1:N
distance1 = (testData(n,j) - trainData(i,j)).^2 + distance1;
中国公共卫生管理end
Dis(i,1) = distance1.^0.5;
end
%find the k nearest neighbor
[~, index] = sort(Dis);
for i = 1:k
temp(i) = sample_label(index(i));
end
table = tabulate(temp);    %函数tabulate统计⼀个数组中各数字(元素)出现的频数、频率    MaxCount=max(table(:,2,:));
[row,col]=find(table==MaxCount);
我是凡客MaxValue=table(row,1);
class_test(n) = MaxValue(1,1);  %测试集的分类标签
end
Acc = (mean(class_test == test_labels))*100; %算法的分类精度
end
新建脚本测试KNN算法函数:(以UCI中红酒数据集为例,178个样本,13个,3种类别)clc;
clear;
%导⼊数据集
load wine_SVM;
%随机划分训练集和测试集
[train, test] = crossvalind('holdOut',wine_labels);
train_wine = wine(train,:);
train_wine_labels = wine_labels(train,:);
test_wine = wine(test,:);
test_wine_labels = wine_labels(test,:);
%代⼊KNN算法函数
[class_test, Acc]= knn(train_wine, train_wine_labels, test_wine, test_wine_labels, 10);
算法运⾏结果最终返回的是测试集红酒的分类标签,存在输出变量class_test中;算法的分类精度,存在输出变量Acc中。

本文发布于:2024-09-21 22:24:58,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326211.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   测试   分类   样本   训练   标签   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议