草庐IT

EM距离

全部标签

java - 欧氏距离,Scipy、纯Python、Java结果不同

我正在研究欧几里得距离度量的不同实现,我注意到我得到了Scipy、纯Python和Java的不同结果。下面是我如何使用Scipy(=选项1)计算距离:distance=scipy.spatial.distance.euclidean(sample,training_vector)这是我在论坛中找到的Python实现(选项2):distance=math.sqrt(sum([(a-b)**2fora,binzip(training_vector,sample)]))最后,这是我在Java中的实现(选项3):publicdoubledistance(int[]a,int[]b){asser

python - 给定测地线的成对距离矩阵,哪些算法可用于为流形生成欧几里德嵌入?

我有一个方阵D(目前表示为形状为(572,572)的numpy数组)似乎对应于沿大致圆柱形物体表面的点之间的成对距离。即,值D[i,j]对应于沿该空心圆柱体表面的任何路径的最小长度。如何将这572个点构建到保留那些测地线距离的欧氏空间中的3维(或n维)嵌入?当前尝试像locallylinearembedding这样的算法和isomap能够采用成对的测地线距离矩阵并输出嵌入,以便成对的euclidean距离与原始测地线相同。虽然这通常不是同一个任务,但在输出恰好在某个维度上接近超立方体的情况下,所需的转换实际上已经发生(考虑swissroll),因为嵌入本身是一个流形,所以欧氏距离对应于

python - 有效检查Python中大量对象的欧氏距离

在路线规划算法中,我试图根据到另一个节点的距离对节点列表执行过滤器。我实际上是从粗略的场景图中提取列表。我使用术语“单元格”来指代简单场景图中的体积,我们从中获取了彼此靠近的节点列表。现在,我将其实现为:#SSCCEversionofthecorefunctiondefnodes_in_range(src,cell,maxDist):srcX,srcY,srcZ=src.x,src.y,src.zmaxDistSq=maxDist**2fornodeincell:distSq=(node.x-srcX)**2ifdistSq>maxDistSq:continuedistSq+=(nod

Python 快速计算很多距离

我有36,742个点的输入,这意味着如果我想计算距离矩阵的下三角(使用vincenty近似),我需要生成36,742*36,741*0.5=1,349,974,563个距离。我想保留彼此相距50公里以内的配对组合。我目前的设置如下shops=[[id,lat,lon]...]deflower_triangle_mat(points):foriinrange(len(shops)-1):forjinrange(i+1,len(shops)):yield[shops[i],shops[j]]defreturn_stores_cutoff(points,cutoff_km=0):below_

python - numpy 数组之间的距离,按列

我有2个二维数组,其中列向量是特征向量。一个数组的大小为FxA,另一个数组的大小为FxB,其中Aarr1=np.array([[1,4],[2,5],[3,6]])arr2=np.array([[1,4,7,10,..],[2,5,8,11,..],[3,6,9,12,..]])我想计算arr1和arr2的片段之间的距离,该片段大小相等(在本例中为3x2),对于的每个可能片段>arr2。列向量彼此独立,所以我认为我应该计算arr1中每个列向量与范围从i到的列向量集合之间的距离i+A来自arr2并取这些距离的总和(虽然不确定)。numpy是否提供了一种有效的方法来执行此操作,或者我是否必

python - 重新排列点列表以达到它们之间的最短距离

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭9年前。Improvethisquestion例如,我有一个2D点列表:1,12,21,34,52,1这些点之间的距离是已知的(例如使用math.hypot。)我想对列表进行排序,以便它们之间的距离最小。我可以接受任何可能的解决方案顺序,只要这些点是最短的顺序即可。实现此目标的最Pythonic方法是什么?我正在考虑算出任何项目与任何其他项目之间的距离,并每次都选择最小的,但在我正在处理的列表中这将是一个缓慢的算法(1,000个项目并不罕见。

python - Scipy 负距离?什么?

我有一个包含小数点后4位float的输入文件:i.e.133590.00000.00000.00010.00010.0002`0.00030.0007...(第一个是id)。我的类使用loadVectorsFromFile方法将其乘以10000,然后使用int()这些数字。最重要的是,我还循环遍历每个向量以确保内部没有负值。但是,当我执行_hclustering时,我不断看到错误,“LinkageZcontainsnegativevalues”。我真的认为这是一个错误,因为:我检查了我的值(value)观,这些值没有足够小或足够大以接近float的限制,并且我用来导出文件中值的公式使用

python - 在 Python 中查找两个列表的点之间的最小距离

我有两个坐标列表:s1=[(0,0),(0,1),(1,0),(1,1)]s2=[(3,2),(1,9)]我想计算s1中每个点到s2中任意点的最小距离。例如结果应如下所示。result=[3.60,3.16,2.82,2.23]问题要达到这个结果,执行时间最优化的方法是什么?到目前为止,我已经尝试过了,但执行时间并不乐观:importmathdefnearestDistance(boundary,p):minDistList=map(lambdab:(b[0]-p[0])**2+(b[1]-p[1])**2,boundary)minDist2=min(minDistList)retur

python - 定义一个算法,它获取一个数字和一个列表,并根据数字与列表平均值的距离返回一个标量

假设我们有一个列表,它在每次迭代中附加一个介于15和32之间的整数(我们称该整数为rand)。我想设计一种算法,为每个rand分配大约1(1.25到0.75之间)的奖励。分配奖励的规则是这样的。首先我们计算列表的平均值。那么如果rand大于平均值,我们期望奖励小于1,如果rand小于平均值,则奖励高于1。距离越远在average和rand之间,奖励增加/减少的越多。例如:rand=15,avg=23然后reward=1.25rand=32,avg=23然后reward=0.75rand=23,avg=23thenreward=1等等。我为此算法开发了以下代码:importnumpyas

python - 如何在sklearn DistanceMetrics中使用马氏距离?

也许这是基本的,但我找不到在sklearn中使用mahalanobis距离的好例子。我什至无法获得这样的指标:fromsklearn.neighborsimportDistanceMetricDistanceMetric.get_metric('mahalanobis')这会抛出一个错误:TypeError:0-dimensionalarraygiven.数组必须至少是二维的。但是,我什至无法让它接受数组:DistanceMetric.get_metric('mahalanobis',[[0.5],[0.7]])抛出:TypeError:get_metric()takesexactly