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

Алгоритм K-означает в Python

https://youtu.be/QXTRsowAuWA Эй, финансы! Сегодня мы собираемся поговорить о одной из самых популярных алгоритмов кластеризации: k-означает. Вы когда-нибудь задавались вопросом, как организовать, казалось бы, неструктурированные данные, ощущение неупорядоченных объектов, простым способом? Например, вам может потребоваться: выполнить файлы SEGMEGTATIONSTORSSTORESTORESTORESTORESTORESTORE на основе их текста ContentCompress изображений с вашим собственным кодом … Алгоритм K-означает в Python Подробнее »

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

Эй, финансы! Сегодня мы собираемся поговорить о одном из самых популярных алгоритмов кластеризации: K-означает Отказ

Вы когда-нибудь задавались вопросом, как Организовать, казалось бы, неструктурированные данные Ощущение неупорядоченных объектов, простым способом?

Например, вам может понадобиться:

  • выполнить сегментацию клиентов
  • хранить файлы на основе их текстового контента
  • Сжатие изображений с вашим собственным кодом

Мы узнаем, как реализовать его в Python и получить визуальный вывод!

Немного теории

Если вы не так много в теории и/или должны быстро работать, вы можете просто пропустить эту часть и перейти к следующему.

Прежде всего, Машинное обучение алгоритм, который мы собираемся учиться, это unsupervised

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

В дополнение к тому, чтобы быть unsupervised Мы говорим, что это кластеризация Алгоритм, поскольку его точка состоит в том, чтобы создать подгруппы данных данных, которые каким-то образом близки, с точки зрения численного расстояния. Эта идея была впервые реализована колокольными лабораториями в конце 1950-х годов.

Возможно, лучший способ просмотра кластеров для человеческого глаза находится в 3D, как выше, или в 2D; Однако у вас редко так мало функций в наборе данных. И это работает лучше по данным, уже кластером геометрически.

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

Обратите внимание, что это ALGO должно быть помогло в том, чтобы он требует, чтобы пользователь вводил количество кластеров для создания. Каждый из них будет иметь центральную точку под названием «Центроидный».

Вот процедура, которая будет запускаться под капотом, как только мы выполним наш код:

  • Выберите количество кластеров K, чтобы искать (человеческий вход)
  • Инициализировать k центроида случайным образом
  • Вычислить среднее расстояние каждого датчика с каждым центроидом
  • Назначьте каждый файл данных на ближайший центр) (кластер)
  • Вычислить среднее значение каждого кластера, которое становится вашим новым центром

Предыдущие 3 шага составляют то, что называется эпоха Отказ

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

Изображение стоит тысячи слов, поэтому вот то, что похоже:

У K-означает функцию потери?

Да, это называется Inertia и является суммой квадратов расстояний между точками данных и их соответствующими центрами.

На практике

  • K-средства обычно запускаются несколько раз с различными случайными инициализациями
  • Можно использовать случайную мини-пакет в каждой эпоху вместо полного набора данных, для более быстрой сходимости
  • Алгоритм довольно быстро

Установка модуля

Модуль, который мы будем использовать для выполнения этой задачи, – это Scikit-Suart, очень удобный модуль, когда речь идет о машинном обучении в Python.

Если у вас его еще нет, продолжите с помощью обычной команды установки:

pip install scikit-learn

Тогда проверьте его правильно:

pip show scikit-learn

Вот страница документации Sklearn, посвященная KMAINS: https://scikit-learn.org/stable/modules/generated/sklearn.cluster.kmeans.html#sklearn.cluster.kmeans. Не стесняйтесь проверять его для более подробной информации о аргументах, которые вы можете пройти, и более продвинутое использование.

Как только это сделано, мы импортируем класс KMAINS в этом модуле:

Первая строка – это импорт.

Заставить магию случиться

Вторая строка создает класс KMAIANS, создавая фактическое Kmeans объект , вот это положить в «км» Переменная и пользователь запросил создание 3 кластеров.

Третья строка запускает вычисление кластеризации.

Как только ваша модель K-означает, вы можете использовать четыре атрибута, которые говорят для себя:

  • km.cluster_centers_ : Предоставляет координаты каждого центроида
  • km.labels_ Предоставляет номер кластера каждого DataPoint (индексация начинается в 0, как Списки )
  • km.inertia_ : дает сумму в квадратных расстояниях образцов к ближайшему центроиду
  • km.n_iter_ : предоставляет количество эпохи запустить

Если вы хотите попробовать, но нет набора данных, вы можете создать свои собственные очки благодаря Sklearn make_blob характерная черта!

Вот пример выхода в 2D, с уменьшением размерности PCA, как вы можете видеть на осях X и Y:

Я показал вам атрибуты, как насчет доступных методов?

Самый полезный, вероятно, это .pedict (new_datapoint) Метод, который возвращает целое число, соответствующее кластеру (числу), оцениваемую моделью.

Как выбрать лучшее количество кластеров

Подождите, это все очень хорошо, если я знаю, что ожидать с точки зрения количества кластеров, как я могу вводить этот номер, но что, если я понятия не имею, сколько кластеров ожидать?

Затем используйте метод локтя. Это означает, что график эволюции инерции в соответствии с количеством кластеров и выбирает количество кластеров, после чего снижение инерции становится маргинальным:

В приведенном выше примере идеальное количество кластеров, кажется, 3. График – в форме локтя, отсюда и название.

K-означает с NLP: Отображение WordCloud

Предполагая, что вы использовали алгоритм K-означает в задаче обработки естественного языка, после предварительной обработки и вектора слов, вам может потребоваться визуальный способ представить свой выход.

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

Затем вступает в игру Модуль WordCloud , позволяя вам генерировать легко красивые, красочные WordClouds для мгновенного понимания.

Просто Пип Установите WordCloud и использовать

plt.imshow( Wordcloud().generate(your_text) )

Смотрите документацию для параметров.

В моем примере показано выше, я имел дело с ирландскими сообщениями PDF, а в каждом отчете часть контента была написана в GAELIC.

Угадай, что нашел алгос? Посмотрите на нижний кластер!

Это иллюстрирует характеристику «неповторимомуся»: я не сказал, что был другой язык, и все же он нашел его и изолировал его сам по себе!

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

Я надеюсь, что вам понравилось эту статью. Чтобы добиться глубже в темы, проверить документацию и экспериментировать сами:

Любые комментарии? Дайте нам знать!

Профиль Freelancer Linkedin профиль

Оригинал: “https://blog.finxter.com/k-means/”