B. *_*les 5 random perl cpan classification
我目前正在使用c5.0构建分类器.我有一个包含8000个条目的数据集,每个条目都有自己的ID号(1-8000).在测试分类器的性能时,我必须制作5组10:90(训练数据:测试数据)分割.当然,任何训练案例都不能再出现在测试用例中,并且在任何一组中都不会出现重复.
为了解决为训练数据随机选择示例的问题,并确保不能为测试数据挑选相同的问题,我开发了一种非常慢的方法;
在单独的行中填写1-8000的数字文件.
随机选择一个行号(范围为1-8000)并使用该行的内容作为训练示例的id号.
将所有未标记的数字写入新文件
将随机数发生器的范围减1
重做
然后将所有未标记的数字用作测试数据.它有效,但速度很慢.为了加快速度,我可以使用List :: Util'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];
} @_;
}
Run Code Online (Sandbox Code Playgroud)
这看起来像Fisher-Yates shuffle.
| 归档时间: |
|
| 查看次数: |
1583 次 |
| 最近记录: |