• 大小: 7KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: Matlab
  • 标签: 机器学习  KNN  

资源简介

对4组不同的信号分别采集20组,总共80组,然后经过特征提取(特征数量为8个),得到80x8的矩阵。 划分数据集:将64组数据作为训练数据,16组数据作为测试数据,4类信号在训练集和测试集的数量比例相同,将训练集和测试集整体归一化,再分别作为KNN的输入。 源程序是利用KNN算法对训练集和测试集整体归一化后的测试数据进行分类,得到分类准确率。

资源截图

代码片段和文件信息

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;
[mtrainntrain]=size(train_scale);
[mtestntest]=size(test_scale);

% 外循环控制测试数据,内循环控制训练数据
for i=1:mtest
    dist=zeros(mtrain1);
    for j=1:mtrain
        dist(j)=norm(train_scale(j:)-test_scale(i:));  %计算训练数据集与测试数据之间的欧氏距离dist
    end
    %将dist从小到大进行排序
    [YI]=sort(dist1);
    
    %将训练数据对应的类别与训练数据排序结果对应
    train_labels=train_labels(I);
    
    %确定前K个点所在类别的出现频率
    classNum=length(unique(train_labels));%取集合中的单值元素的个数得到类别数量
    predict_labels=zeros(1classNum);
    
    % 以下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);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1640  2020-09-16 11:34  基于MATLAB的KNN算法实现多分类\main_KNN.m

     文件        192  2020-09-16 09:53  基于MATLAB的KNN算法实现多分类\test_labels.mat

     文件       1162  2020-09-16 09:55  基于MATLAB的KNN算法实现多分类\test_scale.mat

     文件        194  2020-09-16 09:52  基于MATLAB的KNN算法实现多分类\train_labels.mat

     文件       3835  2020-09-16 09:47  基于MATLAB的KNN算法实现多分类\train_scale.mat

     目录          0  2020-09-16 11:35  基于MATLAB的KNN算法实现多分类

----------- ---------  ---------- -----  ----

                 7023                    6


评论

共有 条评论