- 机器学习
- 教程
【免费下载链接】python-machine-learning-book
The "Python Machine Learning (1st edition)" book code repository and info resource
本仓库是 Sebastian Raschka 所著《Python Machine Learning》(Packt Publishing,2015 年 9 月出版,第 1 版)的官方配套代码与资源仓库,覆盖从机器学习理论到 NumPy、scikit-learn、Theano 实战代码的完整链路。阅读本文后,你将掌握仓库的整体结构、13 个章节 Notebook 与数据集的对应关系、环境搭建与版本要求,以及一套可直接检索引用的 FAQ 知识库导航。
仓库定位:第 1 版代码仓库与版本声明
根目录 README.md 在开头明确声明:本仓库承载的是《Python Machine Learning》第 1 版的代码示例(2017-09-21 更新说明)。因此,所有章节代码均以第 1 版的公式与文字描述为上下文,Notebook 文件本身主要承担"代码示例"角色——正如 README 强调的:"these notebooks may not be useful without the formulae and descriptive text"(脱离书中公式与描述文字,Notebook 的效用有限)。这也是阅读本仓库代码前需要建立的基本认知。
书籍基本信息(源自 README.md):
| 项目 | 内容 |
|---|---|
| 出版时间 | 2015 年 9 月 23 日(第 1 版) |
| 装帧/页数 | Paperback,454 页 |
| 出版社 | Packt Publishing |
| 语言 | 英语 |
| ISBN-10 / ISBN-13 | 1783555130 / 978-1783555130 |
| Kindle ASIN | B00YSILNL0 |
该书已被翻译为德语(978-3958454224)、日语(978-4844380603)、意大利语(978-8850333974)、繁体中文(978-9864341405)、简体中文(978-7111558804)、韩语(979-1187497035)、俄语(978-5970604090)等版本,对应翻译封面图位于 images/ 目录。
仓库顶层结构:code / docs / faq / images 四大板块
仓库根目录下主要包含四个目录与一个根级 README.md:
- code/:全书代码主体,含 13 个章节目录(ch01–ch13)、bonus/ 增补 Notebook、datasets/ 配套数据集、optional-py-scripts/ 纯 Python 脚本版代码,以及环境检查工具 code/check_environment.ipynb。
- docs/:前言的 PDF 摘录(docs/foreword_ro.pdf、docs/preface_sr.pdf)、全书公式参考(docs/equations/pymle-equations.pdf)、勘误表(docs/errata.md)、参考文献(docs/references.md)与读者反馈(docs/feedback.md)。
- faq/:约 90 篇按主题分类的问答文章,是作者针对读者来信整理的知识库。
- images/:书籍封面、宣传图、环境检查截图等素材。
13 章代码与 Notebook 导航
README 的"Table of Contents and Code Notebooks"一节按章节给出了目录链接(dir)与 Notebook 链接(ipynb)。下表完整整理了各章的目录与 Notebook 路径:
| 章节 | 主题 | 目录 | Notebook |
|---|---|---|---|
| 1 | Machine Learning – Giving Computers the Ability to Learn from Data(机器学习入门) | code/ch01 | code/ch01/ch01.ipynb |
| 2 | Training Machine Learning Algorithms for Classification(感知机、Adaline 等分类算法训练) | code/ch02 | code/ch02/ch02.ipynb |
| 3 | A Tour of Machine Learning Classifiers Using Scikit-Learn(scikit-learn 分类器巡礼) | code/ch03 | code/ch03/ch03.ipynb |
| 4 | Building Good Training Sets – Data Pre-Processing(数据预处理) | code/ch04 | code/ch04/ch04.ipynb |
| 5 | Compressing Data via Dimensionality Reduction(PCA/LDA 等降维) | code/ch05 | code/ch05/ch05.ipynb |
| 6 | Learning Best Practices for Model Evaluation and Hyperparameter Optimization(模型评估与超参优化) | code/ch06 | code/ch06/ch06.ipynb |
| 7 | Combining Different Models for Ensemble Learning(集成学习) | code/ch07 | code/ch07/ch07.ipynb |
| 8 | Applying Machine Learning to Sentiment Analysis(情感分析) | code/ch08 | code/ch08/ch08.ipynb |
| 9 | Embedding a Machine Learning Model into a Web Application(模型 Web 化部署) | code/ch09 | code/ch09/ch09.ipynb |
| 10 | Predicting Continuous Target Variables with Regression Analysis(回归分析) | code/ch10 | code/ch10/ch10.ipynb |
| 11 | Working with Unlabeled Data – Clustering Analysis(聚类分析) | code/ch11 | code/ch11/ch11.ipynb |
| 12 | Training Artificial Neural Networks for Image Recognition(人工神经网络图像识别) | code/ch12 | code/ch12/ch12.ipynb |
| 13 | Parallelizing Neural Network Training via Theano(Theano 并行化神经网络训练) | code/ch13 | code/ch13/ch13.ipynb |
其中第 1 章(code/ch01/README.md 明确说明 "Chapter 1 does not contain any code examples")不包含代码示例,主要用于建立监督/非监督/强化学习三类范式的概念框架与基本术语。每章目录下还配有章节运行结果截图(如 code/ch02/images/02_01.png),可用于对照运行输出。
从源码看章节技术纵深(示例)
仓库不仅是 Notebook 集合,还包含完整可运行的 Python 模块。以第 12 章为例,code/ch12/neuralnet.py 定义了从零实现的NeuralNetMLP前馈神经网络分类器,其构造函数完整展示了该书的超参数实践,关键参数包括:
n_output/n_features:输出单元数与输入特征数;n_hidden=30:隐藏单元数量;l1=0.0/l2=0.0:L1/L2 正则化强度(默认关闭);epochs=500:训练轮数;eta=0.001:学习率;alpha=0.0:动量常数(用于加速收敛);decrease_const=0.0:学习率衰减常数(按eta / (1 + epoch * decrease_const)收缩);shuffle=True:每轮打乱训练数据;minibatches=1:小批量数量(为 1 时等价于标准梯度下降);random_state=None:随机种子。
同一章节目录下还提供了 code/ch12/optional-streamlined-neuralnet.py 精简版实现;第 13 章则包含基于 Keras/Theano 的 code/ch13/mnist_keras_mlp.py。此外,code/optional-py-scripts/ 提供了 ch02–ch13 的纯.py脚本版本(如 code/optional-py-scripts/ch12.py),方便不习惯 Notebook 的读者直接运行。
第 9 章:模型 Web 化部署的完整工程示例
第 9 章将情感分析模型嵌入 Flask Web 应用,code/ch09 下给出了两个完整工程:
- code/ch09/movieclassifier/:包含向量化器 vectorizer.py、序列化模型(pkl_objects/classifier.pkl 与 pkl_objects/stopwords.pkl)、SQLite 存储 reviews.sqlite 以及 templates 下的 4 个页面模板;
- code/ch09/movieclassifier_with_update/:带在线更新能力的版本,额外提供 update.py 用于增量学习新样本。
另有 code/ch09/pickle-test-scripts/ 演示模型序列化与加载的独立脚本,以及 1st/2nd 版 Flask 入门应用 code/ch09/1st_flask_app_1/ 和 code/ch09/1st_flask_app_2/。
环境搭建:Python、pip、conda 与核心依赖版本
code/ch01/README.md 提供了完整的环境配置指南,要点如下:
Python 版本要求:本书代码面向 Python>= 3.4.3编写,多数示例兼容>= 2.7.10;可用python -V检查当前默认版本。作者在 faq/py2py3.md 中补充说明:代码全部以 Python 3.4 编写,2.7 兼容性在写作中途停止全面测试,尤其是第 8 章情感分析涉及 Unicode 处理,Python 2.7 下可能受限。
包管理器:pip(Python 3.3 起内置)与 Anaconda/Miniconda 的 conda 均可,基本命令为:
pip install SomePackage # 安装 pip install SomePackage --upgrade # 升级 conda install SomePackage # conda 安装 conda update SomePackage # conda 更新核心依赖最低版本(写作本书时的版本,要求不低于此):
| 包 | 版本 |
|---|---|
| NumPy | 1.9.1 |
| SciPy | 0.14.0 |
| scikit-learn | 0.15.2 |
| matplotlib | 1.4.0 |
| pandas | 0.15.2 |
本书以 NumPy 多维数组为主要数据结构,pandas 用于表格数据处理,matplotlib 用于可视化;完整技术栈(含 seaborn、Flask、sqlite3、Theano、Keras)见 faq/technologies.md。作者在 faq/technologies.md 中特别说明:书中大量算法(线性分类器、集成分类器、特征选择、神经网络)是从零手写实现,而非仅调用 scikit-learn API——这是理解代码仓库的重要线索。
Jupyter Notebook 安装与启动:
pip install jupyter notebook # 或 conda install jupyter notebook进入代码目录后执行jupyter notebook,浏览器默认打开 http://localhost:8888/,从菜单选择要打开的.ipynb文件即可。详细的 Notebook 启动步骤图解见 docs/running_jupyter_nb.pdf。作者还指出 "IPython Notebook" 已更名 "Jupyter Notebook",只是术语差异。
环境自检(推荐):在 Jupyter 中打开 code/check_environment.ipynb 并执行代码单元,可一次性核对各核心库是否可用。其预期输出截图如下:
配套数据集与章节对应关系
code/datasets/ 收录了全书所需的全部公开数据集,各目录下的 README 标注了来源与使用章节:
| 数据集 | 目录 | 使用章节 | 说明 |
|---|---|---|---|
| iris | code/datasets/iris/ | 第 1、2、3 章 | 鸢尾花三分类经典数据 |
| wine | code/datasets/wine/ | 第 4、5 章 | 红酒化学成分数据(预处理/降维章节) |
| wdbc | code/datasets/wdbc/ | 第 6 章 | 威斯康星乳腺癌诊断数据 |
| movie | code/datasets/movie/ | 第 8、9 章 | 影评情感分析数据,压缩包 code/datasets/movie/movie_data.csv.zip |
| housing | code/datasets/housing/ | 第 10 章 | 波士顿房价回归数据 |
| mnist | code/datasets/mnist/ | 第 12、13 章 | 手写数字图像数据(含 train/t10k 的 images 与 labels 压缩包) |
movie 数据集经过预处理转换为两列 CSV:第一列review为评论文本,第二列sentiment为极性标签(0=负面,1=正面),前 25,000 行为训练样本,后 25,000 行为测试样本(源自 "Large Movie Review Dataset v1.0"),详见 code/datasets/movie/README.md。mnist 数据的读取方法另有增补 Notebook:code/bonus/reading_mnist.ipynb。
Bonus 增补资源(书外内容)
code/bonus/ 与根 README 的 "Bonus Notebooks (not in the book)" 一节列出了一批基于读者反馈补充的实战 Notebook:
- code/bonus/logistic_regression.ipynb:逻辑回归手写实现;
- code/bonus/svm_iris_pipeline_and_gridsearch.ipynb:基于鸢尾花的 Pipeline 与网格搜索入门;
- code/bonus/nested_cross_validation.ipynb:嵌套交叉验证扩展示例;
- code/bonus/flask_webapp_ex01/:极简 Flask Web 应用模板(含 app.py、templates/、static/style.css),并打包为 flask_webapp_ex01.zip;
- code/bonus/reading_mnist.ipynb:将 MNIST 手写数字读入 NumPy 数组;
- code/bonus/scikit-model-to-json.ipynb:以 JSON 格式持久化 scikit-learn 模型(配套 code/bonus/sckit-model-to-json/ 目录下的 attributes.json 与 params.json 示例);
- code/bonus/softmax-regression.ipynb:多项式逻辑回归 / softmax 回归(配套 code/bonus/images/softmax_schematic_1.png 等示意图)。
公式参考、勘误与引用规范
公式参考:全书公式被统一整理为 docs/equations/pymle-equations.pdf(源文件 docs/equations/pymle-equations.tex,目录下有 docs/equations/pymle-equations.toc),可配合源码与公式交叉查阅。
勘误与反馈:已知问题与修正记录在 docs/errata.md;读者长、短评摘录在 docs/feedback.md。文献与延伸阅读清单见 docs/references.md,书末参考书目 BibTeX 见 docs/pymle.bib。
引用本书:作者欢迎在学术出版物中复用书中代码片段,并提供了标准引用格式(源自根 README):
@Book{raschka2015python, author = {Raschka, Sebastian}, title = {Python Machine Learning}, publisher = {Packt Publishing}, year = {2015}, address = {Birmingham, UK}, isbn = {1783555130} }MLA 格式:Raschka, Sebastian.Python machine learning. Birmingham, UK: Packt Publishing, 2015. Print.
FAQ 知识库:90+ 篇主题问答导航
README 的 FAQ 一节是作者对数百封读者来信的整理,按主题分类,以下为完整导航(均已转换为仓库根相对路径):
General Questions(通用问题):faq/datascience-ml.md、faq/implementing-from-scratch.md、faq/data-science-career.md、faq/open-source.md、faq/mentor.md、faq/ml-python-communities.md、faq/ml-to-a-programmer.md、faq/ml-curriculum.md、faq/definition_data-science.md、faq/model-selection-in-datascience.md。
Machine Learning Field(机器学习领域):faq/ai-and-ml.md、faq/ml-examples.md、faq/datamining-overview.md、faq/datamining-vs-ml.md、faq/ml-solvable.md、faq/ml-origins.md、faq/classifier-history.md、faq/best-ml-algo.md、faq/classifier-categories.md、faq/difference_classifier_model.md、faq/parametric_vs_nonparametric.md、faq/cost-vs-loss.md。
Cost Functions and Optimization(代价函数与优化):faq/closed-form-vs-gd.md(闭式解 vs 梯度下降 vs SGD vs 小批量)、faq/linear-gradient-derivative.md。
Regression Analysis(回归分析):faq/pearson-r-vs-linear-regr.md。
Tree models(树模型):faq/bagging-boosting-rf.md、faq/decision-tree-disadvantages.md、faq/decision-tree-binary.md、faq/decisiontree-error-vs-entropy.md(配套 faq/decisiontree-error-vs-entropy/decisiontree-error-vs-entropy.ipynb)、faq/random-forest-perform-terribly.md。
Model evaluation(模型评估):faq/overfitting.md、faq/avoid-overfitting.md、faq/number-of-kfolds.md、faq/num-support-vectors.md、faq/evaluate-a-model.md、faq/multiclass-metric.md、faq/choosing-technique.md、faq/clf-behavior-data.md、faq/select_svm_kernels.md、faq/computing-the-f1-score.md。
Logistic Regression(逻辑回归):faq/softmax_regression.md、faq/logistic_regression_linear.md、faq/probablistic-logistic-regression.md、faq/regularized-logistic-regression-performance.md、faq/naive-bayes-vs-logistic-regression.md、faq/softmax.md、faq/logisticregr-neuralnet.md、faq/logistic-why-sigmoid.md、faq/logistic-analytical.md。
Neural Networks and Deep Learning(神经网络与深度学习):faq/difference-deep-and-normal-learning.md、faq/visual-backpropagation.md、faq/inventing-deeplearning.md、faq/deep-learning-resources.md、faq/many-deeplearning-libs.md、faq/deeplearning-criticism.md、faq/deeplearn-vs-svm-randomforest.md、faq/neuralnet-error.md、faq/nnet-debugging-checklist.md、faq/diff-perceptron-adaline-neuralnet.md、faq/dropout.md。
其他监督学习 / 无监督 / 半监督 / 集成:faq/lazy-knn.md(KNN 惰性学习)、faq/issues-with-clustering.md、faq/semi-vs-supervised.md、faq/logistic-boosting.md。
预处理、特征选择与提取:faq/scale-training-test.md、faq/dimensionality-reduction.md、faq/lda-vs-pca.md、faq/when-to-standardize.md、faq/pca-scaling.md、faq/large-num-features.md、faq/missing-data.md、faq/feature_sele_categories.md、faq/dataprep-vs-dataengin.md、faq/bag-of-words-sparsity.md。
Naive Bayes(朴素贝叶斯):faq/naive-naive-bayes.md、faq/naive-bayes-boundary.md、faq/naive-bayes-vartypes.md。
其他概念 / 语言与库:faq/euclidean-distance.md、faq/median-vs-mean.md、faq/r-in-datascience.md、faq/tensorflow-vs-scikitlearn.md。
关于本书:faq/copyright.md、faq/different.md、faq/py2py3.md、faq/technologies.md、faq/version.md、faq/why-python.md、faq/underscore-convention.md、faq/return_self_idiom.md、faq/prerequisites.md、faq/svm_for_categorical_data.md(原 README 中该链接路径有笔误,此处已按实际文件修正)。
这些 FAQ 大多配有对应示意图或可运行 Notebook(例如 faq/decisiontree-error-vs-entropy/ 下的熵与误差对比实验、faq/median-vs-mean/ 下的均值中位数对比),可直接作为补充实验素材。
如何开始使用本仓库
- 搭建环境:按 code/ch01/README.md 安装 Python 3.4+ 与核心依赖,或直接使用 Anaconda 发行版;用 code/check_environment.ipynb 一键自检。
- 运行 Notebook:进入对应章节目录(如 code/ch02),启动
jupyter notebook打开 ch02.ipynb 逐单元执行。 - 准备数据:从 code/datasets/ 取用对应章节所需数据集(多数章节也可直接从 sklearn 或书中链接在线加载)。
- 对照源码:需要更聚焦代码而非 Notebook 时,可直接阅读 code/optional-py-scripts/ 的
.py版本或各章工程(如 code/ch09/movieclassifier/、code/ch12/neuralnet.py)。 - 深入主题:对某个概念存疑时,优先检索 faq/ 知识库;公式推导可查阅 docs/equations/pymle-equations.pdf;已知问题对照 docs/errata.md。
总结
《Python Machine Learning》第 1 版代码仓库是一套"理论—代码—数据—答疑"闭环的学习资源:13 章 Notebook 覆盖从感知机、scikit-learn 分类器、数据预处理、降维、模型评估、集成学习,到情感分析、Web 部署、回归、聚类与神经网络/深度学习全流程;code/datasets/ 提供全部配套数据;faq/ 则是约 90 篇可检索的概念答疑库。对希望以"从零手写实现 + 主流库实战"双路径入门机器学习的开发者而言,本仓库既是一份可复现的代码索引,也是一套值得反复查阅的技术参考手册。注意其内容基于第 1 版(2015 年)技术栈(如 Theano、Keras 早期 API),运行于现代环境时需留意依赖版本差异,具体版本要求以 code/ch01/README.md 为准。
- 机器学习
- 教程
【免费下载链接】python-machine-learning-book
The "Python Machine Learning (1st edition)" book code repository and info resource
相关推荐
Python Machine Learning 代码仓库指南:环境搭建与 13 章 Notebook 导航全解析
Python Machine Learning 代码仓库指南:环境搭建与 13 章 Notebook 导航全解析 《Python Machine Learnin
机器学习教程Python Machine Learning 仓库 FAQ 知识库完全指南:90 余篇机器学习常见问题的分类索引与实践脉络
Python Machine Learning 仓库 FAQ 知识库完全指南:90 余篇机器学习常见问题的分类索引与实践脉络 faq/README.md 是《P
机器学习教程推荐文章:探索机器学习的宝藏——《Python Machine Learning》第二版开源代码库
推荐文章:探索机器学习的宝藏——《Python Machine Learning》第二版开源代码库 在数据驱动的时代,机器学习已成为解锁数据潜能的关键。对于渴望
示例工程机器学习深度学习
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考