Python 3.x 使用最近邻获取3个没有目标变量的最近邻
我正在编写一个程序,为数据集中的每个数据点提取3个最近邻。我的数据集有47个功能,有5000行条目,没有目标变量。我使用它将整个数据集作为numpy数组进行拟合。我正在开发以下代码,但似乎被卡住了:Python 3.x 使用最近邻获取3个没有目标变量的最近邻,python-3.x,scikit-learn,knn,nearest-neighbor,Python 3.x,Scikit Learn,Knn,Nearest Neighbor,我正在编写一个程序,为数据集中的每个数据点提取3个最近邻。我的数据集有47个功能,有5000行条目,没有目标变量。我使用它将整个数据集作为numpy数组进行拟合。我正在开发以下代码,但似乎被卡住了: X = df.to_numpy() from sklearn.neighbors import NearestNeighbors def findsuccess(id): nbrs = NearestNeighbors(n_neighbors=3) nbrs.fit(X)
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
发布此内容我想使用findsucces
函数传递我正在寻找邻居的id,并在excel中打印此列表。例如:
然后调用函数:#findsuccess(1234)
最终目标是从我的数据集中查看我的id
1234中的3个最近邻居。最终目标是在输出文件中打印这三个邻居,如下所示:
id Neigh1 Neigh2 Neigh3
1234 1334 1444 1555
我认为
kneighbors\u图
的NearestNeighbors\u图
方法适合您。它返回1(如果特定点是k近邻)或0矩阵
从
您可以这样做:
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)
感谢您分享此解决方案。我有两个问题:我是什么?我应该如何在这里获取id的索引?第二个问题,我应该如何获得我在问题中提到的输出中的数据。再次感谢!!如果您的id是索引,那么您可以离开该步骤
Neights\u f\u id
将具有邻居的id,之后您可以按照所需的方式格式化。不幸的是,我仍然收到此错误。ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()。为什么会来这里?我在这一行遇到错误:neighbors\u id=np。其中(nbrs.kneighbors\u graph([X[I]])[0]抱歉,这是稀疏矩阵。这就是我以前的解决方案不起作用的原因。尝试更新的解决方案。完美!工作!非常感谢你!
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)