精华内容
下载资源
问答
  • k近邻算法matlab实现
    千次阅读 多人点赞
    2019-05-21 14:36:19

    邻近算法:
    K近邻:通过计算测试样本与训练样本之间的距离,然后找出距离测试样本最近的K个样本,统计他们的结果,哪种类型的的结果出现的次数多则预测测试样本的结果为此结果;代码如下

    function label1=KNN(training,testing,k)
    [row, column]=size(training);
    [row1, column1]=size(testing);
    %计算测试集与训练集的距离
    distance=[];
    
            for i=1:row1
                distance(i,:)=sum((repmat(testing(i,:),row,1)-training(:,1:(column-1))).^2, 2);
            end
        
    % 寻找K近邻
    label=[];%存储距离测试样本最近的K个值
    for i=1:row1
        [a,b]=sort(distance(i,:));%排序,b存储distance中值的原横坐标
        for j=1:k
            label(i,j)=training(b(j),column);
        end
    end
    cl=zeros(1,100);
    count=1;
    cl(1,1)=training(1,column);%统计预测结果类型
    for i=2:row
        A=training(i,column);
        flag=0;
        for j=1:count
            if cl(1,j) ==A
              flag=1;
              break;
            end 
        end
        if flag==0
            count=count+1;
            cl(1,count)=A;
        end
    end
    end_count=zeros(row1,count);%统计某个结果出现的次数
    for i=1:row1
        for j=1:k
            for l=1:count
               if label(i,j)==cl(1,l)
                   end_count(i,l)=end_count(i,l)+1;
               end
            end
        end
    end
    cou=0;
    label1=[];%统计预测结果
    for i=1:row1
            k=1;
            num=end_count(i,1);
            for j=2:count
                if num<end_count(i,j)
                    k=j;
                    num=end_count(i,j);
                end
            end
            label1(i)=cl(1,k);
            if testing(i,column1)==label1(i)
                cou=cou+1;
            end
    end
    end

    思路:

    第一步统计每个测试样例距离最近的K个结果

    第二步:统计结果出现的类型

    第三步:统计每种结果在每个测试样本距离最近的K个样例结果出现的次数

    第四步:求出出现次数最多的结果作为预测结果

    更多相关内容
  • K近邻算法MATLAB实现

    2018-04-16 23:29:22
    KNN的MATLAB实现,基于特殊的SONAR数据,M文件,MATLAB源代码
  • k近邻算法matlab实现

    热门讨论 2011-02-17 21:32:25
    k 近邻算法Matlab实现源码,欢迎下载,相互交流和学习1
  • K近邻算法MATLAB 实践

    千次阅读 2021-01-31 21:30:53
    对于如何实现 KNNKNNKNN 算法,针对传统 KNNKNNKNN 算法,可分为 777 步。 初始化距离值为最大值,便于在搜索过程中迭代掉。 计算待分类样本和每个训练样本的距离 distdistdist。 得到目前 kkk 个最邻近样本中的...

    使用背景:

    基于 KNN 的相关算法,已成功应用于手写体识别、数字验证识别、文本识别、聚类分析、预测分析、模式识别、图像处理等。


    操作步骤:

    对于如何实现 K N N KNN KNN 算法,针对传统 K N N KNN KNN 算法,可分为 7 7 7 步。

    1. 初始化距离值为最大值,便于在搜索过程中迭代掉。
    2. 计算待分类样本和每个训练样本的距离 d i s t dist dist
    3. 得到目前 k k k 个最邻近样本中的最大距离 m a x d i s t maxdist maxdist
    4. 如果 d i s t dist dist 小于 m a x d i s t maxdist maxdist,则将该训练样本作为 k k k 最邻近样本。
    5. 重复步骤 2 2 2 3 3 3 4 4 4,直到未知样本和所有训练样本的距离都算完。
    6. 统计 k k k 邻近样本中每个类标号出现的次数。
    7. 选择出现频率最大的类标号作为未知样本的类标号。

    实例分析:

    假设,有一个具体应用为区分某一电影为动作片还是武侠片。首先,需要建立已知标签的样本,通过人工统计或数字图像处理技术统计众多电影中打斗镜头和接吻镜头数,并对相应的电影进行标签标注。之后,如果有一部未看过的电影,如何通过机器计算的方式判断其为动作片还是爱情片。此时,就可以使用 K N N KNN KNN 算法解决。


    解决方案:

    为了方便起见,对于有标签的数据样本通过 M A T L A B MATLAB MATLAB 随机生成,其主要利用两个随机高斯分布生成两类数据(假设打斗镜头数、接吻镜头数可为小数),并对第一类数据(假设为动作片)标记为 1 1 1,另一类数据(假设为爱情片)标记为 2 2 2

    待测样本分别为接吻镜头数 3 ∼ 7 3\sim7 37 遍历和打斗镜头数 3 ∼ 7 3\sim7 37 遍历产生的 25 25 25 个数据,通过 K N N KNN KNN 算法,对电影类别的判断如下图所示,其中“·”表示动作片,“*”表示爱情片。

    在这里插入图片描述

    代码如下:

    KNN_Self.m

    clear all;
    close all;
    clc;
    %%利用高斯分布,生成动作片数据和标签
    aver1=[8 3];  %均值
    covar1=[2 0;0 2.5];  %2维数据的协方差
    data1=mvnrnd(aver1,covar1,100);   %产生高斯分布数据
    for i=1:100    %另高斯分布产生数据中的复数为0
        for j=1:2   %因为打斗镜头数和接吻镜头数不能为负数
            if data1(i,j)<0
                data1(i,j)=0;
            end
        end
    end
    label1=ones(100,1);  %将该类数据的标签定义为1
    plot(data1(:,1),data1(:,2),'+');  %+绘制出数据
    axis([-1 12 -1 12]); %设定两坐标轴范围
    xlabel('打斗镜头数'); %标记横轴为打斗镜头数
    ylabel('接吻镜头数'); %标记纵轴为接吻镜头数
    hold on;
    %%利用高斯分布,生成爱情片数据和标签
    aver2=[3 8];
    covar2=[2 0;0 2.5];
    data2=mvnrnd(aver2,covar2,100); %产生高斯分布数据
    for i=1:100    %另高斯分布产生数据中的复数为0
        for j=1:2  %因为打斗镜头数和接吻镜头数不能为负数
            if data2(i,j)<0
                data2(i,j)=0;
            end
        end
    end
    plot(data2(:,1),data2(:,2),'ro');  %用o绘制出数据
    label2=label1+1; %将该类数据的标签定义为2
    data=[data1;data2];
    label=[label1;label2];
    K=11;   %两个类,一般K取奇数有利于测试数据属于那个类
    %测试数据,KNN算法看这个数属于哪个类,测试数据共计25%打斗镜头数遍历3-7,接吻镜头书也遍历3-7
    for movenum=3:1:7
        for kissnum=3:1:7
            test_data=[movenum kissnum];  %测试数据,为5X5矩阵
            %%下面开始KNN算法,显然这里是11NN。
            %求测试数据和类中每个数据的距离,欧式距离(或马氏距离)
            distance=zeros(200,1);
            for i=1:200
                distance(i)=sqrt((test_data(1)-data(i,1)).^2+(test_data(2)-data(i,2)).^2);
            end
            %选择排序法,只找出最小的前K个数据,对数据和标号都进行排序
            for i=1:K
                ma=distance(i);
                for j=i+1:200
                    if distance(j)<ma
                        ma=distance(j);
                        label_ma=label(j);
                        tmp=j;
                    end
                end
                distance(tmp)=distance(i);  %排数据
                distance(i)=ma;
                label(tmp)=label(i);        %排标签
                label(i)=label_ma;
            end
            cls1=0; %统计类1中距离测试数据最近的个数
            for i=1:K
                if label(i)==1
                    cls1=cls1+1;
                end
            end
            cls2=K-cls1;    %2中距离测试数据最近的个数
            if cls1>cls2
                plot(movenum,kissnum, 'k.'); %属于类1(动作片)的数据画小黑点
            else
                plot(movenum,kissnum, 'g*'); %属于类2(爱情片)的数据画绿色*
            end
            label=[label1;label2]; %更新label标签排序
        end
    end
    
    

    KNN_Mat.m

    % %Matlab 自带KNN算法函数knnclassify实现
    clc
    close all;
    clear
    %生成200个样本数据
    Training = [mvnrnd([2  2],eye(2), 100); mvnrnd([-2 -2], 2*eye(2), 100)];
    %mvnrnd([2  2],eye(2),100)表示随机生成多元正态分布100X2矩阵,每一列以22为均值,eye(2)为协方差
    %200个样本数据前100标记为标签1,后100个标记为标签2
    Group = [ones(100,1); 2*ones(100,1)];
    %绘制出离散的样本数据点
    gscatter(Training(:,1),Training(:,2),Group,'rc','*x');
    hold on; 
    % 生成待分类样本20个
    Sample = unifrnd(-2, 2, 20, 2); 
    %产生一个100X2,这个矩阵中的每个元素为2030之间连续均匀分布的随机数
    K=3;%KNN算法中K的取值
    cK = fitcknn(Sample,Training,Group,K);
    gscatter(Sample(:,1),Sample(:,2),cK,'rc','os');
    
    
    展开全文
  • K 近邻算法

    2017-09-18 22:00:17
    所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。
  • K-近邻算法;KDTree;测井数据;岩性识别

    一、内容提要

    今天笔者同样以测井岩性分类为实例,为大家分享一种被称为“最简单的机器学习算法之一”的K-近邻算法(K-Nearest Neighbor, KNN)。

    K-近邻算法(KNN,K-Nearest Neighbor)可以用于分类和回归[1]。K-近邻算法,意思是每一个样本都可以用它最接近的K个邻居来代表,以大多数邻居的特征代表该样本的特征,据此分类[2]。它的优势非常突出:思路简单、易于理解、易于实现,无需参数估计[3]。

    本期笔者将KNN算法应用在基于测井数据的岩性分类上。

    下面分为算法简介、实例计算与代码解读三个部分进行讲解。(代码获取方式详见文末)

    二、算法简介

    K-近邻算法

    K-近邻算法的计算过程是:一个未知分类的样本进入数据集、那么与它最相似(特征空间中最邻近)的K个样本的类别大多数是哪一类,那么它就是哪一类。K-近邻算法的主要流程如下:

    1)存在一个训练样本集,训练集中每个样本都已知所属的分类,指定最近邻居数K。
    2)输入没有分类的新样本后,将新样本的每个属性与训练集中的样本对应的属性进行比较,然后提取最相近的K个样本的分类;
    3)这K个样本出现最多的分类就是新数据的分类。

    下面我们举一个对《未知》小说进行分类的例子,来解释K-临近算法的主要流程(见下表)。

     有六篇中篇小说,根据小说中枪战次数和接吻次数(特征)(虚构数据)归类为言情小说或黑帮小说。由于《未知》的接吻片段次数多、枪战片段次数少,于是将《未知》与言情小说归为一类。通过这个例子我们可以发现,K-近邻算法是不需要训练过程的,而且是没有参数估计的。

    在算法的实现中,我们使用matlab自带的“鸢尾花的分类”例子,来展示KNN算法是如何被实现的。如图所示,鸢尾花数据集每个样本有两个特征,可用散点的形式绘制在二维平面上;对应三种分类(setosa,versicolor和virginica)。现在插入三个新样本(使用▽标识),并根据KNN的方法对其进行分类。

    图1:鸢尾花数据集分类(matlab)

    如算法简介中介绍,只需要计算3个新样本与全部训练集数据的距离,再进行类别统计即可,这样的做法在数据量极大的时候效率很低。这时,如果将所有数据点之间的位置关系建立联系——KD树(K-Dimensional Tree,KDTree),在搜索新样本的最邻近点时从树的根节点一步一步向叶节点搜索,就能以更高的效率搜索到最临近点。

    对KDTree生成和查询的详细步骤不多做赘述,这里我们使用github上的matlab kdtree可视化库对KDTree进行可视化,给大家提供直观的认识,不做重点介绍。生成kdtree并可视化的代码如下:

    function tree_output = kd_buildtree(X,plot_stuff,parent_number,split_dimension)

    在二维空间中,KDTree表示为如图2所示的,不断分割二维平面的模式。当有新样本加入集合中,就放入二维平面(多维数据为超平面)的对应区域中,通过搜索能很快搜索到K个近邻点。

    图2:KDTree

    三、实例计算

    实例:基于六条测井曲线,对岩性进行划分。训练集如图3所示。

    数据:训练集由3300个深度的测井曲线以及对应的岩性分类组成。则每一个深度看作一个样本,测井曲线的数值作为属性、岩性作为分类结果。367个深度的测井曲线以及对应的岩性分类作为测试集,测试建立的模型性能。

    目的:基于六条测井曲线数据构建一个KNN模型,用于岩性类型划分。

    图3:基于测井数据的岩性识别结果示意图

    四、代码解读

    第一步 数据导入

    %% 数据导入
    load traindata.mat
    load testdata.mat

    第二步 建立
    使用训练数据集构造KDTree

    x = traindata(:,1:6);
    Mdl = KDTreeSearcher(x);

    第三步 寻找测试集K个邻居
    使用KDTree 结构体MDI,得到n,n为样本数x邻居数的矩阵,每一行对应一个测试样本,这一行的所有元素代表最邻近的训练集样本点的索引

    [n,~] = knnsearch(Mdl,testdata(:,1:6),'k',k);

    第四步 循环提取测试集样本对应邻居
    循环提取测试样本的邻居,并统计众数进行投票,得到最终分类结果。使用validate计算最终的准确率分类。其中mode用于计算最近邻点分类向量tempClass中的众数。

    for i = 1:size(n,1)
    
        tempClass = traindata(n(i,:),7);
        result = mode(tempClass);
        resultClass(i,1) = result;
    
    end
    
    validate = sum( testdata(:,7) == resultClass )./ size(testdata,1) * 100;

    第五步 对K进行优化调参

    将以上过程封装为函数myKNNCLass,将k作为参数进行调参,由于需要使用众数作为结果,因此邻居数应该选择为奇数。

    for kValue = 1:2:15
        validate = myKNNCLass(traindata,testdata,kValue);
        disp(['取近邻数K = ' num2str(kValue),'; 此时的准确率为 ' num2str(validate) '%'])
    end

    得到结果 >>

    取近邻数K = 1; 此时的准确率为 90.9836%

    取近邻数K = 3; 此时的准确率为 87.9781%

    取近邻数K = 5; 此时的准确率为 84.153%

    取近邻数K = 7; 此时的准确率为 84.9727%

    取近邻数K = 9; 此时的准确率为 82.2404%

    取近邻数K = 11; 此时的准确率为 80.0546%

    取近邻数K = 13; 此时的准确率为 79.235%

    取近邻数K = 15; 此时的准确率为 77.8689%

    则最后使用取近邻数1为最好。

    参考文献

    [1]  Altman, N. S. An introduction to kernel and nearest-neighbor nonparametric regression. The American Statistician. 1992, 46 (3): 175–185. doi:10.1080/00031305.1992.10475879.

    [2]  田翠华著,基于GT4的物联网交通信息服务仿真研究,厦门大学出版社,2017.01,第225页

    [3]  宋园,陈永平. 聚类分析中K-邻近算法的研究. 《 CNKI;WanFang 》 , 2013

    【注】此文章版权归数字地学新视界账号所有,如需转载务必联系后台管理员。否则将维权到底。

    代码获取方式 :

    关注公众号并联系数字地学新视界微信后台管理员,可领取完整版带有详尽注释的示例代码!

    [如何获取管理员联系方式]:菜单栏中的联系我们——>转载须知,扫码添加即可。

    知识创作分享不易,希望与大家共同成长进步~​​​​​​​ 【多见多闻】| 基于K-近邻算法(KNN)的岩性分类实战详解K-近邻算法;KDTree;测井数据;岩性识别https://mp.weixin.qq.com/s/4R9mlSvnarw8kQa21NNhMQ

    展开全文
  • 自己的模式识别的作业,matlab实现k近邻算法
  • knn(k近邻算法)——matlab

    千次阅读 2022-01-30 16:00:18
    1. 基本定义 2. 算法原理 2.1 算法优缺点 2.2 算法参数 2.3 变种 ...4.案例实现 4.1 读取数据 4.2 分离训练集和测试集 4.3 归一化处理 4.4计算欧氏距离 4.5排序和输出测试结果 4.6 计算准确率 总代码

    目录

    1. 基本定义

    2. 算法原理

    2.1 算法优缺点

    2.2 算法参数

    2.3 变种

    3.算法中的距离公式

    4.案例实现

    4.1 读取数据 

    4.2 分离训练集和测试集

    4.3 归一化处理 

    4.4 计算欧氏距离

    4.5 排序和输出测试结果

    4.6 计算准确率

    总代码


    1. 基本定义

            k最近邻(k-Nearest Ne ighbor)算法是比较简单的机器学习算法。它采用测量不同特征值之间的距离方法进行分类。它的思想很简单:如果一个样本在特征空间中的多个最近邻(最相似〉的样本中的大多数都属于某一个类别,则该样本也属于这个类别。第一个字母k可以小写,表示外部定义的近邻数量。

            简而言之,就是让机器自己按照每一个点的距离,距离近的为一类。

    2. 算法原理

            knn算法的核心思想是未标记样本的类别,由距离其最近的k个邻居投票来决定。
            具体的,假设我们有一个已标记好的数据集。此时有一个未标记的数据样本,我们的任务是预测出这个数据样本所属的类别。knn的原理是,计算待标记样本和数据集中每个样本的距离,取距离最近的k个样本。待标记的样本所属类别就由这k个距离最近的样本投票产生。
    假设X_test为待标记的样本,X_train为已标记的数据集,算法原理的伪代码如下:

    1. 遍历X_train中的所有样本,计算每个样本与X_test的距离,并把距离保存在Distance数组中。
    2. 对Distance数组进行排序,取距离最近的k个点,记为X_knn。
    3. 在X_knn中统计每个类别的个数,即class0在X_knn中有几个样本,class1在X_knn中有几个样本等。
    4. 待标记样本的类别,就是在X_knn中样本个数最多的那个类别。

    2.1 算法优缺点

    • 优点:准确性高,对异常值和噪声有较高的容忍度。
    • 缺点:计算量较大,对内存的需求也较大。

    2.2 算法参数

            其算法参数是k,参数选择需要根据数据来决定。

    • k值越大,模型的偏差越大,对噪声数据越不敏感,当k值很大时,可能造成欠拟合;
    • k值越小,模型的方差就会越大,当k值太小,就会造成过拟合。

    2.3 变种

            knn算法有一些变种,其中之一是可以增加邻居的权重。默认情况下,在计算距离时,都是使用相同权重。实际上,可以针对不同的邻居指定不同的距离权重,如距离越近权重越高。这个可以通过指定算法的weights参数来实现。
            另一个变种是,使用一定半径内的点取代距离最近的k个点。当数据采样不均匀时,可以有更好的性能。在scikit-learn里,RadiusNeighborsClassifier类实现了这个算法变种。

    3.算法中的距离公式

            与我们的线性回归不同,在这里我们并没有什么公式可以进行推导。KNN分类算法的核心就在于计算距离,随后按照距离分类。

        在二维笛卡尔坐标系,相信初中同学应该对这个应该不陌生,他有一个更加常见的名字,直角坐标系。其中,计算两个点之间的距离公式,常用的有欧氏距离。点A(2,3),点B(5,6),那么AB的距离为                        

        这,便是欧氏距离。但和我们平常经常遇到的还是有一些区别的,欧氏距离是可以计算多维数据的,也就是矩阵(Matrix)。这可以帮我们解决很多问题,那么公式也就变成了

    4.案例实现

    我们使用knn算法及其变种,对Pina印第安人的糖尿病进行预测。数据集可从下面下载。
    链接:蓝奏云

    4.1 读取数据 

    %读取数据
    data=xlsread('D:\桌面\knn.xlsx');

    4.2 分离训练集和测试集

    ratio=0.1;%测试数据所占比例
    [N,M]=size(data);
    trainData=data(:,1:8);
    trainClass=data(:,9);
    num_test=N*ratio;

    4.3 归一化处理 

    %归一化处理newData=(oldData-minValue)/(maxValue-minValue);
    minValue=min(trainData);
    maxValue=max(trainData);
    trainData=(trainData-repmat(minValue,N,1))./(repmat(maxValue-minValue,N,1));

    4.4 计算欧氏距离

    %计算训练数据集与测试数据之间的欧氏距离dist
    dist=zeros(N,1);
    for i=1:N
        dist(i,:)=norm(trainData(i,:)-testData);
    end

    4.5 排序和输出测试结果

    %将dist从小到大进行排序
    [Y,I]=sort(dist,1);   
    K=min(K,length(Y));
    %将训练数据对应的类别与训练数据排序结果对应
    labels=trainClass(I);
    %确定前K个点所在类别的出现频率
    idx=mode(labels(1:K));%mode函数求众数
    fprintf('该测试数据属于类 %d  ',idx);

    4.6 计算准确率

    error=0;
    for i=1:num_test
        idx=KNN(trainData(num_test+1:N,:),trainClass(num_test+1:N,:),trainData(i,:),K);
        fprintf('该测试数据的真实类为:%d\n',trainClass(i,:));
        if idx~=trainClass(i,:);
            error=error+1;
        end
    end
    fprintf('准确率为:%f\n',1-error/num_test);

    总代码

    clc;clear;
    % 警告消息消除
    warning('off');
    %读取数据
    data=xlsread('D:\桌面\knn.xlsx');
    ratio=0.1;%测试数据所占比例
    [N,M]=size(data);
    K=4;
    trainData=data(:,1:8);
    trainClass=data(:,9);
    num_test=N*ratio;
    %归一化处理newData=(oldData-minValue)/(maxValue-minValue);
    minValue=min(trainData);
    maxValue=max(trainData);
    trainData=(trainData-repmat(minValue,N,1))./(repmat(maxValue-minValue,N,1));
    error=0;
    for i=1:num_test
        idx=KNN(trainData(num_test+1:N,:),trainClass(num_test+1:N,:),trainData(i,:),K);
        fprintf('该测试数据的真实类为:%d\n',trainClass(i,:));
        if idx~=trainClass(i,:);
            error=error+1;
        end
    end
    fprintf('准确率为:%f\n',1-error/num_test);

    返回:

    其中 KNN 函数:

    function [ idx ] = KNN( trainData,trainClass,testData,K )
    %UNTITLED Summary of this function goes here
    %   Detailed explanation goes here
    
    
    [N,M]=size(trainData);
    %计算训练数据集与测试数据之间的欧氏距离dist
    dist=zeros(N,1);
    for i=1:N
        dist(i,:)=norm(trainData(i,:)-testData);
    end
    %将dist从小到大进行排序
    [Y,I]=sort(dist,1);   
    K=min(K,length(Y));
    %将训练数据对应的类别与训练数据排序结果对应
    labels=trainClass(I);
    %{
    %确定前K个点所在类别的出现频率
    classNum=length(unique(trainClass));%取集合中的单值元素的个数
    labels=zeros(1,classNum);
    for i=1:K
        j=trainClass(i);
        labels(j)=labels(j)+1;
    end
    %返回前K个点中出现频率最高的类别作为测试数据的预测分类
    [~,idx]=max(labels);
    %}
    %确定前K个点所在类别的出现频率
    idx=mode(labels(1:K));%mode函数求众数
    fprintf('该测试数据属于类 %d  ',idx);
    end
    展开全文
  • KNN的MATLAB实现,基于特殊的SONAR数据,M文件,MATLAB源代码。
  • K近邻算法matlab应用

    2012-05-30 09:19:05
    K近邻算法。本次用matlab实现K近邻算法,希望有帮助。
  • MATLAB实现K近邻法分类

    2020-09-30 22:30:16
    K近邻法分类待测样本点,模式识别实验内容之一,用MATLAB生成随机样本点作为样本集,用样本集将考试集分类。 K近邻法分类待测样本点,模式识别实验内容之一,用MATLAB生成随机样本点作为样本集,用样本集将考试集...
  • 基于K近邻分类算法的情感识别matlab仿真+含代码操作演示视频 运行注意事项:使用matlab2021a或者更高版本测试,运行里面的Runme.m文件,不要直接运行子函数文件。运行时注意matlab左侧的当前文件夹窗口必须是当前...
  • matlabk近邻算法.rar

    2020-12-04 17:20:40
    k近邻matlab的代码,在matalb运行a文件即可
  • 实现K近邻算法,并提供两个数据集的分类、回归测试案例。
  • MATLAB实现K-近邻算法(源码)

    千次阅读 2021-06-03 20:31:51
    K-近邻算法原理 算法原理自己总结: 即将准备分类的样本同已经分类过的样本逐一计算之间的距离,然后将所有的距离进行从小到大的排序,然后取前K个最近的距离,然后遍历这K个最近样本距离中的每一个样本的类别,...
  • matlab用于计算K近邻互信息量程序,多变量相关性
  • 基于matlabk近邻滤波算法设计与实现
  • %距离小于半径的点数 end end end K(t1)=(A/n0^2)*count; %A研究区面积,n为研究区内点事件数量 K0(t1)=pi*(t^2); %K00,集聚分布 t1=t1+1; end 想了解更多,请关注微信公众号“GAO戏精光芒万丈”:
  • knn算法matlab实现

    2020-09-17 16:30:14
    knn算法matlab实现,较简单,大家多指导指导
  • 算法流程: 1. 指定k的值。 2. 使用一个NxN的模板取出图像中部分值。 3. 选取模板中前k个与中心点像素值...此外,该程序还要求实现以下功能 1. 显示原图像、移除像素后的图像和恢复出的图像。 2. 求该去噪算法的MSE值。
  • K邻近算法matlab实现

    2016-01-16 10:26:03
    K最邻近密度估计技术是一种分类方法,不是聚类方法
  • MATLAB计算K近邻

    千次阅读 2018-03-02 16:33:38
    在实验中经常会需要计算K近邻,为了避免多次重写,这里用MATLAB实现了一个计算K近邻的函数,该函数要求输入两个参数,第一个参数就是数据矩阵,要求每行为一个多维样本点,第二个参数就是K值了。函数返回K近邻矩阵。...
  • MATLAB计算K近邻之升级算法 K近邻法分类待测样本点,模式识别实验内容之一,用MATLAB生成随机样本点作为样本集,用样本集将考试集分类。具体原理自己参悟,直接上源码解读。 1.前提安装专用学习库 ...
  • K近邻MATLAB实现

    2021-04-23 22:59:18
    K近邻MATLAB实现发布时间:2018-03-27 10:13,浏览次数:564, 标签:MATLAB【原创】Liu_LongPo 转载请注明出处【CSDN】http://blog.csdn.net/llp1992 参考...也就是将新的没有被分类的点...
  • 基于KNN 算法的分类器matlab实现,简单操作,可出图,可根据自身需求修改代码
  • 基于matlab采用KNN算法手写体数字识别实现 一、前言 KNN 全称是 K- Nearest Neighbors ,K-近邻。简单来说,K就是邻居个数,选出和测试样本最像的邻居(这里是欧式几何距离最短的K个邻居),那么样本的邻居是什么,...
  • k近邻算法的原理、示例与分析

    千次阅读 2021-04-06 23:07:48
    k近邻算法的原理、示例与分析 代码参考书籍 Python机器学习基础教程. Andreas C.muller, Sarah Guido著(张亮 译). 北京:人民邮电出版社,2018.1(2019.6重印) 实现环境 System:Ubuntu server 20.04 (Jupyter ...
  • KNN算法MATLAB实现

    2020-07-10 20:47:52
    邻近算法,或者说K最近邻(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是K个最近的邻居的意思,说的是每个样本都...近邻算法就是将数据集合中每一个记录进行分类的方法 。
  • KNN分类算法原理及其Matlab实现

    千次阅读 热门讨论 2018-11-09 21:40:10
    K近邻算法是一种简单的监督学习算法。对于给定测试样本,直接计算该样本和训练集的距离,将距离最近的k个“邻居”点的类别作为参考,作为预测结果返回。 测试数据 测试数据来自林智仁的分类任务数据集,链接:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,604
精华内容 641
关键字:

k近邻算法matlab实现

友情链接: AD7843.rar