私はk-nearest neighborアルゴリズムをPythonを使って実装しようとしています。私は次のコードで終わった。しかし、私は最も近い隣人であるアイテムのインデックスを見つけることに苦労しています。次の関数は距離行列を返します。しかし、私はfeatures_train
(アルゴリズムへの入力行列)にこれらの隣人のインデックスを取得する必要があります。kNN - 計算された距離に基づいてトレーニング行列の最近傍点を見つける方法
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
でこれらの最も近い項目を識別するために私を助けることができますか?
を何でありますかあなたの 'query_house'は正確にやっていますか? – MMF
@MMFそれはテストセット内の単なる家のインスタンスです。 'features_train'は他の全ての家財を含んでいます – renakre
' sklearn'を使わないのはなぜですか? – MMF