【问题标题】:different results using R in windows and linux在 windows 和 linux 中使用 R 的不同结果
【发布时间】:2016-02-16 10:52:27
【问题描述】:

我在 ubuntu 系统中使用 kmeans 时遇到问题。我似乎得到了不同的结果! 我的数据是:

x<- c(0.1295..,-0.58928,-0.244252,-0.41614,-0.58804,-0.74628,-0.9045188,-1.050903,-1.197288,-1.3353877,-1.47348656,-1.607894)

当我执行 kmeans 函数并只想在 windows 系统中获取 kmeans$centers 的最大值时,

means <- max(kmeans(x, 3)$centers)
means
[1] -0.05892

当我在 ubuntu 12.04 系统中运行确切的代码时,我得到了完全不同的答案

means <- max(kmeans(x,3)$centers)
means
[1] -0.1482334

所以,我在没有 max 函数的情况下再次执行了 kmeans

means <- kmeans(x, 3)
means$centers
NULL

但是,意味着它自己拥有所有的条目

means


Available components:
[1] "cluster" "centers" "tots" "withinss" "tot.withinss"
[6] "betweenss" "size" "iter" "ifault"

windows 和 linux 中的功能似乎有所不同。谁能帮我解决这个问题?!

【问题讨论】:

  • kmeans 以随机质心开头,您是否尝试将set.seed(123) 添加到两个脚本的开头?
  • 感谢塞巴斯蒂安,这确实成功了。我认为这就是使用 RStudio 的优势!我在 Windows 的 Rstudio 中运行代码,我猜它会自动执行此操作,我必须在 ubuntu 中手动设置.seed(123)。

标签: r linux ubuntu-12.04 k-means


【解决方案1】:

k-means 算法通常不是确定性的,即它通常不会导致完全可重现的结果。主要原因是在常用算法中initialization is random.

如 ?kmeans 中所述

通常建议尝试多个随机启动 (nstart> 1)

【讨论】:

  • 感谢 RHertel,这很有效,正如@sebastian-c 所建议的那样,set.seed(123) 也很有效。现在,我必须尝试使用​​ rollapply 运行它,看看是否能像在 Windows 中使用 RStudio 那样得到结果。
  • 很高兴您的问题得到了解答,并且我可以为它做出贡献。我想补充一点,您可以通过使用set.seed() 在不同的机器上获得相同的结果,但这并不意味着相同的结果比您使用不同的伪随机种子获得的结果更好,或者没有指定任何种子.
  • 我理解你在这里提出的观点。我试图复制我在第一台机器上得到的结果,因为它们是经过测试的结果,我正在重写 linux 上的代码以便能够在服务器上发布和运行。但我一定会记住这一点。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2018-01-10
  • 2018-07-06
  • 1970-01-01
  • 2021-07-16
  • 2015-05-04
  • 1970-01-01
  • 2013-05-20
  • 2013-10-19
相关资源
最近更新 更多