diff --git "a/docs/7.\351\233\206\346\210\220\345\255\246\344\271\240\345\222\214\351\232\217\346\234\272\346\243\256\346\236\227.md" "b/docs/7.\351\233\206\346\210\220\345\255\246\344\271\240\345\222\214\351\232\217\346\234\272\346\243\256\346\236\227.md" index d3512b07bff14ed085012b59afa1602c1c4143e8..2bfe0ab098b433a09fb5bd077c3a8ad4ce0f5e66 100644 --- "a/docs/7.\351\233\206\346\210\220\345\255\246\344\271\240\345\222\214\351\232\217\346\234\272\346\243\256\346\236\227.md" +++ "b/docs/7.\351\233\206\346\210\220\345\255\246\344\271\240\345\222\214\351\232\217\346\234\272\346\243\256\346\236\227.md" @@ -355,15 +355,15 @@ for n_estimators in range(1, 120): 为了训练这个 *blender* ,一个通用的方法是采用保持集。让我们看看它怎么工作。首先,训练集被分为两个子集,第一个子集被用作训练第一层(详见图 7-13). -![图7-13](../images/chapter_7/7-12.png) +![图7-13](../images/chapter_7/7-13.png) 接下来,第一层的分类器被用来预测第二个子集(保持集)(详见 7-14)。这确保了预测结果很“干净”,因为这些分类器在训练的时候没有使用过这些事例。现在对在保持集中的每一个实例都有三个预测值。我们现在可以使用这些预测结果作为输入特征来创建一个新的训练集(这使得这个训练集是三维的),并且保持目标数值不变。随后 *blender* 在这个新的训练集上训练,因此,它学会了预测第一层预测的目标值。 -![图7-14](../images/chapter_7/7-12.png) +![图7-14](../images/chapter_7/7-14.png) 显然我们可以用这种方法训练不同的 *blender* (例如一个线性回归,另一个是随机森林等等):我们得到了一层 *blender* 。诀窍是将训练集分成三个子集:第一个子集用来训练第一层,第二个子集用来创建训练第二层的训练集(使用第一层分类器的预测值),第三个子集被用来创建训练第三层的训练集(使用第二层分类器的预测值)。以上步骤做完了,我们可以通过逐个遍历每个层来预测一个新的实例。详见图 7-15. -![图7-15](../images/chapter_7/7-12.png) +![图7-15](../images/chapter_7/7-15.png) 然而不幸的是,sklearn 并不直接支持 stacking ,但是你自己组建是很容易的(看接下来的练习)。或者你也可以使用开源的项目例如 *brew* (网址为