Повышение точности алгоритма ближайших соседей - неконтролируемая проблема обучения - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть ситуация, когда я пытаюсь найти 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)

Приведенный выше код вернет сам идентификатор и 3 ближайших соседа, следовательно, k = 4

Я прочитал это из-за проклятия Из-за размерности этот алгоритм NN может не работать должным образом, поскольку в моем наборе данных содержится около 47 объектов, но я думаю, что это единственный вариант, когда дело доходит до фрейма данных без целевой переменной. Есть одна статья, доступная здесь , в которой говорится, что KD Tree - не лучший из алгоритмов, которые можно использовать.

Каков наилучший способ достижения максимальной точности, то есть достижение минимального расстояния? Нужно ли выполнять масштабирование перед переходом в алгоритм KD Tree? Любые другие вещи, которые мне нужно позаботиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...