Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
hands-on-ml-zh
提交
8dc9b4e4
H
hands-on-ml-zh
项目概览
OpenDocCN
/
hands-on-ml-zh
通知
13
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hands-on-ml-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
8dc9b4e4
编写于
5月 23, 2018
作者:
飞
飞龙
提交者:
GitHub
5月 23, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #66 from yanmengk/dev
Update 7.集成学习和随机森林.md
上级
2c2e921f
48571a59
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
8 deletion
+10
-8
docs/7.集成学习和随机森林.md
docs/7.集成学习和随机森林.md
+10
-8
未找到文件。
docs/7.集成学习和随机森林.md
浏览文件 @
8dc9b4e4
...
...
@@ -96,7 +96,7 @@ Bootstrap 在每个预测器被训练的子集中引入了更多的分集,所
对于 Bagging 来说,一些实例可能被一些分类器重复采样,但其他的有可能不会被采样。
`BaggingClassifier`
默认采样。
`BaggingClassifier`
默认是有放回的采样
`m`
个实例 (
`bootstrap=True`
),其中
`m`
是训练集的大小,这意味着平均下来只有63%的训练实例被每个分类器采样,剩下的37%个没有被采样的训练实例就叫做
*Out-of-Bag*
实例。注意对于每一个的分类器它们的 37% 不是相同的。
因为在训练中分类器从
开
没有看到过 oob 实例,所以它可以在这些实例上进行评估,而不需要单独的验证集或交叉验证。你可以拿出每一个分类器的 oob 来评估集成本身。
因为在训练中分类器从
来
没有看到过 oob 实例,所以它可以在这些实例上进行评估,而不需要单独的验证集或交叉验证。你可以拿出每一个分类器的 oob 来评估集成本身。
在 sklearn 中,你可以在训练后需要创建一个
`BaggingClassifier`
来自动评估时设置
`oob_score=True`
来自动评估。接下来的代码展示了这个操作。评估结果通过变量
`oob_score_`
来显示:
...
...
@@ -111,7 +111,7 @@ Bootstrap 在每个预测器被训练的子集中引入了更多的分集,所
```
python
>>>
from
sklearn.metrics
import
accuracy_score
>>>
y_pred
=
bag_clf
.
predict
(
X_test
)
>>>
y_pred
=
bag_clf
.
predict
(
X_test
)
>>>
accuracy_score
(
y_test
,
y_pred
)
0.93600000000000005
```
...
...
@@ -306,15 +306,17 @@ sklearn 通常使用 Adaboost 的多分类版本 *SAMME*(这就代表了 *分
```
python
>>>
import
numpy
as
np
>>>
from
sklearn
.
model_selection
>>>
import
train_test_split
from
sklearn
.
metrics
>>>
import
mean_squared_error
>>>
from
sklearn.model_selection
import
train_test_split
>>>
from
sklearn.metrics
import
mean_squared_error
>>>
X_train
,
X_val
,
y_train
,
y_val
=
train_test_split
(
X
,
y
)
>>>
gbrt
=
GradientBoostingRegressor
(
max_depth
=
2
,
n_estimators
=
120
)
gbrt
.
fit
(
X_train
,
y_train
)
>>>
gbrt
=
GradientBoostingRegressor
(
max_depth
=
2
,
n_estimators
=
120
)
>>>
gbrt
.
fit
(
X_train
,
y_train
)
>>>
errors
=
[
mean_squared_error
(
y_val
,
y_pred
)
for
y_pred
in
gbrt
.
staged_predict
(
X_val
)]
>>>
bst_n_estimators
=
np
.
argmin
(
errors
)
>>>
gbrt_best
=
GradientBoostingRegressor
(
max_depth
=
2
,
n_estimators
=
bst_n_estimators
)
>>>
gbrt_best
.
fit
(
X_train
,
y_train
)
>>>
gbrt_best
=
GradientBoostingRegressor
(
max_depth
=
2
,
n_estimators
=
bst_n_estimators
)
>>>
gbrt_best
.
fit
(
X_train
,
y_train
)
```
验证错误在图 7-11 的左面展示,最优模型预测被展示在右面。
...
...
@@ -353,7 +355,7 @@ for n_estimators in range(1, 120):
为了训练这个
*blender*
,一个通用的方法是采用保持集。让我们看看它怎么工作。首先,训练集被分为两个子集,第一个子集被用作训练第一层(详见图 7-13).
![
图7-13
](
../images/chapter_7/7-12.png
)
![
图7-13
](
../images/chapter_7/7-12.png
)
接下来,第一层的分类器被用来预测第二个子集(保持集)(详见 7-14)。这确保了预测结果很“干净”,因为这些分类器在训练的时候没有使用过这些事例。现在对在保持集中的每一个实例都有三个预测值。我们现在可以使用这些预测结果作为输入特征来创建一个新的训练集(这使得这个训练集是三维的),并且保持目标数值不变。随后
*blender*
在这个新的训练集上训练,因此,它学会了预测第一层预测的目标值。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录