问题标签 [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 投票
7 回答
2830 浏览

algorithm - K 最近邻算法疑问

我是人工智能新手。我了解 K 最近邻算法以及如何实现它。但是,您如何计算不在秤上的物体的距离或重量?

例如,年龄的距离可以很容易地计算出来,但是如何计算红色与蓝色的距离?也许颜色是一个不好的例子,因为你仍然可以说使用频率。例如,从汉堡到比萨再到薯条怎么样?

我觉得有一种聪明的方法可以做到这一点。

预先感谢您的关注。

编辑:谢谢大家非常好的答案。它真的很有帮助,我很感激。但我认为必须有一条出路。

我可以这样做吗?假设我正在使用我的 KNN 算法对一个人进行预测,他/她是否会在我提供上述所有三种食物的餐厅用餐。当然,除了简单起见,还有其他因素,对于最喜欢的食物领域,在 300 人中,150 人喜欢汉堡,100 人喜欢披萨,50 人喜欢薯条。常识告诉我最喜欢的食物会影响人们是否吃的决定。

所以现在一个人输入他/她最喜欢的食物作为汉堡,我要预测他/她是否会在我的餐厅吃饭。忽略其他因素,并根据我(培训)以前的知识库,常识告诉我,与他进入比萨饼或薯条相比,这个特定领域最喜欢的食物的 k 最近邻居距离更近的可能性更高。

唯一的问题是我使用了概率,我可能错了,因为我不知道也可能无法计算实际距离。我也担心这个领域对我的预测施加太多/太少的权重,因为距离可能与其他因素(价格、一天中的时间、餐厅是否满员等我可以轻松量化)不成比例,但我猜想我可以通过一些参数调整来解决它。

哦,每个人都提出了一个很好的答案,但我只能接受一个。那样的话,我明天就接受得票最高的那个。再次感谢大家。

0 投票
3 回答
243 浏览

algorithm - 空间点上的最小图

我有一组 3 维点。我想快速查询任何这些点的 k 个最近邻居。我知道这样做的常用方法是八叉树,但是我认为使用下面描述的数据结构,查询会快得多。


我想要一个关于点的最小图作为顶点,它具有以下属性:

在任意 2 点 P1、P2 之间:对于所有内部点 P3,存在一条路径:

距离(P1,P3)<= 距离(P1,P2)。


但我的问题是我无法弄清楚如何在可承受的时间内计算这个最小的图表。

0 投票
2 回答
214 浏览

grid - 动态最近元素

我有一个 2D 表面( Grid ),在不同位置有 50 个元素。我需要确定最接近给定点的 10 个元素。

此外,给定点不断移动,我需要对每个移动进行计算。

我知道我可以计算每次运动到每个点的欧几里得距离,但我想要一种更快的方法。

谢谢。

0 投票
2 回答
4405 浏览

search - kd 树对于 kNN 搜索是否有效。k 最近邻搜索

我必须在 kd-tree 中实现 k 个最近邻搜索 10 维数据。

但问题是我的算法对于 k=1 非常快,但对于 k>1 (k=2,5,10,20,100) 慢 2000 倍

这对 kd 树来说是正常的,还是我在做一些磨损的事情?

0 投票
12 回答
32703 浏览

algorithm - 数百万个 3D 点:如何找到最接近给定点的 10 个?

3-d 中的一个点由 (x,y,z) 定义。任意两点 (X,Y,Z) 和 (x,y,z) 之间的距离 d 为 d= Sqrt[(Xx)^2 + (Yy)^2 + (Zz)^2]。现在一个文件中有一百万个条目,每个条目都是空间中的某个点,没有特定的顺序。给定任意点 (a,b,c) 找到离它最近的 10 个点。您将如何存储百万点以及如何从该数据结构中检索这 10 个点。

0 投票
4 回答
11227 浏览

algorithm - Efficient method for finding KNN of all nodes in a KD-Tree

I'm currently attempting to find K Nearest Neighbor of all nodes of a balanced KD-Tree (with K=2).

My implementation is a variation of the code from the Wikipedia article and it's decently fast to find KNN of any node O(log N).

The problem lies with the fact that I need to find KNN of each node. Coming up with about O(N log N) if I iterate over each node and perform the search.

Is there a more efficient way to do this?

0 投票
3 回答
940 浏览

c++ - 是否可以找到 *IN* KD-tree 的节点的 KNN?

尝试使用 KD 树创建 KNN 搜索。我可以很好地形成 KD 树(或者至少,我相信我可以!)。我的问题是我正在寻找与点列表中每个点最近的 2 个邻居。

那么,有没有一种方法可以使用 KD 树找到一个点的 K 最近邻居,即使该点实际上在树中,还是我需要为每个点构建一个单独的 KD 树,而忽略我希望的点寻找?

我的实现语言是 C++,但我更多的是寻找算法或一般帮助,谢谢!

谢谢,斯蒂芬

0 投票
3 回答
9995 浏览

ocr - 使用最近邻算法进行图像模式识别

所以我希望能够识别图像中的模式(例如数字 4),我一直在阅读不同的算法,我真的很想使用最近邻算法,它看起来很简单,我根据本教程理解它: http: //people.revoledu.com/kardi/tutorial/KNN/KNN_Numerical-example.html 问题是,虽然我知道如何使用它来填充缺失的数据集,但我不明白如何将它用作模式识别工具来瞄准图像形状识别。有人可以阐明该算法如何用于模式识别吗?我已经看过使用 OpenCV 的教程,但是我真的不想使用这个库,因为我有能力自己进行预处理,而且我会为应该是一个简单的最近邻居而实现这个库似乎很愚蠢算法。

0 投票
4 回答
2505 浏览

python - 使用 Python 从图像创建数据集以进行人脸识别

我正在尝试用 Python 编写一个人脸识别程序(我将应用 k-nn 算法进行分类)。

首先,我将图像转换为灰度,然后用图像的像素(总共 128x128= 16384 个特征)创建了一个长列向量(通过使用 Opencv 的 imagedata 函数)

所以我得到了一个如下所示的数据集(最后一列是类标签,我只显示了数据集的前 7 个特征而不是 16384)。

但是当我将 k-nn 应用于这个数据集时,我得到了尴尬的结果。我是否需要对这个数据集应用额外的过程,而不是仅仅将图像转换为像素表示?

谢谢。

0 投票
3 回答
1864 浏览

algorithm - 如何在 k-Nearest-Neighbor 算法中同时使用二进制和连续特征?

我的特征向量具有连续(或范围广泛)和二进制分量。如果我简单地使用欧几里得距离,连续分量会产生更大的影响:

将对称与非对称表示为 0 和 1 以及从 0 到 100 的一些不太重要的比率,与将比率更改 25 相比,从对称更改为非对称对距离的影响很小。

我可以为对称性增加更多权重(例如,通过将其设为 0 或 100),但有没有更好的方法来做到这一点?