有 K 折交叉验证的变体,也可以将其随机化。 因此,您可以每次都随机选择训练数据集是什么,而只是保持随机地将事物分配给不同的存储桶并测量结果。 但是通常,当人们谈论 K 折交叉验证时,他们谈论的是这种特定技术,即您保留一个存储桶用于测试,其余的存储桶用于训练,然后当您为每个桶建立一个模型时,相对于测试数据集评估全部训练数据集。
...
...
@@ -159,9 +159,9 @@ print scores.mean()
![](img/705c48f3-a3b4-4d63-ae15-c4159c0e5c76.png)
事实证明,当我们使用多项式拟合时,最终得出的总体得分甚至低于我们的原始得分。 因此,这告诉我们多项式内核可能过度拟合。 当我们使用 K 折交叉验证时,它显示出比线性核函数更低的分数。
事实证明,当我们使用多项式拟合时,最终得出的总体得分甚至低于我们的原始得分。 因此,这告诉我们多项式内核可能过拟合。 当我们使用 K 折交叉验证时,它显示出比线性核函数更低的分数。
这里重要的一点是,如果我们仅使用单个火车/测试单元,就不会意识到我们过度拟合。 如果我们像在线性内核上那样只进行一次训练/测试拆分,我们实际上会得到相同的结果。 因此,我们可能会无意间在此处过度拟合数据,甚至在不使用 K 折交叉验证的情况下甚至都不知道。 因此,这是一个很好的例子,它说明了救援人员使用 K 折的情况,并警告您过拟合,在这种情况下,单次火车/测试分站可能无法解决这一问题。 因此,请将其放在工具箱中。
这里重要的一点是,如果我们仅使用单个火车/测试单元,就不会意识到我们过拟合。 如果我们像在线性内核上那样只进行一次训练/测试拆分,我们实际上会得到相同的结果。 因此,我们可能会无意间在此处过拟合数据,甚至在不使用 K 折交叉验证的情况下甚至都不知道。 因此,这是一个很好的例子,它说明了救援人员使用 K 折的情况,并警告您过拟合,在这种情况下,单次火车/测试分站可能无法解决这一问题。 因此,请将其放在工具箱中。
@@ -1041,7 +1041,7 @@ In: text_1 = 'we love data science'
前面的示例非常直观地结合了我们先前介绍的第一种和第二种方法。 在这种情况下,我们使用了`CountVectorizer`,但是这种方法在`TfidfVectorizer`中非常常见。 请注意,使用 N 元组时,特征数量呈指数爆炸式增长。
如果功能太多(词典可能太丰富, N 元组可能太多,或者计算机可能很有限),则可以使用一种技巧来降低问题的复杂性(但是您应该首先评估 权衡性能/权衡复杂性)。 通常会使用散列技巧,其中会散列多个单词(或 N 元组),并且它们的散列会发生冲突(这会产生一堆单词)。 存储桶是语义上不相关的单词集,但具有冲突的哈希。 使用`HashingVectorizer()`,如以下示例所示,您可以决定所需的单词存储桶数。 当然,结果矩阵反映了您的设置:
如果功能太多(词典可能太丰富, N 元组可能太多,或者计算机可能很有限),则可以使用一种技巧来降低问题的复杂性(但是您应该首先评估和权衡性能/复杂性)。 通常会使用散列技巧,其中会散列多个单词(或 N 元组),并且它们的散列会发生冲突(这会产生一堆单词)。 存储桶是语义上不相关的单词集,但具有冲突的哈希。 使用`HashingVectorizer()`,如以下示例所示,您可以决定所需的单词存储桶数。 当然,结果矩阵反映了您的设置:
在本节中,我们将通过简化的数据流水线工作流程对机器学习进行非常高级的介绍,仅足以直观地说明如何构建和部署模型。 再一次,如果您是初学者,我强烈推荐在 Coursera 上使用 Andrew Ng 的《机器学习》课程(我仍然会不时地复习)。 在下一节中,我们将介绍称为深度学习的机器学习分支,我们将使用它来构建图像识别样本应用程序。