Индуктивная кластеризация с использованием Scikit - Learn

Beginner

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

Введение

В этом практическом занятии мы узнаем о методе индуктивной кластеризации, который расширяет кластеризацию путём индукции классификатора на основе меток кластеров. Мы будем использовать библиотеку scikit-learn в Python для реализации мета-оценщика, который расширяет кластеризацию.

Советы по использованию ВМ

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

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

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

Генерация обучающих данных

В этом шаге мы сгенерируем некоторые обучающие данные путём кластеризации. Мы будем использовать функцию make_blobs из scikit-learn для генерации 5000 выборок с 3 кластерами, имеющими разные стандартные отклонения и центры.

X, y = make_blobs(
    n_samples=5000,
    cluster_std=[1.0, 1.0, 0.5],
    centers=[(-5, -5), (0, 0), (5, 5)],
    random_state=42,
)

Обучение алгоритма кластеризации

В этом шаге мы обучим алгоритм кластеризации на сгенерированных обучающих данных и получим метки кластеров. Мы будем использовать AgglomerativeClustering из scikit-learn для обучения алгоритма с 3 кластерами.

clusterer = AgglomerativeClustering(n_clusters=3)
cluster_labels = clusterer.fit_predict(X)

Генерация новых выборок

В этом шаге мы сгенерируем новые выборки и построим их вместе с исходным наборем данных. Мы снова будем использовать функцию make_blobs для генерации 10 новых выборок.

X_new, y_new = make_blobs(
    n_samples=10, centers=[(-7, -1), (-2, 4), (3, 6)], random_state=42
)

Объявление модели индуктивного обучения

В этом шаге мы объявим модель индуктивного обучения, которая будет использоваться для предсказания принадлежности кластера для неизвестных экземпляров. В качестве классификатора мы будем использовать RandomForestClassifier из scikit-learn.

classifier = RandomForestClassifier(random_state=42)
inductive_learner = InductiveClusterer(clusterer, classifier).fit(X)

Предсказание принадлежности кластера для неизвестных экземпляров

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

probable_clusters = inductive_learner.predict(X_new)

plt.subplot(133)
plot_scatter(X, cluster_labels)
plot_scatter(X_new, probable_clusters)
plt.title("Classify unknown instances")

Резюме

В этом практическом занятии мы изучили индуктивную кластеризацию, метод, который расширяет кластеризацию путём индукции классификатора из меток кластеров. Мы использовали библиотеку scikit-learn в Python для реализации мета-оценщика, который расширяет кластеризацию, и обучили алгоритм кластеризации на сгенерированных обучающих данных. Мы также сгенерировали новые выборки и использовали модель индуктивного обучения для предсказания принадлежности кластера для новых выборок.