带有R解释的SOM示例

时间:2014-03-05 11:25:24

标签: r plot som

这是在Kohonen包中使用som函数的典型示例:

library("kohonen")
Loading required package: class
data("wines")
wines.sc <- scale(wines)
set.seed(7)
wine.som <- som(data = wines.sc, grid = somgrid(5, 4, "hexagonal"))
plot(wine.som, main = "Wine data")

这是输出的链接: SOM plot

任何人都可以向我解释代码中看到的set.seed命令的作用。另外,plot命令如何决定着色方案并绘制相应的图例而不在命令中提及?

3 个答案:

答案 0 :(得分:0)

我没有检查你提到的R源代码,但我可以从原始的SOM算法告诉你,需要随机初始化码本向量。我想你知道K-means(如果不是我建议在进入SOM之前阅读它)。 SOM和K-Means的初始化共享一些代表性矢量(也称为原型)必须最初随机地位于输入空间中的方式。为了实现你需要一个随机生成器,因此你需要一个种子来初始化它。此外,在每个训练STEP中,某些版本的SOM随机选择输入数据而不是顺序选择,这也需要一个随机生成器。

为了使评论更加完整,一些作者建议使用其他方法来初始化非随机的码本矢量,例如使用PCA ...但这是另一个故事。

答案 1 :(得分:0)

已经解释了随机种子的事情,但我可以帮助你了解切片和图例的颜色。

SOM对象的绘图功能使用调色板,这取决于矩阵中的类/列数。它根据我们可以称之为“主要颜色”的内容创建颜色范围。 在您的示例中,主要颜色必须是“红色”,“黄色”,“绿色”,“蓝色”和“紫色”,并且调色板会自动添加匹配的颜色以填充这些“主要颜色”之间的空间。

您可以选择使用另一个调色板,这要归功于参数“ palette.name ”,可以使用预定义的调色板功能,例如“rainbow()” ,“topo.colors()”,“cm.colors()”......或创建自己的主要颜色范围,使用 colorRampPalette()

以下是一个例子:

如果你想让SOM图中的颜色从粉红色变为黄色,然后是蓝色,最后是棕色,你可以这样写:

data("wines")

#You have to define a new palette function, that can create the colour gradient #depending on the number of classes you want to represent

PALETTE.WINES <- colorRampPalette(c("pink", "yellow", "blue", "brown"))

som.wines <- som(scale(wines), grid = somgrid(4, 4, "hexagonal"))

#Finally remember to fill in the argument "palette.name" with your new palette function
plot(som.wines, main = "Wine data", palette.name=PALETTE.WINES)

你在这里! :) Wine SOM with new colour range

如果您想影响每一列的特殊颜色,可以输入任意数量的主要颜色。在前面的例子中,如果你只有四个classe,一个是粉红色,第二个是黄色,第三个是蓝色,最后一个是棕色,没有渐变。

我希望这对所有想要改变颜色的人都有所帮助。 我强烈建议您通过查看Earl F. Glynn 的演示文稿来查找有关R中颜色使用的更多信息。

您还可以看到此链接以获取更多详细信息:https://www.r-bloggers.com/color-palettes-in-r/

答案 2 :(得分:-3)

library(fortunes)
fortune("WTFM")

这完全记录在TFM中。那些WTFM不希望再次在邮件列表上使用WTFM的人。 RTFM。     - 巴里罗林森       R-help(2003年10月)

?set.seed