Введение
В этом практическом занятии мы узнаем о методе индуктивной кластеризации, который расширяет кластеризацию путём индукции классификатора на основе меток кластеров. Мы будем использовать библиотеку 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 для реализации мета-оценщика, который расширяет кластеризацию, и обучили алгоритм кластеризации на сгенерированных обучающих данных. Мы также сгенерировали новые выборки и использовали модель индуктивного обучения для предсказания принадлежности кластера для новых выборок.