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)
这是我的代码:
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)