Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
sklearn-cookbook-zh
提交
db4e2c18
S
sklearn-cookbook-zh
项目概览
OpenDocCN
/
sklearn-cookbook-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
sklearn-cookbook-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
db4e2c18
编写于
6月 21, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6.21
上级
dcf532da
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
87 addition
and
0 deletion
+87
-0
5.md
5.md
+87
-0
未找到文件。
5.md
浏览文件 @
db4e2c18
...
...
@@ -362,3 +362,90 @@ NumPy 输出如下:
```
我们可以看到,我们得到了每个分类的样例大小,正好是训练集合测试集的比例。
## 5.5 菜鸟的网格搜索
这个秘籍中,我们打算使用 Python 来介绍基本的网格搜索,并且使用 Sklearn 来处理模型,以及 Matplotlib 来可视化。
### 准备
这个秘籍中,我们会执行下面这些东西:
+
在参数空间中设计基本的搜索网格。
+
迭代网格并检查数据集的参数空间中的每个点的损失或评分函数。
+
选取参数空阿基那种的点,它使评分函数最大或者最小。
同样,我们训练的模型是个基本的决策树分类器。我们的参数空间是 2 维的,有助于我们可视化。
```
criteria = {gini, entropy}
max_features = {auto, log2, None}
```
参数空间是
`criteria`
和
`max_features`
的笛卡尔积。
我们会了解如何使用
`itertools`
来迭代这个空间。
让我们创建数据集来开始:
```
py
>>>
from
sklearn
import
datasets
>>>
X
,
y
=
datasets
.
make_classification
(
n_samples
=
2000
,
n_features
=
10
)
```
### 操作步骤
之前我们说,我们使用网格搜索来调整两个参数 --
`criteria`
和
`max_features``criteria`
和
`max_features`
。我们需要将其表示为 Python 集合,之后使用
`itertools.product`
来迭代它们。
不错,所以既然我们拥有了参数空间,让我们迭代它并检查每个模型的准确率,它们由参数指定。之后,我们保存这个准确率,便于比较不同的参数空间。我们也会使用以
`50, 50`
划分的测试和训练集。
```
py
import
numpy
as
np
train_set
=
np
.
random
.
choice
([
True
,
False
],
size
=
len
(
y
))
from
sklearn.tree
import
DecisionTreeClassifier
accuracies
=
{}
for
criterion
,
max_feature
in
parameter_space
:
dt
=
DecisionTreeClassifier
(
criterion
=
criterion
,
max_features
=
max_feature
)
dt
.
fit
(
X
[
train_set
],
y
[
train_set
])
accuracies
[(
criterion
,
max_feature
)]
=
(
dt
.
predict
(
X
[
~
train_set
])
==
y
[
~
train_set
]).
mean
()
>>>
accuracies
{(
'entropy'
,
None
):
0.974609375
,
(
'entropy'
,
'auto'
):
0.9736328125
,
(
'entropy'
,
'log2'
):
0.962890625
,
(
'gini'
,
None
):
0.9677734375
,
(
'gini'
,
'auto'
):
0.9638671875
,
(
'gini'
,
'log2'
):
0.96875
}
```
所以现在我们拥有了准确率和它的表现。让我们可视化它的表现。
```
py
>>>
from
matplotlib
import
pyplot
as
plt
>>>
from
matplotlib
import
cm
>>>
cmap
=
cm
.
RdBu_r
>>>
f
,
ax
=
plt
.
subplots
(
figsize
=
(
7
,
4
))
>>>
ax
.
set_xticklabels
([
''
]
+
list
(
criteria
))
>>>
ax
.
set_yticklabels
([
''
]
+
list
(
max_features
))
>>>
plot_array
=
[]
>>>
for
max_feature
in
max_features
:
m
=
[]
>>>
for
criterion
in
criteria
:
m
.
append
(
accuracies
[(
criterion
,
max_feature
)])
plot_array
.
append
(
m
)
>>>
colors
=
ax
.
matshow
(
plot_array
,
vmin
=
np
.
min
(
accuracies
.
values
())
-
0.001
,
vmax
=
np
.
max
(
accuracies
.
values
())
+
0.001
,
cmap
=
cmap
)
>>>
f
.
colorbar
(
colors
)
```
输出如下:
![](
img/5-5-1.jpg
)
很容易看到哪个表现最好。单元你可以使用爆破方式看到它如何进一步处理。
### 工作原理
原理很简单,我们只需要执行下列步骤:
1.
选取一系列参数
2.
迭代它们并求得每一步的准确率
3.
通过可视化来寻找最佳的表现
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录