Machine learning 需要一个自组织映射中U矩阵的具体示例吗

Machine learning 需要一个自组织映射中U矩阵的具体示例吗,machine-learning,neural-network,Machine Learning,Neural Network,我正在尝试开发一个使用SOM分析数据的应用程序。然而,在完成训练后,我找不到一种方法来想象结果。我知道U矩阵是一种方法,但我不能正确理解它。因此,我要求提供一个具体而详细的示例,说明如何构造U矩阵 我也读了一个答案,但它只涉及1行地图,那么3x3地图呢?我知道对于3x3地图: m(1) m(2) m(3) m(4) m(5) m(6) m(7) m(8) m(9) 必须创建5x5矩阵: u(1) u(1,2) u(2) u(2,3) u(3) u(1,4) u(1,2,

我正在尝试开发一个使用SOM分析数据的应用程序。然而,在完成训练后,我找不到一种方法来想象结果。我知道U矩阵是一种方法,但我不能正确理解它。因此,我要求提供一个具体而详细的示例,说明如何构造U矩阵

我也读了一个答案,但它只涉及1行地图,那么3x3地图呢?我知道对于3x3地图:

m(1) m(2) m(3)
m(4) m(5) m(6)
m(7) m(8) m(9)
必须创建5x5矩阵:

u(1)   u(1,2)     u(2)   u(2,3)     u(3)
u(1,4) u(1,2,4,5) u(2,5) u(2,3,5,6) u(3,6)
u(4)   u(4,5)     u(5)   u(5,6)     u(6)
u(4,7) u(4,5,7,8) u(5,8) u(5,6,8,9) u(6,9)
u(7)   u(7,8)     u(8)   u(8,9)     u(9)
但是我不知道如何计算u重量u(1,2,4,5),u(2,3,5,6),u(4,5,7,8)和u(5,6,8,9)

最后,在构建U矩阵后,是否有任何方法可以使用颜色(例如热图)将其可视化

非常感谢您抽出时间


干杯

Kohonen地图的基本思想是将数据点映射到 晶格,通常是二维矩形网格

在最简单的实现中,晶格是通过创建三维网格来初始化的 具有以下维度的数组:

width * height * number_features
这是U矩阵

宽度和高度由用户选择;数字功能就是数字 数据中要素(列或字段)的数量

直观地说,这只是创建一个尺寸为w*h的二维网格 (例如,如果w=10,h=10,则晶格有100个单元),然后 在每个单元格中,放置一个随机1D数组(有时称为“引用元组”) 其大小和值受数据约束

引用元组也被称为权重。

U矩阵是如何渲染的

在下面的示例中,数据由rgb元组组成,因此参考元组 长度为3,且三个值中的每个值必须介于0和255之间)

正是这个3D数组(“晶格”)开始了主要的迭代循环 该算法迭代定位每个数据点,使其与其他类似数据点最接近

若你们在一段时间内绘制它(迭代次数),那个么你们可以可视化集群 队形

我在这里使用的绘图工具是brilliant Python库, 直接绘制晶格,只需将其传递到函数中

下面是SOM算法从初始化到700次迭代的八个进度快照。新初始化的(迭代次数=0)晶格在左上面板中呈现;右下面板中的最终迭代结果

或者,您可以使用较低级别的图像库(在Python中,例如PIL)并将引用元组传输到2D网格上,一次传输一个:

for y in range(h):
    for x in range(w):
        img.putpixel( (x, y), (
            SOM.Umatrix[y, x, 0], 
            SOM.Umatrix[y, x, 1], 
            SOM.Umatrix[y, x, 2]) 
        )
这里img是PIL的Image类的一个实例。这里,通过在网格上一次迭代一个像素来创建图像;对于每个像素,在img上调用putpixel三次,这三次调用当然对应于rgb元组中的三个值


我不知道您是否仍然对此感兴趣,但我找到了此链接 这非常明确地解释了如何计算U矩阵。 希望能有帮助

顺便说一句,我发现该网站的链接有多个参考SOM的资源。如果有人感兴趣,我将其留在这里:

谢谢你的回答,但恐怕它不能直接回答我的问题。我需要了解U-Matrix的工作原理,以便将其应用到我的应用程序中。此外,我的应用程序是用Java开发的,所以我不能使用Python库:)“正是通过这个3D数组(“晶格”)开始主迭代循环,算法迭代地定位每个数据点,以便它与其他类似的数据点最接近。”你能详细介绍一下吗?这正是问题所在。道格:恐怕你把U矩阵和代码本搞混了。绘制的是代码本中的值,即晶格中矢量的RGB表示。u矩阵是不同的,它表示晶格中相邻点之间的“距离”。我认为这些只是第一个数字的欧几里德距离。例如,u(2,3,4,6)表示u(2,3)+u(2,4)+u(2,6),等等。但我不确定,我自己也在试图确定这一点。我在谷歌上找到了你的帖子。你有没有找到解决方案?提供一些示例代码可以增强对
U-Matrix
概念的理解。