kNN - 如何根据计算的距离在训练矩阵中定位最近的邻居
kNN - How to locate the nearest neighbors in the training matrix based on the calculated distances
我正在尝试使用 python 实现 k 最近邻算法。我最终得到了以下代码。但是,我正在努力寻找最近邻居的项目索引。以下函数将 return 距离矩阵。但是我需要在 features_train
(算法的输入矩阵)中获取这些邻居的索引。
def find_kNN(k, feature_matrix, query_house):
alldistances = np.sort(compute_distances(feature_matrix, query_house))
dist2kNN = alldistances[0:k+1]
for i in range(k,len(feature_matrix)):
dist = alldistances[i]
j = 0
#if there is closer neighbor
if dist < dist2kNN[k]:
#insert this new neighbor
for d in range(0, k):
if dist > dist2kNN[d]:
j = d + 1
dist2kNN = np.insert(dist2kNN, j, dist)
dist2kNN = dist2kNN[0: len(dist2kNN) - 1]
return dist2kNN
print find_kNN(4, features_train, features_test[2])
输出为:
[ 0.0028605 0.00322584 0.00350216 0.00359315 0.00391858]
有人可以帮我识别 features_train
中最近的这些物品吗?
我建议使用 python 库 sklearn
,它有一个 KNeighborsClassifier
,一旦安装,您可以从中检索您正在寻找的最近邻居:
试试这个:
# Import
from sklearn.neighbors import KNeighborsClassifier
# Instanciate your classifier
neigh = KNeighborsClassifier(n_neighbors=4) #k=4 or whatever you want
# Fit your classifier
neigh.fit(X, y) # Where X is your training set and y is the training_output
# Get the neighbors
neigh.kneighbors(X_test, return_distance=False) # Where X_test is the sample or array of samples from which you want to get the k-nearest neighbors
我正在尝试使用 python 实现 k 最近邻算法。我最终得到了以下代码。但是,我正在努力寻找最近邻居的项目索引。以下函数将 return 距离矩阵。但是我需要在 features_train
(算法的输入矩阵)中获取这些邻居的索引。
def find_kNN(k, feature_matrix, query_house):
alldistances = np.sort(compute_distances(feature_matrix, query_house))
dist2kNN = alldistances[0:k+1]
for i in range(k,len(feature_matrix)):
dist = alldistances[i]
j = 0
#if there is closer neighbor
if dist < dist2kNN[k]:
#insert this new neighbor
for d in range(0, k):
if dist > dist2kNN[d]:
j = d + 1
dist2kNN = np.insert(dist2kNN, j, dist)
dist2kNN = dist2kNN[0: len(dist2kNN) - 1]
return dist2kNN
print find_kNN(4, features_train, features_test[2])
输出为:
[ 0.0028605 0.00322584 0.00350216 0.00359315 0.00391858]
有人可以帮我识别 features_train
中最近的这些物品吗?
我建议使用 python 库 sklearn
,它有一个 KNeighborsClassifier
,一旦安装,您可以从中检索您正在寻找的最近邻居:
试试这个:
# Import
from sklearn.neighbors import KNeighborsClassifier
# Instanciate your classifier
neigh = KNeighborsClassifier(n_neighbors=4) #k=4 or whatever you want
# Fit your classifier
neigh.fit(X, y) # Where X is your training set and y is the training_output
# Get the neighbors
neigh.kneighbors(X_test, return_distance=False) # Where X_test is the sample or array of samples from which you want to get the k-nearest neighbors