Как я могу избавиться от этой ошибки, которую я получаю с кодом, чтобы найти ближайших соседей? - PullRequest
0 голосов
/ 19 февраля 2020

Я написал следующую функцию, которая принимает данные, количество пиров, которые нужно найти, и индекс, чтобы найти N ближайших соседей:

def fit_nearest_neighbors(data, number_of_peers, index):
    peer_data = FindPeers.filt_data(data)
    peer_data_array = np.array(peer_data)
    knn = NearestNeighbors(algorithm = 'auto', n_neighbors = number_of_peers, metric = 'minkowski', p = 2)
    knn.fit(peer_data_array)
    return knn.kneighbors(peer_data_array[index], return_distance = False)

Но я получаю следующую ошибку с последней строкой код после возврата, который говорит:

ValueError: Expected 2D array, got 1D array instead:
array=[2.86839521e-01 7.63588709e-01 1.00000000e+00 1.73483898e-01
 0.00000000e+00 1.25068828e-02 1.66424454e-17 4.38357126e-01
 7.55219585e-03 6.03820534e-02 2.72387749e-01].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

Массив ошибок, который он печатает, в основном является точкой данных, присутствующей в этом конкретном index. Я понимаю ошибку, но я не понимаю, как я могу сделать это правильно. Любой тип ответов / ответов будет полезен.

1 Ответ

0 голосов
/ 20 февраля 2020

Сообщение об ошибке ясно. Вам необходимо изменить данные с 1D на 2D с помощью функции numpy np.reshape().

. Вы можете выполнить sh с помощью

peer_data_array = np.array(peer_data).reshape(-1, 1)
...