MATLAB中关于KNN用到的一些函数介绍。

  • 这篇博客主要参考MATLAB R2018a中帮助文档“Classification Using Nearest Neighbors”,介绍了使用MATLAB构建KNN较分类器时可能用到的函数。不得不说MATLAB的库函数还是十分强大的。 笔者仅仅在这里简单介绍相关函数的作用,相关函数更详细的用法请自行查看Help文档。
  • 叫旧版本的matlab 可能找不到这些函数。
  • 这是笔者第一次在CSDN上写文章,有不妥之处观者指出。 有些函数的作用笔者理解的也不是很透彻,请大佬赐教。
  1. pdist():计算两个点的集合中两两成对之间的距离。可以通过‘Distance’参数设置计算距离的类型。所谓距离的类型比如说有欧几里得距离,汉明距离,闵可夫斯基距离等。
  2. tiedrank():计算某些类型的距离时,需要使用这个函数,但在暂时还不清楚这个函数的深刻含义。这个函数的输入是一个数值向量,返回向量中每个元素在这个向量中的RANK。这个RANK与这个元素在所有元素中的大小排序有关。但是在matlab帮助文档中未看到相关定义和公式。
  3. rangesearch(X,Y,r):寻找X集合中的点,其与Y集合中的点的距离小于r。还有很多参数中设置,不一一赘述。不得不说,matlab的库函数真的非常强大。
  4. knnresearch():与rangesearch类似,寻找X中与Y最邻近的点,可以通过参数设置最邻近的点的个数。
  5. matlab定义了两个搜索器(searcher),这个搜索器其实是一个对象。两个搜索器分别是ExhaustiveSearcher和KDTreeSearcher。这两个对象分别定义相关的属性和函数。knnsearch和rangesearch都是这两个对象的函数。通过ExhaustiveSearcher对象调用knnsearch和rangesearch,使用的是穷举搜索法;而通过KDTreeSearcher则使用基于树的搜索方法。
  6. knnsearch支持自定义距离公式,例如自定义距离公式为:
                                                                 \chi (x,z) = \sqrt{\sum_{j=1}^{J}\omega_{j}(x_{j}-z_{j})^{2}}
    chiSqrDist = @(x,Z)sqrt((bsxfun(@minus,x,Z).^2)*w);
    [Idx,D] = knnsearch(X,Y,'Distance',chiSqrDist,'k',k);

    7.fitknn构建分类器,参见我的另一篇博客。

猜你喜欢

转载自blog.csdn.net/qq7835144/article/details/84983180