问题标签 [knn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1159 浏览

opencv - OpenCV中如何实现knn算法

我想知道 Knn 算法是如何在 OpenCV 中实现的。我在哪里可以看到这段代码?容易理解吗?有人可以用伪代码向我解释一下吗?

因为我已经实现了以下算法:

http://www.codeproject.com/Articles/32970/K-Nearest-Neighbor-Algorithm-Implementation-and-Ov

但它给了我使用相同训练数据的 OpenCV 函数的不同结果。特别是,OpenCV 函数给了我最好的结果。

谢谢

0 投票
2 回答
7167 浏览

python-2.7 - python中的K最近邻

我有包含单个维度和类标签的数据。我想在上面运行 KNN。

我的数据是这样的

我做了下面的事情,结果出错了。我从错误中了解到 train 的数据类型无法识别,但我不知道如何修复它。请帮忙

0 投票
3 回答
36697 浏览

python - 如何在python中测量knn分类器的准确性

我使用 knn 对我的数据集进行分类。但是我不知道如何衡量训练好的分类器的准确性。scikit 是否有任何内置功能来检查 knn 分类器的准确性?

感谢所有的帮助。谢谢

0 投票
1 回答
6009 浏览

opencv - 如何使用opencv flann,尤其是设置距离算法?

我正在使用 opencv 2.4.4 flann。

我参考:http ://docs.opencv.org/2.4.4/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html

做KNN。

我有一个矩阵(8000*32)flann_m。有 8000 个数据,每个数据有 32 个特征。

我写了这样的代码:

我可以在 nreps 和 dist 中得到 KNN 结果,nresps 是 N 个邻居的索引,dist 是距离。

但我不知道如何在 opencv flann 中设置不同的距离算法(ChiSquare、Euclidean 等)。

我检查了 flann.cpp,似乎 set_distance() 函数已被弃用。

0 投票
2 回答
6926 浏览

algorithm - Knn 搜索大数据?

我有兴趣在大型数据集上执行 knn 搜索。

有一些库:ANNFLANN,但我对这个问题很感兴趣:如果您的数据库不完全适合内存(RAM),如何组织搜索?

0 投票
1 回答
558 浏览

visual-c++ - 未处理的异常

我正在尝试通过论坛的帮助代码来实现 KNN 算法。代码如下。

我使用 unsigned char 而不是 BYTE,我认为它应该做同样的工作。如果我在这里错了,请纠正我。

尽管如此,我不是编程专家,但是当我运行代码时出现此错误

* K-Nearest Neighbour.exe 中 0x000007FEE68F7450 (msvcr110d.dll) 处未处理的异常:0xC0000005:访问冲突写入位置 0x0000000000000003

有人可以帮我构建此代码..谢谢

0 投票
0 回答
987 浏览

c++ - OpenCV Knearest 没有正确分类

我正在尝试制作一个 K 最近邻分类器来根据其色调颜色值识别对象。我有两个 CSV 文件,其中填充了两个单独对象的这些颜色值,每个对象包含大约 100 个样本。它们都被归一化为包含 40 个整数,用于描述该对象每行的平均颜色。我使用 K 值 10。

我的分类器总是返回标签“1”,即使我在准备作为训练数据的相同数据上使用它。当我查找函数返回的最近点时find_nearest,无论输入数据如何,我总是会看到相同的 10 个点:1、1、0、1、1、1、1、1、1、1。输入数据或学习数据似乎都有问题,但是当我检查CvMat*对象的内容时,它们都是应有的。

谁能在下面的代码中看到我做错了什么?我通常使用 c++ API,但我发现找到 k 最近邻居的示例更加困难。我已经检查了openCV和这个博客的例子

要识别对象:

0 投票
1 回答
890 浏览

matlab - matlab中的FLANN从我自己的计算中返回不同的距离

我在 matlab 中使用 FLANN 并使用 SIFT 特征描述符作为我的数据。有一个功能:

这里index是用 kd-tree 构建的。“用户手册”说result返回 中样本的最近邻testset,并ndists包含测试样本与最近邻之间的对应距离。我使用了欧几里得距离,发现其中的距离ndists与原始数据计算的距离不同。更奇怪的是,里面的所有数字ndists都是整数,这对于欧几里得距离来说往往是不可能的。你能帮我解释一下吗?

0 投票
3 回答
4750 浏览

c++ - 使用 KNN 分类器进行数字识别前的预处理

现在我正在尝试使用 OpenCV 创建数字识别系统。WEB 中有很多文章和示例(甚至在StackOverflow上)。我决定使用KNN 分类器,因为这个解决方案在 WEB 中是最流行的。我找到了一个手写数字数据库,其中包含 60k 个示例的训练集,错误率低于 5%。

我以本教程为例,说明如何使用 OpenCV 处理该数据库。我使用完全相同的技术,在测试数据(t10k-images.idx3-ubyte)上我有 4% 的错误率。但是当我尝试对自己的数字进行分类时,我遇到了更大的错误。例如:

  • 在此处输入图像描述被识别为7
  • 在此处输入图像描述并被在此处输入图像描述识别为5
  • 在此处输入图像描述并被在此处输入图像描述识别为1
  • 在此处输入图像描述被识别为8

依此类推(如果需要,我可以上传所有图像)。

如您所见,所有数字都具有良好的质量,并且易于人类识别。

所以我决定在分类之前做一些预处理。从MNIST 数据库站点上的表格中,我发现人们正在使用去歪斜去噪模糊像素移位技术。不幸的是,几乎所有文章的链接都被破坏了。所以我决定自己做这样的预处理,因为我已经知道怎么做。

现在,我的算法如下:

  1. 侵蚀图像(我认为我的原始数字太
    粗糙了)。
  2. 去除小轮廓。
  3. 阈值和模糊图像。
  4. 中心数字(而不是移位)。

我认为在我的情况下不需要纠偏,因为所有数字通常都是旋转的。而且我也不知道如何找到合适的旋转角度。所以在这之后我得到了这些图像:

  • 在此处输入图像描述也是1
  • 在此处输入图像描述3(不是以前的5
  • 在此处输入图像描述5(不是8
  • 项目清单7(利润!)

所以,这样的预处理对我有点帮助,但我需要更好的结果,因为在我看来,这样的数字应该可以毫无问题地被识别。

任何人都可以给我任何关于预处理的建议吗?谢谢你的帮助。

PS我可以上传我的源代码(c++)。

0 投票
1 回答
3069 浏览

audio - 如何使用 MFCC 向量对单个音频文件进行分类?

这可能是一个非常愚蠢的问题,但我在任何地方都找不到详细信息。

所以我有一个 3 秒长的录音(wav 文件)。那是我的样本,它需要分类为 [class_A] 或 [class_B]。

通过遵循 MFCC 上的一些教程,我将样本划分为帧(准确地说是 291 帧),并且我从每个帧中得到了 MFCC。

现在我有 291 个特征向量,每个向量的长度是 13。

我的问题是;您如何将这些向量与分类器(例如 k-NN)一起使用?我有 291 个向量代表 1 个样本。我知道如何为 1 个样本使用 1 个向量,但如果我有 291 个向量,我不知道该怎么做。我真的无法在任何地方找到解释。