首页 > 解决方案 > 如何生成块对角数据矩阵

问题描述

我们使用的第一个合成数据集是一个 100×100 矩阵,其中有四个对角线排列的 25×25 块矩阵。每个块内的数据表示一个簇中两个对应点的亲和度,而所有块外的数据表示噪声。每个块内的亲和度数据在 0 和 1 范围内随机生成,而噪声数据在 0 和 c 范围内随机生成,其中 c 分别设置为 0.6、0.7 和 0.8。此外,为了使这个聚类任务更具挑战性,我们随机挑选出 25 个噪声数据点并将它们的值设置为 1。

想要的人物看起来像这个带有彩条的人物。 想要的图看起来像这个带有彩条的图

标签: pythonpython-3.xmatlabmatplotlib

解决方案


这应该让您开始生成矩阵。

import matplotlib.pyplot as plt
import numpy as np

c_min, c_span = 0.0, 0.7
x = c_min + c_span*np.random.random((100,100))
for i in range(4):
    j = i*25
    x[j:j+25, j:j+25] = np.random.random((25,25))

plt.imshow(x, interpolation='nearest')
plt.colorbar()
plt.show()

在此处输入图像描述

总体而言,听起来您需要三个不同的矩阵,每个矩阵都有不同的背景范围 (0, .6), (0, .7), (0, .8)。如果是这种情况,只需更改c_span. (另外,看起来您正在使用“jet”颜色图,但这不是一个好的感知颜色图,但如果您想要它,您可以cmap=plt.cm.jet在绘图调用中使用它。)


推荐阅读