Нахождение ближайших соседей
Если мы хотим создать рекомендательные системы, такие как система рекомендования фильмов, то нам нужно понять концепцию поиска ближайших соседей. Это потому, что система рекомендации использует концепцию ближайших соседей.
Концепция нахождения ближайших соседей может быть определена как процесс нахождения ближайшей точки к точке входа из данного набора данных. Основное использование этого алгоритма KNN) K-ближайших соседей) заключается в создании систем классификации, которые классифицируют точку данных о близости точки входных данных к различным классам.
Код Python, приведенный ниже, помогает найти K-ближайших соседей заданного набора данных –
Импортируйте необходимые пакеты, как показано ниже. Здесь мы используем модуль NearestNeighbors из пакета sklearn
import numpy as np import matplotlib.pyplot as plt from sklearn.neighbors importNearestNeighbors
Давайте теперь определим входные данные –
A = np.array(,2.3,4.2],3.9,3.5],3.7,6.4],4.8,1.9],8.3,3.1],5.2,7.5],4.8,4.7],3.5,5.1],4.4,2.9],])
Теперь нам нужно определить ближайших соседей –
k =3
Нам также нужно предоставить тестовые данные, из которых можно найти ближайших соседей –
test_data =3.3,2.9
Следующий код может визуализировать и построить входные данные, определенные нами –
plt.figure() plt.title('Input data') plt.scatter(A, A, marker ='o', s =100, color ='black')
Теперь нам нужно построить ближайший сосед. Объект также должен быть обучен
knn_model =NearestNeighbors(n_neighbors = k, algorithm ='auto').fit(X) distances, indices = knn_model.kneighbors()
Теперь мы можем напечатать K ближайших соседей следующим образом
print("\nK Nearest Neighbors:")for rank, index in enumerate(indices], start =1):print(str(rank)+" is", Aindex])
Мы можем визуализировать ближайших соседей вместе с тестовой точкой данных
plt.figure() plt.title('Nearest neighbors') plt.scatter(A, X, marker ='o', s =100, color ='k') plt.scatter(Aindices][], Aindices][], marker ='o', s =250, color ='k', facecolors ='none') plt.scatter(test_data], test_data1], marker ='x', s =100, color ='k') plt.show()
Заключение
Двухэтапная Ллойдовская реализация алгоритма k-средних позволяет сгруппировать данные в кластеры, представленные центроидами. Эта технология применяется во многих областях машинного обучения – от задач обучения без учителя до задач понижения размерности.
Общая задача кластеризации является NP-сложной, но итерационный алгоритм всегда сходится, хотя и к локальному минимуму. Правильная инициализация центроидов имеет существенное значение. Кроме того, данный алгоритм не предоставляет информацию о том, какое значение K является оптимальным. Это необходимо выяснить с помощью других методов.
По материалам: Data Science Lab
Список источников
- coderlessons.com
- datareview.info