【发布时间】:2020-03-15 22:39:28
【问题描述】:
我遇到了无法对数组进行排序的问题。我收到此错误The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 为什么会发生这种情况?我不明白。是不是因为破局?这个问题我纠结了好久,一直没搞清楚。
import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn import datasets, metrics, svm
from sklearn.model_selection import train_test_split
from collections import Counter
from math import sqrt
#import number data
digits = datasets.load_digits()
images_and_labels = list(zip(digits.images, digits.target))
n_samples = len(digits.images)
data = digits.images.reshape((n_samples, -1))
data_train, data_test, label_train, label_test = train_test_split(data, digits.target, test_size=0.2)
def euclidean_distance(first, second):
distance = 0.0
for i in range(64):
distance += (first[i] - second[i])**2
return np.sqrt(distance)
def get_neighbors(train_set, test_set, num_neighbors):
distances = list()
for test_set in train_set:
dist = euclidean_distance(test_set, train_set)
distances.append((train_set, dist))
np.sort(distances)
neighbors = list()
for i in range(num_neighbors):
neighbors.append(distances[i][0])
return neighbors
results = get_neighbors(data_train, data_test, 100 )
【问题讨论】:
-
考虑
a = np.array([True, False, True, False]); if a:: if 语句的结果应该是什么?这是您看到的消息的根本原因。 -
你应该看看
distance的形状。你可能需要设置一个轴 -
由于您自己的代码中没有 if 语句,因此发生这种情况是在底层代码中的某个地方。这可能是因为您输入了错误的输入,或者因为您使用了过时的软件包。首先确保 sklearn 和 numpy 是最新的。
-
请完整回溯
标签: python numpy machine-learning