标签: euclidean-distance

欧几里德距离与权重

我目前正在使用SciPy计算欧氏距离

dis = scipy.spatial.distance.euclidean(A,B)
Run Code Online (Sandbox Code Playgroud)

哪里; A,B是5维位向量.它现在工作正常,但如果我为每个维度添加权重,那么仍然可以使用scipy吗?

我现在拥有的: sqrt((a1-b1)^2 + (a2-b2)^2 +...+ (a5-b5)^2)

我想要的:sqrt(w1(a1-b1)^2 + w2(a2-b2)^2 +...+ w5(a5-b5)^2)使用scipy或numpy或任何其他有效的方法来做到这一点.

谢谢

python numpy scipy euclidean-distance

5
推荐指数
1
解决办法
4477
查看次数

计算3D中两点之间的距离

我的任务是创建主类,在其中我将任何点的值初始化为(0,0,0)并且能够分别访问和改变所有三个值(x,y,z).为此,我使用了getter和setter.我的下一个任务是在我的主类(我称之为"distanceTo")中创建一个计算两点之间距离的方法.

如何创建方法" distanceTo",通过获取x,y,z坐标来计算两点之间的距离?我假设我的答案将与某些事情有关,sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)但我不知道如果我的点在我的第二个测试点类之前没有定义,我怎么能在我的主类中的方法中编写它

到目前为止我只有两点,但我正在寻找一个更一般的答案(所以如果我创建三个点,p1 p2和p3,我可以计算p1和p2之间的距离或p2和p3之间的距离或距离在p1和p3之间.

我的主要课程:

package divingrightin;

public class Point3d {

    private double xCoord;
    private double yCoord;
    private double zCoord;


    public Point3d(double x, double y, double z){
        xCoord = x;
        yCoord = y;
        zCoord = z;
    }

    public Point3d(){
        this (0,0,0);
    }

    public double getxCoord() {
        return xCoord;
    }
    public void setxCoord(double xCoord) {
        this.xCoord = xCoord;
    }
    public double getyCoord() {
        return yCoord;
    }
    public void setyCoord(double yCoord) {
        this.yCoord = yCoord;
    }
    public double …
Run Code Online (Sandbox Code Playgroud)

java distance euclidean-distance coordinate getter-setter

5
推荐指数
2
解决办法
5925
查看次数

如何在 scikit-learn 中实现可调用距离度量?

我在 python 的 scikit learn 中使用聚类模块,我想使用归一化欧几里德距离。这个(我知道的)没有内置距离。这是一个列表

因此,我想使用可调用对象实现我自己的归一化欧几里得距离。该函数是我的distance模块的一部分,称为distance.normalized_euclidean_distance. 它采用三个输入: XY,和SD

但是,归一化欧几里得距离需要总体样本的标准差。但是,scipy 中的成对距离只允许两个输入:XY

我如何让它接受额外的论点?

我试着把它作为 a **kwarg,但这似乎不起作用:

cluster = DBSCAN(eps=1.0, min_samples=1,metric = distance.normalized_euclidean, SD = stdv)
Run Code Online (Sandbox Code Playgroud)

这里distance.normalized_euclidean是发生在两个数组,我写的功能,X以及Y并计算它们之间的归一化欧氏距离。

...但这会引发错误:

TypeError: __init__() got an unexpected keyword argument 'SD'
Run Code Online (Sandbox Code Playgroud)

使用附加关键字参数的方法是什么?

这里Any further parameters are passed directly to the distance function.,这让我认为这是可以接受的。

python scipy euclidean-distance keyword-argument scikit-learn

5
推荐指数
1
解决办法
2840
查看次数

R 中的加权欧几里得距离

我想从数据框创建一个带有加权欧几里得距离的距离矩阵。权重将在向量中定义。下面是一个例子:

library("cluster")

a <- c(1,2,3,4,5)
b <- c(5,4,3,2,1)
c <- c(5,4,1,2,3)
df <- data.frame(a,b,c)

weighting <- c(1, 2, 3)

dm <- as.matrix(daisy(df, metric = "euclidean", weights = weighting))
Run Code Online (Sandbox Code Playgroud)

我到处搜索,在 R 中找不到一个包或解决方案。“集群”包中的“雏菊”函数声称支持加权,但权重似乎没有被应用,它只是吐出来普通欧几里得。距离。

任何想法堆栈溢出?

r cluster-analysis euclidean-distance r-daisy

5
推荐指数
1
解决办法
4684
查看次数

用于计算两组2d点之间的成对距离的Python替代方案

在Matlab中存在pdist2命令.给定矩阵mx2和矩阵nx2,每行矩阵代表一个2d点.现在我想建立一个mxn矩阵,使得(i,j)元素表示从距离i理论值的点mx2矩阵jTH的点nx2矩阵.我只是调用命令pdist2(M,N).

我在python中寻找替代方案.我当然可以写2 for循环,但由于我使用2个numpy数组,使用for循环并不总是最好的选择.在python宇宙中是否有针对此的优化命令?基本上我要求python替代MATLAB pdist2.

python algorithm numpy matrix euclidean-distance

5
推荐指数
1
解决办法
8020
查看次数

从 sklearn 的 svm.svc 获取到超平面的距离

我目前正在使用 svc 来分离两类数据(下面的功能称为数据,标签是条件)。使用 gridSearchCV 拟合数据后,我得到了大约 0.7 的分类分数,我对这个数字相当满意。之后,我使用 grid.best_estimator_.decision_function() 获取每个类数据与超平面的相对距离,并将它们绘制在箱线图和直方图中,以更好地了解有多少重叠。我的问题是,在直方图和箱线图中,这些看起来完全可以分离,但我知道情况并非如此。我确定我错误地调用了 Decision_function() 但不确定如何真正做到这一点。

    svc=SVC(kernel='linear,probability=True,decision_function_shape='ovr')
cv=KFold(n_splits=4,shuffle=True)
svc=SVC(kernel='linear,probability=True,decision_function_shape='ovr')
C_range=[1,.001,.005,.01,.05,.1,.5,5,50,10,100]
param_grid=dict(C=C_range)
grid=GridSearchCV(svc,param_grid=param_grid, cv=cv,n_jobs=4,iid=False, refit=True)
grid.fit(data,condition)
print grid.best_params
print grid.best_score_

x=grid.best_estimator_.decision_function(data)
plt.hist(x)    
sb.boxplot(condition,x)
sb.swarmplot
Run Code Online (Sandbox Code Playgroud)

在直方图和箱形图中,看起来几乎所有点的距离要么正好是正值,要么是负值,它们之间没有任何距离。

euclidean-distance svc scikit-learn

5
推荐指数
0
解决办法
730
查看次数

dist() 的复杂度是多少?

dist在 R 中使用了该函数,我想知道它的时间复杂度。

我知道层次聚类有N^2*logN时间复杂度。层次聚类由两部分组成,R中代码如下:

> d <- dist(as.matrix(mtcars))   # find distance matrix 
> hc <- hclust(d)                # apply hirarchical clustering 
> plot(hc)                       # plot the dendrogram
Run Code Online (Sandbox Code Playgroud)

在应用层次聚类之前,需要计算距离矩阵。我认为这需要N^2复杂性?

r cluster-analysis euclidean-distance distance-matrix

5
推荐指数
1
解决办法
2302
查看次数

条目与列之间的Pyspark欧式距离

我正在与pyspark合作,想知道在数组的一行条目和整个列之间是否有任何聪明的方法来获取欧氏距离。例如,有一个像这样的数据集。

+--------------------+---+
|            features| id|
+--------------------+---+
|[0,1,2,3,4,5     ...|  0|
|[0,1,2,3,4,5     ...|  1|
|[1,2,3,6,7,8     ...|  2|
Run Code Online (Sandbox Code Playgroud)

选择一列,即id == 1,然后计算欧几里德距离。在这种情况下,结果应为[0,0,sqrt(1 + 1 + 1 + 9 + 9 + 9)]。有人能找出如何有效地做到这一点吗?谢谢!

euclidean-distance pyspark

5
推荐指数
1
解决办法
3707
查看次数

在没有for循环的情况下计算Python中点数组到线段之间的欧几里德距离

我正在寻找一个函数来计算具有两个坐标 (x, y) 和线段的 numpy 点数组之间的欧几里得距离。我的目标是在 0.01 秒内获得线段和 10k 点的结果。

我已经找到了一个单点函数。但是运行 for 循环非常低效。

我还发现了这个计算到无限线距离的函数:

def line_dists(points, start, end):
    if np.all(start == end):
        return np.linalg.norm(points - start, axis=1)

    vec = end - start
    cross = np.cross(vec, start - points)
    return np.divide(abs(cross), np.linalg.norm(vec))
Run Code Online (Sandbox Code Playgroud)

它非常有效,我想对有界线采用类似的方法。

感谢您的帮助。

python geometry numpy euclidean-distance

5
推荐指数
1
解决办法
1746
查看次数

计算数据帧所有行之间的成对欧几里得距离

如何计算数据帧所有行之间的欧几里得距离?我正在尝试此代码,但它不起作用:

zero_data = data
distance = lambda column1, column2: pd.np.linalg.norm(column1 - column2)
result = zero_data.apply(lambda col1: zero_data.apply(lambda col2: distance(col1, col2)))
result.head()
Run Code Online (Sandbox Code Playgroud)

这是我的(44062 x 278)数据框的样子:

请在此处查看示例数据

python numpy euclidean-distance dataframe pandas

5
推荐指数
1
解决办法
5687
查看次数