This notebook is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
There was an emphasis on learning what "Pythonic" code looks like and how to write code that looks similar to the "best practices" followed in industry.
There was an emphasis on using numpy
to speed up and optimize your code whenever possible.
There was an emphasis on using pandas
to store and manipulate your data whenever possible.
There was an emphasis on making extensive use of matplotlib
and seaborn
to explore and analyze your data.
Examples of advanced usage: animations, widget-based dashboards
System dynamics are good when you want a big picture overview of how a time-dependent system behaves, but you don't necessary understand or know the underlying microscopic processes. Can also be used in combination with more sophisticated simulations that do include microscopic mechanisms. Provides a reasonable way to interpret what is going on or to get a feel for how a microscopic model should behave in certain limiting cases.
Cellular automata and their popular cousin agent-based modeling provides a way to model microscopic mechanisms. In some cases, the microscopic mechanisms can give way to macroscopic behavior that you observe in simpler models. Other times, there are simulation regimes that behave in new and expected ways.
Rule-based simulations composed of many individual actors or particles can give rise to emergent phenomena, whereby new collective behaviors that are not "allowed" in the individual rules start to come about.
You understand the basic data structures that are used to represent these systems, and have an idea how you could modify them, and perhaps even implement your own from scratch!
We learned how to use statistical ideas like cross-validation and resampling as part of a model selection procedure.
Being able to compare and rank models is very useful in quantitative studies, and the methods we learned are general in comparison to central-limit theorem based methods.
We saw examples of how we can employ data-driven models and techniques when analyzing the results of a rule-based simulation.
We were introduced to the Python package scikit-learn
and made ample use of pandas DataFrame
s, both of which are cornerstones of data science with Python.
GitHub link: https://github.com/jkglasbrenner/spyns
A general framework for spin-based models and simulations. Examples of spin-based models include the Ising model, the Heisenberg model, voter models, and friends
Current implementation is for periodic lattice systems, but extending it to work on networks will be straightforward and is planned.
These types of models are useful in many scientific disciplines, including condensed matter physics, materials science, and social science.
Under heavy development and the user interface will be changing significantly over the next couple of months, so it's not ready for "production" use, but it's starting to move in that direction. The code is being optimized with Cython as part of this process.
Documentation is currently non-existent aside from the function docstrings. This will change as the user interface stabilizes.
If you find a need for this kind of model, keep an eye on it and contact me regarding what you want to do. Similarly, if a friend/colleague mentions needing it, link them to it!
Think Complexity by Allen Downey: http://greenteapress.com/wp/think-complexity-2e/
Some cool examples: https://nbviewer.jupyter.org/github/AllenDowney/ThinkComplexity2/tree/master/code/
Agent-Based Models: https://nbviewer.jupyter.org/github/AllenDowney/ThinkComplexity2/blob/master/code/chap09soln.ipynb
Herds, flocks, and traffic jams: https://nbviewer.jupyter.org/github/AllenDowney/ThinkComplexity2/blob/master/code/chap10soln.ipynb
Modeling and Simulation in Python by Allen Downey: http://greenteapress.com/wp/modsimpy/
Interactive notebooks: https://mybinder.org/v2/gh/AllenDowney/ModSimPy/master
Data Science from Scratch by Joel Grus: http://a.co/d/0BMoCDb
This book isn't free, but it's an excellent resource for understanding how the many methods found in Data Science are implemented and work. The book is currently being revised for a 2nd edition, which will be based on Python 3.6, so it's worth waiting for that to be released.0W
Machine Learning: An Algorithmic Perspective by Stephen Marsland: http://a.co/d/0ZoAdF3
If Data Science from Scratch is too simple for you, then this is the advanced version. This resource steps through how to implement machine learning algorithms in Python and provides many examples of how to use these algorithms along the way.