【问题标题】:Why should we use set.seed() before apply knn() in R?为什么我们应该在 R 中应用 knn() 之前使用 set.seed()?
【发布时间】:2020-11-04 05:33:58
【问题描述】:

当我阅读统计学习简介时,我对以下段落感到困惑:

我们在应用 knn() 之前设置了一个随机种子,因为如果有几个 观察被绑定为最近的邻居,然后 R 将随机中断 领带。因此,必须设置种子以确保 结果的重现性。

谁能告诉我为什么KNN的结果是随机的?

【问题讨论】:

  • 因为如果多个观测值被捆绑为最近邻,那么 R 将随机打破平局。为了每次都以相同的方式打破平局,您设置了种子,这样您就可以准确地重现结果(但您的结果将取决于该种子)。
  • 谢谢!但我还是不明白为什么领带可以被打破。训练集和测试集固定后,测试集中任意一点的邻居不也固定了吗?
  • 如果您有三个值 1、2 和 3。您如何将它们分为两类 (k=2)。 2 直接介于 1 和 3 之间。那么您将其分配给哪个?好吧,您需要做出选择,以便 R 做出随机选择。有时它将 2 与 1 组合在一起,有时它将 2 与 3 组合在一起。由于该过程是随机的,因此如果您希望 R 每次都做出相同的选择,则需要将种子设置为它会产生相同的“随机” " 选择。
  • 谢谢。那么如果我设置'use.all'=T(同时训练集和测试集是固定的),那么即使我不设置种子,分类总是一样的?

标签: r knn


【解决方案1】:

如果我们在 R 中在 knn() 之前使用 set.seed() 之前使用 knn() 那么它有助于只选择一个随机数,因为如果我们运行 knn() 则会生成随机数,但如果我们希望数字不会改变那么我们就可以使用它了。

【讨论】:

  • 我想我明白你想说什么,但不太清楚你怎么说。你能重新措辞吗(我稍微改变了语法)。
  • 让我解释一下。首先,我们在该算法中使用 knn() 选择一个随机数,每次运行时随机数都会保持变化,因此准确性可能会波动,因为如果我们想要它不会发生,因为我们使用 set.seed().This函数帮助我们在使用后设置一定范围的随机数,结果不能改变或保持不变。
猜你喜欢
  • 2020-04-21
  • 2011-04-22
  • 2011-05-16
  • 2011-04-19
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
相关资源
最近更新 更多