Course materials for General Assembly's Data Science course in San Francisco (11/30/15 - 3/2/16).
Instructor: Rob Hall
TA's:
- Justin Breucop
- Dave Yerrington
Who | When |
---|---|
Justin | Sundays 3-6pm at GA |
Dave | Fridays 6-8pm at GA |
Rob | Slack and by appointment |
Installation and Setup Checklist
Monday | Wednesday |
---|---|
11/30: Course Overview, Introduction to Data Science | 12/2: Version Control |
12/7: Intro to Python | 12/9: Intro to Machine Learning, KNN |
12/14: NumPy, Pandas, Viz, Model Evaluation | 12/16: Regression & Regularization Project Question & Dataset Due |
12/21: No Class (Holiday Break) | 12/23: No Class (Holiday Break) |
12/28: No Class (Holiday Break) | 12/30: No Class (Holiday Break) |
1/4: Logistic Regression | 1/6: Naive Bayes |
1/11: Clustering | 1/13: APIs & Web Scraping |
1/18: No Class (MLK Day) | 1/20: Advanced Model Evaluation Project First Draft Due |
1/25: Decision Trees | 1/27: Ensembling Techniques |
2/1: Dimensionality Reduction | 2/3: Support Vector Machines |
2/8: Recommender Systems | 2/10: SQL, Databases Project Second Draft Due (Optional) |
2/15: No Class (President's Day) | 2/17: Advanced Topic or Guest Speaker |
2/22: Advanced Topic or Guest Speaker | 2/24: Course Review |
2/29: Project Presentations & Project Due | 3/2: Project Presentations & Project Due |
syllabus last updated: 12/12/2015
- Welcome from General Assembly staff
- Course overview (slides)
- Introduction to data science (slides)
- Command line & exercise (code)
- Exit tickets
Homework:
- Work through GA's friendly command line tutorial using Terminal (Linux/Mac) or Git Bash (Windows), and then browse through this command line reference.
- Watch videos 1 through 8 (21 minutes) of Introduction to Git and GitHub.
- If your laptop has any setup issues, please work with us to resolve them by Wednesday.
Resources:
- For a useful look at the different types of data scientists, read Analyzing the Analyzers (32 pages).
- For some thoughts on what it's like to be a data scientist, read these short posts from Win-Vector and Datascope Analytics.
- Quora has a data science topic FAQ with lots of interesting Q&A.
- Final project presentations from other class
- Q&A on course project expectations & schedule
- Version Control with Git and GitHub (slides)
- Git Configuration and Github setup
- Moved to Class 3: Intro to Python (slides)
- Exit tickets
Homework:
- If you haven't already, complete the homework exercise listed in the command line introduction. Create a Markdown document that includes your answers and the code you used to arrive at those answers. Add this file to a GitHub repo that you'll use for all of your coursework, and submit a link to your repo using the homework submission form.
Git and Markdown Resources:
- Pro Git is an excellent book for learning Git. Read Chapter 1 - Getting Started and Chapter 2 - Git Basics to gain a deeper understanding of version control and basic commands.
- Very quick Git tutorial by Github and Codeschool. Recommended practice!
- Github's Mastering Markdown is a good starting point for learning github-flavored markdown.
- Markdown Cheatsheet provides a thorough set of Markdown examples with concise explanations.
Command Line Resources:
- If you want to go much deeper into the command line, Data Science at the Command Line is a great book. The companion website provides installation instructions for a "data science toolbox" (a virtual machine with many more command line tools), as well as a long reference guide to popular command line tools.
Python Resources:
- Codecademy's Python course: Good beginner material, including tons of in-browser exercises.
- DataQuest: Similar interface to Codecademy, but focused on teaching Python in the context of data science.
- Google's Python Class: Slightly more advanced, including hours of useful lecture videos and downloadable exercises (with solutions).
- A Crash Course in Python for Scientists: Read through the Overview section for a quick introduction to Python.
- Python for Informatics: A very beginner-oriented book, with associated slides and videos.
ML Resources:
- For a more formal, in-depth introduction to machine learning, read section 2.1 (14 pages) of Hastie and Tibshirani's excellent book, An Introduction to Statistical Learning. (It's a free PDF download!)
KNN Resources:
- A Detailed Introduction to KNN is a bit dense, but provides a more thorough introduction to KNN and its applications.
- Browse through the scikit-learn documentation for KNN to get a sense of how it's organized: user guide, module reference, class documentation
- Lab: numpy (notebook)
- Lab: pandas (notebook)
- Lab: Visualization with Bokeh (notebook)
- Model Evaluation, incl. Cross Validation (slides)
- Lab: Cross validation with Python and Scikit-learn (notebook)
Pandas Resources:
- To learn more Pandas, review this three-part tutorial.
- Browsing or searching the Pandas API Reference is an excellent way to locate a function even if you don't know its exact name.
- If you want to go really deep into Pandas (and NumPy), read the book Python for Data Analysis by Wes McKinney, the creator of Pandas. Ping me on Slack for a discount code.
- Here are examples of different types of joins in Pandas, for when you need to figure out how to merge two DataFrames.
- Optional: Read the Teaching Assistant Evaluation dataset into Pandas, create the X and y objects (the response variable is "class attribute"), and go through scikit-learn's 4-step modeling process. (There's no need to submit your code unless you have a question or would like feedback!)
Model Evaluation Resources
- For another explanation of training error versus testing error, the bias-variance tradeoff, and train/test split (also known as the "validation set approach"), watch Hastie and Tibshirani's video on estimating prediction error (12 minutes, starting at 2:34).
- Caltech's Learning From Data course includes a fantastic video on visualizing bias and variance (15 minutes).
- Random Test/Train Split is Not Always Enough explains why random train/test split may not be a suitable model evaluation procedure if your data has a significant time element.
Additional Resources:
- What I do when I get a new data set as told through tweets is a fun (yet enlightening) look at the process of exploratory data analysis.