这是在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")
这是输出的链接:
任何人都可以向我解释代码中看到的set.seed
命令的作用。另外,plot命令如何决定着色方案并绘制相应的图例而不在命令中提及?
答案 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