新書推薦:
《
我从何来:自我的心理学探问
》
售價:NT$
545.0
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:NT$
390.0
《
送你一匹马(“我不求深刻,只求简单。”看三毛如何拒绝内耗,为自己而活)
》
售價:NT$
295.0
《
秦汉史讲义
》
售價:NT$
690.0
《
万千心理·我的精神分析之道:复杂的俄狄浦斯及其他议题
》
售價:NT$
475.0
《
荷马:伊利亚特(英文)-西方人文经典影印21
》
售價:NT$
490.0
《
我的心理医生是只猫
》
售價:NT$
225.0
《
巴拉吉预言
》
售價:NT$
340.0
|
編輯推薦: |
这是一本前所未见的编程入门书,可视化彻底,颜值极高。姜伟生博士自谦“小镇做题家”,实际上他是国际著名金融企业的金融科技专家。很难想象一位以“术数”为业的金融家具备如此彻底的分享动机,同时,姜博士有着卓越的艺术品位和设计能力,不仅承担了这套书的精深内容,更承担了全系图书的整体设计。希望读者从枯燥的常规数学书中解脱出来,赏心悦目地慢慢走入缤纷的AI宇宙。
|
內容簡介: |
《编程不难:全彩图解 微课 Python编程》是“鸢尾花数学大系—从加减乘除到机器学习”丛书的第一册,也是“编程”板块的第一册, 着重介绍如何零基础入门学 Python 编程。虽然《编程不难:全彩图解 微课 Python编程》主要讲解 Python 编程,但是也离不开数学。《编程不难:全彩图解 微课 Python编程》尽量 避免讲解数学概念公式,而且用图形和近乎口语化的语言描述程序设计、数据分析、机器学习背后常用的 数学思想。
《编程不难:全彩图解 微课 Python编程》分为预备、语法、绘图、数组、数据、数学、机器学习、应用八大板块, 共 36 章, 内容“跨度”极大! 从 Python 基本编程语法,到基本可视化工具,再到各种数据操作工具,还介绍常用 Python 实现的各种复 杂数学运算,进入数据分析和机器学习之后,还讲解如何搭建应用 App。我们可以把《编程不难:全彩图解 微课 Python编程》看作从 Python 编 程角度对“鸢尾花书”全系内容的总览。
《编程不难:全彩图解 微课 Python编程》提供代码示例和讲解,而且提供习题,每章还配套 Jupyter Notebook 代码文件(Jupyter Notebook 不是可有可无的,而是学习生态的关键一环, “鸢尾花书”强调在 JupyterLab 自主探究学习才能提高大家 编程技能)。《编程不难:全彩图解 微课 Python编程》配套微课也主要以配套 Jupyter Notebooks 为核心,希望读者边看视频,边动手练习。
《编程不难:全彩图解 微课 Python编程》读者群包括所有试图用编程解决问题的朋友,尤其适用于初级程序员进阶、高级数据分析师、机器学习开发者。
|
關於作者: |
姜伟生 博士 FRM。
勤奋的小镇做题家,热爱知识可视化和开源分享。自2022年8月开始,在GitHub上开源“鸢尾花书”学习资源,截至2024年5月,已经分享5000多页PDF、5000多幅矢量图、约3000个代码文件,全球读者数以万计,GitHub全球排名TOP140。
|
目錄:
|
绪论 1
第 1章 聊聊“巨蟒” 9
1.1 Python 巨蟒 10
1.2 Python 和可视化有什么关系 14
1.3 Python 和数学有什么关系 14
1.4 Python 和机器学习有什么关系 20
1.5 相信“反复 精进 ”的力量! 21
第 2章 安装使用Anaconda 29
2.1 集成开发环境 30
2.2 如何安装 Anaconda 31
2.3 测试 JupyterLab 33
2.4 查看 Python 第三方库版本号 35
2.5 安装、更新、卸载 Python 第三方库 38
第 3章 JupyterLab,用起来! 41
3.1 什么是 JupyterLab 42
3.2 使用 JupyterLab:立刻用起来 43
3.3 快捷键:这一章可能最有用的内容 48
3.4 什么是 LaTeX 51
3.5 字母和符号 52
3.6 用 LaTex 写公式 57
第4章 Python语法,边学边用 63
4.1 Python 也有语法 64
4.2 注释:不被执行,却很重要 66
4.3 缩进:四个空格,标识代码块 69
4.4 变量:一个什么都能装的箱子 72
4.5 使用 import 导入包 74
4.6 Pythonic:Python 风格 76
第 5章 Python数据类型 77
5.1 数据类型有哪些 78
5.2 数字:整数、浮点数、复数 79
5.3 字符串:用引号定义的文本 81
5.4 列表:存储多个元素的序列 88
5.5 其他数据类型:元组、集合、字典 94
5.6 矩阵、向量:线性代数概念 95
第 6章 Python常见运算 101
6.1 几类运算符 102
6.2 算术运算符 103
6.3 比较运算符 105
6.4 逻辑运算符 106
6.5 赋值运算符 107
6.6 成员运算符 108
6.7 身份运算符 108
6.8 优先级 109
6.9 聊聊 math 库 109
6.10 聊聊 random 库和 statistics 库 113
第 7章 Python控制结构 123
7.1 什么是控制结构? 124
7.2 条件语句:相当于开关 126
7.3 for循环语句 129
7.4 列表生成式 138
7.5 迭代器itertools 143
第 8章 Python函数 147
8.1 什么是 Python 函数 148
8.2 自定义函数 152
8.3 更多自定义线性代数函数 160
8.4 递归函数:自己反复调用自己 164
8.5 位置参数、关键字参数 165
8.6 使用 *args 和 **kwargs 167
8.7 匿名函数 169
8.8 构造模块、库 170
8.9 模仿别人的代码 171
第 9章 Python面向对象编程 175
9.1 什么是面向对象编程 176
9.2 定义属性 178
9.3 定义方法 180
9.4 装饰器 181
9.5 父类、子类 182
第 10章 聊聊可视化 187
10.1 解剖一幅图 188
10.2 使用 Matplotlib 绘制线图 190
10.3 图片美化 198
10.4 使用 Plotly 绘制线图 202
第 11章 二维和三维可视化 209
11.1 二维可视化方案 210
11.2 二维散点图 210
11.3 二维等高线图 216
11.4 热图 222
11.5 三维可视化方案 225
11.6 三维散点图 229
11.7 三维线图 231
11.8 三维网格曲面图 232
11.9 三维等高线图 234
11.10 箭头图 235
第 12章 Seaborn可视化数据 239
12.1 Seaborn:统计可视化利器 240
12.2 一元特征数据 241
12.3 二元特征数据 252
12.4 多元特征数据 257
第 13章 聊聊NumPy 265
13.1 什么是 NumPy 266
13.2 手动构造数组 267
13.3 生成数列 273
13.4 生成网格数据 274
13.5 特殊数组 276
13.6 随机数 276
13.7 数组导入、导出 280
第 14章 NumPy索引和切片 283
14.1 什么是索引、切片 284
14.2 一维数组索引、切片 284
14.3 视图 vs 副本 287
14.4 二维数组索引、切片 289
第 15章 NumPy常见运算 293
15.1 加、减、乘、除、乘幂 294
15.2 广播原则 295
15.3 统计运算 298
15.4 常见函数 301
第 16章 NumPy数组规整 307
16.1 从 reshape() 函数说起 309
16.2 一维数组 → 行向量、列向量 310
16.3 一维数组 → 二维数组 311
16.4 一维数组 → 三维数组 312
16.5 视图 vs 副本 312
16.6 转置 313
16.7 扁平化 314
16.8 旋转、翻转 314
16.9 堆叠 315
16.10 重复 317
16.11 分块矩阵 318
第 17章 NumPy线性代数 321
17.1 NumPy 的 linalg 模块 322
17.2 拆解矩阵 323
17.3 向量运算 325
17.4 矩阵运算 329
17.5 几个常见矩阵分解 333
第18章 NumPy爱因斯坦求和约定 337
18.1 什么是爱因斯坦求和约定? 338
18.2 二维数组求和 340
18.3 转置 341
18.4 矩阵乘法 343
18.5 一维数组 345
18.6 方阵 346
18.7 统计运算 347
第 19章 聊聊Pandas 351
19.1 什么是 Pandas 353
19.2 创建数据帧:从字典、列表、NumPy 数组 354
19.3 数据帧操作:以鸢尾花数据为例 357
19.4 四则运算:各列之间 363
19.5 统计运算:聚合、降维、压缩、折叠 365
19.6 时间序列:按时间顺序排列的数据 368
第 20章 Pandas快速可视化 373
20.1 Pandas 的可视化功能 374
20.2 线图:pandas.DataFrame.plot() 375
20.3 散点图 378
20.4 柱状图 381
20.5 箱型图 382
20.6 直方图和核密度估计曲线 382
第 21章 Pandas索引和切片 385
21.1 数据帧的索引和切片 386
21.2 提取特定列 387
21.3 提取特定行 388
21.4 提取特定元素 388
21.5 条件索引 389
21.6 多层索引 391
21.7 时间序列数据帧索引和切片 395
第 22章 Pandas规整 399
22.1 Pandas 数据帧规整 400
22.2 拼接:pandas.concat() 401
22.3 合并:pandas.join() 402
22.4 合并:pandas.merge() 405
22.5 长格式转换为宽格式:pivot() 409
22.6 宽格式转换为长格式:stack() 411
22.7 长格式转换为宽格式:unstack() 414
22.8 分组聚合:groupby() 415
22.9 自定义操作:apply() 417
第 23章 Plotly统计可视化 421
23.1 Plotly 常见可视化方案:以鸢尾花数据为例 422
23.2 增加一组分类标签 424
23.3 两组标签:两个维度 428
23.4 可视化比例:柱状图、饼图 432
23.5 钻取:多个层次之间的导航和探索 434
23.6 太阳爆炸图:展示层次结构 438
23.7 增加第三切割维度 440
23.8 平均值的钻取:全集 vs 子集 447
第 24章 Pandas时间序列数据 453
24.1 什么是时间序列 454
24.2 缺失值:用 NaN 表示 457
24.3 移动平均:一种平滑技术 460
24.4 收益率:相对涨跌 462
24.5 统计分析:均值、波动率等 464
24.6 相关性:也可以随时间变化 474
第 25章 SymPy符号运算 481
25.1 什么是 SymPy 482
25.2 代数 482
25.3 线性代数 487
第 26章 SciPy数学运算 499
26.1 什么是 SciPy ? 500
26.2 距离 502
26.3 插值 507
26.4 高斯分布 510
第 27章 Statsmodels统计模型 517
27.1 什么是 Statsmodels 518
27.2 二维散点图 椭圆 519
27.3 最小二乘线性回归 522
27.4 主成分分析 524
27.5 概率密度估计:高斯 KDE 535
第 28章 Scikit-Learn机器学习 545
28.1 什么是机器学习 546
28.2 有标签数据、无标签数据 549
28.3 回归:找到自变量与因变量关系 550
28.4 降维:降低数据维度,提取主要特征 551
28.5 分类:针对有标签数据 552
28.6 聚类:针对无标签数据 553
28.7 什么是 Scikit-Learn 554
第29章 Scikit-Learn数据 555
29.1 Scikit-Learn 中有关数据的工具 557
29.2 样本数据集 557
29.3 生成样本数据 558
29.4 特征缩放 561
29.5 处理缺失值 563
29.6 处理离群值 566
29.7 训练集 vs 测试集 570
第30章 Scikit-Learn回归 573
30.1 聊聊回归 574
30.2 一元线性回归 575
30.3 二元线性回归 577
30.4 多项式回归 579
30.5 正则化:抑制过度拟合 584
第 31章 Scikit-Learn降维 589
31.1 降维 590
31.2 主成分分析 591
31.3 两特征 PCA 595
31.4 三特征 PCA 601
第 32章 Scikit-Learn分类 605
32.1 什么是分类? 606
32.2 k 最近邻分类:近朱者赤,近墨者黑 607
32.3 高斯朴素贝叶斯分类:贝叶斯定理的应用 611
32.4 支持向量机:间隔最大化 613
32.5 核技巧:数据映射到高维空间 616
第 33章 Scikit-Learn聚类 619
33.1 聚类 620
33.2 K 均值聚类 621
33.3 高斯混合模型 624
第 34章 了解一下Spyder 633
34.1 什么是 Spyder 634
34.2 Spyder 用起来 637
34.3 快捷键:这章可能最有用的内容 639
第 35章 Streamlit搭建Apps 641
35.1 什么是 Streamlit ? 642
35.2 显示 645
35.3 可视化 646
35.4 输入工具 647
35.5 App 布局 649
第 36章 Streamlit搭建机器学习Apps 653
36.1 搭建应用 App:编程 数学 可视化 机器学习 654
36.2 一元高斯分布 654
36.3 二元高斯分布 655
36.4 三元高斯分布 656
36.5 多项式回归 657
36.6 主成分分析 657
36.7 k 最近邻分类 658
36.8 支持向量机 高斯核 659
36.9 高斯混合模型聚类 660
|
內容試閱:
|
感谢
首先感谢大家的信任。
作者仅仅是在学习应用数学科学和机器学习算法时,多读了几本数学书,多做了一些思考和知识 整理而已。知者不言,言者不知。知者不博,博者不知。由于作者水平有限,斗胆把自己有限所学所 思与大家分享,作者权当无知者无畏。希望大家在 B 站视频下方和 GitHub 多提意见,让“鸢尾花数 学大系—从加减乘除到机器学习 ”丛书成为作者和读者共同参与创作的优质作品。
特别感谢清华大学出版社的栾大成老师。从选题策划、内容创作到装帧设计,栾老师事无巨细、 一路陪伴。每次与栾老师交流,都能感受到他对优质作品的追求、对知识分享的热情。
出来混总是要还的
曾经,考试是我们学习数学的唯一动力。考试是头悬梁的绳,是锥刺股的锥。我们中的绝大多数 人从小到大为各种考试埋头题海,学数学味同嚼蜡,甚至让人恨之入骨。
数学给我们带来了无尽的“折磨”。 我们甚至恐惧数学,憎恨数学,恨不得一走出校门就把数学 抛之脑后,老死不相往来。
可悲可笑的是,我们很多人可能会在毕业五年或十年以后,因为工作需要,不得不重新学习微 积分、线性代数、概率统计,悔恨当初没有学好数学,走了很多弯路,没能学以致用,甚至迁怒于教 材和老师。
这一切不能都怪数学,值得反思的是我们学习数学的方法和目的。
再给自己一个学数学的理由
为考试而学数学,是被逼无奈的举动。而为数学而学数学,则又太过高尚而遥不可及。
相信对于绝大部分的我们来说,数学是工具,是谋生手段,而不是目的。我们主动学数学,是想 用数学工具解决具体问题。
现在,本丛书给大家带来一个“学数学、用数学 ”的全新动力—数据科学、机器学习。
数据科学和机器学习已经深度融合到我们生活的方方面面,而数学正是开启未来大门的钥匙。不 是所有人生来都握有一副好牌,但是掌握“数学 编程 机器学习 ”的知识绝对是王牌。这次,学习 数学不再是为了考试、分数、升学,而是为了投资时间,自我实现,面向未来。
未来已来,你来不来?
本丛书如何帮到你
为了让大家学数学、用数学,甚至爱上数学,作者可谓颇费心机。在丛书创作时,作者尽量克服 传统数学教材的各种弊端,让大家学习时有兴趣、看得懂、有思考、更自信、用得着。
为此,丛书在内容创作上突出以下几个特点。
虽然本书标榜“从加减乘除到机器学习”, 但是建议读者朋友们至少具备高中数学知识。如果读 者正在学习或曾经学过大学数学 (微积分、线性代数、概率统计) ,那么就更容易读懂本丛书了。
聊聊数学
数学是工具 。锤子是工具,剪刀是工具,数学也是工具。
数学是思想 。数学是人类思想高度抽象的结晶体。在其冷酷的外表之下,数学的内核实际上就是 人类朴素的思想。学习数学时,知其然,更要知其所以然。不要死记硬背公式定理,理解背后的数学 思想才是关键。如果你能画一幅图、用大白话描述清楚一个公式、一则定理,这就说明你真正理解了它。
数学是语言 。就好比世界各地不同种族有自己的语言,数学则是人类共同的语言和逻辑。数学这 门语言极其精准、高度抽象,放之四海而皆准。虽然我们中大多数人没有被数学“女神 ”选中,不能 为人类对数学认知开疆拓土,但是这丝毫不妨碍我们使用数学这门语言。就好比,我们不会成为语言 学家,但是我们完全可以使用母语和外语交流。
数学是体系 。代数、几何、线性代数、微积分、概率统计、优化方法等,看似一个个孤岛,实际 上都是数学网络的一条条织线。建议大家学习时,特别关注不同数学板块之间的联系,见树,更要 见林。
数学是基石 。拿破仑曾说:“数学的日臻完善和国强民富息息相关。”数学是科学进步的根基, 是经济繁荣的支柱,是保家卫国的武器,是探索星辰大海的航船。
数学是艺术 。数学和音乐、绘画、建筑一样,都是人类艺术体验。通过可视化工具,我们会在看 似枯燥的公式、定理、数据背后,发现数学之美。
II
数学是历史,是人类共同记忆体。“历史是过去,又属于现在,同时在指引未来。”数学是人类 的集体学习思考,它把人的思维符号化、形式化,进而记录、积累、传播、创新、发展。从甲骨、泥 板、石板、竹简、木牍、纸草、羊皮卷、活字印刷、纸质书,到数字媒介,这一过程持续了数千年, 至今绵延不息。
数学是无穷无尽的想象力,是人类的好奇心,是自我挑战的毅力,是一个接着一个的问题,是看 似荒诞不经的猜想,是一次次胆大包天的批判性思考,是敢于站在前人臂膀之上的勇气,是孜孜不倦 地延展人类认知边界的不懈努力。
家园、诗、远方
诺瓦利斯曾说:“哲学就是怀着一种乡愁的冲动到处去寻找家园。”
在纷繁复杂的尘世,数学纯粹得就像精神的世外桃源。数学是一束光、一条巷、一团不灭的希望、 一股磅礴的力量、一个值得寄托的避风港。
打破陈腐的锁链,把功利心暂放一边,我们一道怀揣一份乡愁,心存些许诗意,踩着艺术维度, 投入数学张开的臂膀,驶入它色彩斑斓、变幻无穷的深港,感受久违的归属,一睹更美、更好的远方。
前言
《编程不难》
III
Acknowledgement
致谢
To my parents.
谨以此书献给我的母亲和父亲。
How to Use the Book
使用本书
丛书资源
本系列丛书提供的配套资源有以下几个。
在纸质图书中,为了方便大家查找不同配套资源,作者特别设计了以下几个标识。
数学家、科学家、
艺术家等语录
配套Python代码完
成核心计算和制图
引出本书或本系列
其他图书相关内容
相关数学家生平贡
献介绍
代码中核心Python 库函数和讲解
用Streamlit开发制
作App
提醒读者格外注意 的知识点
每章结束总结或升 华本章内容
思维导图总结本章
脉络和核心内容
介绍数学工具、机
器学习之间的联系
每章配套微课视频
二维码
本书核心参考文献和
推荐阅读文献
微课视频
本书配套微课视频均发布在B站—生姜DrGinger。
微课视频是以“聊天 ”的方式,和大家探讨某个数学话题的重点内容,讲解代码中可能遇到的难 点,甚至侃侃历史、说说时事、聊聊生活。
本书配套微课视频的目的是引导大家自主编程实践、探究式学习,并不是“照本宣科”。
纸质图书上已经写得很清楚的内容,视频课程只会强调重点。需要说明的是,图书内容不是视频 的“逐字稿”。
App开发
本书配套多个用Streamlit开发的App ,用来展示数学动画、数据分析、机器学习算法。
Streamlit是个开源的Python库,能够方便快捷地搭建、部署交互型网页App 。Streamlit简单易 用,很受欢迎。Streamlit兼容目前主流的Python数据分析库,比如NumPy 、Pandas 、Scikit-Learn 、 PyTorch 、TensorFlow等。Streamlit还支持Plotly 、Bokeh 、Altair等交互可视化库。
本书中很多App设计都采用Streamlit Plotly方案。此外,本书专门配套教学视频手把手和大家一 起做App。
大家可以参考如下页面,更多了解Streamlit:
实践平台
本书作者编写代码时采用的IDE (Integrated Development Environment) 是Spyder ,目的是给大家提 供简洁的Python代码文件。
但是,建议大家采用JupyterLab或Jupyter Notebook作为“鸢尾花书 ”配套学习工具。
简单来说,Jupyter集“浏览器 编程 文档 绘图 多媒体 发布 ”众多功能于一身,非常适 合探究式学习。
运行Jupyter无须IDE ,只需要浏览器。Jupyter容易分块执行代码。Jupyter支持inline打印结果,直 接将结果图片打印在分块代码下方。Jupyter还支持很多其他语言,如R和Julia。
使用Markdown文档编辑功能,可以在编程的同时写笔记,不需要额外创建文档。在Jupyter中插 入图片和视频链接都很方便,此外还可以插入LaTex公式。对于长文档,可以用边栏目录查找特定 内容。
Jupyter发布功能很友好,方便打印成HTML 、PDF等格式文件。
Jupyter也并不完美, 目前尚待解决的问题有几个:Jupyter中代码调试不是特别方便。Jupyter没 有variable explorer ,可以在线打印数据,也可以将数据写到CSV或Excel文件中再打开。Matplotlib 图像结果不具有交互性,如不能查看某个点的值或者旋转3D图形,此时可以考虑安装 (Jupyter Matplotlib) 。注意,利用Altair或Plotly绘制的图像支持交互功能。对于自定义函数, 目前没有快捷键
VI
直接跳转到其定义。但是,很多开发者针对这些问题正在开发或已经发布相应插件,请大家留意。
大家可以下载安装Anaconda ,将JupyterLab 、Spyder 、PyCharm等常用工具,都集成在Anaconda
中。下载Anaconda的地址为:
JupyterLab探究式学习视频:
代码文件
“鸢尾花书 ”的Python代码文件下载地址为:
同时也在如下GitHub地址备份更新:
Python代码文件会不定期修改,请大家注意更新。图书原始创作版本PDF(未经审校和修订,内容
和纸质版略有差异,方便移动终端碎片化学习以及对照代码)和纸质版本勘误也会上传到这个GitHub 账户。因此,建议大家注册GitHub账户,给书稿文件夹标星 (Star) 或分支克隆 (Fork)。
考虑再三,作者还是决定不把代码全文印在纸质书中,以便减少篇幅,节约用纸。
本书编程实践例子中主要使用“鸢尾花数据集”, 数据来源是Scikit-Learn库、Seaborn库。要是 给“鸢尾花数学大系 ”起个昵称的话,作者乐见“鸢尾花书”。
使用本书
《编程不难》
VII
学习指南
大家可以根据自己的偏好制定学习步骤,本书推荐如下步骤。
1
浏览本章思维导图, 把握核心脉络
4
用Jupyter 创建笔
记,编程实践
2
下载本章配套
Python 代码文件
5
尝试开发数学动画、 机器学习 App
3
观看微课视频,阅 读本章正文内容
6
翻阅本书推荐参
考文献
学完每章后,大家可以在社交媒体、技术论坛上发布自己的Jupyter笔记,进一步听取朋友们的意 见,共同进步。这样做还可以提高自己学习的动力。
另外,建议大家采用纸质书和电子书配合阅读学习,学习主阵地在纸质书上,学习基础课程最重 要的是沉下心来,认真阅读并记录笔记,电子书可以配合查看代码,相关实操性内容可以直接在电脑 上开发、运行、感受,Jupyter笔记同步记录起来。
强调一点:学习过程中遇到困难,要尝试自行研究解决,不要第一时间就去寻求他人帮助。
意见和建议
欢迎大家对“鸢尾花书 ”提意见和建议,丛书专属邮箱地址为:
也欢迎大家在B站视频下方留言互动。
VIII
|
|