我试图从一组样本向量中搜索一个向量,每个向量都有一个标签。我需要找到最好的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()
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]]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句