データセット内のデータポイントごとに3つの最近傍をフェッチするプログラムを作成しています。私のデータセットには、5000行のエントリがありターゲット変数がない47の機能があります。ここではこれを使用して、データセット全体をnumpy配列として適合させています。私は次のコードを開発していますが、行き詰まっているようです:
X = df.to_numpy()
from sklearn.neighbors import NearestNeighbors
def findsuccess(id):
nbrs = NearestNeighbors(n_neighbors=3)
nbrs.fit(X)
pred = nbrs.kneighbors(X,3)
for i in pred:
print "What should come here" ?? - I need to print my 3 neighbours here at this step
これを投稿するfindsuccess
関数を使用して、ネイバーを探しているIDを渡し、このリストもExcelで印刷します。例えば :
次に関数呼び出し:# findsuccess(1234)
最終的な目標はid
、私のデータセットから私の1234から3つの最も近い隣人を見ることです。最終的な目標は、次のような出力ファイルにこれら3つのネイバーを出力することです。
id Neigh1 Neigh2 Neigh3
1234 1334 1444 1555
のkneighbors_graph
方法はNearestNeighbors
あなたのために働くと思います。1(特定の点がk最近傍である場合)または0行列を返します。
ドキュメントから
>>> X = [[0], [3], [1]]
>>> from sklearn.neighbors import NearestNeighbors
>>> neigh = NearestNeighbors(n_neighbors=2)
>>> neigh.fit(X)
NearestNeighbors(n_neighbors=2)
>>> A = neigh.kneighbors_graph(X)
>>> A.toarray()
array([[1., 0., 1.],
[0., 1., 1.],
[1., 0., 1.]])
あなたはこのようなことをすることができます:
from sklearn.neighbors import NearestNeighbors
X = df.to_numpy()
nbrs = NearestNeighbors(n_neighbors=3)
nbrs.fit(X)
def findsuccess(id):
neighbors_f_id = nbrs.kneighbors_graph([X[id]]).indices
print ('Neighbors of id', neighbors_f_id)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加