更好的排版点这里 java
16.4 随机化数据 算法
由于学习算法容易出现按数据到达的顺序来操做,所以随机(也称为“洗牌”)是一种常见的方法来缓解这个问题。特别是重复的随机化,例如,在交叉验证时,有利于产生更逼真的统计数据。 dom
WEKA提供了两种可能性进行数据集随机化: 机器学习
• 使用weka.core.Instances对象的 randomize(Random)方法,weka.core.Instances对象自己包含数据。这个方法须要一个java.util.Random类的实例。 下面解释如何正确地实例化这样一个对象。 函数
• 使用 Randomize 过滤器( weka.filters.unsupervised.instance包)。有关如何使用过滤器的更多信息,请参阅第16.5节。 学习
机器学习实验一个很是重要的方面是实验必须是可重复的。在相同的实验设置状况下,后续的实验运行必须获得彻底相同的结果。这可能看起来难以想象,但在这种状况下,随机化仍然是可能的。不管如何,随机数生成永远不会返回一个彻底随机的数字序列,只会获得一个伪随机的序列。为了实现可重复的伪随机序列, 将使用给定种子 的生成器。使用相同的 种子值 将会获得相同的序列。 google
java.util.Random(随机数生成器类)中的默认构造函数不该该使用,由于这样构造出来的对象最有可能产生不一样的序列。构造函数 Random(long)使用指定的种子值,推荐使用。 spa
为了获得与数据集更相关的数据随机化,能够使用weka.core.Instances类的getRandomNumberGenerator(int)方法。该方法返回一个java.util.Random对象,生成这个对象所使用的的种子是,提供的种子与Instances对象随机选择的一个weka.core.Instance(选择时使用一个随机数发生器,其使用的种子是提供给此方法种子)的字符串表示的哈希值的和。 对象