《Python程序设计:人工智能案例实践》共16章。第1~10章介绍Python编程,涉及人工智能、基本描述统计、集中趋势和分散度量、模拟、静态和动态可视化、使用CSV文件、用于数据探索和数据整理的Pandas、时间序列和简单线性回归。第11~16章提供多种实践案例研究,涉及自然语言处理、Twitter数据挖掘、IBM Watson认知计算、包含分类和回归的有监督机器学习、聚类无监督机器学习、卷积神经网络深度学习、递归神经网络深度学习、包含Hadoop/Spark/NoSQL/物联网的大数据等。
封面图
目录
- 审稿人评论
- 译者序
- 前言
- 作者简介
- 开始阅读本书之前
- 第一部分Python基础知识快速入门
- 第1章Python及大数据概述2
- 1.1简介2
- 1.2快速回顾面向对象技术的基础知识3
- 1.3Python5
- 1.4Python库7
- 1.4.1Python标准库7
- 1.4.2数据科学库8
- 1.5试用IPython和Jupyter Notebook9
- 1.5.1使用IPython交互模式作为计算器10
- 1.5.2使用IPython 解释器执行Python程序11
- 1.5.3在Jupyter Notebook中编写和执行代码12
- 1.6云和物联网16
- 1.6.1云16
- 1.6.2物联网17
- 1.7大数据有多大18
- 1.7.1大数据分析22
- 1.7.2数据科学和大数据正在带来改变:用例23
- 1.8案例研究:大数据移动应用程序24
- 1.9数据科学入门:人工智能——计算机科学与数据科学的交叉学科26
- 1.10小结28
- 第2章Python程序设计概述29
- 2.1简介29
- 2.2变量和赋值语句30
- 2.3算术运算31
- 2.4print函数、单引号和双引号34
- 2.5三引号字符串36
- 2.6从用户处获取输入37
- 2.7决策:if语句和比较运算符39
- 2.8对象和动态类型43
- 2.9数据科学入门:基础的描述性统计44
- 2.10小结46
- 第3章控制语句48
- 3.1简介48
- 3.2控制语句概述49
- 3.3if语句49
- 3.4if...else和if...elif...else语句50
- 3.5while语句53
- 3.6for语句54
- 3.6.1可迭代对象、列表和迭代器55
- 3.6.2内置函数range55
- 3.7增强赋值56
- 3.8序列控制迭代和格式化字符串56
- 3.9边界值控制的迭代57
- 3.10内置函数range:深入讨论59
- 3.11使用Decimal类型处理货币金额59
- 3.12break和continue语句63
- 3.13布尔运算符and、or和not63
- 3.14数据科学入门:集中趋势度量—均值、中值和众数66
- 3.15小结67
- 第4章函数69
- 4.1简介69
- 4.2函数定义70
- 4.3多参数函数72
- 4.4随机数生成74
- 4.5案例研究:一个运气游戏76
- 4.6Python标准库79
- 4.7math模块中的函数80
- 4.8在IPython中使用制表符自动补全81
- 4.9默认参数值82
- 4.10关键字参数83
- 4.11不定长参数列表83
- 4.12方法:属于对象的函数84
- 4.13作用域规则85
- 4.14import:深入讨论87
- 4.15向函数传递参数:深入讨论88
- 4.16递归91
- 4.17函数式编程93
- 4.18数据科学入门:离中趋势度量95
- 4.19小结96
- 第5章序列:列表和元组97
- 5.1简介97
- 5.2列表98
- 5.3元组102
- 5.4序列解包104
- 5.5序列切片106
- 5.6使用del声明108
- 5.7将列表传递给函数109
- 5.8列表排序110
- 5.9序列搜索111
- 5.10列表的其他方法113
- 5.11使用列表模拟堆栈115
- 5.12列表推导式116
- 5.13生成器表达式118
- 5.14过滤、映射和归约118
- 5.15其他的序列处理函数120
- 5.16二维列表122
- 5.17数据科学入门:模拟和静态可视化124
- 5.17.1掷600、60,000、6,000,000次骰子的图例124
- 5.17.2实现掷骰子中不同点数出现次数和百分比的可视化126
- 5.18小结132
- 第二部分Python数据结构、字符串和文件
- 第6章字典和集合136
- 6.1简介136
- 6.2字典137
- 6.2.1创建字典137
- 6.2.2遍历字典138
- 6.2.3基本的字典操作138
- 6.2.4字典的keys和values方法140
- 6.2.5字典的比较141
- 6.2.6示例:学生成绩字典142
- 6.2.7示例:单词计数143
- 6.2.8字典的update方法144
- 6.2.9字典推导式145
- 6.3集合146
- 6.3.1集合的比较147
- 6.3.2集合的数学运算148
- 6.3.3集合的可变运算符和方法150
- 6.3.4集合推导式151
- 6.4数据科学入门:动态可视化151
- 6.4.1动态可视化的工作原理152
- 6.4.2实现动态可视化154
- 6.5小结156
- 第7章使用NumPy进行面向数组的编程158
- 7.1简介158
- 7.2从现有数据创建数组159
- 7.3数组属性160
- 7.4用特定值填充数组162
- 7.5从范围创建数组162
- 7.6列表与数组的性能比较:引入%timeit164
- 7.7数组运算符165
- 7.8NumPy计算方法167
- 7.9通用函数168
- 7.10索引和切片170
- 7.11视图:浅拷贝171
- 7.12视图:深拷贝173
- 7.13重塑和转置174
- 7.14数据科学入门:pandas Series和DataFrame176
- 7.14.1Series177
- 7.14.2DataFrame181
- 7.15小结188
- 第8章字符串:深入讨论190
- 8.1简介190
- 8.2格式化字符串191
- 8.2.1表示类型191
- 8.2.2字段宽度和对齐方式193
- 8.2.3数字格式化193
- 8.2.4字符串的format方法194
- 8.3拼接和重复字符串195
- 8.4去除字符串中的空白字符196
- 8.5字符大小写转换196
- 8.6字符串的比较运算符197
- 8.7查找子字符串197
- 8.8替换子字符串199
- 8.9字符串拆分和连接199
- 8.10字符串测试方法201
- 8.11原始字符串202
- 8.12正则表达式介绍202
- 8.12.1re模块与fullmatch函数203
- 8.12.2替换子字符串和拆分字符串207
- 8.12.3其他搜索功能、访问匹配207
- 8.13数据科学入门:pandas、正则表达式和数据治理210
- 8.14小结214
- 第9章文件和异常215
- 9.1简介215
- 9.2文件216
- 9.3文本文件处理217
- 9.3.1向文本文件中写入数据:with语句的介绍217
- 9.3.2从文本文件中读取数据218
- 9.4更新文本文件220
- 9.5使用JSON进行序列化221
- 9.6关注安全:pickle序列化和反序列化224
- 9.7关于文件的附加说明224
- 9.8处理异常225
- 9.8.1被零除和无效输入226
- 9.8.2try语句226
- 9.8.3在一条except子句中捕获多个异常229
- 9.8.4一个函数或方法引发了什么异常229
- 9.8.5try子句的语句序列中应该书写什么代码229
- 9.9finally子句229
- 9.10显式地引发一个异常231
- 9.11(选学)堆栈展开和回溯232
- 9.12数据科学入门:使用CSV文件234
- 9.12.1Python标准库模块csv234
- 9.12.2将CSV文件数据读入pandas DataFrame中236
- 9.12.3读取泰坦尼克号灾难数据集237
- 9.12.4用泰坦尼克号灾难数据集做简单的数据分析238
- 9.12.5乘客年龄直方图239
- 9.13小结240
- 第三部分Python高级主题
- 第10章面向对象编程242
- 10.1简介242
- 10.2自定义Account类244
- 10.2.1试用Account类245
- 10.2.2Account类的定义246
- 10.2.3组合:对象引用作为类的成员248
- 10.3属性访问控制248
- 10.4用于数据访问的property249
- 10.4.1试用Time类249
- 10.4.2Time类的定义251
- 10.4.3Time类定义的设计说明254
- 10.5模拟“私有”属性255
- 10.6案例研究:洗牌和分牌模拟257
- 10.6.1试用Card类和DeckOfCards类257
- 10.6.2Card类:引入类属性258
- 10.6.3DeckOfCards类260
- 10.6.4利用Matplotlib显示扑克牌图像262
- 10.7继承:基类和子类265
- 10.8构建继承层次结构:引入多态性267
- 10.8.1基类CommissionEmployee267
- 10.8.2子类SalariedCommission-Employee270
- 10.8.3以多态方式处理Commission-Employee和SalariedComm-issionEmployee273
- 10.8.4关于基于对象和面向对象编程的说明274
- 10.9鸭子类型和多态性274
- 10.10运算符重载276
- 10.10.1试用Complex类277
- 10.10.2Complex类的定义278
- 10.11异常类层次结构和自定义异常279
- 10.12具名元组280
- 10.13Python 3.7的新数据类简介281
- 10.13.1创建Card数据类282
- 10.13.2使用Card数据类284
- 10.13.3数据类相对于具名元组的优势286
- 10.13.4数据类相对于传统类的优势286
- 10.14使用文档字符串和doctest进行单元测试286
- 10.15命名空间和作用域290
- 10.16数据科学入门:时间序列和简单线性回归293
- 10.17小结300
- 第四部分人工智能、云和大数据案例研究
- 第11章自然语言处理304
- 11.1简介304
- 11.2TextBlob305
- 11.2.1创建一个TextBlob对象307
- 11.2.2将文本标记为句子和单词307
- 11.2.3词性标注308
- 11.2.4提取名词短语309
- 11.2.5使用TextBlob的默认情感分析器进行情感分析309
- 11.2.6使用NaiveBayesAnalyzer进行情感分析310
- 11.2.7语言检测与翻译311
- 11.2.8变形:复数化和单数化312
- 11.2.9拼写检查和拼写校正313
- 11.2.10规范化:词干提取和词形还原314
- 11.2.11词频314
- 11.2.12从WordNet中获取单词定义、同义词和反义词315
- 11.2.13删除停用词317
- 11.2.14n元318
- 11.3使用柱状图和词云可视化词频319
- 11.3.1使用pandas可视化词频319
- 11.3.2使用词云可视化词频321
- 11.4使用Textatistic库进行可读性评估324
- 11.5使用spaCy命名实体识别326
- 11.6使用spaCy进行相似性检测327
- 11.7其他NLP库和工具328
- 11.8机器学习和深度学习自然语言应用328
- 11.9自然语言数据集329
- 11.10小结329
- 第12章Twitter数据挖掘331
- 12.1简介331
- 12.2Twitter API概况333
- 12.3创建一个Twitter账户334
- 12.4获取Twitter凭据,创建应用程序334
- 12.5什么是推文336
- 12.6Tweepy339
- 12.7通过Tweepy进行Twitter身份验证340
- 12.8获取一个Twitter账户的相关信息341
- 12.9Tweepy Cursor简介:获得一个账户的关注者和朋友343
- 12.9.1确定一个账户的关注者343
- 12.9.2确定一个账户的关注对象345
- 12.9.3获取一个用户的最新推文345
- 12.10搜索最新的推文346
- 12.11热门话题发现:Twitter热门话题API348
- 12.11.1有热门话题的地点348
- 12.11.2获取热门话题列表349
- 12.11.3根据热门话题创建词云351
- 12.12推文分析前的清理或预处理352
- 12.13Twitter流API353
- 12.13.1创建StreamListener的子类353
- 12.13.2启动流处理356
- 12.14推文情感分析357
- 12.15地理编码和映射361
- 12.15.1获取和映射推文362
- 12.15.2tweetutilities.py中的实用函数366
- 12.15.3LocationListener类367
- 12.16存储推文的方法368
- 12.17Twitter和时间序列369
- 12.18小结369
- 第13章IBM Watson和认知计算370
- 13.1简介370
- 13.2IBM云账户和云控制台372
- 13.3Watson服务372
- 13.4额外的服务和工具375
- 13.5Watson开发者云Python SDK377
- 13.6案例研究:旅行者翻译伴侣APP377
- 13.6.1准备工作378
- 13.6.2运行APP379
- 13.6.3SimpleLanguageTranslator.py脚本代码分析380
- 13.7Watson资源390
- 13.8小结391
- 第14章机器学习:分类、回归和聚类392
- 14.1简介392
- 14.1.1scikit-learn393
- 14.1.2机器学习的类别394
- 14.1.3scikit-learn中内置的数据集396
- 14.1.4典型的数据科学研究的步骤396
- 14.2案例研究:用k近邻算法和Digits数据集进行分类(第1部分)397
- 14.2.1k近邻算法398
- 14.2.2加载数据集399
- 14.2.3可视化数据402
- 14.2.4拆分数据以进行训练和测试404
- 14.2.5创建模型405
- 14.2.6训练模型405
- 14.2.7预测数字类别406
- 14.3案例研究:利用k近邻算法和Digits数据集进行分类(第2部分)407
- 14.3.1模型准确性指标407
- 14.3.2k折交叉验证410
- 14.3.3运行多个模型以找到最佳模型411
- 14.3.4超参数调整413
- 14.4案例研究:时间序列和简单线性回归413
- 14.5案例研究:基于加利福尼亚房价数据集的多元线性回归418
- 14.5.1加载数据集418
- 14.5.2使用pandas探索数据420
- 14.5.3可视化特征422
- 14.5.4拆分数据以进行训练和测试426
- 14.5.5训练模型426
- 14.5.6测试模型427
- 14.5.7可视化预测房价和期望房价427
- 14.5.8回归模型指标428
- 14.5.9选择最佳模型429
- 14.6案例研究:无监督学习(第1部分)—降维430
- 14.7案例研究:无监督学习(第2部分)—k均值聚类433
- 14.7.1加载Iris数据集435
- 14.7.2探索Iris数据集:使用pandas进行描述性统计436
- 14.7.3使用Seaborn的pairplot可视化数据集438
- 14.7.4使用KMeans估计器440
- 14.7.5主成分分析降维442
- 14.7.6选择最佳聚类估计器444
- 14.8小结445
- 第15章深度学习447
- 15.1简介447
- 15.1.1深度学习应用449
- 15.1.2深度学习演示450
- 15.1.3Keras资源450
- 15.2Keras内置数据集450
- 15.3自定义Anaconda环境451
- 15.4神经网络452
- 15.5张量454
- 15.6用于视觉的卷积神经网络:使用MNIST数据集进行多分类455
- 15.6.1加载MNIST数据集457
- 15.6.2数据探索457
- 15.6.3数据准备459
- 15.6.4创建神经网络模型461
- 15.6.5训练和评价模型468
- 15.6.6保存和加载模型472
- 15.7用TensorBoard可视化神经网络的训练过程473
- 15.8ConvnetJS:基于浏览器的深度学习训练和可视化476
- 15.9针对序列的递归神经网络:使用IMDb数据集进行情感分析477
- 15.9.1加载IMDb影评数据集478
- 15.9.2数据探索478
- 15.9.3数据准备480
- 15.9.4创建神经网络481
- 15.9.5训练和评价模型483
- 15.10调整深度学习模型484
- 15.11在ImageNet上预训练的CNN模型485
- 15.12小结486
- 第16章大数据:Hadoop、Spark、NoSQL和IoT488
- 16.1简介488
- 16.2关系数据库和结构化查询语言492
- 16.2.1books数据库493
- 16.2.2SELECT查询497
- 16.2.3WHERE子句497
- 16.2.4ORDER BY子句498
- 16.2.5从多个表中合并数据:INNER JOIN499
- 16.2.6INSERT INTO语句500
- 16.2.7UPDATE语句501
- 16.2.8DELETE FROM语句502
- 16.3NoSQL和NewSQL大数据数据库简述502
- 16.3.1NoSQL键-值数据库503
- 16.3.2NoSQL文档数据库503
- 16.3.3NoSQL列式数据库504
- 16.3.4NoSQL图数据库504
- 16.3.5NewSQL数据库505
- 16.4案例研究:MongoDB JSON文档数据库506
- 16.4.1创建MongoDB Atlas集群506
- 16.4.2将推文存入MongoDB中507
- 16.5Hadoop515
- 16.5.1概述516
- 16.5.2通过MapReduce汇总Romeo-AndJuliet.txt中的单词长度518
- 16.5.3在Microsoft Azure HDInsight中创建Apache Hadoop集群518
- 16.5.4Hadoop流520
- 16.5.5实现映射器520
- 16.5.6实现归约器521
- 16.5.7准备运行MapReduce示例522
- 16.5.8运行MapReduce作业523
- 16.6Spark525
- 16.6.1概述525
- 16.6.2Docker和Jupyter Docker堆栈526
- 16.6.3使用Spark的单词计数529
- 16.6.4Microsoft Azure上的Spark单词计数532
- 16.7Spark流:使用pyspark-notebookDocker堆栈计算Twitter主题标签535
- 16.7.1将推文流式传输到套接字535
- 16.7.2总结推文主题标签,介绍Spark SQL538
- 16.8物联网和仪表板543
- 16.8.1发布和订阅545
- 16.8.2使用Freeboard仪表板可视化PubNub示例实时流545
- 16.8.3用Python模拟一个连接互联网的恒温器547
- 16.8.4使用freeboard.io创建仪表板549
- 16.8.5创建一个Python PubNub订阅服务器550
- 16.9小结554
- 索引556