大家好！这是Weka在数据挖掘中的运用的第二部分第二节。我们将要继续学习
训练和测试。
下面是机器学习常见的场景：
我们使用机器学习算法来处理训练数据，从而得到
分类器。
我们再用一些独立的测试数据来测试得到的分类器。
我们可以把测试数据放入分类器，得到评估结果。
我们还可以在现实中使用分类器对新的数据
做预测。
使用不同的测试数据和训练数据是十分重要的，因为只有这样，
你才能得到可信的评估结果。
这就是下面我们要讲解的内容。
如果你只有一组数据，该怎么办呢？你可以把数据分成
两部分。
一部分用作训练，另一部分用作测试。
比如，2/3用于训练，1/3用于测试。
训练数据一定要不同于测试数据。
训练和测试数据都是分别取自无限总体的独立样本。
这是基本准则。两组数据都是不同的独立样本，
不可以是同样的数据。
如果一样，评估结果就会产生误导，
无法反映出用分类器分析新数据的真实情况。
下面，我们来看segment数据集。上节课我们也用到了这个数集。
打开segment-challenge。
我们打算使用提供的测试数据。
先打开J48树分类器，
再选择提供的测试数据，
找到合适的测试数据文件，segment-test.arff，
载入它。现在我们有了测试数据，来一起看看结果。
上节课，我们使用用户分类器（the user classifier）来分析数据，准确率为79%。
J48使用效果要好得多，
同样的测试数据，准确率高达96%。
假设我要用测试数据来检验训练数据。我可以选择
Use training set测试选项。
现在系统重新运行。你不要这么做，
因为这会得到误导性的结果。
看，准确率是99%。
这并不能代表使用不同数据的准确率。
如果我们只有一组数据。在没有测试数据的情况下， 我们可以按百分比分割数据。
这就是percentage split。
我们会得到66%的训练数据和34%的测试数据。
数据分割是随机的。
再次运行，得到95%的准确率。
这个值和我们使用独立的测试数据得到的值基本一样，
只是稍微低了一些。
再次运行，不同的分割或许会带来些许不同的结果，
但是，结果完全一样，95.098%。
这是因为，在运行前Weka会初始化随机数生成器，
以保证你能得到重复的结果。
否则，会得到不同的结果。
不过，如果你希望看到不同的运行结果，
你可以重新设置随机数。
我们下节课会学习这个问题。
今天就讲到这里。
机器学习的最基本原理是 训练数据和测试数据是从相同的无限总体中
取出的独立的样本。
如果你只有一个数据集，可以取部分做测试数据，例如33%
或10%。
不同的测试数据会带来些许不同的结果，
但是Weka会通过重置随机数生成器
来保证一样的结果，
我们使用了J48分析segment-challenge数据集。
你想深入学习，可以看课本5.1章：
训练和测试。
请做这节课的相关练习。
再见！