Алгоритм спектральной ко - кластеризации

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

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

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

Введение

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

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

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/cluster("Clustering") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/cluster -.-> lab-49301{{"Алгоритм спектральной ко - кластеризации"}} sklearn/metrics -.-> lab-49301{{"Алгоритм спектральной ко - кластеризации"}} sklearn/datasets -.-> lab-49301{{"Алгоритм спектральной ко - кластеризации"}} ml/sklearn -.-> lab-49301{{"Алгоритм спектральной ко - кластеризации"}} end

Импортируем необходимые библиотеки

Нам необходимо импортировать необходимые библиотеки, такие как numpy, matplotlib, scikit-learn.

import numpy as np
from matplotlib import pyplot as plt

from sklearn.datasets import make_biclusters
from sklearn.cluster import SpectralCoclustering
from sklearn.metrics import consensus_score

Генерируем набор данных

Мы генерируем набор данных размером (300, 300) с 5 бикластерами и шумом в размере 5 с использованием функции make_biclusters.

data, rows, columns = make_biclusters(shape=(300, 300), n_clusters=5, noise=5, shuffle=False, random_state=0)

Визуализируем исходный набор данных

Мы визуализируем исходный набор данных с использованием функции matshow().

plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Original dataset")

Перемешиваем набор данных

Мы перемешиваем набор данных с использованием функции permutation() из библиотеки numpy.

rng = np.random.RandomState(0)
row_idx = rng.permutation(data.shape[0])
col_idx = rng.permutation(data.shape[1])
data = data[row_idx][:, col_idx]

Визуализируем перемешанный набор данных

Мы визуализируем перемешанный набор данных с использованием функции matshow().

plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Shuffled dataset")

Применяем алгоритм спектральной ко - кластеризации

Мы применяем алгоритм спектральной ко - кластеризации к перемешанному набору данных с 5 кластерами.

model = SpectralCoclustering(n_clusters=5, random_state=0)
model.fit(data)

Вычисляем коэффициент консенсуса

Мы вычисляем коэффициент консенсуса для бикластеров с использованием функции consensus_score().

score = consensus_score(model.biclusters_, (rows[:, row_idx], columns[:, col_idx]))
print("consensus score: {:.3f}".format(score))

Переупорядочиваем перемешанный набор данных

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

fit_data = data[np.argsort(model.row_labels_)]
fit_data = fit_data[:, np.argsort(model.column_labels_)]

Визуализируем бикластеры

Мы визуализируем бикластеры с использованием функции matshow().

plt.matshow(fit_data, cmap=plt.cm.Blues)
plt.title("After biclustering; rearranged to show biclusters")

Резюме

В этом практическом занятии мы узнали, как сгенерировать набор данных и выполнить бикластеризацию с использованием алгоритма спектральной ко - кластеризации. Исходный набор данных был сгенерирован с использованием функции make_biclusters, которая создала матрицу с небольшими значениями и внедрила бикластеры с большими значениями. Мы перемешали строки и столбцы набора данных и передали его в алгоритм спектральной ко - кластеризации. Мы вычислили коэффициент консенсуса для бикластеров и переупорядочили перемешанный набор данных, чтобы сделать бикластеры непрерывными. Наконец, мы визуализировали бикластеры, чтобы показать, насколько точно алгоритм их нашел.