Python中文网

机器学习 Python实践

cnpython484

机器学习 Python实践这本书,是由电子工业出版社在2018-01-01月出版的,本书著作者是 魏贞原 著,此次本版是第1次印刷发行, 国际标准书号(ISBN):9787121331107,品牌为博文视点, 这本书的包装是16开平装,所用纸张为胶版纸,全书共有228页字数25万1000字, 是一本非常不错的Python编程书籍。

此书内容摘要

《机器学习——Python实践》系统地讲解了机器学习的基本知识,以及在实际项目中使用机器学习的基本步骤和方法;详细地介绍了在进行数据处理、分析时怎样选择合适的算法,以及建立模型并优化等方法,通过不同的例子展示了机器学习在具体项目中的应用和实践经验,是一本非常好的机器学习入门和实践的书籍。


不同于很多讲解机器学习的书籍,本书以实践为导向,使用 scikit-learn 作为编程框架,强调简单、快速地建立模型,解决实际项目问题。读者通过对《机器学习——Python实践》的学习,可以迅速上手实践机器学习,并利用机器学习解决实际问题。《机器学习——Python实践》非常适合于项目经理、有意从事机器学习开发的程序员,以及高校相关专业在的读学生阅读。

关于此书作者

魏贞原,IBM 高级项目经理,主要负责银行客户的复杂系统开发。同时是 IBM CIC量子计算 COE 团队的 Python 领域专家(Subject Matter Expert),负责量子计算应用的探索工作,对机器学习和深度学习有深入的研究,精通于运用机器学习来解决数据科学的问题。并运营“知之Python”公众号,定期分享 Python 在机器学习和深度学习中的实践知识。

编辑们的推荐

适读人群 :本书非常适合于项目经理、有意从事机器学习开发的程序员,以及高校相关专业在的读学生阅读。

实践、实践、实践

本书通过不同的例子展示机器学习在具体项目中的应用和实践经验

使用 scikit-learn 作为编程框架,强调简单、快速地建立模型

机器学习 Python实践图书的目录

第一部分 初始


1 初识机器学习 2

1.1 学习机器学习的误区 2

1.2 什么是机器学习 3

1.3 Python 中的机器学习 3

1.4 学习机器学习的原则 5

1.5 学习机器学习的技巧 5

1.6 这本书不涵盖以下内容 6

1.7 代码说明 6

1.8 总结 6


2 Python 机器学习的生态圈 7

2.1 Python 7

2.2 SciPy 9

2.3 scikit-learn 9

2.4 环境安装 10

2.5 总结 12


3 第一个机器学习项目 13

3.1 机器学习中的 Hello World 项目 13

3.2 导入数据 14

3.3 概述数据 15

3.4 数据可视化 18

3.5 评估算法 20

3.6 实施预测 23

3.7 总结 24


4 Python 和 SciPy 速成 25

4.1 Python 速成 25

4.2 NumPy 速成 34

4.3 Matplotlib 速成 36

4.4 Pandas 速成 39

4.5 总结 41


第二部分 数据理解


5 数据导入 44

5.1 CSV 文件 44

5.2 Pima Indians 数据集 45

5.3 采用标准 Python 类库导入数据 46

5.4 采用 NumPy 导入数据 46

5.5 采用 Pandas 导入数据 47

5.6 总结 47


6 数据理解 48

6.1 简单地查看数据 48

6.2 数据的维度 49

6.3 数据属性和类型 50

6.4 描述性统计 50

6.5 数据分组分布(适用于分类算法) 51

6.6 数据属性的相关性 52

6.7 数据的分布分析 53

6.8 总结 54


7 数据可视化 55

7.1 单一图表 55

7.2 多重图表 58

7.3 总结 61


第三部分 数据准备


8 数据预处理 64

8.1 为什么需要数据预处理 64

8.2 格式化数据 65

8.3 调整数据尺度 65

8.4 正态化数据 67

8.5 标准化数据 68

8.6 二值数据 69

8.7 总结 70


9 数据特征选定 71

9.1 特征选定 72

9.2 单变量特征选定 72

9.3 递归特征消除 73

9.4 主要成分分析 75

9.5 特征重要性 76

9.6 总结 76


第四部分 选择模型


10 评估算法 78

10.1 评估算法的方法 78

10.2 分离训练数据集和评估数据集 79

10.3 K 折交叉验证分离 80

10.4 弃一交叉验证分离 81

10.5 重复随机分离评估数据集与训练数据集 82

10.6 总结 83


11 算法评估矩阵 85

11.1 算法评估矩阵 85

11.2 分类算法矩阵 86

11.3 回归算法矩阵 93

11.4 总结 96


12 审查分类算法 97

12.1 算法审查 97

12.2 算法概述 98

12.3 线性算法 98

12.4 非线性算法 101

12.5 总结 105


13 审查回归算法 106

13.1 算法概述 106

13.2 线性算法 107

13.3 非线性算法 111

13.4 总结 113


14 算法比较 115

14.1 选择最佳的机器学习算法 115

14.2 机器学习算法的比较 116

14.3 总结 118


15 自动流程 119

15.1 机器学习的自动流程 119

15.2 数据准备和生成模型的 Pipeline 120

15.3 特征选择和生成模型的 Pipeline 121

15.4 总结 122


第五部分 优化模型


16 集成算法 124

16.1 集成的方法 124

16.2 装袋算法 125

16.3 提升算法 129

16.4 投票算法 131

16.5 总结 132


17 算法调参 133

17.1 机器学习算法调参 133

17.2 网格搜索优化参数 134

17.3 随机搜索优化参数 135

17.4 总结 136


第六部分 结果部署


18 持久化加载模型 138

18.1 通过 pickle 序列化和反序列化机器学习的模型 138

18.2 通过 joblib 序列化和反序列化机器学习的模型 140

18.3 生成模型的技巧 141

18.4 总结 141


第七部分 项目实践


19 预测模型项目模板 144

19.1 在项目中实践机器学习 145

19.2 机器学习项目的 Python 模板 145

19.3 各步骤的详细说明 146

19.4 使用模板的小技巧 148

19.5 总结 149


20 回归项目实例 150

20.1 定义问题 150

20.2 导入数据 151

20.3 理解数据 152

20.4 数据可视化 155

20.5 分离评估数据集 159

20.6 评估算法 160

20.7 调参改善算法 164

20.8 集成算法 165

20.9 集成算法调参 167

20.10 确定最终模型 168

20.11 总结 169


21 二分类实例 170

21.1 问题定义 170

21.2 导入数据 171

21.3 分析数据 172

21.4 分离评估数据集 180

21.5 评估算法 180

21.6 算法调参 184

21.7 集成算法 187

21.8 确定最终模型 190

21.9 总结 190


22 文本分类实例 192

22.1 问题定义 192

22.2 导入数据 193

22.3 文本特征提取 195

22.4 评估算法 196

22.5 算法调参 198

22.6 集成算法 200

22.7 集成算法调参 201

22.8 确定最终模型 202

22.9 总结 203

部分内容试读

前言

“这是最好的时代,也是最坏的时代”,这是英国文豪狄更斯的名著《双城记》开篇的第一句话,一百多年来不断被人引用。这里再次引用它来形容智能革命给我们带来的未来社会。从 2016 年 AlphaGo 在围棋比赛中战胜韩国选手李世石,到 2017 年 Master 战胜世界排名第一的围棋选手柯洁,人工智能再一次引起了世人的注意。在大数据出现之前,人工智能的概念虽然一直存在,但是计算机一直不擅长处理需要依赖人类的智慧解决的问题,现在换个思路就可以解决这些问题,其核心就是变智能问题为数据问题。由此,全世界开始了新一轮的技术革命——智能革命。


自从 1687 年艾萨克·牛顿发表了论文《自然定律》,对万有引力和三大运动定律进行了描述,人类社会进入了科学时代。在此之后,瓦特通过科学原理直接改进蒸汽机,开启了工业革命的篇章,由于机器的发明及运用成为这个时代的标志,因此历史学家称这个时代为“机器时代”。机器时代是利用机器代替人力,在原有的产业基础上加上蒸汽机形成新的产业,例如马车加上蒸汽机成为火车,改变了人的出行方式;帆船加上蒸汽机成为轮船,让货物的运输变得更加便捷。同时,原有的工匠被更加便宜的工人替代,社会的财富分配不均,社会进入动荡期,如英国大约花费了半个世纪的时间才完成了工业革命的变革。同样,第二次工业革命和信息革命,每一次变革都让财富更加集中,给社会带来动荡。第二次工业革命同样花费了半个世纪的时间,一代人才消除工业革命带来的影响,让大部分人受益。当前的智能革命也会带来财富的重新分配和社会的动荡,当然目前的政府对这次革命的过程都有了足够的了解,能够把社会的动荡控制在最小范围,但是在变革中的人依然需要经受这次变革带来的动荡。


每一次变革都是一次思维方式的改进, 工业革命是机器思维替代了农耕时代的思想;信息革命是香农博士(1916—2001 年)的信息论带来的思想方法替代机器思维,并成为社会主导思想;在这次智能革命中,以大数据为核心的思维方式将会主导这次变革。在历次的技术革命中,一个人、一家企业,甚至一个国家,可以选择的道路只有两条:要么加入变革的浪潮,成为前 2%的弄潮儿;要么观望徘徊,被淘汰。要成为 2%的弄潮儿,需要积极拥抱这次智能变革,掌握在未来社会不会被淘汰的技能。在以大数据为基石的智能社会,利用机器学习算法对数据进行挖掘,是使机器更智能的关键,掌握数据挖掘是拥抱智能社会的举措之一。本书就将介绍如何利用机器学习算法来解决问题,对数据进行挖掘。

作 者



序言:

人工智能作为一种新技术,它的发展变迁可以用著名的 S 曲线来表示。具有划时代意义的新技术(Disruptive Innovation),往往出现在社会发展的成熟期。这时国家的 GDP 增长开始减缓,生产成本居高不下,相比之下社会需求却没有显著增加。现在的人工智能技术发展正处于这样一个时期,可以说是应运而热。但我们更关心的是它是否到了腾飞的前期。我个人觉得时机已经到来,原因有三:数字化、物联网及人工智能(AI)技术。


第一,社会生活的高度数字化进程已经让人与人之间的联结几乎完全可以用数字化的方式来描述。这一切极大地归功于智能手机和社交媒体的深度普及。关于我们的信息都被记录在信息系统里,无论是以格式化的形式(ERP、银行系统、电商系统等),还是以非格式化的形式(社交媒体上的文字或语音的交流),这些都已成为机器可以分析解读的数据,而且还在不断积累中。


第二, 物联网技术使信息系统能够实时不间断地从我们的日常活动中获取新的信息,并且可以通过双向通信机制给予实时反馈。比如智能手表和智能扫地机器人等。


第三,人工智能技术本身的发展已经到了足以支撑大规模商业化应用的阶段。无论是人脸识别还是医疗文献分析,人工智能已经作为工具出现在我们的身边。


很多人还在争论人工智能是否会成为人类的敌人,尤其是在 AI 技术发展到泛人工智能(Artificial General Intelligence, AGI)甚至超级人工智能(Artificial SuperIntelligence, ASI)的时候。这是否会成为现实或者什么时候会成为现实谁也说不清楚。但在人机同行的今天,如果还不赶快学习充实自己,明天我们肯定会遇到已经用 AI 版本升级了的人类对手。这种痛也许只有百多年前抵抗英法联军的八旗子弟才领悟过,但为时已晚。如何不掉队,赶上甚至超越时代发展潮流,学习新技术是唯一手段。


就像前几次工业革命一样,人工智能带来的技术革命也有三个关键成功因素(3M):数据(原材料: Raw Material)、技术(机器: Machine)及商业模式(Business Model)。在现实世界中,数据的金矿已经大量积累,并等待我们去开采和精炼。技术,如 Python、卷积神经网络等都已被成熟应用。商界精英更是想出了很多商业化的应用场景,在同声翻译、文本分析、医疗影像分析等领域展开了众多的投资和商业化应用。本书作为一本介绍 Python 的技术类专业书籍,立足机器学习中的监督式学习,围绕着课程、项目和方法深入浅出地介绍了如何使用 Python 来完成机器学习的相关工作。内容涵盖了人能的三个关键成功因素,以体系化和细致的讲解方便读者理解和学习有关机器学习的全过程。本书是一本实战性很强的参考书籍,帮助我们在人工智能时代迅速掌握新技术的精髓。


周德标

副合伙人

IBM 大中华区董事长执行助理

“周教授谈人工智能”微信公众号作者

关于此书评价

基于大数据的人工智能如今异常火爆。 对于普通人而言,人工智能意味着自动驾驶、电脑医生,甚至意味着许许多多人类的工作将被机器取代。而对于有志于投身大数据和人工智能领域的传统IT 人士来说,需要了解这些名词的真正内涵,更加需要了解支撑这个所谓“智能时代”背后的机和原理。机器的智能当然不是天生的,需要通过从数据中学习来获得,而 Python 是目前数据分和机器学习领域处于领先地位的编程语言。本书以初学者的视角,带领读者通过 Python 编程实践,实际接触和了解机器学习以及 Python 语言本身,希望在给读者带去知识和技能的同时,也能大家悄悄开启一段驾驭智能时代的旅程。

——王若平 IBM 客户创新中心质量保证部负责人


本书面向于有一定编程基础,并且有志于大数据分析、数据挖掘和算法的程序员、项目经理,以及相关专业的学生。本书不同于教授编程语言的普通教材,而是通过列举很多经典实例,来帮助读者理解 Python 语言,同时可以使读者理解和延伸对大数据分析与挖掘的认识。未来是一个数据的世界,希望读者通过这本书能够很好地驾驭数据,给予我们更大的帮助!同时感谢作者的辛努力与智慧!

——李鸿飞,IBM 高级经理, Cloud Application Development Leader,Complex SI & Arch Leade


书摘内容

5 数据导入

在训练机器学习的模型时,需要用到大量数据,最常用的做法是利用历史的数据来训练模型。这些数据通常会以 CSV 的格式来存储,或者能够方便地转化为 CSV 格式。在开始启动机器学习项目之前,必须先将数据导入到 Python 中。下面将介绍三种将 CSV数据导入到 Python 中的方法,以便完成对机器学习算法的训练。

通过标准的 Python 库导入 CSV 文件。

通过 NumPy 导入 CSV 文件。

通过 Pandas 导入 CSV 文件。



5.1 CSV 文件

CSV 文件是用逗号(,)分隔的文本文件。在数据导入之前,通常会审查一下 CSV文件中包含的内容。在审查 CSV 文件时,通常要注意以下几个方面。



5.1.1 文件头

如果 CSV 的文件里包括文件头的信息,可以很方便地使用文件头信息来设置读入数据字段的属性名称。如果文件里不含有文件头信息,需要自己手动设定读入文件的字段属性名称。数据导入时,设置字段属性名称,有助于提高数据处理程序的可读性。

5.1.2 文件中的注释

在 CSV 文件中,注释行是以“井”号(#)开头的。是否需要对读入的注释行做处理,取决于采用什么方式读入 CSV 文件。

5.1.3 分隔符

CSV 文件的标准分隔符是逗号(,),当然也可以使用 Tab 键或空格键作为自定义的分隔符。当使用这两种分隔符时,文件读取是要指明分隔符的。

5.1.4 引号

当有的字段值中有空白时,这些值通常都会被引号引起来,默认使用双引号来标记这些字段值。如果采用自定义格式,那么在文件读取时要明确在文件中采用的自定义格式。

5.2 Pima Indians 数据集

首先介绍一下在本章和后续章节中要使用的测试数据。目前在 UCI 机器学习仓库(http://archive.ics.uci.edu/ml/datasets.html)中有大量的免费数据,可以利用这些数据来学习机器学习,并训练算法模型 。本章选择的 Pima Indians 数据集就是从 UCI 中获取的。这是一个分类问题的数据集, 主要记录了印第安人最近五年内是否患糖尿病的医疗数据。

这些数据都是以数字的方式记录的,并且输出结果是 0 或 1,使我们在机器学习的算法中建立模型变得非常方便。

5.3 采用标准 Python 类库导入数据

Python 提供了一个标准类库 CSV,用来处理 CSV 文件。这个类库中的 reader()函数用来读入 CSV 文件。当 CSV 文件被读入后,可以利用这些数据生成一个 NumPy 数组,用来训练算法模型。首先下载数据文件到应用目录下,并命名文件为 pima.csv。这个文件中所有的数据都是数字,并且数据中不含有文件头。代码如下:

from csv import reader

import numpy as np

# 使用标准的 Python 类库导入 CSV 数据

filename = 'pima_data.csv'

with open(filename, 'rt') as raw_data:

readers = reader(raw_data, delimiter=',')

x = list(readers)

data = np.array(x).astype('float')

print(data.shape)

执行结果如下:

(768, 9)

代码非常简单,就不详细进行讲解了。详细内容请查阅 Python 的 API 介绍。

5.4 采用 NumPy 导入数据

也可以使用 NumPy 的 loadtxt()函数导入数据。使用这个函数处理的数据没有文件头,并且所有的数据结构是一样的,也就是说,数据类型是一样的。代码如下:

from numpy import loadtxt

# 使用 NumPy 导入 CSV 数据

filename = 'pima_data.csv'

with open(filename, 'rt') as raw_data:

data = loadtxt(raw_data, delimiter=',')

print(data.shape)

这段代码就比直接使用 Python 的标准类库简洁了很多,执行结果如下:

(768, 9)

5.5 采用 Pandas 导入数据

前面介绍了如何通过标准的 Python 类库和 NumPy 来导入数据。接下来会通过一个例子来演示如何通过 Pandas 导入 CSV 文件的数据。 通过 Pandas 来导入 CSV 文件要使用pandas.read_csv()函数。这个函数的返回值是 DataFrame,可以很方便地进行下一步的处理。这个函数的名称非常直观,便于代码的阅读和后续对数据的处理。在机器学习的项目中,经常利用 Pandas 来做数据清洗与数据准备工作。因此,在导入 CSV 文件时,推荐大家使用这个方法。代码如下:

from pandas import read_csv

# 使用 Pandas 导入 CSV 数据

filename = 'pima_data.csv'

names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age',

'class']

data = read_csv(filename, names=names)

print(data.shape)

这段代码为数据补充了文件头,执行结果如下:

(768, 9)

5.6 总结

本章主要介绍了三种导入 CSV 文件到 Python 的方法,分别是:通过标准的 Python 类库导入、通过 NumPy 导入和通过 Pandas 导入。在进行机器学习项目实践时,建议采用 Pandas方式导入数据。 到目前为止, 本书已经介绍了在机器学习中的基本环境和相应的类库的使用方法,以及一个简单的机器学习的分类的例子。本章介绍了如何导入数据到 Python 中,接下来就通过描述统计的方式来理解导入的数据。

机器学习 Python实践最新最全的试读、书评、目录、简介信息由Python中文网整理提供。