Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 仅使用knnsearch(MATLAB)使用knn分类的简单方法?_Algorithm_Matlab_Statistics_Nearest Neighbor_Knn - Fatal编程技术网

Algorithm 仅使用knnsearch(MATLAB)使用knn分类的简单方法?

Algorithm 仅使用knnsearch(MATLAB)使用knn分类的简单方法?,algorithm,matlab,statistics,nearest-neighbor,knn,Algorithm,Matlab,Statistics,Nearest Neighbor,Knn,我有一个向量x,有两列(第1列是功能1,第2列是功能2),每行代表一个数据点。我还有另一个向量,我们称之为c,它包含每个数据点(1或2)的类标签,只有2个类。是否有一种仅使用knnsearch构建K-NN分类器的简单方法?我已经试了差不多整整两天了,但都没法用。我知道数据中的哪些点是训练集、验证集和测试集。然后,我应该看看被错误分类的点数,看看随着k的增加这是如何变化的。有人有什么建议吗?在这一点上,我愿意接受任何我能得到的东西。甚至只是一个大概的轮廓 如果您添加了代码并指定了代码的哪一部分不起

我有一个向量x,有两列(第1列是功能1,第2列是功能2),每行代表一个数据点。我还有另一个向量,我们称之为c,它包含每个数据点(1或2)的类标签,只有2个类。是否有一种仅使用knnsearch构建K-NN分类器的简单方法?我已经试了差不多整整两天了,但都没法用。我知道数据中的哪些点是训练集、验证集和测试集。然后,我应该看看被错误分类的点数,看看随着k的增加这是如何变化的。有人有什么建议吗?在这一点上,我愿意接受任何我能得到的东西。甚至只是一个大概的轮廓

如果您添加了代码并指定了代码的哪一部分不起作用,会更好。关于knnsearch如何工作的一般建议

K = 1 % constant. 'K'th nearest neighbor
x = rand(10, 2) % 10 data with length 2 feature
c = rand(2, 2) % class data point, 2 classes with length 2 feature
outputClass = knnsearch(c, x, 'K', K) % knn-classifies x in c class points
输出每个点x的类

outputClass =

     2
     2
     1
     2
     2
     2
     1
     2
     2
     1
也就是说,对于x中的每个点,它返回c中欧氏距离最近点的索引

如果要查看其中有多少错误分类,可以使用

sum(outputClass ~= expectedClass)

然而,如果你只有两个类,增加K将毫无意义。KNN返回接近数据点的K个类。如果只有2个类,K=2的KNN将具有与K=1的KNN完全相同的信息量。通常,您使用KNN分类将一个点分类到多个类中,以找到k个最接近的类。

我想我理解您的意思,但c不应该是您期望的类吗?或者至少我最初是这么想的。我不认为这实际上是一个分类器,对吗?如果将其用于培训数据,我可以测试验证等吗?我明白了。您希望找到标有c的训练数据的knn中心。你不能只使用knn来实现这一点。我会这样做:用kmeans训练数据(找到每个标签的中心)->用knn测试数据(搜索点靠近训练中心)你是说我应该在使用knnsearch后找到结果的平均值,然后根据点到该平均值的距离进行分类?