matlab knn方法快速实现,手把手教学

Posted 易烊千蝈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab knn方法快速实现,手把手教学相关的知识,希望对你有一定的参考价值。

目录

介绍

1968年,Cover和Hart提出K近邻算法。该算法既可以用于回归也可以用于分类,其用于分类时其输入为实例的特征向量,输出为实例的类别。假设给定一个训练数据集,其中实例类别已知。度量每个样本点到其他样本点的距离,选择其中K个距离最近的样本点,按照多数表决原则对新的实例进行分类。

KNN的全称是K Nearest Neighbors,意思是K个最近的邻居,从这个名字我们就能看出一些KNN算法的蛛丝马迹了。K个最近邻居,毫无疑问,K的取值肯定是至关重要的。那么最近的邻居又是怎么回事呢?其实啊,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。

我们知道K的取值比较重要,那么该如何确定K取多少值好呢?答案是通过交叉验证(将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如6:4拆分出部分训练数据和验证数据),从选取一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值。

话不多说,进入实战

  • knn的matlab实验【使用UCI数据集】

首先加载数据

load fisheriris
X = meas;
Y = species;

之后直接上内置函数

mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1);

这样就获得了KNN模型

下一步,就可以直接使用了

Xnew = [min(X);mean(X);max(X)];
[label,score,cost] = predict(mdl,Xnew)

这样便得到了结果

注意事项

训练和测试之前需要对数据标准化、归一化处理,不然可能结果无法达到预期。

KNN算法的优势和劣势

了解KNN算法的优势和劣势,可以帮助我们在选择学习算法的时候做出更加明智的决定。那我们就来看看KNN算法都有哪些优势以及其缺陷所在!

  1. KNN算法优点

简单易用,相比其他算法,KNN算是比较简洁明了的算法。即使没有很高的数学基础也能搞清楚它的原理。

模型训练时间快,上面说到KNN算法是惰性的,这里也就不再过多讲述。
预测效果好。

对异常值不敏感这里是引用

  1. KNN算法缺点

对内存要求较高,因为该算法存储了所有训练数据

预测阶段可能很慢

对不相关的功能和数据规模敏感

以上是关于matlab knn方法快速实现,手把手教学的主要内容,如果未能解决你的问题,请参考以下文章

Matlab基于k近邻算法实现多分类预测(源码可直接替换数据)

Matlab基于k近邻算法实现多分类预测(源码可直接替换数据)

分类预测 | MATLAB实现KNN分类预测(SA-KNNGOA-KNN对比)

kNN的matlab实现

Matlab中的Knn回归

day-9 sklearn库和python自带库实现最近邻KNN算法