Рубрики
Без рубрики

К-ближайшие соседи (KNN) с Sklearn в Python

Популярные популярные k-ближайшие соседи (KNN) алгоритм используются для регрессии и классификации во многих приложениях, таких как системы рекомендации, классификация изображений и прогнозирование финансовых данных. Это основа многих передовых методов обучения машин (например, в получении информации). Нет сомнений в том, что понимание Knn является важным строительным блоком вашего опыта работы … K-ближайших соседей (KNN) с Sklearn в Python Подробнее »

Автор оригинала: Chris.

Популярные К-ближайшие соседи Алгоритм (КНН) используется для регрессия и Классификация Во многих приложениях, таких как Recial Systems, классификация изображений и прогнозирование финансовых данных. Это основа многих передовых методов обучения машин (например, в получении информации). Нет сомнений в том, что понимание KNN является важным строительным блоком вашего опыта вашего опыта науки.

Смотреть статью как видео:

К-ближайшие соседи (KNN) – это надежный, простой и популярный алгоритм машинного обучения. Это относительно легко реализовать с нуля, будучи конкурентоспособными и исполнительными.

Рекомендация машинного обучения

Машинное обучение все о изучении так называемой Модель от данного Набор данных тренинга Отказ

Эта модель может затем использоваться для вывода, то есть, прогнозируя выходные значения для потенциально новых и невидимых входных данных.

Модель обычно представляет собой абстракцию высокого уровня, такую как математическая функция, выведенная из учебных данных. Большинство методов обучения машины пытаются найти шаблоны в данных, которые могут быть захвачены и использованы для обобщения и прогнозирования на новые входные данные.

Обучение KNN

Однако KNN следует совершенно другой путь. Простая идея следующая: Весь набор данных – ваша модель.

Да, вы прочитали это правильно.

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

Кнн вывод

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

  • Найти k ближайших соседей х Согласно предопределенному Сходство метрики Отказ
  • Совокупные ближайшие соседи в одном «прогнозе» или «классификация». Вы можете использовать любой агрегатор, такой как средний , значит, Максимум , мин , так далее.

Вот и все. Просто, не так ли?

Проверьте следующую графику:

Предположим, ваша компания продает дома для клиентов. Он приобрел большую базу данных клиентов и опытных цен на дом.

Однажды ваш клиент спрашивает, насколько он может ожидать заплатить за дом с 52 кв.   Вы запрашиваете вашу KNN «модель», и это немедленно дает вам ответ на 33,167 долл. США. И действительно, ваш клиент находит дом за 33,489 долл. США ту же недели. Как система KNN пришла к этому удивительно точное предсказание?

Он просто рассчитал ближайшие соседи к квадратному метрам запроса «от модели с евклидовым расстоянием». Три ближайших соседях являются A, B и C с ценами 34 000 долларов, 33 500 долл. США и 32 000 долларов соответственно. На последнем этапе Knn объединяет три ближайших соседа путем расчета простого среднего. Как в этом примере, мы обозначаем модель как «3NN».

Конечно, вы можете изменять функции сходства, параметр k и метод агрегации, чтобы поступить с более сложными моделями прогнозирования.

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

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

Реализация Knn с Sklearn

## Dependencies
from sklearn.neighbors import KNeighborsRegressor
import numpy as np


## Data (House Size (square meters) / Hous Price ($))
X = np.array([[35, 30000], [45, 45000], [40, 50000],
              [35, 35000], [25, 32500], [40, 40000]])


## One-liner
KNN = KNeighborsRegressor(n_neighbors=3).fit(X[:,0].reshape(-1,1), X[:,1].reshape(-1,1))


## Result & puzzle
res = KNN.predict([[30]])
print(res)

Давайте погрузимся, как использовать Knn в Python – в Одна линия кода Отказ

Возьмите предположение: какая вывод этого кода фрагмент?

Понимание кода

Чтобы помочь вам увидеть результат, давайте построим данные корпуса из кода:

Можете ли вы увидеть общую тенденцию? С ростом размера вашего дома вы можете ожидать линейного роста своей рыночной цены. Двойной квадратные метры и цена тоже удвоится.

В коде клиент просит прогноз вашей цены для дома с 30 квадратных метров. Что knn с (короче говоря: 3nn) предсказать?

Красиво просто, не так ли? Алгоритм KNN находит три самых близких дома в отношении размера дома и в среднем в среднем в среднем прогнозируемую цену дома в среднем ближайших соседей.

Таким образом, результат составляет 32 500 долларов.

Может быть, вы были смущены частью преобразования данных в одноиналке. Позвольте мне быстро объяснить, что здесь произошло:

## One-liner
KNN = KNeighborsRegressor(n_neighbors=3).fit(X[:,0].reshape(-1,1), X[:,1].reshape(-1,1))

Во-первых, мы создаем новую модель обучения машины под названием «Kneighborsregressor». Если вы хотите выйти на классификацию KNN для классификации, вы бы взяли модель «KneighborsClassifier».

Во-вторых, мы «тренируем» модель, используя подходит Функция с двумя параметрами. Первый параметр определяет вход (размер дома), а второй параметр определяет вывод (цена дома). Форма обоих параметров должна быть так, чтобы каждое наблюдение представляет собой структуру данных, подобную массиву. Например, вы бы не использовали « 30 » в качестве ввода, но « [30] “. Причина в том, что в целом вход может быть многомерным, а не одномерным. Поэтому мы Reshape Вход:

print(X[:,0])
"[35 45 40 35 25 40]"

Если мы бы использовали этот 1D Numpy Array в качестве входа в Fit () Функция, функция не будет работать должным образом, потому что она ожидает массива (подобных массивам) наблюдениях – и не массив целых чисел.

Поэтому мы преобразуем массив соответственно используя Reshape () Функция:

print(X[:,0].reshape(-1,1))
"""
[[35]
 [45]
 [40]
 [35]
 [25]
 [40]]
"""

Теперь у нас есть шесть массивных наблюдений. Отрицательный индекс -1 В Reshape () Вызов функции – это наша «лень» выражение: мы хотим автоматически Numpy определить количество строк – и указать, сколько вам нужно столбцов (I.E., 1 столбец).

Эта статья основана на главе книги моей книги Python одноклассники :

Python One-Liners Книга

Python Programmemers улучшит свои навыки информатики с этими полезными одноклассниками.

Python One-listers научит вас читать и писать «одноклассники»: краткие заявления полезных функций, упакованных в одну строку кода. Вы узнаете, как систематически распаковать и понимать любую строку кода Python и писать красноречие, мощно сжатый Python, как эксперт.

Пять главных глав на пять глав обложки советы и трюки, регулярные выражения, машинное обучение, самые темы науки о данных и полезные алгоритмы. Подробные объяснения одноклассников вводят ключевые концепции компьютерных наук и повысить ваши кодировки и аналитические навыки. Вы узнаете о продвинутых функциях Python, такие как понимание списка, нарезки, нарезки, функции лямбда, регулярные выражения, карта и уменьшения функций и нарезки нарезки. Вы также узнаете, как:

Используйте структуры данных для решения проблем реальных проблем, например, использование булевой индексации для поиска городов с загрязнением выше среднего Используйте Numpy Основы, такие как массив, форма, ось, тип, вещание, расширенная индексация, нарезка, сортировка, поиск, агрегация и статистика Рассчитайте базовую статистику многомерных массивов данных и алгоритмы K-означает для безоговорочного обучения Создайте более усовершенствованные регулярные выражения с помощью группировки и названных групп, отрицательные LookAeads, сбежавшие символы, пробелы, наборы символов (и наборы отрицательных символов) и жадные/негридические операторы Понимать широкий ассортимент темы компьютерных наук, включая анаграммы, палиндромы, сверты, перестановки, факториалы, простые числа, цифры фибоначчи, обфускации, поиск и алгоритмическую сортировку

К концу книги вы узнаете, как писать Python в его самых утонченных, и создавать краткие, красивые куски «Python Art» в простой строке.

Получите свой Python One-Liners сейчас !!

Куда пойти отсюда?

Понимание алгоритмов достаточно трудно.

Почему так много людей борются с алгоритмами?

Да, сложность может быть проблемой время от времени. Но во многих случаях реальная проблема – отсутствие быстрого и уверенного понимания самых оснований кода.

Доказательство: Вы когда-нибудь наблюдали, что вы можете легко понять алгоритмы визуально, но не в коде?

Существует только одно решение: овладеть основы, пока вам не нужно думать о них. Только тогда ваш мозг может обрабатывать сложность более высокого уровня алгоритмов.

Чтобы помочь вам достичь этого, я вкладываю большую часть своего времени и усилий в создании лучших бесплатных курсов по электронной почте Python в паутина. Присоединяйтесь к моему сообществу более 66 000 амбициозных кодеров Python!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/k-nearest-neighbors-as-a-python-one-liner/”