ValueError: setting an array element with a sequence numpy

ValueError: setting an array element with a sequence numpy

这是我的代码:

X:包含测试数据

的形状为 (num_test, D) 的 numpy 数组

dists: 形状为(num_test, num_train)的numpy数组,其中dists[i, j]是第i个测试点和第j个训练点之间的欧式距离。

  def compute_distances_two_loops(self, X):
    num_test = X.shape[0]
    num_train = self.X_train.shape[0]
    dists = np.zeros((num_test, num_train))
    print(num_test,num_train)
    for i in range(num_test):
      for j in range(num_train):
        dists[i,j] = np.sqrt((np.pow(X[i],2) + np.pow(self.X_train[j],2))                
    return dists

我收到以下错误: ValueError:使用序列

设置数组元素

你计算距离的公式有误。

尝试更改此行:

dists[i,j] = np.sqrt((np.pow(X[i],2) + np.pow(self.X_train[j],2))

对此:

dists[i,j] = np.sqrt(np.sum(np.pow(X[i] - self.X_train[j], 2)))

或者这个:

dists[i,j] = np.linalg.norm(X[i] - X_train[j])

或者也许只是用这个替换整个东西:

from scipy.spatial.distance import cdist

def compute_distances(self, X):
    return cdist(X, X_train)