我正在尝试从一组带有标签的样本向量中搜索向量。我需要找到最佳的n
匹配项。我为此使用kNeighborsClassifier
。
nbrs = KNeighborsClassifier(n_neighbors=2, algorithm='ball_tree', metric='euclidean').fit(train_data_array, train_label)
yp = nbrs.predict(xt)
但是问题在于它仅返回前1个结果。我认为基于欧几里得距离,我可以得到最佳的
n
匹配项,但是我不确定如何提取该信息。 最佳答案
您可以使用kneighbors()
method in KNeighborsClassifier。
它将返回训练数据的索引(您在fit()
中使用的索引)以及最接近您在其中提供的点的距离。
例:
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
iris = datasets.load_iris()
X = iris.data
y = iris.target
clf = KNeighborsClassifier()
clf.fit(X, y)
# here I am taking a single point only
distances, indices = clf.kneighbors(X[[0]], n_neighbors=2)
print(distances, indices)
#Output: array([[0., 0.]]), array([[17, 0]])
在这里,第一个输出是距离,第二个是
X
的索引,最接近X[[0]]
关于python - 如何从kNeighborsClassifier中找到前n个匹配项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51380812/