Я начинаю с матрицы mxn, которая называется values
. Затем я использую np.argpartition, чтобы получить k минимальных индексов для каждой из m строк, возвращаемых в новой матрице mxk под названием min_indices
. Это может быть неправильно, но это то, что я сделал: min_indices = np.argpartition(values, k, axis=1)[:, :k]
. Затем у меня есть матрица nx 1, которая называется labelsArray
. Каждый индекс в min_indices
соответствует индексу в этом массиве меток. То, что я хотел бы сделать, - это преобразовать (либо на месте, либо вернуть новую матрицу) каждый индекс в min_indices
в его соответствующую метку (т.е. получить другую матрицу mxk result
result[m][k] = labelsArray[min_indices[m][k]]
для всех m и к). Я мог бы выполнить sh это программно, но есть ли эффективный и краткий способ выполнить это преобразование в значениях numpy?
, которые выглядят следующим образом: [[0.5, 0.7, 0.8, 0.9, ... n ], [0,3, 0,4, 0,2, 0,6, ... n], .... m]
, поэтому в каждой строке содержится m значений с плавающей запятой и всего n строк. Таким образом, в основном каждый тестовый пример (представленный строкой) имеет расстояние, заданное столбцом для каждой обучающей выборки.
labelArray выглядит так: [машина, птица, муха, плакат, ... n]
при k = 2 результат должен выглядеть следующим образом: [[fly, poster], [car, bird], [bird, poster], ... n]
Итак, min_indices в основном должен иметь индексы k- ближайшие соседи для каждого тестового примера. Затем я хотел бы использовать эти индексы, чтобы получить метки каждого из этих соседей из labelArray для каждого тестового примера. Объясняется примером выше.