计算 python 中所有点到给定点的加权距离
Calculate weighted distance from all points to a given point in python
我正在尝试计算从一组点到给定点的加权距离。加权距离函数如下所示。
点集(代码中的 X)如下所示
[[-14.78816795 1. ]
[-13.39187241 1. ]
[ -6.58691072 1. ]
...
[ -3.45446849 99. ]
[ 30.75222397 99. ]
[ 32.22760391 99. ]]
我给定的点(代码中的质心)如下所示
array([[ -0.75675046, -28.46644783, 0.76348782],
[ 80. , 74. , 83. ]])
对于未加权的欧几里德距离,我知道我可以使用以下代码
k=3
for k in range(K):
tempDist=np.sum((X-Centroids[:,k])**2,axis=1)
EuclidianDistance=np.c_[EuclidianDistance,tempDist]
但我不太确定如何将权重应用于 x 和 y 分量。
首先,我认为您在未加权的欧几里得距离方面存在一些错误。
好像缺平方根,K也没有定义。
我已经加入了权重,同时尽量忠实于您已有的代码。
greek_lambda=0.2
W=np.array([[greek_lambda,0],[0,1-greek_lambda]])
for k in range(3):
tempDist=np.sqrt(np.sum(np.dot((X-Centroids[:,k]),W)**2,axis=1))
EuclidianDistance=np.c_[EuclidianDistance,tempDist]
print(EuclidianDistance)
我正在尝试计算从一组点到给定点的加权距离。加权距离函数如下所示。
点集(代码中的 X)如下所示
[[-14.78816795 1. ]
[-13.39187241 1. ]
[ -6.58691072 1. ]
...
[ -3.45446849 99. ]
[ 30.75222397 99. ]
[ 32.22760391 99. ]]
我给定的点(代码中的质心)如下所示
array([[ -0.75675046, -28.46644783, 0.76348782],
[ 80. , 74. , 83. ]])
对于未加权的欧几里德距离,我知道我可以使用以下代码
k=3
for k in range(K):
tempDist=np.sum((X-Centroids[:,k])**2,axis=1)
EuclidianDistance=np.c_[EuclidianDistance,tempDist]
但我不太确定如何将权重应用于 x 和 y 分量。
首先,我认为您在未加权的欧几里得距离方面存在一些错误。 好像缺平方根,K也没有定义。
我已经加入了权重,同时尽量忠实于您已有的代码。
greek_lambda=0.2
W=np.array([[greek_lambda,0],[0,1-greek_lambda]])
for k in range(3):
tempDist=np.sqrt(np.sum(np.dot((X-Centroids[:,k]),W)**2,axis=1))
EuclidianDistance=np.c_[EuclidianDistance,tempDist]
print(EuclidianDistance)