gpt4 book ai didi

perl - List::Util 'shuffle' 实际上是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 17:40:30 25 4
gpt4 key购买 nike

我目前正在使用 c5.0 构建分类器。我有一个包含 8000 个条目的数据集,每个条目都有自己的 ID 号(1-8000)。在测试分类器的性能时,我必须对 5 组 10:90(训练数据:测试数据)进行拆分。当然,任何训练用例都不能在测试用例中再次出现,并且任何一个集合中都不能出现重复。

为了解决训练数据随机选取样本的问题,并确保不能为测试数据选取相同的样本,我开发了一种非常缓慢的方法;

  • 在单独的行上用 1-8000 的数字填充文件。
  • 随机选择一个行号(从 1-8000 的范围内)并使用该行的内容作为训练示例的 id 号。
  • 将所有未选择的数字写入新文件
  • 将随机数生成器的范围减少 1
  • 重做

  • 然后将所有未选择的数字用作测试数据。它有效,但速度很慢。为了加快速度,我可以使用 List::Util 'shuffle' 来'随机' shuffle 和这些数字的数组。但是“洗牌”有多随机?保持相同水平的准确度至关重要。对这篇文章感到抱歉,但有没有人知道“shuffle”实际上是如何工作的。任何帮助都会很棒

    最佳答案

    这是List::Util::PP中使用的shuffle算法

    sub shuffle (@) {
    my @a=\(@_);
    my $n;
    my $i=@_;
    map {
    $n = rand($i--);
    (${$a[$n]}, $a[$n] = $a[$i])[0];
    } @_;
    }

    看起来像 Fisher-Yates洗牌。

    关于perl - List::Util 'shuffle' 实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168104/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com