{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Scikit-Learn: Machine Learning in the Python ecosystem\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
\n", "MLOSS workshop - NIPS 2013
\n", "December 10, 2013
\n", "
\n", "Gilles Louppe ([@glouppe](https://twitter.com/glouppe))
\n", "
\n", "(with Ga\u00ebl Varoquaux ([@GaelVaroquaux](https://twitter.com/GaelVaroquaux))
and Andreas M\u00fcller ([@t3kcit](https://twitter.com/t3kcit)) as backups)
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scikit-Learn\n", "\n", "* Machine learning library written in __Python__\n", "* __Simple and efficient__, for both experts and non-experts\n", "* Classical, __well-established machine learning algorithms__\n", "* __BSD 3 license__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview\n", "\n", "__Supervised learning:__\n", "\n", "* Linear models (Ridge, Lasso, Elastic Net, ...)\n", "* Ensemble methods (Random Forests, Bagging, GBRT, ...)\n", "* Support Vector Machines\n", "\n", "
\n", "A comparison of (some of the) classifiers in Scikit-Learn

\n", "\n", "__Unsupervised learning:__\n", "\n", "* Clustering (KMeans, Ward, ...)\n", "* Matrix decomposition (PCA, ICA, ...)\n", "* Outlier detection\n", "\n", "__Model selection and evaluation:__\n", "\n", "* Cross-validation\n", "* Grid-search\n", "* Lots of metrics\n", "\n", "_... and many more!_ (See our [Reference](http://scikit-learn.org/stable/modules/classes.html))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Collaborative development\n", "\n", "- 10~ core developers (mostly researchers)\n", "- 100+ occasional contributors\n", "- __All working together__ on [GitHub](https://github.com/scikit-learn/scikit-learn)\n", "- Emphasis on __keeping the project maintainable__\n", " - Style consistency\n", " - Unit-test coverage\n", " - Documentation and examples\n", " - Code review\n", " \n", "__Number of commits:__\n", "

\n", "\n", "
\n", "\n", "__Lines of code:__\n", "

\n", "\n", "(Graphs generated by [Ohloh.net](http://www.ohloh.net/p/scikit-learn))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A simple and unified API\n", "\n", "All objects in scikit-learn share a uniform and limited API consisting of three complementary interfaces:\n", "\n", "- an `estimator` interface for building and fitting models;\n", "- a `predictor` interface for making predictions;\n", "- a `transformer` interface for converting data.\n", "\n", "All of them takes as input __data which is structured as Numpy arrays__. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Load data\n", "from sklearn.datasets import load_digits\n", "data = load_digits()\n", "X, y = data.data, data.target\n", "\n", "print X\n", "print X.shape\n", "print X.dtype" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[ 0. 0. 5. ..., 0. 0. 0.]\n", " [ 0. 0. 0. ..., 10. 0. 0.]\n", " [ 0. 0. 0. ..., 16. 9. 0.]\n", " ..., \n", " [ 0. 0. 1. ..., 6. 0. 0.]\n", " [ 0. 0. 2. ..., 12. 0. 0.]\n", " [ 0. 0. 10. ..., 12. 1. 0.]]\n", "(1797, 64)\n", "float64\n" ] } ], "prompt_number": 74 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Consistency across the package makes scikit-learn very usable in practice. Experimenting with different learning algorithms is as simple as changing a class definition." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Instantiate a classifier\n", "from sklearn.tree import DecisionTreeClassifier # Change this\n", "clf = DecisionTreeClassifier() # ... and that\n", "\n", "# Do stuff (and rely on the common interface across estimators)\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.decomposition import PCA\n", "from sklearn.cross_validation import cross_val_score\n", "\n", "pipeline = Pipeline([(\"pca\", PCA(n_components=10)), \n", " (\"classifier\", clf)])\n", "\n", "print \"Accuracy =\", cross_val_score(pipeline, X, y, cv=3).mean()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Accuracy = " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.803544498721\n" ] } ], "prompt_number": 75 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Through __composition interfaces__ (e.g., `Pipeline` and `FeatureUnion`), the library also offers powerful mechanisms to express a wide variety of learning tasks within a small amount of code.\n", "\n", "Finally, through duck-typing, the consistent API leads to a library that is __easily extensible__. It allows user-defined estimators to be easily incorporated into the Scikit-Learn workflow without any explicit object inheritance." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Integration in the scientific Python ecosystem\n", "\n", "- The __open source__ Python ecosystem provides __a standalone, versatile and powerful scientific working environment__, including:\n", " - [NumPy](http://numpy.org) (for efficient manipulation of multi-dimensional arrays);\n", " - [SciPy](http://scipy.org) (for specialized data structures (e.g., sparse matrices) and lower-level scientific algorithms), \n", " - [IPython](http://ipython.org) (for interactive exploration),\n", " - [Matplotlib](http://matplotlib.org) (for vizualization) \n", " - [Pandas](http://pandas.pydata.org/) (for data management and data analysis) \n", " - _(and many others...)_\n", "- Scikit-Learn builds upon NumPy and SciPy and __complements__ this scientific environment with machine learning algorithms;\n", "- By design, Scikit-Learn is __non-intrusive__, easy to use and easy to combine with other libraries.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## End-to-end proof of concept\n", "\n", "Let us illustrate the various components of the scientific Python ecosystem for the analysis of scientific data. \n", "\n", "We consider genetic data from the [HapMap project](http://hapmap.ncbi.nlm.nih.gov/) which catalogs common genetic variants in human beings from different populations in different parts of the world. \n", "\n", "> _Genetics 101._ The DNA in our cells are made of long chains of 4 chemical building blocks (adenine, thymine, cytosine, and guanine) which are strung together in 23 pairs of chromosomes. These genetic sequences contain information that influences our physical traits, our likelihood of suffering from disease, or the responses of our bodies to substances that we encounter in the environment.\n", "\n", "> The genetic sequences of different people are remarkably similar. When the chromosomes of two humans are compared, their DNA sequences can be identical for hundreds of bases. But at about one in every 1200 bases, on average, the sequences differ. These genetic differences are known as single nucleotide polymorphisms (_SNPs_). By identifying most of the approximately 10 million SNPs estimated to occur commonly in the human genome, the HapMap Project is identifying the basis for a large fraction of the genetic diversity in the human species.\n", "\n", "
\n", "
\n", "DNA sequences 1 and 2 are similar to each other,
\n", "except at some specific locations called _SNPs_.
\n", "

\n", "\n", "The HapMap data includes genotypes for 1417 individuals, from 11 human populations from different parts of the world (e.g., Europe, Africa, Asia; see [Appendix A](#appendix-populations)). It regroups genotypes for all SNPs (from all 23 chromosomes) reported by the HapMap genotyping centers. \n", "\n", "From a data management point of view, the HashMap data comes with many of the hurdles of real-world data:\n", "\n", "- It is scattered in [a large collection](http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/) of genotype data files (one per chromosome/population);\n", "- It is large (1417 individuals, millions of SNPs; GBs of raw data);\n", "- SNPs are not all reported for all populations;\n", "- Genotypes are sometimes missing;\n", "- Values are heterogeneous (numbers, strings, symbols). \n", "\n", "We will explore and analyze the HapMap data directly from this IPython session.\n", "\n", "> `IPython` provides an __interactive web-based working environment__ (called _Notebook_) combining code execution, text, plots and media into a single document.\n", "\n", "__Caution!__ _The following analysis is merely an illustration of the capabilities of the Python ecosystem. Don't draw any scientific conclusions from it._" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### a) Downloading the data \n", "\n", "Besides Python code, IPython also allows for the execution of arbitrary `bash` commands, which extends the Python ecosystem with all tools available from the command line. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%bash\n", "# Load the data from chromosome 15\n", "mkdir -p data\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_ASW_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_CEU_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_CHB_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_CHD_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_GIH_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_JPT_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_LWK_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_MEX_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_MKK_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_TSI_r28_nr.b36_fwd.txt.gz\n", "wget -P data http://hapmap.ncbi.nlm.nih.gov/downloads/genotypes/2010-08_phaseII+III/forward/genotypes_chr15_YRI_r28_nr.b36_fwd.txt.gz\n", "for f in data/*.gz; do gunzip $f; done" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "# Look at the 3 first lines of the data \n", "!head -n 3 data/genotypes_chr15_ASW_r28_nr.b36_fwd.txt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "rs# alleles chrom pos strand assembly# center protLSID assayLSID panelLSID QCcode NA19625 NA19700 NA19701 NA19702 NA19703 NA19704 NA19705 NA19708 NA19712 NA19711 NA19818 NA19819 NA19828 NA19835 NA19834 NA19836 NA19902 NA19901 NA19900 NA19904 NA19919 NA19908 NA19909 NA19914 NA19915 NA19916 NA19917 NA19918 NA19921 NA20129 NA19713 NA19982 NA19983 NA19714 NA19985 NA19984 NA20128 NA20126 NA20127 NA20277 NA20276 NA20279 NA20282 NA20281 NA20284 NA20287 NA20288 NA20290 NA20289 NA20291 NA20292 NA20295 NA20294 NA20297 NA20300 NA20298 NA20301 NA20302 NA20317 NA20319 NA20322 NA20333 NA20332 NA20335 NA20334 NA20337 NA20336 NA20340 NA20341 NA20343 NA20342 NA20344 NA20345 NA20346 NA20347 NA20348 NA20349 NA20350 NA20351 NA20357 NA20356 NA20358 NA20359 NA20360 NA20363 NA20364 NA20412\r\n", "rs7494890 C/T chr15 18275409 + ncbi_b36 sanger urn:LSID:illumina.hapmap.org:Protocol:Human_1M_BeadChip:3 urn:LSID:sanger.hapmap.org:Assay:H1Mrs7494890:3 urn:lsid:dcc.hapmap.org:Panel:US_African-30-trios:4 QC+ TT TT TT TT TT TT TT TT TT CT TT CT CT TT CT TT TT TT TT TT TT TT TT TT TT CT TT CT CT CT TT TT TT TT TT TT TT TT TT TT TT TT TT CT TT TT TT TT TT TT TT TT TT TT TT TT CT CT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT TT CT CC TT TT TT\r\n", "rs12900938 C/T chr15 18294933 + ncbi_b36 sanger urn:LSID:illumina.hapmap.org:Protocol:Human_1M_BeadChip:3 urn:LSID:sanger.hapmap.org:Assay:H1Mrs12900938:3 urn:lsid:dcc.hapmap.org:Panel:US_African-30-trios:4 QC+ CT CT TT TT CT TT TT TT CT TT TT TT TT TT TT TT TT TT TT CT TT TT TT CT TT TT TT TT TT TT CT TT TT CT CT CT TT TT TT TT CT CT TT TT TT TT TT TT TT TT TT CC NN TT CT TT TT TT TT TT CT TT TT TT CT TT TT TT TT CT CT TT TT TT TT TT TT TT CT TT CT TT TT TT TT TT TT\r\n" ] } ], "prompt_number": 76 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### b) Data preprocessing with `pandas` and `sklearn`\n", "\n", "Scikit-Learn expects input __data__ to be represented __as two-dimensional NumPy arrays of numerical values__. In our case, the HapMap data is not represented in this way and needs to be preprocessed to conform to our standards.\n", "\n", "We rely on the `pandas` module for loading, converting and merging the datafiles into a single NumPy array. \n", "\n", "> The `pandas` module aims at providing fast, flexible and expressive data structures designed to make working with labeled or relational data both easy and intuitive. It is one of the most powerful and flexible Python packages for data manipulation. In particular, `pandas` integrates into the scientific Python ecosystem by providing NumPy-compatible data structures and tools for easily converting data from one format to another." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import pandas as pd\n", "\n", "def load_genotypes(filename, population):\n", " # Load the data into a dataframe\n", " df = pd.read_csv(filename, sep=\" \", index_col=0)\n", "\n", " # Map genotypes to 0-1-2 values\n", " mask = df.alleles == 'A/C'\n", " df[mask] = df[mask].replace(to_replace=['AA', 'AC', 'CC'], \n", " value=[0, 1, 2])\n", " mask = df.alleles == 'A/G'\n", " df[mask] = df[mask].replace(to_replace=['AA', 'AG', 'GG'], \n", " value=[0, 1, 2])\n", " mask = df.alleles == 'A/T'\n", " df[mask] = df[mask].replace(to_replace=['AA', 'AT', 'TT'], \n", " value=[0, 1, 2])\n", " mask = df.alleles == 'C/G'\n", " df[mask] = df[mask].replace(to_replace=['CC', 'CG', 'GG'], \n", " value=[0, 1, 2])\n", " mask = df.alleles == 'C/T'\n", " df[mask] = df[mask].replace(to_replace=['CC', 'CT', 'TT'], \n", " value=[0, 1, 2])\n", " mask = df.alleles == 'G/T'\n", " df[mask] = df[mask].replace(to_replace=['GG', 'GT', 'TT'], \n", " value=[0, 1, 2])\n", " \n", " # Replace missing value placeholders\n", " df.replace(to_replace='NN', value=-1, inplace=True)\n", "\n", " # Copy data into a new frame\n", " individuals = df.columns[10:]\n", " snps = df.index\n", "\n", " new_df = pd.DataFrame(index=individuals)\n", " new_df[\"population\"] = population\n", " new_df[snps] = df[individuals].T\n", " new_df = new_df.convert_objects()\n", "\n", " # Drop SNPs corresponding to deletions/insertions\n", " new_df = new_df.drop(new_df.columns[new_df.dtypes == \"object\"][1:], axis=1)\n", "\n", " return new_df\n", "\n", "# Concatenate all files and only keep common SNPs\n", "filename = \"genotypes_chr15_%s_r28_nr.b36_fwd.txt\"\n", "populations = [\"ASW\", \"CEU\", \"CHB\", \"CHD\", \"GIH\", \"JPT\", \n", " \"LWK\", \"MEX\", \"MKK\", \"TSI\", \"YRI\"]\n", "\n", "df = pd.concat([load_genotypes(filename % population, population) \n", " for population in populations], \n", " join=\"inner\")\n", "\n", "# Convert to Numpy arrays\n", "snps = df.columns[1:]\n", "X = df[snps].values.astype(np.int8)\n", "y = df[\"population\"].values.astype(np.str)\n", "\n", "# Save for later\n", "np.savez(\"data/chr15-all-numpy.npz\", X=X, y=y, snps=snps)\n", "\n", "# Warning! This takes long..." ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "# To save time, let us load the binary files generated above\n", "import numpy as np\n", "\n", "data = np.load(\"data/chr15-all-numpy.npz\")\n", "snps = data[\"snps\"]\n", "X = data[\"X\"]\n", "y = data[\"y\"]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 77 }, { "cell_type": "code", "collapsed": false, "input": [ "print \"SNPs =\", snps[:10]\n", "print \"X =\", X\n", "print \"X.shape =\", X.shape\n", "print \"y =\", y" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "SNPs = Index([u'rs7494890', u'rs12900938', u'rs12905389', u'rs10163108', u'rs6599770', u'rs7171651', u'rs7170864', u'rs12440100', u'rs10152550', u'rs12906138'], dtype=object)\n", "X = [[2 1 2 ..., 1 1 1]\n", " [2 1 2 ..., 1 0 1]\n", " [2 2 2 ..., 2 1 2]\n", " ..., \n", " [1 2 1 ..., 1 0 1]\n", " [2 2 2 ..., 2 2 2]\n", " [1 2 1 ..., 2 1 2]]\n", "X.shape = (1417, 33800)\n", "y = ['ASW' 'ASW' 'ASW' ..., 'YRI' 'YRI' 'YRI']\n" ] } ], "prompt_number": 78 }, { "cell_type": "code", "collapsed": false, "input": [ "# Limit to 3000 SNPs for faster interactions\n", "snps = snps[:3000]\n", "X = X[:, :3000]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 79 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Data is now converted to NumPy arrays. However, it still contains missing values (marked as `-1`) that need to be filled before being fed to Scikit-Learn estimators.\n", "\n", "As a last preprocessing step, we rely on tools from the `sklearn.preprocessing` submodule to replace missing values. \n", "\n", "> The `sklearn.preprocessing` submodule includes algorithms for encoding, normalizing or imputing data. All are offered as transformers." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print \"Before imputation:\", np.unique(X)\n", "\n", "from sklearn.preprocessing import Imputer\n", "imputer = Imputer(missing_values=-1, strategy=\"most_frequent\")\n", "X = imputer.fit_transform(X)\n", "\n", "print \"After imputation:\", np.unique(X)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Before imputation: " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "[-1 0 1 2]\n", "After imputation:" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " [ 0. 1. 2.]\n" ] } ], "prompt_number": 80 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### c) Data visualization with `matplotlib` \n", "\n", "In exploratory analysis, data visualization plays an important role in identifying interesting patterns. Representing your data graphically allows to visualize quantities and relationships that are otherwise difficult to interpret. In particular, when tackling a new problem, visualization often helps to quickly grasp what is going on in the data.\n", "\n", "We rely on the `matplotlib` module for generating our figures and plots.\n", "\n", "> The `matplotlib` module is a plotting library for producing high-quality figures with fine-grained layout control. It integrates into the IPython shell (\u00e0 la MATLAB) to provide an interactive environement." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Project the data to a 2D space for visualization\n", "from sklearn.decomposition import RandomizedPCA\n", "Xp = RandomizedPCA(n_components=2, random_state=1).fit_transform(X)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 81 }, { "cell_type": "code", "collapsed": false, "input": [ "# Setup matplotlib to work interactively\n", "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "\n", "# Plot individuals \n", "populations = np.unique(y)\n", "colors = plt.get_cmap(\"hsv\")\n", "plt.figure(figsize=(10, 4))\n", "\n", "for i, p in enumerate(populations):\n", " mask = (y == p)\n", " plt.scatter(Xp[mask, 0], Xp[mask, 1], \n", " c=colors(1. * i / 11), label=p)\n", " \n", "plt.xlim([-30, 50])\n", "plt.legend(loc=\"best\")\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nrkJggg==\n", "text": [ "" ] } ], "prompt_number": 82 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this plot, we observe that individuals from a same population are clustered together, which confirms that they share the same genetic variants. \n", "\n", "We also observe that some populations are grouped together into larger clusters (Asian people (CHN, CHD, JPT); African people (MKK, LWK, YRI); Caucasian people (CEU, TSI)), which suggests that individuals from those populations share common ancestors." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### d) Learn from the data with `sklearn`\n", "\n", "We now consider the learning task that consists in predicting the population of an individual given his genotype.\n", "\n", "Let us first learn a simple linear model." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.cross_validation import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)\n", "\n", "from sklearn.linear_model import RidgeClassifierCV\n", "clf = RidgeClassifierCV().fit(X_train, y_train)\n", "clf.score(X_test, y_test)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 83, "text": [ "0.63098591549295779" ] } ], "prompt_number": 83 }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.metrics import confusion_matrix\n", "\n", "def print_cm(cm, labels):\n", " # Nicely print the confusion matrix\n", " print \" \" * 4,\n", " for label in labels:\n", " print \" %s\" % label,\n", " print\n", " \n", " for i, label1 in enumerate(labels):\n", " print label1,\n", " for j, label2 in enumerate(labels):\n", " print \"%4d\" % cm[i, j],\n", " print\n", " \n", "print_cm(confusion_matrix(y_test, \n", " clf.predict(X_test), \n", " labels=populations), populations)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " ASW CEU CHB CHD GIH JPT LWK MEX MKK TSI YRI\n", "ASW 12 3 0 0 0 1 0 0 0 0 6\n", "CEU 0 30 3 0 0 3 0 2 0 4 2\n", "CHB 0 4 11 8 0 8 0 0 0 0 2\n", "CHD 0 3 7 13 0 3 0 0 0 0 1\n", "GIH 0 2 0 0 23 1 0 0 0 2 0\n", "JPT 0 0 9 4 0 18 0 0 0 0 0\n", "LWK 2 0 1 1 0 1 16 0 4 1 8\n", "MEX 0 0 0 2 0 0 0 15 0 0 0\n", "MKK 0 2 0 0 0 0 1 0 41 0 1\n", "TSI 0 12 3 0 0 0 0 4 0 9 0\n", "YRI 2 3 2 0 0 1 1 0 1 0 36\n" ] } ], "prompt_number": 85 }, { "cell_type": "markdown", "metadata": {}, "source": [ "By examining the confusion matrix, we observe that errors mainly happen within the larger clusters previously highlighted. For example, people from Tuscany (TSI) are often wrongly predicted as Utah residents (CEU) - both indeed have European ancestors and were clustered together - but are never as people from Asia. \n", "\n", "Let us now examine the coefficients of the learned model." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Plot coefficients\n", "coef = np.mean(np.abs(clf.coef_), axis=0)\n", "\n", "plt.figure(figsize=(10, 4))\n", "plt.bar(range(len(snps)), coef)\n", "plt.show()\n", "\n", "# Top 10 SNPs\n", "indices = np.argsort(coef)[::-1]\n", "\n", "for i in range(10):\n", " print coef[indices[i]], snps[indices[i]]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\npZqaNE3lyK7LnA1nuqoy6xqOKk1nh2jSrarjUMliY0NuNtnU1aVJd27t2NmWZPKYzm3z1eldn161\ntv7clF8/iFbuAAAabUlEQVRnU7mHbi1Mru3nOkImOWQ6Vl0vRs8yuzHVhTOeM64prGp6UiaHKS1d\nOFm6JjtVxXHeU9WTTj6THcnSt5XZJLcQ9r+N6JTZdtTb1m6c8UzrvGxtWlUWG3Ryy/LzC6uUjhw5\nIhobG8XChQvF7t27pWGeeuopsWDBArF06VIxPj4uhBDipz/9qWhvbxeJREKsWbNG7Nu3r1AAjXJN\nxpd737lw3U38zP+5YXTyqR5spjA2jc7UuGyNQdcQVfqR6cCmsblpFPq6la9jMdmDTmadrmxtxKRb\nVVyVLDobNdmBTn6Z3CbdebFjme5NZdfJq9OnzOnTlc22fdiWX2dTunyd+cjSMMmhk1+me116qvrM\nDW+aZVDpT1ZOm7A6+3H+Vb1I65ZdmOrOjSwq/TrzMslnsiNZ+rYym+RW6Ul1z5SOrQ3r8jHZvk2b\nU8njFp3csvz8wiql5uZmceTIETE5OSkWL14spqam8u6nUimxcuVKMT09LQYGBsS6deuEEEK8+eab\n4vjx40IIIaampsSCBQvEuXPn8gUwdGheKkZ2Txc/839uGC/y2Ya1iVdQUZq4MgBoF9deTadampbO\nuN2USZWerm7cNHCTzDpd2drImjVrCuI548viqmRR6ULn8Mgw6b8wTLVUNrd2rHrw2erCJl+nrp1l\nspFTJqNcf9UF7UBnzzb5OvORpWGqB2c41Uiac/TcJJ+pvlV1odKfrJw2YXNtKfda7iiZTl82ecrC\nm+xUFcd5T2enKvlMduS8rpum1ulZNrKUue/mwxe9ftQfGZnsximvqYy2NqwqSy668qviyfLzC2NK\n77zzjmhubs6eb9y4UQwODuaF2b17t3jmmWey5/X19dK0/vAP/1D8+7//e74Alp2FaU7dpmNRxc/8\nnxvGrXxuwtrEc6KLK8Ndelc/FnDqQKU/r43CptHZ5KmqK2feOl25tZFcG5R1jm6G1N3oUoU8TnXB\nQ8ytXt3UsUwe07lNvrlxnP/byrlmzZpsXdnqT3ZdV4/O0VtZfiZbdGPfuvg2enYesuUBth+sqGSV\nxXHqxsYenSNzqi/SZXnKRvXcODSqutfJrorr/KuzX/nHXGaZdR+rqEYRnch0YNKPriwqMvd0a1pt\n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\nyoc9AAAAAElFTkSuQmCC\n", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.0848131341116 rs6497292\n", "0.0836956330076 rs10451027\n", "0.0806013765047 rs10152550\n", "0.076076994518 rs4887567\n", "0.0719622014853 rs7161804\n", "0.0718253208302 rs4906820\n", "0.0616491365731 rs12900228\n", "0.0597368222807 rs6602936\n", "0.0558123165311 rs7164409\n", "0.0545777401193 rs8034210\n" ] } ], "prompt_number": 84 }, { "cell_type": "markdown", "metadata": {}, "source": [ "As indicated by dbSNP, [rs6497292](http://www.ncbi.nlm.nih.gov/projects/SNP/snp_ref.cgi?rs=6497292) happens to be located in gene [HERC2 (8924)](http://www.ncbi.nlm.nih.gov/gene?cmd=Retrieve&dopt=Graphics&list_uids=8924), known to be associated with skin/hair/eye pigmentation variability. It is therefore not surprising to find this SNP at the top of the ranking.\n", "\n", "The same kind of analysis can be carried out with other models from Scikit-Learn. For example, using a forest of randomized trees yields the following results:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.ensemble import ExtraTreesClassifier\n", "clf = ExtraTreesClassifier(n_estimators=100, \n", " max_features=0.2, \n", " n_jobs=2,\n", " random_state=1).fit(X_train, y_train)\n", "clf.score(X_test, y_test)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 86, "text": [ "0.73802816901408452" ] } ], "prompt_number": 86 }, { "cell_type": "code", "collapsed": false, "input": [ "print_cm(confusion_matrix(y_test, \n", " clf.predict(X_test), \n", " labels=populations), populations)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " ASW CEU CHB CHD GIH JPT LWK MEX MKK TSI YRI\n", "ASW 3 0 0 0 0 0 0 1 6 0 12\n", "CEU 0 43 0 0 0 0 0 0 0 1 0\n", "CHB 0 0 21 12 0 0 0 0 0 0 0\n", "CHD 0 0 1 25 0 1 0 0 0 0 0\n", "GIH 0 3 0 0 23 0 0 0 0 2 0\n", "JPT 0 0 1 9 0 21 0 0 0 0 0\n", "LWK 0 0 0 0 0 0 13 0 8 0 13\n", "MEX 0 4 0 1 0 0 0 10 0 2 0\n", "MKK 0 0 0 0 0 0 0 0 45 0 0\n", "TSI 0 15 0 0 1 0 0 0 0 12 0\n", "YRI 0 0 0 0 0 0 0 " ] }, { "output_type": "stream", "stream": "stdout", "text": [ " 0 0 0 46\n" ] } ], "prompt_number": 87 }, { "cell_type": "code", "collapsed": false, "input": [ "# Plot importances\n", "importances = clf.feature_importances_\n", "\n", "plt.figure(figsize=(10, 4))\n", "plt.bar(range(len(snps)), importances)\n", "plt.show()\n", "\n", "# Top 10 SNPs\n", "indices = np.argsort(importances)[::-1]\n", "\n", "for i in range(10):\n", " print importances[indices[i]], snps[indices[i]]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\na+6vROM6mf3DKn98n04eD2PXMRnwRY/HZMe50zZzakdsWuuALN35bXKdk1+2nNqUqO7x77OhTBky\nJgO8mGUlJSWWacPLzemdTZjel1ksu/L+f//3zxZllEWli847EZPmz382541fV2z5ExZpYsuMr6tV\nvSfLOXHiRFSeZMq0ShNdp0Trj87n1K8T+uij8BOpnfvfuiyr9JPbxPop107lObU9Om10Hqv6WH0+\nIef+N9dj8v34+Hua3H6/tqm/U9ukyf3Zqi5Oeazq47TOZLZbIk7jKdlxblVWonFsVYbTuLWqkzlN\niSb73eozu7yJxnWyaexEz1NWbU92Poku77JNWU75y2QYHyVMc2UunFwWP/cm6lfze6d9NlG5sXWL\nrb/d+LJjt+5k9qFUxnqq5ZdZLLObNxLNv3afXVnXlePhlTS///3vTeuzqpPVOE60zZJr90cf2Y2p\ndOa3yc8//th8zLDrS6vPk922qXP8803Lli3T0NBQ5P3Zs2d1yy23xKTx+/06d+5c5P2FCxdUU1Oj\nhoaGuLx+vz9S7uDgoCRpcHBQy5Yts1x/bW2txdJ0OsBpcDiVm8y6Uj0QJ0qbTj3TLSuVclMpM9k0\nydYv035M9uCbaF1OE3Eq7XGSzW2WbtpclpFKWdlKYyWVL4iprCuTPrI7uKZbdroHjVy3M5kyM+3H\nbNUjG+Vma55LJsjJllSOB1bzYjYDlnSP36mUb/VvonTWaa3jltQ5njkrLy+XJPX392vevHnq7e3V\nrl27YtL4/X5t375d9957r44dOyav1ytJuu6662zz+v1+HThwQI8++qgOHDgQF/CFvf7665m1DgAA\noMAkvKzZ2dmptrY2Xb58WVu2bFFlZaW6u7slSW1tbWpsbNTy5cvV0NAgj8ejgwcPOuaVpPvvv1/f\n+MY3NH/+fN1888165JFHctQ8AACAwlJipPYDMAAAAOSQ42/O8qW/v19er1d1dXXq6urKd3WKyg03\n3KCbbrpJS5YsUWNjoyTp0qVLWrdunebNm6e77rpL7777biT9k08+qbq6Ovl8Pr300kv5qnZBaW1t\n1ezZs7Vw4cLIsnT6eHBwUDfffLNqamr0ve99b0rbUGis+ryjo0Nz5szRkiVLtGTJEh05ciTyGX2e\nuTfffFO33XabFixYoEAgoJ6eHkmM9Vyy63PGeu58+OGH8vv9Wrx4sW655RY9/vjjkqZgnGflns8s\nS/TgW6TvhhtuMMbGxmKW2T0U+K233jLmz59v/P73vzf6+vqMJUuW5KPKBae/v994+eWXjRtvvDGy\nLJ0+/uu//mvjZz/7mTE6Omp88YtfNAYGBqa8LYXCqs87OjqMffv2xaWlz7PjT3/6U+R5lRcuXDA+\n97nPGe+88w5jPYfs+pyxnlvvvfeeYRiG8eGHHxoLFiwwXnvttZyPc9edORsfH5ckrVy5UtXV1Wpq\nalIwGMxzrYqLYbqSHQqFtHHjRl199dVqbW2N9HcwGFRzc7PmzZunVatWyTAMXbp0KR9VLigrVqxQ\nRUVFzLJU+jj8Dex3v/ud7r77bn3qU5/SV7/6VfYDB1Z9Llk/toc+z46//Mu/1OLFiyVJlZWVWrBg\ngQYGBhjrOWTX5xJjPZeuueYaSdK7776riYkJXX311Tkf564LzgYGBlRfXx957/P5dOrUqTzWqLiU\nlJToS1/6ku666y4dPnxYUmyf19fXKxQKSZocZOG7byVp/vz5kc+QmlT6OBgM6vXXX9f1118fWc5+\nkJ6uri7dcssteuSRRyJfLEKhEH2eZa+//rrOnj2rxsZGxvoUCfd5+BFVjPXc+fjjj7Vo0SLNnj1b\nmzZt0rx583I+zl0XnCG3fv3rX+u3v/2tvv/972v79u367//+75QeCmz3gGE4y7SPU8mPSffff7/O\nnz+vY8eOaXh4OHKXuVVf0ufpu3Tpku6++249/vjj+ou/+AvG+hSI7vNPfvKTjPUcKy0t1W9/+1u9\n/vrreuqpp3TmzJmcj3PXBWfJPPgW6fv0pz8tSfJ6vbrzzjv1r//6r7YPBTY/YHhoaMj2gcFwlmof\nf/7zn9dbb70VWX7u3Dn2gxRdf/31KikpUXl5ub7zne/o5z//uST6PJsuX76sr33ta/rmN7+pdevW\nSWKs55pVnzPWp8YNN9ygL3/5ywoGgzkf564LzqIffDsyMqLe3t7IaVtk5v3334+c7r5w4YKOHTum\n5ubmyEOBP/jgg5iHAjc2NurYsWP6wx/+oL6+PpWWlmrWrFn5bELBSqeP6+vr9bOf/Uyjo6P6+c9/\nzn6Qoj/96U+SpImJCfX09OjLX/6yJPo8WwzD0MaNG3XjjTfqgQceiCxnrOeOXZ8z1nNndHRUFy9e\nlCSNjY3pxRdf1Lp163I/zrN1N0M29fX1GfX19UZtba3xxBNP5Ls6ReONN94wFi1aZCxatMj40pe+\nZPz4xz82DMMw3nnnHePOO+805s6da6xbt864dOlSJE9nZ6dRW1treL1eo7+/P19VLyj33HOP8elP\nf9qYMWOGMWfOHOPAgQNp9fHZs2eNJUuWGDfccIPx4IMP5qMpBSPc55/4xCeMOXPmGD/+8Y+Nb37z\nm8bChQuNpUuXGtu2bYu5S5k+z9zJkyeNkpISY9GiRcbixYuNxYsXG0eOHGGs55BVn//iF79grOfQ\nf/zHfxhLliwxbrrpJqOpqcn4p3/6J8Mw0jtuptLnPIQWAADARVx3WRMAAGA6IzgDAABwEYIzAAAA\nFyE4AwAAcBGCMwAAABchOAMAAHARgjMAAAAXITgDAABwkf8DE05LFSzdp6YAAAAASUVORK5CYII=\n", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "0.017715578803 rs1800410\n", "0.01274291206 rs728404\n", "0.0121761568447 rs2719921\n", "0.0105565204679 rs3883068\n", "0.010513859461 rs2739811\n", "0.0104700121838 rs4932620\n", "0.0101585372114 rs2739804\n", "0.00921181949862 rs12593141\n", "0.00900805253712 rs6497292\n", "0.0081780757186 rs2719923\n" ] } ], "prompt_number": 88 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Results are not the same as previously. However SNPs that are reported are still meaningful: [rs1800410](http://www.ncbi.nlm.nih.gov/projects/SNP/snp_ref.cgi?rs=1800410) is located within gene [OCA2 (4948)](http://www.ncbi.nlm.nih.gov/gene?cmd=Retrieve&dopt=Graphics&list_uids=4948), known to be associated with oculocutaneous (eyes and skin) albinism.\n", "\n", "Overall, this suggests that there is no single SNP responsible alone for how populations look. Instead, and as expected, traits are dilluted all along the genome and there exist multiple genetic variants that can be used to identify an individual." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusions\n", "\n", "Python data-oriented packages tend to complement and integrate smoothly with each other. Together, they provide __a powerful, flexible and coherent working environment__ for real-world scientific data analysis.\n", "\n", "__Scikit-Learn complements this ecosystem with machine learning algorithms__ and data analysis utilities." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "## Appendix A: Populations from the HapMap data\n", "\n", "- ASW: African ancestry in Southwest USA\n", "- CEU: Utah residents with Northern and Western European ancestry from the CEPH collection\n", "- CHB: Han Chinese in Beijing, China\n", "- CHD: Chinese in Metropolitan Denver, Colorado\n", "- GIH: Gujarati Indians in Houston, Texas\n", "- JPT: Japanese in Tokyo, Japan\n", "- LWK: Luhya in Webuye, Kenya\n", "- MEX: Mexican ancestry in Los Angeles, California\n", "- MKK: Maasai in Kinyawa, Kenya\n", "- TSI: Tuscan in Italy\n", "- YRI: Yoruban in Ibadan, Nigeria (West Africa)" ] } ], "metadata": {} } ] }