有人知道r中树包的 {% if app.request.hasPreviousSession %}
{% for type, messages in app.session.flashbag.all() %}
{% for message in messages %}
<div class="flash-{{ type }}">
{{ message }}
</div>
{% endfor %}
{% endfor %}
{% endif %}
函数如何工作吗?
默认设置为10倍,但结果显示8种树模型,而不是10种:
我使用的代码如下:
cv.tree
谢谢
答案 0 :(得分:3)
输出中显示的八件事不是交叉验证的结果。 cv.tree
的文档对输出说:
值
应用于对象的FUN副本,组件dev被交叉验证替换 每次拟合的dev组件总和得出的结果。
由于您没有为FUN
指定cv.tree
参数,因此将获得默认的prune.tree
。 prune.tree
的输出是什么?该文档说:
确定提供树的子树的嵌套序列,方法是 根据以下内容,递归“截断”最不重要的分割 成本复杂性度量。 prune.misclass是的缩写。 prune.tree(method =“ misclass”)与cv.tree一起使用。
请注意,您的树正好有8片叶子。
plot(tree.boston)
text(tree.boston)
prune.tree
向您展示八棵树的偏差,一一摘掉叶子。 cv.tree
向您显示此内容的交叉验证版本。它没有对完整的训练数据计算偏差,而是对八个连续修剪中的每一个使用交叉验证的值。
将仅使用prune.tree
的输出中的偏差与经过交叉验证的偏差进行比较。
prune.tree(tree.boston)
$dev
[1] 3098.610 3354.268 3806.195 4574.704 5393.592 6952.719 11229.299
[8] 20894.657
cv.tree(tree.boston, K=5)
$dev
[1] 4768.281 4783.625 5718.441 6309.655 6329.011 7078.719 12907.505
[8] 20974.393
请注意,交叉验证的值在每个步骤中都较高。仅对训练数据使用prune.tree
测试,因此低估了偏差。 CV值更现实。