0

这是 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 图

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

4

3 回答 3

0

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

为了使评论更完整,一些作者建议使用其他方式来初始化非随机的码本向量,例如使用 PCA ......但那是另一回事了。

于 2014-09-03T15:42:39.037 回答
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)

你在这里!:)具有新颜色范围的葡萄酒 SOM

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

我希望这对所有仍然想改变颜色的人有所帮助。我强烈建议您通过查找 Earl F. Glynn 的介绍来查找更多信息,关于 R 中颜色的使用。

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

于 2017-06-14T15:03:55.447 回答
-3
library(fortunes)
fortune("WTFM")

这一切都记录在 TFM 中。那些 WTFM 不想让 WTFM 再次出现在邮件列表中的人。实时调频。-- Barry Rowlingson R-help(2003 年 10 月)

?set.seed
于 2014-03-05T13:03:47.610 回答