2016-10-18 16 views
0

私は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でこれらの最も近い項目を識別するために私を助けることができますか?

+0

を何でありますかあなたの 'query_house'は正確にやっていますか? – MMF

+0

@MMFそれはテストセット内の単なる家のインスタンスです。 'features_train'は他の全ての家財を含んでいます – renakre

+1

' sklearn'を使わないのはなぜですか? – MMF

答えて

1

私は一度装着し、あなたが探している最も近い隣人を取得することができ、そこからKNeighborsClassifierを持っているPythonライブラリsklearnを使用することをお勧めします:

これを試してみてください:

# 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 
+0

あなたの答えに感謝します!しかし、私はこれをPythonを使って行うことになっています。 – renakre

+0

'sklearn'はPythonで書かれています。これはPythonライブラリです – MMF

関連する問題