产品特色
编辑推荐
本书涵盖R和Python两种主流语言,其优点在于其结构,每一章的每一节内容都是按照“准备工作—处理流程—工作原理”的方式组织,这种组织形式非常适合一边实践一边学习(learn-by-doing)。
内容简介
这本书是基于R和Python的数据科学项目案例集锦,内容涵盖了基于数据科学的所有要素,包括数据采集、处理、清洗、分析、建模、可视化以及数据产品的搭建。案例包含了汽车数据分析、股票市场建模、社交网络分析、推荐系统、地理信息分析,以及Python代码的计算优化。通过手把手的案例解析,令读者知其然并知其所以然。业界的数据分析师、数据挖掘工程师、数据科学家都可以读一读。想要了解实际工作中如何用数据产生价值的在校学生,或者对数据科学感兴趣的人也值得一读。
作者简介
作者简介
Tony Ojeda(托尼·奥杰德),华盛顿DC数据社区的联合创始人,一位经验丰富的数据科学家和企业家,他在佛罗里达国际大学获得金融硕士学位,并且在德保罗大学获得了MBA学位。
Sean Patrick Murphy(肖恩·派特里克·莫非),华盛顿DC数据社区的联合创始人,曾在约翰霍普金斯大学的应用物理实验室做了15年的高级科学家,他专注于机器学习、信号处理、高性能计算以及建模和模拟。现在他是旧金山、纽约和华盛顿DC多家公司的数据顾问。
Benjamin Bengfort(本杰明·班福特),一位非常有经验的数据科学家和Python开发者。他曾在军方、业界和学术界工作过8年。他目前在马里兰大学派克学院攻读计算机博士学位,研究元识别和自然语言处理。他拥有北达科塔州立大学的计算机硕士学位,并是乔治城大学的客座教授。
Abhijit Dasgupta(阿布吉特·达斯古普塔),华盛顿DC数据社区的成员,华盛顿DC统计编程社群的创始人和联合组织者,他拥有华盛顿大学生物统计的博士学位,在生物制药行业咨询、商业分析、生物信息以及生物工程咨询方面拥有多年的经验。
译者简介
郝智恒,甘肃兰州人,南开大学概率统计专业毕业,统计之都活跃会员。目前在阿里巴巴商业智能部任职,擅长数据分析和数据挖掘,喜欢用数据探索商业世界的边界。
王佳玮,黄山脚下长大,香港城大-中科大联合培养博士毕业,现于阿里云大数据孵化器团队搬砖,喜欢数据分析和挖掘在社会各领域的应用,目前正致力于用数据和算法解决交通拥堵问题。
谢时光,2011年博士毕业于美国弗吉尼亚理工大学工业工程系运筹学专业,毕业后从事数据分析、优化和决策支持相关工作至今。曾先后在安飞士(Avis)、费埃哲(FICO)等行业领先的公司从事从供应链到风险控制等多个应用领域的数据分析和优化决策研究工作。
刘梦馨,灵雀云高级软件工程师,专注于容器虚拟化领域,机器学习爱好者。
目录
第1章 准备你的数据科学环境 1
简介 1
理解数据科学管道 3
处理流程 3
工作原理 3
在Windows、Mac OS X、Linux上安装R 5
准备工作 5
处理流程 5
工作原理 7
参考资料 7
在R和RStudio中安装扩展包 7
准备工作 8
处理流程 8
工作原理 9
更多内容 10
参考资料 10
在Linux和Mac OS X上安装Python 10
准备工作 11
处理流程 11
工作原理 11
更多内容 11
参考资料 12
在Windows上安装Python 12
处理流程 13
工作原理 13
参考资料 14
在Mac OS X和Linux上安装Python数据分析库 14
准备工作 14
处理流程 14
工作原理 15
更多内容 16
参考资料 16
安装更多Python包 17
准备工作 17
处理流程 17
工作原理 18
更多内容 18
参考资料 18
安装和使用virtualenv 19
准备工作 19
处理流程 19
工作原理 21
更多内容 21
参考资料 22
第2章 汽车数据的可视化分析(R) 23
简介 23
获取汽车燃料效率数据 24
准备工作 24
处理流程 25
工作原理 25
为了你的第一个项目准备好R 26
准备工作 26
处理流程 26
工作原理 26
参考资料 26
将汽车燃料效率数据导入R 27
准备工作 27
处理流程 27
工作原理 28
更多内容 29
参考资料 30
探索和描述燃料效率数据 30
准备工作 30
处理流程 30
工作原理 32
更多内容 33
进一步分析汽车燃料效率数据 34
准备工作 34
处理流程 34
工作原理 43
参考资料 44
研究汽车的产量以及车型 44
准备工作 44
处理流程 44
工作原理 46
更多内容 47
参考资料 47
第3章 模拟美式橄榄球比赛数据(R) 48
简介 48
准备工作 49
获取和清洗美式橄榄球比赛数据 49
准备工作 50
处理流程 50
工作原理 53
参考资料 53
分析和理解美式橄榄球比赛数据 53
准备工作 53
处理流程 53
工作原理 61
更多内容 61
参考资料 62
构建度量攻防能力的指标 62
准备工作 62
处理流程 62
工作原理 64
参考资料 65
模拟单场由程序决定胜负的比赛 65
准备工作 65
处理流程 65
工作原理 68
模拟多场由计算决定胜负的比赛 68
准备工作 68
处理流程 69
工作原理 73
更多内容 74
第4章 建模分析股票市场数据(R) 75
简介 75
准备工作 76
获取股票市场数据 76
处理流程 77
描述数据 78
准备工作 79
工作原理 80
更多内容 81
清洗和研究数据 82
准备工作 82
处理流程 82
工作原理 87
参考资料 87
形成相对估值法 87
准备工作 87
处理流程 88
工作原理 91
分析历史价格筛选股票 92
准备工作 92
处理流程 92
工作原理 98
第5章 就业数据的可视化探索(R) 99
简介 99
分析前的准备 100
准备工作 101
处理流程 101
工作原理 102
参考资料 102
将就业数据导入R 103
准备工作 103
处理流程 103
工作原理 104
更多内容 104
参考资料 105
就业数据探究 105
准备条件 105
处理流程 105
工作原理 107
参考资料 107
获取和合并添加附加信息 107
准备工作 107
处理流程 108
工作原理 109
添加地理信息 110
准备工作 110
处理流程 110
工作原理 113
参考资料 114
获取州和县级水平的薪资和就业信息 114
准备工作 114
处理流程 114
工作原理 116
参考资料 117
可视化薪资的地理分布特性 117
准备工作 118
处理流程 118
工作原理 120
参考资料 121
探究各行业工作的地理分布情况 121
处理流程 122
工作原理 123
更多内容 124
参考资料 124
绘制地理空间的时间序列地图 124
准备工作 124
处理流程 125
工作原理 128
更多内容 128
函数性能测试和比较 128
准备工作 129
处理流程 129
工作原理 131
更多内容 132
参考资料 132
第6章 运用税务数据进行应用导向的数据分析(Python) 133
简介 133
应用导向方法简介 134
准备高收入数据集的分析 135
准备工作 135
处理流程 135
工作原理 136
导入并熟悉世界各国高收入数据集 136
准备工作 137
处理流程 137
工作原理 143
更多内容 144
参考资料 144
分析并可视化美国的高收入数据集 144
准备工作 144
处理流程 145
工作原理 151
进一步分析美国的高收入阶层 152
准备工作 152
处理流程 152
工作原理 156
用Jinja2汇报结果 157
准备工作 157
处理流程 157
工作原理 162
更多内容 162
参考资料 163
第7章 运用汽车数据进行可视化分析(Python) 164
简介 164
IPython入门 165
准备工作 165
处理流程 165
工作原理 167
参考资料 167
熟悉IPython Notebook 167
准备工作 168
处理流程 168
工作原理 170
更多内容 170
参考资料 171
准备分析汽车油耗 171
准备工作 171
处理流程 171
工作原理 173
更多内容 173
参考资料 174
用Python熟悉并描述汽车油耗数据 174
准备工作 174
处理流程 174
工作原理 177
更多内容 177
参考资料 177
用Python分析汽车油耗随时间变化趋势 177
准备工作 177
处理流程 178
工作原理 183
更多内容 184
参考资料 185
用Python调查汽车的制造商和型号 185
准备工作 185
处理流程 185
工作原理 189
参考资料 189
第8章 社交网络分析(Python) 190
简介 190
理解图和网络 191
准备用Python进行社交网络的分析工作 192
准备工作 192
处理流程 193
工作原理 193
更多内容 193
导入网络 194
准备工作 194
处理流程 194
工作原理 196
探索英雄网络的子图 196
准备工作 197
处理流程 197
工作原理 199
更多内容 199
找出强关联 200
准备工作 201
处理流程 201
工作原理 203
更多内容 204
找出关键人物 204
准备工作 205
处理流程 205
工作原理 208
更多内容 209
调查全网的特征 215
准备工作 216
处理流程 216
工作原理 217
社交网络中的聚类和发现社群 217
准备工作 217
处理流程 218
工作原理 221
更多内容 221
可视化图 222
准备工作 222
处理流程 222
工作原理 224
第9章 大规模电影推荐(Python) 225
简介 226
对偏好建模 227
处理流程 227
工作原理 228
理解数据 229
准备工作 229
处理流程 229
工作原理 231
更多内容 231
加载电影评分数据 231
准备工作 231
处理流程 232
工作原理 234
寻找高评分电影 235
准备工作 236
处理流程 236
工作原理 237
更多内容 238
参考资料 238
提升电影评分系统 238
准备工作 238
处理流程 238
工作原理 239
更多内容 240
参考资料 240
计算用户在偏好空间中的距离 240
准备工作 241
处理流程 241
工作原理 243
更多内容 243
参考资料 243
计算用户相关性 244
准备工作 244
处理流程 244
工作原理 245
更多内容 246
为特定用户寻找最好的影评人 246
准备工作 246
处理流程 246
工作原理 247
预测用户评分 249
准备工作 249
处理流程 249
工作原理 250
基于物品的协同过滤 251
准备工作 251
处理流程 252
工作原理 253
建立非负矩阵分解模型 254
处理流程 255
工作原理 255
参考资料 256
将数据集载入内存 256
准备工作 257
处理流程 257
工作原理 258
更多内容 258
导出SVD模型至硬盘 259
处理流程 259
工作原理 260
训练SVD模型 261
处理流程 261
工作原理 262
更多内容 263
测试SVD模型 264
处理流程 264
工作原理 264
更多内容 264
第10章 获取和定位Twitter数据(Python) 266
简介 266
创建Twitter应用 267
准备工作 268
处理流程 268
工作原理 271
参考资料 271
了解Twitter API v1.1 271
准备工作 272
处理流程 272
工作原理 273
更多内容 274
参考资料 275
获取粉丝和朋友信息 275
准备工作 275
处理流程 275
工作原理 277
更多内容 277
参考资料 278
提取Twitter用户档案 278
准备工作 278
处理流程 278
工作原理 279
更多内容 279
参考资料 280
避免Twitter速度限制 280
准备工作 280
处理流程 280
工作原理 281
存储JSON数据至硬盘 281
准备工作 282
处理流程 282
工作原理 282
安装MongoDB 283
准备工作 283
处理流程 283
工作原理 284
更多内容 284
参考资料 285
利用PyMongo将用户信息存入MongoDB 285
准备工作 285
处理流程 285
工作原理 286
探索用户地理信息 287
准备工作 287
处理流程 287
工作原理 289
更多内容 290
参考资料 290
利用Python绘制地理分布图 290
准备工作 290
处理流程 291
工作原理 292
更多内容 293
参考资料 294
第11章 利用NumPy和SciPy优化数值计算(Python) 295
简介 295
了解优化的步骤 297
处理流程 297
工作原理 297
更多内容 298
识别代码中常见性能瓶颈 298
处理流程 299
工作原理 299
通读代码 301
准备工作 302
处理流程 302
工作原理 302
参考资料 304
利用Unix time函数剖析Python代码 305
准备工作 305
处理流程 305
工作原理 306
参考资料 306
利用Python内建函数剖析Python代码 306
准备工作 306
处理流程 306
工作原理 307
参考资料 308
利用IPython %timeit函数剖析Python代码 308
处理流程 308
工作原理 309
利用line_profiler剖析Python代码 309
准备工作 310
处理流程 310
工作原理 311
更多内容 312
参考资料 312
摘取低处的(经过优化的)果实 312
准备工作 312
处理流程 312
工作原理 314
测试NumPy带来的性能提升 315
准备工作 315
处理流程 315
工作原理 316
更多内容 317
参考资料 317
用NumPy重写函数 317
准备工作 317
处理流程 318
工作原理 320
用NumPy优化最内层循环 322
准备工作 322
处理流程 322
工作原理 324
更多内容 325
前言/序言
《数据科学实战手册 R+Python》是一本旨在引领读者深入理解并掌握数据科学核心技术与实践应用的综合性指南。本书并非简单罗列技术细节,而是着力于构建一个完整的知识体系,从理论基础到实际操作,从数据获取到最终的模型部署,力求为读者提供一条清晰的学习路径。 一、 数据科学的宏观视野与核心理念 在深入具体技术之前,本书首先会为你描绘数据科学的宏大图景。我们将探讨数据科学的定义、发展历程、在不同行业中的应用前景,以及其与人工智能、机器学习、统计学等相关领域的联系与区别。理解数据科学的本质,即通过数据洞察来驱动决策和创造价值,是掌握后续技术的基础。我们将讨论数据科学家的角色与必备技能,强调批判性思维、业务理解能力以及跨学科知识的重要性。 二、 数据获取与预处理:数据的“前处理”艺术 任何数据科学项目都始于数据的获取。本书将详细介绍多种数据获取的途径和技术,包括但不限于: 数据库操作: 学习如何使用SQL进行关系型数据库的查询、连接与数据提取,掌握NoSQL数据库的基本概念及使用场景。 API交互: 讲解如何利用各种开放API(如社交媒体API、地理信息API、金融数据API等)获取实时或结构化的数据。 网络爬虫: 介绍使用Python库(如BeautifulSoup, Scrapy)进行网页数据抓取的原理与实践,包括遵守robots协议、处理动态加载内容等。 文件读取: 涵盖CSV、JSON、XML、Excel等常见数据文件格式的读取方法。 获取数据仅仅是第一步,数据的“脏乱差”是普遍存在的挑战。本书将投入大量篇幅讲解数据预处理的各个环节,这是确保模型质量和分析结果准确性的关键: 数据清洗: 识别并处理缺失值(填充、删除)、异常值(检测与修正)、重复值。 数据转换: 格式统一(日期、文本)、数据类型转换、编码(独热编码、标签编码)。 特征工程: 特征提取: 从原始数据中创造更有意义的特征,例如文本中的TF-IDF、词向量,图像中的SIFT、HOG特征。 特征选择: 识别对目标变量最重要的特征,去除冗余或不相关的特征,以提高模型效率和泛化能力,包括过滤法、包裹法、嵌入法等。 特征缩放: 理解标准化(Standardization)和归一化(Normalization)的原理与应用场景,以及它们对不同算法的影响。 处理非数值数据: 文本数据的清洗、分词、词干提取、词形还原;类别数据的编码。 三、 探索性数据分析(EDA):在数据中发现故事 探索性数据分析(EDA)是理解数据、形成假设、发现模式和异常的关键环节。本书将引导读者掌握一系列EDA的常用技术和可视化方法: 描述性统计: 计算均值、中位数、标准差、方差、分位数等,全面理解数据的分布和集中趋势。 数据可视化: 单变量分析: 柱状图、直方图、箱线图、密度图,用于展示单个变量的分布特征。 双变量分析: 散点图、折线图、条形图,用于探索两个变量之间的关系。 多变量分析: 热力图、平行坐标图、子图组合,用于理解多个变量之间的交互作用。 高级可视化: 地理空间可视化、网络图可视化等。 工具介绍: 深入讲解R语言的`ggplot2`和Python的`Matplotlib`、`Seaborn`、`Plotly`等强大可视化库的使用技巧。 相关性分析: 计算皮尔逊相关系数、斯皮尔曼秩相关系数,识别变量间的线性或单调关系。 模式识别与异常检测: 通过可视化和统计方法,主动寻找数据中的隐藏模式和潜在异常。 四、 统计建模与推断:理解数据的背后逻辑 统计学是数据科学的基石,本书将涵盖必要的统计学知识,并结合R和Python进行实践: 概率论基础: 随机变量、概率分布(二项分布、泊松分布、正态分布等)、期望与方差。 假设检验: 理解零假设和备择假设,掌握t检验、卡方检验、F检验等常见统计检验方法,以及p值的意义。 置信区间: 构建和解释置信区间,量化估计的不确定性。 回归分析: 线性回归: 简单线性回归、多元线性回归,理解模型假设、系数解释、拟合优度(R-squared)、残差分析。 广义线性模型(GLM): 逻辑回归(用于分类问题)、泊松回归(用于计数数据)等。 时间序列分析: ARMA、ARIMA模型,用于分析和预测具有时间依赖性的数据。 五、 机器学习算法:构建预测与分类模型 机器学习是数据科学的核心驱动力之一。本书将系统介绍各种主流的监督学习和无监督学习算法,并提供在R和Python中的实现示例: 监督学习: 回归模型: 线性回归的拓展: Lasso、Ridge回归,用于特征选择和避免过拟合。 决策树与集成方法: 随机森林(Random Forest)、梯度提升树(Gradient Boosting Machines - GBM, XGBoost, LightGBM),这些模型在处理表格数据上表现卓越。 支持向量机(SVM)用于回归。 分类模型: 逻辑回归: 作为基础的二分类模型。 K近邻(KNN)算法。 朴素贝叶斯(Naive Bayes)算法。 决策树与集成方法: 同样适用于分类任务,效果显著。 支持向量机(SVM)用于分类。 神经网络与深度学习初步: 介绍多层感知机(MLP)的基本原理,以及在图像、文本领域的初步应用(如卷积神经网络CNN、循环神经网络RNN的概念)。 无监督学习: 聚类算法: K-Means、DBSCAN、层次聚类,用于发现数据中的自然分组。 降维算法: 主成分分析(PCA)、t-SNE,用于可视化高维数据或压缩特征。 关联规则挖掘: Apriori算法,用于发现数据项之间的关联性(如购物篮分析)。 模型评估与调优: 性能指标: 准确率、精确率、召回率、F1-score、ROC曲线、AUC值、MSE、RMSE等。 交叉验证: K折交叉验证、留一法交叉验证,用于更可靠地评估模型性能。 超参数调优: 网格搜索(Grid Search)、随机搜索(Random Search)、贝叶斯优化,寻找最佳的模型配置。 防止过拟合与欠拟合: 正则化、早停法、数据增强等。 六、 R与Python的实战应用:工具的精髓 本书的核心优势在于将理论与实践紧密结合,通过R和Python这两种主流数据科学语言,展示各项技术的具体实现: R语言部分: 基础语法与数据结构: 向量、列表、数据框、矩阵等。 核心数据处理包: `dplyr`(数据筛选、排序、聚合)、`tidyr`(数据整理、转换)。 强大的可视化库: `ggplot2`(声明式绘图,创造美观图表)。 统计分析与建模: 内置函数,以及`caret`(统一模型接口)、`glmnet`(正则化回归)、`randomForest`、`xgboost`等专业包。 时间序列分析工具。 Python语言部分: 基础语法与数据结构。 核心数据处理库: `NumPy`(数值计算)、`Pandas`(数据分析与处理,DataFrame的强大功能)。 可视化库: `Matplotlib`(基础绘图)、`Seaborn`(统计数据可视化)、`Plotly`(交互式图表)。 机器学习生态系统: `Scikit-learn`:提供丰富的机器学习算法、预处理工具和模型评估方法。 `XGBoost`, `LightGBM`:高性能梯度提升库。 `TensorFlow`, `PyTorch`:深度学习框架的入门介绍与基本使用。 网络爬虫库: `requests`, `BeautifulSoup`, `Scrapy`。 本书的语言部分并非孤立存在,而是贯穿于各个章节的实战案例中,读者将学习如何选择合适的工具来解决具体的数据科学问题。 七、 数据科学项目流程与最佳实践 一个完整的数据科学项目,不仅仅是代码的堆砌。本书将带你走过一个典型的项目生命周期: 问题定义与业务理解: 如何将业务问题转化为可量化的数据科学问题。 数据收集与存储。 数据探索与预处理。 模型选择与训练。 模型评估与验证。 模型部署与监控: 简单的部署思路,以及模型上线后的持续监控。 结果解释与沟通: 如何将技术性的分析结果转化为业务可理解的洞察,并进行有效沟通。 本书还将强调数据科学中的最佳实践,例如代码的可读性、可复用性、版本控制(Git)、单元测试、以及伦理考量(数据隐私、算法偏见)。 八、 进阶主题与未来展望 在掌握了基础知识和实战技能后,本书还会引导读者触及一些进阶主题,为进一步深入学习打下基础: 大数据处理基础: 介绍Hadoop、Spark等大数据处理框架的概念,以及它们在处理大规模数据集中的作用。 文本挖掘与自然语言处理(NLP)初步。 时间序列预测进阶。 A/B测试的设计与分析。 数据科学领域的职业发展路径。 《数据科学实战手册 R+Python》旨在成为您数据科学之旅中最坚实的伙伴。无论您是希望系统学习数据科学的学生,还是希望提升技能的从业者,本书都将为您提供一套全面、实用且深入的知识体系,让您能够自信地运用数据解决实际问题,驱动业务增长,并在这个充满活力的领域中不断前行。