我有 2 组 2D 点(A 和 B),每组大约有 540 个点。我需要找到集合 B 中与 A 中所有点的距离超过定义距离 alpha 的点。
我有一个解决方案,但速度不够快
# find the closest point of each of the new point to the target set
def find_closest_point( self, A, B):
outliers = []
for i in range(len(B)):
# find all the euclidean distances
temp = distance.cdist([B[i]],A)
minimum = numpy.min(temp)
# if point is too far away from the rest is consider outlier
if minimum > self.alpha :
outliers.append([i, B[i]])
else:
continue
return outliers
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 …
因此,在查看了 stackoverflow 上提出的各种问题后,我仍然无法理解 R 中的 dist 函数,甚至无法理解一般的距离矩阵。
所以我有两个带有 xy 坐标的数据框。
df1 <- data.frame(x = runif(3,0,50), y = runif(3,0,50))
df2 <- data.frame(x = runif(20,0,50), y = runif(20,0,50))
Run Code Online (Sandbox Code Playgroud)
我想迭代第一个数据帧,对于每个点/行,我想检查到第二个 df 中所有点的距离。这可能非常容易做到,我很抱歉和羞愧我问这个,但我现在已经尝试了几个小时。任何帮助表示赞赏!
我有两个点X = (x1,y1)和Y=(x2,y2)在笛卡尔平面上。我需要找到第三个点Z = (x,y),使这三个点形成一个等边三角形。
我使用以下代码示例计算两点之间的欧几里德距离:
def distance(points, i, j):
dx = points[i][0] - points[j][0]
dy = points[i][1] - points[j][1]
return math.sqrt(dx*dx + dy*dy)
Run Code Online (Sandbox Code Playgroud)
理论上,我需要使XZ和YZ的距离相等XY。这给了我们两个可能的答案,我也需要它们。Z但我在代码中启动这一点时遇到困难。有人可以帮我解决这个问题吗?以下是我尝试过的示例。
L = [0, 6] #known two points
d= distance(points, L[0], L[1])
x = Symbol('x')
y = Symbol('y')
newpoint = x,y #coordintes of the third point of the triangle
f1 = distance(points, L[0], newpoint)
f2 = distance(points, L[1], newpoint)
print(nsolve((f1, f2), (x, …Run Code Online (Sandbox Code Playgroud) 随着时间的推移,我有一组对象及其位置。我想获得每辆车与其最近邻居之间的距离,并计算每个时间点的平均值。示例数据框如下:
time = [0, 0, 0, 1, 1, 2, 2]
x = [216, 218, 217, 280, 290, 130, 132]
y = [13, 12, 12, 110, 109, 3, 56]
car = [1, 2, 3, 1, 3, 4, 5]
df = pd.DataFrame({'time': time, 'x': x, 'y': y, 'car': car})
df
x y car
time
0 216 13 1
0 218 12 2
0 217 12 3
1 280 110 1
1 290 109 3
2 130 3 4
2 132 56 5 …Run Code Online (Sandbox Code Playgroud) 我想为10060 个记录/点创建一个距离邻近矩阵,其中每个记录/点有23 个使用欧氏距离作为度量的属性。我使用嵌套 for 循环编写代码来计算每个点之间的距离(导致(n(n-1))/2)计算)。花了很长时间(大约8分钟)。当我使用 cdist 时,它花费的时间要少得多(仅 3 秒!!!)。当我查看源代码时,cdist 还使用嵌套的 for 循环,而且它进行了n^2 次计算(这大于我的逻辑所做的比较次数)。是什么让 cdist 执行得更快并给出正确的输出?请帮我理解。提前致谢。
我想衡量句子之间的相似度。我可以使用sklearn和欧氏距离来衡量句子之间的语义相似度吗?我也读到了余弦相似度。有人可以解释这些措施的区别以及最好的使用方法是什么?
euclidean-distance cosine-similarity gensim scikit-learn sentence-similarity
首先我知道欧几里得距离是什么以及它在两个向量之间做什么或计算什么。
但我的问题是关于如何计算两个类对象之间的距离,例如在 Java 或任何其他 OOP-Language 中。我读了很多关于机器学习的东西,已经使用库等编写了一个分类器,但我想知道当我有这个对象时,欧几里得距离是如何计算的:
class Object{
String name;
Color color;
int price;
int anotherProperty;
double something;
List<AnotherObject> another;
}
Run Code Online (Sandbox Code Playgroud)
我已经知道的(如果我没有错!)是我必须将此对象转换为一个(n)向量/数组表示属性或“功能”(在机器学习中调用?)
但是我该怎么做呢?这正是我需要的一块拼图,以了解更多。
我是否必须收集属性的所有可能值才能将其转换为数字并将其写入数组/向量中?
示例:
我猜上面的对象将由一个 6 维数组或更小的基于计算所需的“特征”来表示。假设颜色、名称和价格是基于以下数据的数组/向量的必要特征:
会像这样吗?
[3,324,14]
Run Code Online (Sandbox Code Playgroud)
如果我对来自同一类的每个对象都这样做,我就可以计算欧几里得距离。我是对的还是我误解了什么,还是完全错误?
我有一个二维平面中点的有序列表。我想找到最短的路线,以便它按照给定的顺序至少在距离每个点 X(或更近)的范围内。我如何找到这条路线?
我意识到将确定路线(方向在那里改变)的点将位于周长 X 的圆上,以输入点本身为中心,但我没有进一步了解。
我正在用 Python 实现这一点,但很乐意提供任何理论帮助。
我是聚类算法的新手。我有一个电影数据集,包含 200 多部电影和 100 多个用户。所有用户都至少评价了一部电影。值 1 表示好,0 表示坏,如果注释者别无选择,则值为空白。
我想根据相似的用户的评论对他们进行聚类,这样的想法是,将相似电影评为良好的用户也可能会将同一聚类中没有任何用户评为良好的电影评为良好。我使用余弦相似度度量和 k 均值聚类。csv文件如下所示:
UserID M1 M2 M3 ............... M200
user1 1 0 0
user2 0 1 1
user3 1 1 1
.
.
.
.
user100 1 0 1
Run Code Online (Sandbox Code Playgroud)
我面临的问题是我不知道如何找到该数据集的最佳簇数,然后绘制这些簇的图表。我用 k 均值对它们进行聚类,这没有问题,但我想知道该数据集最稳定或最佳的聚类数量。
我将不胜感激一些帮助..
python cluster-analysis k-means euclidean-distance cosine-similarity
python ×4
dataframe ×2
algorithm ×1
color-space ×1
colors ×1
coordinates ×1
gensim ×1
java ×1
k-means ×1
numpy ×1
oop ×1
pandas ×1
plane ×1
python-3.x ×1
r ×1
scikit-learn ×1
scipy ×1
srgb ×1