Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
hands-on-ml-zh
提交
66c3d2dd
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 搜索 >>
未验证
提交
66c3d2dd
编写于
1月 31, 2019
作者:
飞
飞龙
提交者:
GitHub
1月 31, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #124 from AnEscapist/patch-4
missing content and order of code.md
上级
f05c92fa
504c8e47
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
13 deletion
+16
-13
docs/2.一个完整的机器学习项目.md
docs/2.一个完整的机器学习项目.md
+16
-13
未找到文件。
docs/2.一个完整的机器学习项目.md
浏览文件 @
66c3d2dd
...
...
@@ -1069,6 +1069,22 @@ housing_num_tr = num_pipeline.fit_transform(housing_num)
流水线暴露相同的方法作为最终的估计器。在这个例子中,最后的估计器是一个
`StandardScaler`
,它是一个转换器,因此这个流水线有一个
`transform()`
方法,可以顺序对数据做所有转换(它还有一个
`fit_transform`
方法可以使用,就不必先调用
`fit()`
再进行
`transform()`
)。
如果不需要手动将Pandas
`DataFrame`
中的数值列转成Numpy数组的格式,而可以直接将
`DataFrame`
输入pipeline中进行处理就好了。Scikit-Learn 没有工具来处理 Pandas
`DataFrame`
,因此我们需要写一个简单的自定义转换器来做这项工作:
```
python
from
sklearn.base
import
BaseEstimator
,
TransformerMixin
class
DataFrameSelector
(
BaseEstimator
,
TransformerMixin
):
def
__init__
(
self
,
attribute_names
):
self
.
attribute_names
=
attribute_names
def
fit
(
self
,
X
,
y
=
None
):
return
self
def
transform
(
self
,
X
):
return
X
[
self
.
attribute_names
].
values
```
每个子流水线都以一个选择转换器开始:通过选择对应的属性(数值或分类)、丢弃其它的,来转换数据,并将输出
`DataFrame`
转变成一个 NumPy 数组。这样,你就可以很简单的写出一个以Pandas
`DataFrame`
为输入并且可以处理数值的流水线: 该流水线从
`DataFrameSelector`
开始获取数值属性,前面讨论过的其他数据处理步骤紧随其后。 并且你也可以通过使用
`DataFrameSelector`
选择类别属性并为其写另一个流水线然后应用
`LabelBinarizer`
.
你现在就有了一个对数值的流水线,你还需要对分类值应用
`LabelBinarizer`
:如何将这些转换写成一个流水线呢?Scikit-Learn 提供了一个类
`FeatureUnion`
实现这个功能。你给它一列转换器(可以是所有的转换器),当调用它的
`transform()`
方法,每个转换器的
`transform()`
会被并行执行,等待输出,然后将输出合并起来,并返回结果(当然,调用它的
`fit()`
方法就会调用每个转换器的
`fit()`
)。一个完整的处理数值和类别属性的流水线如下所示:
```
python
...
...
@@ -1120,19 +1136,6 @@ array([[ 0.73225807, -0.67331551, 0.58426443, ..., 0. ,
(
16513
,
17
)
```
每个子流水线都以一个选择转换器开始:通过选择对应的属性(数值或分类)、丢弃其它的,来转换数据,并将输出
`DataFrame`
转变成一个 NumPy 数组。Scikit-Learn 没有工具来处理 Pandas
`DataFrame`
,因此我们需要写一个简单的自定义转换器来做这项工作:
```
python
from
sklearn.base
import
BaseEstimator
,
TransformerMixin
class
DataFrameSelector
(
BaseEstimator
,
TransformerMixin
):
def
__init__
(
self
,
attribute_names
):
self
.
attribute_names
=
attribute_names
def
fit
(
self
,
X
,
y
=
None
):
return
self
def
transform
(
self
,
X
):
return
X
[
self
.
attribute_names
].
values
```
## 选择并训练模型
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录