An Introduction to scikit-learn (I)
Gaël Varoquaux - INRIA
Jake Vanderplas - University of Washington
Olivier Grisel -
Gaël Varoquaux is an INRIA faculty researcher working on computational science for brain imaging in the Neurospin brain research institute (Paris, France). He uses machine learning to develop statistical models and algorithms mining brain activity data. He dreams of making advanced data-processing techniques available across new fields via easy-to-use, inter-disciplinary, open-source, scientific software, in Python. For this purpose, he is a core developer of major Python modules for scientific data analysis (scikit-learn, Mayavi, joblib), and often teaches scientific computing with Python using http://scipy-lectures.github.com. His travels and rants can be found at http://gael-varoquaux.info
Jake Vanderplas is an NSF postdoctoral research fellow, working jointly between the Astronomy and Computer Science departments at the University of Washington, and is interested in topics at the intersection of large-scale machine learning and wide-field astronomical surveys. He is co-author of the book “Statistics, Data Mining, and Machine Learning in Astronomy”, which will be published by Princeton press later this year. In the Python world, Jake is the author of AstroML, and a maintainer of Scikit-learn & Scipy. He gives regular talks and tutorials at various Python conferences, and occasionally blogs his thoughts and his code at Pythonic Perambulations: http://jakevdp.github.com.
Olivier Grisel is an independent Software Engineer expert in Machine Learning specializing in Text Analytics and Natural Language Processing and a regular contributor to the scikit-learn Machine Learning library. http://twitter.com/ogrisel http://ogrisel.com
Machine Learning is the branch of computer science concerned with the development of algorithms which can learn from previously-seen data in order to make predictions about future data, and has become an important part of research in many scientific fields. This set of tutorials will introduce the basics of machine learning, and how these learning tasks can be accomplished using Scikit-Learn, a machine learning library written in Python and built on NumPy, SciPy, and Matplotlib. By the end of the tutorials, participants will be poised to take advantage of Scikit-learn’s wide variety of machine learning algorithms to explore their own data sets. The tutorial will comprise two sessions, Session I in the morning (intermediate track), and Session II in the afternoon (advanced track). Participants are free to attend either one or both, but to get the most out of the material, we encourage those attending in the afternoon to attend in the morning as well.
Session I will assume participants already have a basic knowledge of using numpy and matplotlib for manipulating and visualizing data. It will require no prior knowledge of machine learning or scikit-learn. The goals of Session I are to introduce participants to the basic concepts of machine learning, to give a hands-on introduction to using Scikit-learn for machine learning in Python, and give participants experience with several practical examples and applications of applying supervised learning to a variety of data. It will cover basic classification and regression problems, regularization of learning models, basic cross-validation, and some examples from text mining and image processing, all using the tools available in scikit-learn.
Tutorial 1 (intermediate track)
- 0:00 - 0:15 -- Setup and Introduction
- 0:15 - 0:30 -- Quick review of data visualization with matplotlib and numpy
- 0:30 - 1:00 -- Representation of data in machine learning
- Downloading data within scikit-learn
- Categorical & Image data
- Exercise: vectorization of text documents
- 1:00 - 2:00 -- Basic principles of Machine Learning & the scikit-learn interface
- Supervised Learning: Classification & Regression
- Unsupervised Learning: Clustering & Dimensionality Reduction
- Example of PCA for data visualization
- Flow chart: how do I choose what to do with my data set?
- Exercise: Interactive Demo on linearly separable data
- Regularization: what it is and why it is necessary
- 2:00 - 2:15 -- Break (possibly in the middle of the previous section)
- 2:15 - 3:00 -- Supervised Learning
- Example of Classification: hand-written digits
- Cross-validation: measuring prediction accuracy
- Example of Regression: boston house prices
- 3:00 - 4:15 -- Applications
- Examples from text mining
- Examples from image processing
This tutorial will use Python 2.6 / 2.7, and require recent versions of numpy (version 1.5+), scipy (version 0.10+), matplotlib (version 1.1+), scikit-learn (version 0.13.1+), and IPython (version 0.13.1+) with notebook support. The final requirement is particularly important: participants should be able to run IPython notebook and create & manipulate notebooks in their web browser. The easiest way to install these requirements is to use a packaged distribution: we recommend Anaconda CE, a free package provided by Continuum Analytics: http://continuum.io/downloads.html or the Enthought Python Distribution: http://www.enthought.com/products/epd_free.php