Введение
В этом практическом занятии показано, как использовать алгоритм спектрального ко-кластеризации для бикластеризации набора данных. Набор данных генерируется с использованием функции make_biclusters, которая создает матрицу с малым значением элементов и встраивает в нее бикластеры с большими значениями. Затем строки и столбцы перемешиваются и передаются в алгоритм спектрального ко-кластеризации. Переупорядочивание перемешанной матрицы так, чтобы бикластеры были смежными, показывает, насколько точно алгоритм нашел бикластеры.
Советы по использованию ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и приступить к практике в Jupyter Notebook.
Иногда может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами при обучении, не стесняйтесь обращаться к Лэби. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем необходимые библиотеки
Нам необходимо импортировать необходимые библиотеки, такие как 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, которая создала матрицу с небольшими значениями и внедрила бикластеры с большими значениями. Мы перемешали строки и столбцы набора данных и передали его в алгоритм спектральной ко - кластеризации. Мы вычислили коэффициент консенсуса для бикластеров и переупорядочили перемешанный набор данных, чтобы сделать бикластеры непрерывными. Наконец, мы визуализировали бикластеры, чтобы показать, насколько точно алгоритм их нашел.