Кластеризация K-Means++ с использованием Scikit-Learn

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы узнаем, как инициализировать K-Means++ с использованием библиотеки scikit-learn в Python. K-Means++ - популярный алгоритм для кластеризации данных на основе сходства. Он используется в качестве стандартной инициализации для k-means. В этом практическом занятии мы сгенерируем примерные данные, вычислим начальные точки (seeds) для k-means++ и построим начальные точки на графике вдоль примерных данных.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49181{{"Кластеризация K-Means++ с использованием Scikit-Learn"}} end

Генерация примерных данных

Мы будем использовать функцию make_blobs из библиотеки scikit-learn для генерации примерных данных. Эта функция генерирует изотропные гауссовы "куски" (blobs) для кластеризации. Мы сгенерируем 4000 образцов с 4 центрами.

## Generate sample data
n_samples = 4000
n_components = 4

X, y_true = make_blobs(
    n_samples=n_samples, centers=n_components, cluster_std=0.60, random_state=0
)
X = X[:, ::-1]

Вычисление начальных точек (seeds) для k-means++

Мы будем использовать функцию kmeans_plusplus из библиотеки scikit-learn для вычисления начальных точек (seeds) для k-means++. Эта функция возвращает начальные центры кластеров, которые используются для кластеризации k-means. Мы вычислим 4 кластера с использованием k-means++.

## Calculate seeds from k-means++
centers_init, indices = kmeans_plusplus(X, n_clusters=4, random_state=0)

Построение графиков с начальными точками (seeds) и примерами данных

Мы будем использовать библиотеку matplotlib для построения графиков с начальными точками (seeds) вдоль примерных данных. Начальные точки (seeds) будут показаны как синие точки, а примерные данные - как цветные точки.

## Plot init seeds along side sample data
plt.figure(1)
colors = ["#4EACC5", "#FF9C34", "#4E9A06", "m"]

for k, col in enumerate(colors):
    cluster_data = y_true == k
    plt.scatter(X[cluster_data, 0], X[cluster_data, 1], c=col, marker=".", s=10)

plt.scatter(centers_init[:, 0], centers_init[:, 1], c="b", s=50)
plt.title("K-Means++ Initialization")
plt.xticks([])
plt.yticks([])
plt.show()

Резюме

В этом практическом занятии мы узнали, как инициализировать K-Means++ с использованием библиотеки scikit-learn в Python. Мы сгенерировали примерные данные, вычислили начальные точки (seeds) для k-means++ и построили графики с начальными точками (seeds) вдоль примерных данных. K-Means++ - популярный алгоритм для кластеризации данных на основе сходства, и он используется в качестве стандартной инициализации для k-means.