Часть 4: Алгоритм спектральной совместной кластеризации

С возвращением, любители машинного обучения, а также новички, которые только начинают с него 🚀. Сегодня мы говорим об алгоритме спектральной кокластеризации. Этот пример взят отсюда. Я очень благодарен за все уже существующие ресурсы, которые значительно облегчают изучение кодирования. Без лишних слов, давайте сразу погрузимся 💦

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

В этом примере Shout показано, как сгенерировать набор данных и выполнить его бикластеризацию с помощью алгоритма спектральной совместной кластеризации.

С помощью функции make_bicluster мы можем сгенерировать набор данных. Эта функция создает матрицу малых значений и имплантирует бикластер с большими значениями. Строки и столбцы перемешиваются и передаются алгоритму Spectral Co-Clustering. Затем мы можем изменить перетасованную матрицу, чтобы показать, насколько точно алгоритм находит бикластеры.

Во-первых, нам нужно импортировать необходимые библиотеки.

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

Тогда все готово к работе! Давайте начнем и попробуем код, предоставленный Кемалем Эреном.

# generate dataset with make_bicluster
data, rows, columns = make_biclusters(
    shape=(300, 300), n_clusters=5, noise=5, shuffle=False, random_state=0
)
# plot the original dataset
plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Original dataset")

# shuffle clusters
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]
#plot the shuffled dataset
plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Shuffled dataset")
# build the model 
model = SpectralCoclustering(n_clusters=5, random_state=0)
model.fit(data)
score = consensus_score(model.biclusters_, (rows[:, row_idx], columns[:, col_idx]))
# output the achieved score
print("consensus score: {:.3f}".format(score))
# sort the fit_data
fit_data = data[np.argsort(model.row_labels_)]
fit_data = fit_data[:, np.argsort(model.column_labels_)]
# plot the rearranged data
plt.matshow(fit_data, cmap=plt.cm.Blues)
plt.title("After biclustering; rearranged to show biclusters")

plt.show()

Вот выходные графики:

Результат консенсусной оценки составил 1,000 (3f).

Это была ваша ежедневная доза машинного обучения — краткий пример возможностей, которые может предложить scikit-learn. Удачного кодирования/изучения!

Спасибо за чтение этой статьи! Если вы хотите поддержать меня, вы можете сделать это следующим образом:
1. Подпишитесь на меня здесь, на Medium или в Twitter, Instagram, TikTok или YouTube.
2. Подпишитесь на статью.
> 3. Оставьте короткий комментарий

Я очень ценю любую поддержку! Каждое ваше взаимодействие с контентом поможет мне расти и со временем предоставлять более качественный контент. 🚀

Спасибо, VEGXCODES

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.