kNN – 如何根据计算出的距离在训练矩阵中定位最近邻

我正在尝试用Python实现k-最近邻算法。我写出了如下的代码。然而,我在寻找最近邻的项目的索引时遇到了困难。下面的函数会返回距离矩阵,但我需要在features_train(算法的输入矩阵)中获取这些邻居的索引。

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 dist < dist2kNN[k]:        #插入这个新邻居             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中找出这些最近的项目?


回答:

我建议使用Python库sklearn,它有一个KNeighborsClassifier,一旦拟合好,你就可以从中检索到你所寻找的最近邻:

试试这个:

# 导入from sklearn.neighbors import KNeighborsClassifier# 实例化你的分类器neigh = KNeighborsClassifier(n_neighbors=4) #k=4或你想要的任何值# 拟合你的分类器neigh.fit(X, y) # 其中X是你的训练集,y是训练输出# 获取邻居neigh.kneighbors(X_test, return_distance=False) # 其中X_test是你想要获取k-最近邻的样本或样本数组

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注