首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >kNN -如何根据计算的距离在训练矩阵中找到最近的邻居

kNN -如何根据计算的距离在训练矩阵中找到最近的邻居
EN

Stack Overflow用户
提问于 2016-10-18 08:27:45
回答 1查看 1.5K关注 0票数 0

我正在尝试用python实现k-最近邻算法。最后,我得到了以下代码。但是,我很难找到最近的邻居的索引。下面的函数将返回距离矩阵。但是,我需要在features_train (算法的输入矩阵)中获取这些邻居的索引。

代码语言:javascript
运行
复制
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])

产出如下:

代码语言:javascript
运行
复制
[ 0.0028605   0.00322584  0.00350216  0.00359315  0.00391858]

有人能帮我识别features_train中这些最近的项目吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-18 08:58:54

我建议使用python库sklearn,该库有一个KNeighborsClassifier,一旦安装,您就可以检索要查找的最近的邻居:

试试这个:

代码语言:javascript
运行
复制
# 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40103226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档