A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个例子演示如何产生一个数据集,并且用谱系共聚类法(Spectral Co-Clustering algorithm)对它进行双向聚类。所谓“双向聚类”,是指对变量和实例同时聚类。

这里,使用函数make_biclusters产生双向聚类的数据集。该函数产生的矩阵元素较小,但嵌入的双向类bicluster具有较大的值。然后随机重排矩阵的行和列,作为参数传递给算法。再重新排列这个随机重排的矩阵,使得biclusters邻接。这样一来就可以看出算法的准确程度了。

实例详解

首先,导入必需的库。

print(__doc__)

# Author: Kemal Eren <kemal@kemaleren.com>
# License: BSD 3 clause

import numpy as np
from matplotlib import pyplot as plt

from sklearn.datasets import make_biclusters
from sklearn.datasets import samples_generator as sg
from sklearn.cluster.bicluster import SpectralCoclustering
from sklearn.metrics import consensus_score

调用函数make_biclusters, 产生一个300行,300列的数据数组,该数组有一个用于双向聚类的固定对角块结构。预置5个biclusters, 5个标准差的高斯误差。作图显示产生的数据集。

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

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

随机重排数据集。

data, row_idx, col_idx = sg._shuffle(data, random_state=0)
plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Shuffled dataset")
plt.show()



调用bicluster库的谱系共聚类函数SpectralCoclustering, 设置5个biclusters. 拟合模拟数据集,并计算聚类一致性分数,评价聚类效果。

model = SpectralCoclustering(n_clusters=5, random_state=0)
model.fit(data)
score = consensus_score(model.biclusters_,
                        (rows[:, row_idx], columns[:, col_idx]))

print("consensus score: {:.3f}".format(score))

consensus score: 1.000

可视化重新排列共聚类后的数据集。

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

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

plt.show()


---------------------
【转载】作者:Goodsta
原文:https://blog.csdn.net/wong2016/article/details/83615321



4 个回复

倒序浏览
一个人一座城0.0 来自手机 中级黑马 2018-12-3 11:15:41
沙发
到此一观
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马