书籍作者:姜伟生 | ISBN:9787302660330 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:6498 |
创建日期:2024-06-26 | 发布日期:2024-06-26 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
《编程不难:全彩图解+微课+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。
这是一本前所未见的编程入门书,可视化彻底,颜值极高。很难想象一位以“术数”为业的金融家具备如此彻底的分享动机,同时,姜博士有着卓越的艺术品位和设计能力,不仅承担了这套书的精深内容,更承担了全系图书的整体设计。希望读者从枯燥的常规数学书中解脱出来,赏心悦目地慢慢走入缤纷的AI宇宙。
Preface
前言
感谢
首先感谢大家的信任。
作者仅仅是在学习应用数学科学和机器学习算法时,多读了几本数学书,多做了一些思考和知识 整理而已。知者不言,言者不知。知者不博,博者不知。由于作者水平有限,斗胆把自己有限所学所 思与大家分享,作者权当无知者无畏。希望大家在 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