This book covers the fundamental concepts in signal processing illustrated with Python code and made available via IPython Notebooks, which are live, interactive, browser-based documents that allow one to change parameters, redraw plots, and tinker with the ideas presented in the text. Everything in the text is computable in this format and thereby invites readers to “experiment and learn” as they read. The book focuses on the core, fundamental principles of signal processing. The code corresponding to this book uses the core functionality of the scientific Python toolchain that should remain unchanged into the foreseeable future. For those looking to migrate their signal processing codes to Python, this book illustrates the key signal and plotting modules that can ease this transition. For those already comfortable with the scientific Python toolchain, this book illustrates the fundamental concepts in signal processing and provides a gateway to further signal processing concepts.
This book covers the key ideas that link probability, statistics, and machine learning illustrated using Python modules in these areas. The entire text, including all the figures and numerical results, is reproducible using the Python codes and their associated Jupyter/IPython notebooks, which are provided as supplementary downloads. The author develops key intuitions in machine learning by working meaningful examples using multiple analytical methods and Python codes, thereby connecting theoretical concepts to concrete implementations. Modern Python modules like Pandas, Sympy, and Scikit-learn are applied to simulate and visualize important machine learning concepts like the bias/variance trade-off, cross-validation, and regularization. Many abstract mathematical ideas, such as convergence in probability theory, are developed and illustrated with numerical examples. This book is suitable for anyone with an undergraduate-level exposure to probability, statistics, or machine learning and with rudimentary knowledge of Python programming.