思考机器学习的工作原理,有助于理解训练/测试数据划分想法的意义。真实世界的系统训练他们所拥有的数据,而对于其他数据来源(来自客户,传感器,或其他的来源),已经训练过的分类器必须在全新的数据集上进行预测。我们可以在训练期间使用训练/测试划分来模拟该过程 - 测试数据是在生产期间将进入系统的"未来数据"的模拟。
特别对于鸢尾花,鸢尾花中的150个标签是按类别进行排序的,这意味着如果我们使用某个比例来划分数据,这将导致从根本上改变类别分布。例如,如果我们采用普遍的2/3的训练数据和1/3的测试数据进行划分,我们的训练数据集将只包括类别为0和1(Setosa和Versicolor)的鸢尾花,我们的测试集将只包含类别标签为2(维吉尼亚鸢尾花)的样本。
假设所有样本都是相互独立的(对比时间序列数据),我们希望在划分数据集之前随机排列数据集。
现在我们需要把数据划分成训练集和测试集。幸运的是,这是机器学习中的一种常见模式,scikit-learn 具有将数据集划分成训练集和测试集的预处理功能。在这里,我们使用50%的数据作为训练集,50%作为测试集。80%和20%是另一个普遍的划分比例,没有硬性规定。最重要的是要确保使用没有用到过的数据来评估你的系统!