Этот алгоритм машинного обучения прост и понятен. С помощью машинных методов обучения можно решить проблемы регрессии и классификации. Для того, чтобы понять концепцию “К – Ближайший сосед”, необходимо сначала узнать, как работает метод обучения на станке под наблюдением. В процессе обучения под наблюдением вы предоставляете модели с маркированными данными. Затем машина анализирует маркированные данные и выдает соответствующий вывод.
Например, когда дети маленькие, им необходимо наблюдение, чтобы понять разницу между разными цветами, животными, алфавитами и т.д. Вы маркируете все элементы для них, чтобы они могли быстро идентифицировать их. Вот как работает обучение под наблюдением. Это обучение помогает решить проблемы классификации. В этом типе задач вы предсказываете значение входных данных, а затем алгоритм упорядочивает значения в различных классах на основе веса функций и их входных характеристик.

К-Днейшие соседи

Для решения регрессии и классификации можно использовать этот алгоритм для метода обучения под наблюдением. KNN не включает в себя никакой этап обучения. Они не вычисляют прогностический метод, такой как линейная или логистическая регрессия. Этот алгоритм находит сходство между переменными. Они измеряют, насколько близко или далеко переменные находятся на основе приведенных данных. Простыми словами, этот алгоритм считает, что чем ближе вещи друг к другу, тем больше они похожи.

Как работает алгоритм KNN

Для правильной реализации алгоритма “К – Ближайший сосед” (для Python) необходимо следовать следующему методу:
– Загрузить входные данные или данные на машине из набора данных
– Измените значение K из переменных
– Рассчитать расстояние переменных относительно каждого примера данных.
– Теперь добавьте расстояние в упорядоченном виде
– Теперь отсортируйте заказанную коллекцию в порядке возрастания, исходя из их расстояния.
– Выберите К из коллекции
– Теперь найдите метки этого значения К
– Если это регрессия, нужно вернуть среднее значение метки “К”.
– Если это классификация, то нужно вернуть режим метки “К”.

Реализация кодирования на

сбор платежей импортКонтейнер
импортная математика

defknn(данные, запрос, k, distance_fn, choice_fn):
neighbor_distances_and_indices = []

# 3. Для каждого примера в данных
для индекса, например inenumerate(data):
# 3.1 Рассчитать расстояние между примером запроса и текущим
# пример из данных.
distance =distance_fn(example[:-1], запрос).

# 3.2 Добавьте расстояние и индекс примера в заказанную коллекцию.
neighbor_distances_and_indices.append((distance, index)))

# 4. Сортируйте упорядоченную коллекцию расстояний и индексов от
# от самого маленького до самого большого (в порядке возрастания) по расстояниям.
sorted_neighbor_distances_and_indices =sorted(neighbor_distances_and_indices_)

# 5. Выберите первые K записей из отсортированной коллекции.
k_nearest_distances_and_indices = sorted_neighbor_distances_and_indices[:k]

# 6. Получить метки выбранных записей K
k_nearest_labels = [data[i][1] для расстояния, i в k_nearest_distances_and_indices]

# 7. Если регрессия (choice_fn = среднее), вернуть среднее значение K меток
# 8. Если классификация (choice_fn = режим), верните режим K меток
вернуть k_nearest_distances_and_indices , choice_fn(k_nearest_labels)

defmean(labels):
returnsum(labels) /len(labels)

defmode(labels):
returnCounter(labels).most_common(1)[0][0][0]

defeuclidean_distance(point1, point2):
sum_squared_distance =0
для i inrange(len(point1)):
sum_squared_distance += math.pow(point1[i] – point2[i], 2)
return math.sqrt(sum_squared_distance)

Defmain():
”’
# Данные регрессии
#
# Колонна 0: высота (дюймы)
# Колонка 1: вес (фунты)
”’
reg_data = [
[65.75, 112.99],
[71.52, 136.49],
[69.40, 153.03],
[68.22, 142.34],
[67.79, 144.30],
[68.70, 123.30],
[69.80, 141.49],
[70.01, 136.46],
[67.90, 112.37],
[66.49, 127.45],
]

# Вопрос:
# Учитывая данные, которые у нас есть, что самое лучшее в весе человека, если он 60 дюймов в высоту?
reg_query = [60]
reg_k_nearest_neighbors, reg_prediction =knn(
reg_data, reg_query, k=3, distance_fn=euclidean_distance, choice_fn=mean
)

”’
# Классификационные данные
#
# ” Колонка 0: возраст
# ” Колонка 1: любит ананас
”’
clf_data = [
[22, 1],
[23, 1],
[21, 1],
[18, 1],
[19, 1],
[25, 0],
[27, 0],
[29, 0],
[31, 0],
[45, 0],
]
# Вопрос:
# С учетом имеющихся у нас данных, подходит ли неуказанное M&M к красному или зеленому набору M&M?
clf_query = [33]
clf_k_nearest_neighbors, clf_prediction =knn(
clf_data, clf_query, k=3, distance_fn=euclidean_distance, choice_fn=mode
)

если ____________________________________________________________________________________________________________:
главная()

Понимание на примере

Теперь давайте разберемся с вышеперечисленными шагами простыми словами. Представьте, что на тарелке зеленый и красный M&Ms. Здесь вы найдете еще один M&M, класс которого вы не знаете. Чтобы найти класс, нужно установить значение K. Допустим, в этом условии K = 4. Теперь вы нарисуете круг вокруг неопознанного М&М таким образом, что центр круга – это само М&М, и только четыре других М&М находятся в круге. Теперь мы проверим, какой класс М&Ms имеет больше окружности. Допустим, если было четыре красных M&Ms, то мы будем рассматривать неопознанное M&M как красный класс.

Когда можно использовать алгоритм KNN?

Для решения проблемы регрессии или классификации можно использовать алгоритм K-N ближайшего соседа. Во многих отраслях промышленности эта контролируемая система машинного обучения используется для решения проблем классификации. Вот три важных фактора при оценке любого метода:
– Насколько легко вы можете интерпретировать результат?
– Как вы можете рассчитать производительность?
– Что такое предсказывающая мощность?
KNN идеально подходит для всех вышеперечисленных параметров для измерения техники. Тем не менее, техника KNN имеет частое применение, так как ее легко интерпретировать и вычислить время выхода.

Как вы можете выбрать значение K?

Чтобы найти наилучшее значение K, нам нужно запустить алгоритм много раз и проверить, какое число уменьшает ошибки, и при этом сохранить способность алгоритма и делать прогнозы. Вот некоторые вещи, которые необходимо иметь в виду:
– Первое, что вам не следует делать, это выбрать одно из них в качестве значения K. Когда вы выбираете одно из них в качестве значения K, мы получаем нестабильные прогнозы. Например, если нам нужно найти класс M&M, который полностью окружен красными M&M, но только один зеленый M&M находится рядом с неопознанным M&M. В этом случае мы будем думать, что точка запроса зеленая, поэтому наш прогноз будет неверным.
– Когда мы увеличим значение K, мы увидим, что предсказание станет стабильным благодаря большинству избирателей. Однако, когда мы найдем больше ошибок, мы зайдем слишком далеко от значения K.
– Когда есть связь между предсказаниями, нам нужно выбрать нечетное число.
Выбор значения K зависит от набора данных, который вы пытаетесь использовать. Однако, вы должны знать, что чем больше соседей мы добавляем, тем более точные результаты мы получим.

Заключение

В этой статье мы постарались дать базовую и легкую для понимания концепцию алгоритма К – ближайшего соседа. Мы узнали, что KNN помогает в прогнозировании классификации с заданным набором данных. Это простой и быстрый метод расчета.