提高最近邻算法的准确性-无监督学习问题

时间:2020-02-27 19:34:44

标签: python-3.x scikit-learn nearest-neighbor unsupervised-learning

我遇到一种情况,我试图在我的数据框中找到给定ID的3个最近邻居。我正在使用NN alogrithm(不是KNN)来实现这一目标。下面的代码给了我三个最近的邻居,对于顶部节点,结果很好,但是对于中间节点和底部,结果的准确性只有1/3个邻居是正确的,而我希望至少有2/3个邻居是正确的每个ID。我的数据集有47个特征和5000个点。

from sklearn.neighbors import KDTree
def findsuccess(sso_id):
    neighbors_f_sso_id = np.where(nbrs.kneighbors_graph([X[i]]))[0]
    print('Neighbors of id', neighbors_f_sso_id)
  kdt = KDTree(X, leaf_size=40, metric='euclidean')
  kdt.query(X, k=4, return_distance=False)

上面的代码将返回ID本身和最近的3个邻居,因此k = 4

我已经读到,由于维数的诅咒,这种NN算法可能无法正常工作,因为我的数据集中大约有47个特征,但这是我认为在没有目标变量的数据帧中我唯一的选择。 here上有一篇文章说,KD树并不是可使用的最佳算法。

什么是达到最大精度(即达到最小距离)的最佳方法? 在传递到KD Tree算法之前是否需要执行缩放?还有其他需要注意的事情吗?

0 个答案:

没有答案