Weka:10折交叉验证中每次折叠的结果

10

对于Weka Explorer(GUI),当我们对任何给定的ARFF文件进行10折交叉验证时,据我所见,Weka Explorer提供的是所有10个fold的平均结果。

问:有没有办法获得每个fold的结果?例如,我需要每个fold的错误率(错误标识实例)。

感谢您的帮助。


2
为什么不使用Weka API呢?它将允许您更精细地控制。 - iinception
@iinception,我只是想看一些数据的见解(健全性测试)。所以,在这个阶段尝试节省一些编码时间。 - Rushdi Shams
2个回答

16

我认为使用Weka的GUI是可以实现的。不过,你需要使用Experimenter而不是Explorer。以下是步骤:

  1. 从GUI Chooser中打开Experimenter
    • 创建一个新的实验(在右上角点击New按钮)
    • [可选]在Results Destination中输入文件名和位置以保存结果
    • 根据个人喜好设置交叉验证折数(建议从2开始尝试)
    • 添加数据集(如果数据集需要预处理,则应先在Explorer中进行预处理,然后保存预处理的数据集)
    • 设置重复次数(建议从1开始)
    • 添加要测试的算法(一开始可以选择简单的算法进行测试)
  2. 进入Run标签页并启动实验,并等待其完成
  3. 进入Analyse标签页,通过点击Experiment(右上角)导入实验结果
    • 对于行,选择:Fold
    • 对于列,选择:Percent_incorrect或Number_incorrect(或任何其他想要查看的度量)
    • 现在,您可以看到每个fold指定的结果

太好了!它确实完美地运行了!谢谢!我还有几个问题- (1) 迭代控制中的值表示什么?(2) 选项数据集优先/算法优先是什么意思?(3) 在分析选项卡中,我如何运行显著性测试?如果我的问题有点多,我很抱歉。=) - Rushdi Shams
1
很高兴听到它能够工作。重复次数只是多次执行实验,从而获得更稳定的结果(例如10次重复和10次交叉验证折叠即意味着100次运行)。您可以通过在/中选择运行来查看每次重复的结果。如果您想要所有算法先在每个数据集上运行或反之亦然(先在第一个算法上运行所有数据集,然后在第二个算法上运行等等),则数据/算法优先选项可能会有用。显著性测试只需加载完成的实验,然后单击执行测试即可。更多信息请参见:http://is.gd/5CWmfv - Sicco
太棒了!你有关于https://dev59.com/bWTWa4cB1Zd3GeqPEYtf的任何想法吗?谢谢。 - Rushdi Shams
你有任何想法如何从命令行运行WEKA来使这个输出工作吗?如果我想要从命令行运行10折交叉验证,然后像你描述的那样查看结果文件,该怎么做呢? - Astrid
@Astrid 我建议您将此作为一个新问题提出(可能链接到此问题/答案)。 - Sicco
@Sicco 是的,我试过了,在这里:http://stackoverflow.com/questions/21419588/results-from-each-fold-in-10-fold-cross-validation-in-weka-using-command-line - 不过目前还没有成功。 - Astrid

4
Weka Explorer没有提供在使用交叉验证选项时给出单独折叠结果的选项,但是有一些解决方法。如果您明确不想更改任何代码,需要进行一些手动操作,但我认为这可以实现您想要的结果。
以下是具体步骤:
1.选择“百分比分割”而不是“交叉验证”,并将其设置为90%。 2.启动分类器。 3.点击“更多选项...”,并更改“XVal /% Split的随机种子”值为以前未使用过的值。 4.重复10次。
然而,这不完全等同于10倍交叉验证,因为这种方式制作的伪折叠可能会重叠。
一个等效于交叉验证但更麻烦的替代方法是手动使用无监督实例过滤器RemoveFolds或RemoveRange来生成10个折叠,生成并保存10个训练集和10个测试集。然后,对于每个折叠,加载训练集,在分类选项卡中选择“提供的测试集”,并选择适当的测试折叠。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接