{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 01 - Introduction to Machine Learning\n", "\n", "by [Alejandro Correa Bahnsen](http://www.albahnsen.com/) & [Iván Torroledo](http://www.ivantorroledo.com/)\n", "\n", "version 1.3, May 2018\n", "\n", "## Part of the class [Applied Deep Learning](https://github.com/albahnsen/AppliedDeepLearningClass)\n", "\n", "\n", "\n", "This notebook is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US). Special thanks goes to [Jake Vanderplas](http://www.vanderplas.com)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What is Machine Learning?\n", "\n", "In this section we will begin to explore the basic principles of machine learning.\n", "Machine Learning is about building programs with **tunable parameters** (typically an\n", "array of floating point values) that are adjusted automatically so as to improve\n", "their behavior by **adapting to previously seen data.**\n", "\n", "Machine Learning can be considered a subfield of **Artificial Intelligence** since those\n", "algorithms can be seen as building blocks to make computers learn to behave more\n", "intelligently by somehow **generalizing** rather that just storing and retrieving data items\n", "like a database system would do.\n", "\n", "We'll take a look at two very simple machine learning tasks here.\n", "The first is a **classification** task: the figure shows a\n", "collection of two-dimensional data, colored according to two different class\n", "labels. \n", "\n", "### Type of Learning\n", "\n", "Usually, ML problems can be classified according to the learning type. Two of the more importants are:\n", "\n", "* **Supervised Learning:**\n", "\n", "Supervised Learning models is the set of algorithms that tries to approximate a function $f(x)$ that represents the relation between a dependent variable $Y$ (label, target) and an independent set of variables $X$. This characteristic makes supervised algorithms a type of predictive models, such that given a set of $X$ data, it can be forecasted dependent $Y$ variable. \n", "\n", "According to the type of values in $Y$, it can be define two main types of problems and algorithms to analyze data:\n", "\n", "- Classification Problems:\n", "\n", "Whether dependent variable $Y$ define a group of categories (not ordered values) like approved and denied or good and bad, the task of predict $Y$ variable can be defined as a classification problem. The output variables are often called labels or categories.\n", "\n", "Some examples of Classification algorithms are:\n", "```\n", "Logistic Regression, Decision Trees, Random Forest, KNN and Suppor Vector Machine.\n", "```\n", "\n", "- Regression Problems:\n", "\n", "A regression problem is the task of predict a dependent (target) variable $Y$ with continous values. Some examples of regression problems can be: the prediction of the price of a stock or the number of potential customers for a product.\n", "\n", "Some examples of Regression algorithms are:\n", "```\n", "Linear Regression, Decision Trees, Neural Networks. \n", "```\n", "\n", "* **Unsupervised Learning:**\n", " \n", "Opposite to Supervised Learnig, in Unsupervised Learning dependent variable or labeled data $Y$ is not included in the data set. Then insted of predict a variable, this set of algorithms tries to use techniques in the input data $X$ to detect patterns, find rules, or summarize and group data. Usually, Unsupervised algorithms are mainly used in descriptive anlysis and modelling, where is particularly useful to find out insights and information that human expert doesn't know. In Unsupervised Learning, there are two main tasks:\n", "\n", "- Dimensionality Reduction: \n", "\n", "Dimensionality reduction is the methodology to reduce the amount of variables in dataset $X$ that are into consideration. One of the most important methods applied in dimensionality reduction is the Principal Component Analysis (PCA). \n", "\n", "- Clustering Analysis: \n", "\n", "Cluster analysis or clustering is the task of grouping a set of data $X$ in such way that segments of $X$ in the same group are more similar between them than to those in other groups (clusters). It is the most common technique for exploratory data mining and data analysis. An example of this algorithms are k-means.\n", "\n", "\n", "#### Other Types of Learing\n", "\n", "Despite Supervised and Unsupervised Learning cover a vast amount of techiniques to use, there area other less common but usefull Learning types like Semi-Supervised Learning and Reinforcement Learnig. However these are outside the scope of this course. To read more about:\n", "\n", "https://medium.com/machine-learning-for-humans/reinforcement-learning-6eacf258b265" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Import libraries\n", "%matplotlib inline\n", "import numpy as np\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "plt.style.use('ggplot')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Supervised Learning \n", "\n", "### 1.1 Classification Problem\n", "\n", "The first task we are going to study is a **classification** problem: the figure shows a collection of two-dimensional data, colored according to two different class labels." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create a random set of examples\n", "from sklearn.datasets.samples_generator import make_blobs\n", "X, Y = make_blobs(n_samples=50, centers=2,random_state=23, cluster_std=2.90)\n", "\n", "plt.scatter(X[:, 0], X[:, 1], c=Y)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A classification algorithm may be used to draw a dividing boundary\n", "between the two clusters of points:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SGDClassifier(alpha=0.01, average=False, class_weight=None, epsilon=0.1,\n", " eta0=0.0, fit_intercept=True, l1_ratio=0.15,\n", " learning_rate='optimal', loss='hinge', max_iter=200, n_iter=None,\n", " n_jobs=1, penalty='l2', power_t=0.5, random_state=None,\n", " shuffle=True, tol=None, verbose=0, warm_start=False)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import SGDClassifier\n", "clf = SGDClassifier(loss=\"hinge\", alpha=0.01, max_iter=200, fit_intercept=True)\n", "clf.fit(X, Y)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Plot the decision boundary. For that, we will assign a color to each\n", "# point in the mesh [x_min, m_max]x[y_min, y_max].\n", "x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5\n", "y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, .05), np.arange(y_min, y_max, .05))\n", "Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.contour(xx, yy, Z)\n", "plt.scatter(X[:, 0], X[:, 1], c=Y)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This may seem like a trivial task, but it is a simple version of a very important concept.\n", "By drawing this separating line, we have learned a model which can **generalize** to new\n", "data: if you were to drop another point onto the plane which is unlabeled, this algorithm\n", "could now **predict** whether it's a blue or a red point." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next simple task we'll look at is a **regression** task: a simple best-fit line\n", "to a set of data:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.2 Regression Problem" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAEpBJREFUeJzt3X+MZWddx/H3TC+lVIFlc4edToupGGjQBSpU2oDS0iJZY2UxKV9tFlN+lFGUWjZtECF2YRMiCloaTTQjrFvCWvlSkCVqFNII9Q8oUkRKbFalNnW73e5OyiKK7WY71z/u3bY7nem9c+859557zvuVNJ175vSe53ty+tmzz3me58x0Oh0kSdNvdtINkCQVw0CXpJow0CWpJgx0SaoJA12SasJAl6SaMNAlqSZa/XaIiD3A5cCRzNza23Y+8KfAGcAJ4Ncz82tlNlSS9NQGuUPfC2xbte33gQ9k5vnADb3PkqQJ6nuHnpm3R8S5qzZ3gGf1fn42cGjA4zktVZKGM9Nvh76Bvo53AX8fER+he5f/ykH/w0OHBs3++mm32ywvL0+6GRPT9PrBc2D9w9W/sLAw0H7DBvo7gJ2Z+ZmICODjwGvX2jEiFoFFgMyk3W4Pecjp12q1rL/B9YPnwPrLrX/YQL8KuLb386eBj623Y2YuAUu9jx3/dLb+Jmv6ObD+cu/Qhx22eAi4uPfzpcC/D/k9kqSCDDJs8RbgEqAdEQeBXcDbgZsiogU8TK9LRZI0OYOMcrlynV+9vOC2SJJGMGwfuiSpj5Wjh2H/PjrHHmJm02ZOvPkaaJ1e2vEMdEkqwcrRw3RuvAGOHga6k3CO3fsfrFy7i9m5+VKO6VouklSG/fseC/OTHn3w/u72khjoklSCzrGHNrS9CAa6JJVgZtPmDW0vgoEuSWXYvgNW9ZWftuXs7vaS+FBUkkowOzfPys7dp4xy2fTmazjmKBdJmj6zc/Nw9XWPfW6121Di0gcGuiQVZPW4c7bvKG2I4loMdEkqwFrjzrnnACs7d48t1H0oKklFWGPcOb079nEx0CWpAJMYd76agS5JBZjEuPPVDHRJKsIa486Zmy913PlqPhSVpAKsNe7cUS6SNKVWjzsf+/EndmRJUqEMdEmqCQNdkmrCQJekmjDQJakm+o5yiYg9wOXAkczc+oTt1wDvBE4Af5OZ7y6tlZKkvga5Q98LbHvihoh4DbAdeElm/gTwkeKbJknaiL6Bnpm3A6sXI3gH8KHMfKS3z5ES2iZJ2oBhJxa9EPiZiPgg8DBwfWb+01o7RsQisAiQmbTb7SEPOf1arZb1N7h+8BxYf7n1DxvoLeA5wEXATwEZEc/PzM7qHTNzCVjqfewsl/i2jqprt9tYf3PrB8+B9Q9X/8LCwkD7DTvK5SDw2czsZObXgBWguX/sSlIFDBvonwMuBYiIFwKnA839Y1eSKmCQYYu3AJcA7Yg4COwC9gB7IuLbwHHgqrW6WyRJ49M30DPzynV+9aaC2yJJGoEzRSWpJgx0SaoJA12SasJAl6Sa8BV0ksbmxOFDrOz9o4m9c7PuDHRJY7Fy9DDHbvoAnQfvB6ADcM8BVnbuNtQLYpeLpPHYv49He2H+mKOHYf++ybSnhgx0SWPRObZ60dan3q6NM9AljcXMps0b2q6NM9Aljcf2HZy25exTt83Nw/Ydk2lPDflQVNJYzM7Ns+n9N/GQo1xKY6BLGpvW/AKzV1836WbUll0uklQTBrok1YSBLkk1YR+6JNGdycr+fVP9wNZAl9R4K0cP07nxhu7MVaZ3WQK7XCRp/77HwvwxU7gsgYEuqfHqsiyBgS6p8eqyLEHfPvSI2ANcDhzJzK2rfnc98GFgLjOXy2miJJVs+w6458Cp3S5TuCzBIA9F9wJ/DHziiRsj4nnAzwL3Fd8sSRqf2bl5Vnburv8ol8y8PSLOXeNXNwLvBvYX3ShJGrfZuXmY8mUJhupDj4jXA/dn5r8U3B5J0pA2PA49Is4E3ge8bsD9F4FFgMyk3W5v9JC10Wq1rL/B9YPnwPrLrX+m0+n03anX5fLXmbk1Il4M3Ab8oPfrc4BDwCsy8/A6X3FS59ChQyM0d7q1222Wl5v77Ljp9YPnwPqHq39hYQFgpt9+G75Dz8y7gOee/BwR9wIXOMpFkiarbx96RNwCfAU4LyIORsTbym+WJGmjBhnlcmWf359bWGskSUNzpqgk1YSrLUqaOnVY6rYMBrqkqVKXpW7LYJeLpOlSk6Vuy2CgS5oqdVnqtgwGuqSpUpelbstgoEuaLtt3dJe2faIpXOq2DD4UlTRV6rLUbRkMdKliHJLXXx2Wui2DgS5ViEPyNAr70KUqcUieRmCgSxXikDyNwkCXKsQheRqFgS5ViUPyNAIfikoV4pA8jcJAlyrGIXkall0uklQTBrok1YRdLlJFjXvGqDNUp5+BLlXQuGeMOkO1Huxykapo3DNGnaFaC33v0CNiD3A5cCQzt/a2fRj4BeA48B3gLZl5rMyGSk0y7hmjzlCth0Hu0PcC21Zt+yKwNTNfAvwb8NsFt0tqtHHPGHWGaj30DfTMvB14aNW2L2Tmid7HrwLnlNA2qbnGPWPUGaq1UMRD0bcCnyrgeyT1jHvGqDNU62GkQI+I9wEngHWfnETEIrAIkJm02+1RDjnVWq2W9Te4ftjgOWi34UW/W26Dxny8pl8DZdc/dKBHxFV0H5Zelpmd9fbLzCVgqfexs7y8POwhp1673cb6m1s/eA6sf7j6FxYWBtpvqECPiG3AbwEXZ+YPhvkOSVKxBhm2eAtwCdCOiIPALrqjWp4OfDEiAL6amb9WYjslSX30DfTMvHKNzR8voS2SpBE4U1SSasJAl6SaMNAlqSYMdEmqCQNdkmrCQJekmjDQJakmfGORVCG+Bk6jMNClivA1cBqVXS5SVfgaOI3IQJcqwtfAaVQGulQRvgZOozLQparwNXAakQ9FpYrwNXAalYEuVcjs3Dxcfd2km6EpZaBLFeWYdG2UgS5VkGPSNQwfikpV5Jh0DcFAlyrIMekahoEuVZBj0jUMA12qIsekawh9H4pGxB7gcuBIZm7tbdsMfAo4F7gXiMz8bnnNlJrFMekaxiB36HuBbau2vQe4LTNfANzW+yypQLNz88xefR2nXf9BZq++zjBXX30DPTNvB1Y/idkO3Nz7+WbgDQW3S5K0QcOOQ9+SmQ8AZOYDEfHc9XaMiEVgsbcv7XZ7yENOv1arZf0Nrh88B9Zfbv2lTyzKzCVgqfexs7y8XPYhK6vdbmP969ffhJmRXgPWP0z9CwsLA+037CiXByPiLIDev48M+T0S8PjMyM4dX4YDd9G548t0bryhG/KSBjJsoH8euKr381XA/mKao8ZyZqQ0skGGLd4CXAK0I+IgsAv4EJAR8TbgPuCNZTZS9efMSGl0fQM9M69c51eXFdwWNdjMps3dBajW2C5pMM4UVTU4M1IamcvnqhKcGSmNzkBXZfi2Hmk0drlIUk0Y6JJUEwa6JNWEgS5JNWGgS1JNGOiSVBMGuiTVhIEuSTVhoEtSTRjoklQTTv3XUJrwdiFp2hjo2rCTbxc6+UKKDsA9B1jZudtQlybILhdtnG8XkirJQNeG+XYhqZoMdG3Yem8R8u1C0mQZ6No43y4kVZIPRbVhvl1IqqaRAj0idgJX0x3ocBfwlsx8uIiGqdp8u5BUPUN3uUTE2cBvAhdk5lbgNOCXi2qYJGljRu1DbwHPiIgWcCZwaPQmSZKGMXSgZ+b9wEeA+4AHgO9l5heKapgkaWNmOp3OUP9hRDwH+AzwS8Ax4NPArZn5yVX7LQKLAJn58uPHj4/U4GnWarU4ceLEpJsxMU2vHzwH1j9c/aeffjrATN/vH6JNJ70W+M/MPAoQEZ8FXgmcEuiZuQQs9T52lpeXRzjkdGu321h/c+sHz4H1D1f/wsLCQPuNEuj3ARdFxJnA/wGXAV8f4fskSSMYpQ/9DuBW4Bt0hyzO8viduCRpzEYah56Zu4BdBbVFGzTuJWxdMleqNmeKTqlxL2HrkrlS9bmWy7Qa9xK2LpkrVZ6BPqXGvYStS+ZK1WegT6lxL2HrkrlS9Rno02rcS9i6ZK5UeY18KFqH0RrjXsLWJXOl6mtcoNdptMa4l7B1yVyp2prX5eJoDUk11bhAd7SGpLpqXKA7WkNSXTUu0B2tIamuGvdQ1NEakuqqcYEOjtaQVE+NDHQVrw5j+6VpZ6BrZHUa2y9Ns+Y9FFXxHNsvVUIj7tDtDiiXY/ulaqh9oNsdUL6ZTZu753WN7ZLGp/5dLnYHlM+x/VIl1P4O3e6A8jm2X6qG2ge63QHj4dh+afJGCvSI2AR8DNhKt3v6rZn5lSIaVpjtO+CeA6d2u0xhd4APdiX1M+od+k3A32XmFRFxOnBmAW0qVB26A3ywK2kQQwd6RDwLeDXwZoDMPA4cL6ZZxZr67oCnerA7zXVJKtQod+jPB44Cfx4RLwXuBK7NzP8tpGV6jA92JQ1ilEBvAS8DrsnMOyLiJuA9wO88caeIWAQWATKTdrs9wiGnW6vVGqr+7205i4cP3PWk7WdsOYtnT9H5HLb+Omn6ObD+cusfJdAPAgcz847e51vpBvopMnMJWOp97CwvL49wyOnWbrcZpv6VbVfA3d960oPdR7ZdMdT3Tcqw9ddJ08+B9Q9X/8LCwkD7DT2xKDMPA/8VEef1Nl0G/Ouw36f1zc7NM7NzNzMXXgznvZiZCy9mxgeiklYZdZTLNcC+3giXe4C3jN4krWXqH+xKKt1IgZ6Z3wQuKKgtkqQR1H8tF0lqCANdkmrCQJekmjDQJakmDHRJqgkDXZJqwkCXpJow0CWpJgx0SaoJA12SasJAl6SaMNAlqSYMdEmqiVGXzy2db7uXpMFUOtB9270kDa7aXS5P9bZ7SdIpKh3ovu1ekgZX6UCf2bR5Q9slqckqHehs3wGr+8rn5rvbJUmnqPRD0dm5eVZ27naUiyQNoNKBDv3fdu+wRknqGjnQI+I04OvA/Zl5+ehNGpzDGiXpcUX0oV8L3F3A92ycwxol6TEjBXpEnAP8PPCxYpqzMQ5rlKTHjdrl8lHg3cAz19shIhaBRYDMpN1uj3jIx31vy1k8fOCuJ20/Y8tZPLvA4xSl1WoVWv+0aXr94Dmw/nLrHzrQI+Jy4Ehm3hkRl6y3X2YuAUu9j53l5eVhD/kkK9uugLu/dWq3y9w8j2y7giKPU5R2u13Jdo1L0+sHz4H1D1f/wsLCQPuN0uXyKuD1EXEv8JfApRHxyRG+b8Nm5+aZ2bmbmQsvhvNezMyFFzPjA1FJDTXT6XRG/pLeHfr1A4xy6Rw6dGjk400r706aXT94Dqx/pDv0mX77VXumqCRpYIVMLMrMLwFfKuK7JEnD8Q5dkmrCQJekmjDQJakmChnlsgFjPZgk1Ui1RrlExJ10G9XIf6y/2fV7Dqx/xPr7sstFkmrCQJekmhh3oC/136XWrF9NPwfWX6JxPxSVJJXELhdJqomxvVO0tyrj94FHgROZecG4jj0JEbEHOLnE8Nbets3Ap4BzgXuByMzvTqqNZVqn/vcDbweO9nZ7b2b+7WRaWK6IeB7wCWAeWAGWMvOmplwDT1H/+2nONXAGcDvwdLpZe2tm7oqIH6W7Qu1m4BvAr2Tm8SKOOe479Ndk5vl1D/OevcC2VdveA9yWmS8Abut9rqu9PLl+gBt718D5df0fuecEcF1mvgi4CPiNiPhxmnMNrFc/NOcaeAS4NDNfCpwPbIuIi4Dfo3sOXgB8F3hbUQe0y6UkmXk7sPpdeNuBm3s/3wy8YayNGqN16m+MzHwgM7/R+/n7dN+7ezYNuQaeov7GyMxOZv5P7+PTev90gEuBW3vbC70GxhnoHeALEXFn77V0TbQlMx+A7gUPPHfC7ZmEd0bEtyJiT0Q8Z9KNGYeIOBf4SeAOGngNrKofGnQNRMRpEfFN4AjwReA7wLHMPNHb5SAF/kE3zkB/VWa+DPg5un/9evUYj61q+BPgx+j+9fMB4A8m25zyRcQPA58B3pWZ/z3p9ozbGvU36hrIzEcz83zgHOAVwIvW2K2woYZjC/TMPNT79xHgr+gW1zQPRsRZAL1/H5lwe8YqMx/sXeArwJ9R82sgIp5GN8z2ZeZne5sbcw2sVX/TroGTMvMY3XdGXARsioiTA1LOAQp7jdtYAj0ifiginnnyZ+B1wLfHceyK+TxwVe/nq4D9E2zL2J0Msp5fpMbXQETMAB8H7s7MP3zCrxpxDaxXf8OugbmI2NT7+RnAa+k+S/gH4IreboVeA2OZWBQRz6d7Vw7d4Tt/kZkfLP3AExQRtwCXAG3gQWAX8DkggR8B7gPemJm1fHC4Tv2X0P2rdofukL1fPdmfXDcR8dPAPwJ30R22B/Beuv3Itb8GnqL+K2nONfASug89T6N785yZubuXhyeHLf4z8KbMfKSIYzpTVJJqwmGLklQTBrok1YSBLkk1YaBLUk0Y6JJUEwa6JNWEgS5JNWGgS1JN/D9e/pOzLCe5SgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 0.5\n", "b = 1.0\n", "\n", "# x from 0 to 10\n", "x = 30 * np.random.random(20)\n", "\n", "# y = a*x + b with noise\n", "y = a * x + b + np.random.normal(size=x.shape)\n", "\n", "plt.scatter(x, y)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "clf = LinearRegression()\n", "clf.fit(x[:, None], y)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.49187909]\n", "1.4632686323249384\n" ] } ], "source": [ "# underscore at the end indicates a fit parameter\n", "print(clf.coef_)\n", "print(clf.intercept_)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x_new = np.linspace(0, 30, 100)\n", "y_new = clf.predict(x_new[:, None])\n", "plt.scatter(x, y)\n", "plt.plot(x_new, y_new)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, this is an example of fitting a model to data, such that the model can make\n", "generalizations about new data. The model has been **learned** from the training\n", "data, and can be used to predict the result of test data:\n", "here, we might be given an x-value, and the model would\n", "allow us to predict the y value. Again, this might seem like a trivial problem,\n", "but it is a basic example of a type of operation that is fundamental to\n", "machine learning tasks." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Representation of Data in Scikit-learn\n", "\n", "Machine learning is about creating models from data: for that reason, we'll start by\n", "discussing how data can be represented in order to be understood by the computer. Along\n", "with this, we'll build on our matplotlib examples from the previous section and show some\n", "examples of how to visualize data.\n", "\n", "Most machine learning algorithms implemented in scikit-learn expect data to be stored in a\n", "**two-dimensional array or matrix**. The arrays can be\n", "either ``numpy`` arrays, or in some cases ``scipy.sparse`` matrices.\n", "The size of the array is expected to be `[n_samples, n_features]`\n", "\n", "- **n_samples:** The number of samples: each sample is an item to process (e.g. classify).\n", " A sample can be a document, a picture, a sound, a video, an astronomical object,\n", " a row in database or CSV file,\n", " or whatever you can describe with a fixed set of quantitative traits.\n", "- **n_features:** The number of features or distinct traits that can be used to describe each\n", " item in a quantitative manner. Features are generally real-valued, but may be boolean or\n", " discrete-valued in some cases.\n", "\n", "The number of features must be fixed in advance. However it can be very high dimensional\n", "(e.g. millions of features) with most of them being zeros for a given sample. This is a case\n", "where `scipy.sparse` matrices can be useful, in that they are\n", "much more memory-efficient than numpy arrays." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A Simple Example: the Iris Dataset\n", "\n", "As an example of a simple dataset, we're going to take a look at the\n", "iris data stored by scikit-learn.\n", "The data consists of measurements of three different species of irises.\n", "There are three species of iris in the dataset, which we can picture here:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iris Setosa\n", "\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iris Versicolor\n", "\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iris Virginica\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iris versicolor and the petal and sepal width and length\n", "From, Python Data Analytics, Apress, 2015.\n" ] } ], "source": [ "from IPython.core.display import Image, display\n", "\n", "display(Image(url='images/iris_setosa.jpg'))\n", "print(\"Iris Setosa\\n\")\n", "\n", "display(Image(url='images/iris_versicolor.jpg'))\n", "print(\"Iris Versicolor\\n\")\n", "\n", "display(Image(url='images/iris_virginica.jpg'))\n", "print(\"Iris Virginica\")\n", "\n", "display(Image(url='images/iris_with_length.png'))\n", "print('Iris versicolor and the petal and sepal width and length')\n", "print('From, Python Data Analytics, Apress, 2015.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Quick Question:\n", "\n", "**If we want to design an algorithm to recognize iris species, what might the data be?**\n", "\n", "Remember: we need a 2D array of size `[n_samples x n_features]`.\n", "\n", "- What would the `n_samples` refer to?\n", "\n", "- What might the `n_features` refer to?\n", "\n", "Remember that there must be a **fixed** number of features for each sample, and feature\n", "number ``i`` must be a similar kind of quantity for each sample." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loading the Iris Data with Scikit-Learn\n", "\n", "Scikit-learn has a very straightforward set of data on these iris species. The data consist of\n", "the following:\n", "\n", "- Features in the Iris dataset:\n", "\n", " 1. sepal length in cm\n", " 2. sepal width in cm\n", " 3. petal length in cm\n", " 4. petal width in cm\n", "\n", "- Target classes to predict:\n", "\n", " 1. Iris Setosa\n", " 2. Iris Versicolour\n", " 3. Iris Virginica\n", " \n", "``scikit-learn`` embeds a copy of the iris CSV file along with a helper function to load it into numpy arrays:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names'])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.datasets import load_iris\n", "iris = load_iris()\n", "iris.keys()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(150, 4)\n", "[5.1 3.5 1.4 0.2]\n" ] } ], "source": [ "n_samples, n_features = iris.data.shape\n", "print((n_samples, n_features))\n", "print(iris.data[0])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(150, 4)\n", "(150,)\n" ] } ], "source": [ "print(iris.data.shape)\n", "print(iris.target.shape)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", " 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n", " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2\n", " 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2\n", " 2 2]\n", "['setosa' 'versicolor' 'virginica']\n" ] } ], "source": [ "print(iris.target)\n", "print(iris.target_names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Unsupervised Learning \n", "\n", "### 2.1 Dimensionality Reduction: PCA\n", "\n", "Principle Component Analysis (PCA) is a dimension reduction technique that can find the combinations of variables that explain the most variance.\n", "\n", "Consider the iris dataset. It cannot be visualized in a single 2D plot, as it has 4 features. We are going to extract 2 combinations of sepal and petal dimensions to visualize it:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X, y = iris.data, iris.target\n", "from sklearn.decomposition import PCA\n", "pca = PCA(n_components=3)\n", "pca.fit(X)\n", "X_reduced = pca.transform(X)\n", "plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X, y = iris.data, iris.target\n", "from sklearn.manifold import Isomap\n", "pca = Isomap(n_components=3)\n", "pca.fit(X)\n", "X_reduced2 = pca.transform(X)\n", "plt.scatter(X_reduced2[:, 0], X_reduced2[:, 1], c=y)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcUAAAE1CAYAAACWU/udAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsvXecVfWd//889dbpjd67gIAgoiDW2KIxisa4lhjNrnFTNL/ETb66G/XhZrNF3Y0p6+qu0axKMNa49iiCYMUGKEiHYRhggCm3l3N+f1zO4c6d29vcmTnPx4OHzsy5p91zPq/P+/15F0HXdSwsLCwsLCxA7O8TsLCwsLCwqBQsUbSwsLCwsDiKJYoWFhYWFhZHsUTRwsLCwsLiKJYoWlhYWFhYHMUSRQsLCwsLi6NYomhhYWFhYXEUSxQtLCwsLCyOYomihYWFhYXFUeRcNm5ra7PK31hYWFhYDDhGjBghZLOdZSlaWFhYWFgcxRJFCwsLCwuLo1iiaGFhYWFhcRRLFC0sLCwsLI5iiaKFhYWFhcVRLFG0sLCwsLA4iiWKFgOCZcuWcdttt/X3aQwI/vjHPzJ58uT+Pg0LiwGJJYoW/crNN9/MNddck3G7Bx98kJ/97Gd5H2fhwoWMHDmSkSNHMmHCBObPn8/111/Pq6++mvO+7rnnHs4444y8zyVf+lvsbr75ZvMejh07lkWLFnHXXXfh8/l6bffiiy9y2WWXMX36dCZNmsSZZ57JL3/5Szo6OnptFwqFmDVrFlOmTKG7u7ucl2JhkRJLFC0qmlAoBEBdXR1ut7ugfd1yyy18/PHHrF69mt/97neMGjWKG264gdtvv70YpzokWLJkCR9//DFr167l1ltv5ZFHHuGuu+4y//7LX/6Sv/mbv+G4447jkUceYeXKldx55520trby6KOP9trXyy+/zJgxY5g3bx7PPPNMuS/FwiIplihaVBSG5fib3/yGE044gfnz5wN93acvvvgiZ511FhMnTuS4447j0ksv5eDBg2n37Xa7aW5uZuTIkSxYsIA777yTX/ziFzz88MOsWbPG3O4Xv/gFS5YsYeLEiSxcuJC7776bQCAAxKy1e++9l82bN5tW0x//+EcAHnjgAc466ywmTZrECSecwI9//GO6urrM/XZ3d/P973+f2bNnM2HCBBYtWsSDDz7Y6++33nors2fPZsqUKVx66aV8+umnAKxdu5Yf/ehH+Hw+87j33HNP2ut99dVXWbx4MRMmTGDZsmXs2rULgD179jB69Ghz3waPPfYYM2fONCciyVBV1byHX//617nkkkt45ZVXAPj444+5//77uf3227njjjs48cQTGTVqFIsXL+bXv/41119/fa99LV++nEsvvZRly5axfPnytNdiYVEucirzZmFRDt59912qq6t57LHH0PW+lQUPHDjATTfdxE9/+lMuuOACvF4vH330UV7H+uY3v8k//dM/8eKLL3LKKacA4HA4uPfeexk2bBhffvklP/3pT1FVlVtvvZWLLrqIzZs38/rrr/OnP/0JgKqqKgBEUeSOO+5g7NixtLa28vd///fcfvvt3H///QD8y7/8C5s2beKRRx6hsbGRPXv2cOjQIQB0Xeeaa66hqqqKRx55hNraWp588kkuv/xyVq1axfz587nzzjv55S9/ydq1awFwuVwprysUCnHfffdx33334XA4+Id/+Aeuv/56XnvtNUaPHs2SJUtYvnw5xx9/vPkZQ6RUVc36/tntdsLhMADPPPMMTqeTb3/720m3rampMf+/tbWVd955h/vvvx+Hw8HPfvYzNmzYwMyZM7M+toVFKbAsRYuKw2azcc899zBt2jSmT5/e5+/79+8nHA7z1a9+ldGjRzNt2jSuvPJKmpqacj6WJEmMHz+e3bt3m7+75ZZbWLBgAaNHj+bMM8/k+9//Ps899xwQE0yXy4UsyzQ3N9Pc3IzD4QDgO9/5DosXL2b06NEsWrSI2267jRdeeAFN04CYEMycOZO5c+cyevRoTj75ZC688EIA1qxZw8aNG/mv//ov5s6dy/jx47n11lsZM2YMTz31FKqqUlVVhSAI5nHTiWIkEuGuu+5iwYIFzJw5k1/96lds3ryZ1atXA3DllVfy3HPPmRbwli1b+Oijj/jmN7+Z9b37+OOPeeaZZ1i8eDEAO3bsYOzYsSiKkvGzy5cvZ8mSJTQ0NOB0OjnvvPMsa9GiIrAsRYuKY+rUqdhstpR/nzFjBkuWLOGMM85g6dKlLF68mK9+9as0NDQU5fgvvPACDz30EDt37sTr9aJpGtFoNOPn3n77bX7961+zZcsWenp6iEajhEIhDhw4wLBhw7jmmmv467/+a9avX8+pp57K2WefzaJFiwBYv349fr+f2bNn99pnMBhk586dOV+DKIrMmTPH/HnUqFG0tLSwZcsWTj31VM455xxuu+02XnrpJb7+9a+zfPly5s6dy7Rp09Lud+XKlUyePJloNEo4HOacc87h7rvvBkhq1SdD0zRWrFjRyx2+bNkyvvvd73L77bdjt9tzvl4Li2JhWYoWFYfT6Uz7d0mSeOKJJ3j88ceZPn06y5cvZ/HixWzcuDHnY0WjUbZv387YsWMBWLduHTfddBNLly7l97//Pa+88go/+clPTBdhKlpbW7n22muZPHkyDzzwAC+99BL33nsvgPnZM844g/fff58bb7yRw4cPc80113DLLbcAMaFoamri1Vdf7fXvrbfe4tZbb835ujKhKIq5lheJRHjqqae44oorMn5u4cKFvPrqq6xatYrt27fz0EMP0djYCMCECRPYtWtX2jVJgLfeeou9e/fy/e9/nzFjxjBmzBiuuuoqOjs7efHFF4tyfRYW+WKJosWARBAE5s+fz49+9CNefPFFWlpaeP7553Pez+OPP05XVxcXXHABAB988AHDhg3jlltuYc6cOUyYMIG9e/f2+oyiKH0sx08//ZRQKMQdd9zB/PnzmThxIu3t7X2OV19fz7Jly/j3f/93/u3f/o0nn3ySYDDIrFmzOHjwIKIoMn78+F7/DNFRVdV0xWZC0zQ++eQT8+e9e/eyf//+XikdV155JWvXruWRRx7B4/Hwta99LeN+HQ4H48ePZ9SoUX3cpBdffDE+n4+HH3446WeNoKMnnniC888/v88E4K/+6q944oknsro+C4tSYblPLQYc69atY/Xq1Zx22mk0NTWxYcMG2tramDJlStrPeTweDhw4QDgcpq2tjRdeeIGHH36Y6667znRjTpgwgfb2dp5++mlOOOEEVq5cybPPPttrP6NHj6a1tZX169czcuRIXC4X48ePR9M0HnzwQc4//3w++ugjHnrooV6f+9d//VczLy8ajfLSSy8xduxYbDYbS5YsYcGCBXz729/mtttuY9KkSRw4cICVK1eyZMkSFi5cyKhRowgEAqxatYqZM2ficDjM9cxEZFnmjjvu4M4778Rut3PHHXcwdepUlixZYm4zceJETjzxRO6++24uuugiM2AoX+bNm8dNN93E3Xffzb59+7jgggsYPnw4u3fv5oknnmD8+PF861vf4rXXXuOBBx7o46q94oor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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from mpl_toolkits.mplot3d import Axes3D\n", "fig = plt.figure()\n", "ax = Axes3D(fig)\n", "ax.set_title('Iris Dataset by PCA', size=14)\n", "ax.scatter(X_reduced[:,0],X_reduced[:,1],X_reduced[:,2], c=y)\n", "ax.set_xlabel('First eigenvector')\n", "ax.set_ylabel('Second eigenvector')\n", "ax.set_zlabel('Third eigenvector')\n", "ax.w_xaxis.set_ticklabels(())\n", "ax.w_yaxis.set_ticklabels(())\n", "ax.w_zaxis.set_ticklabels(())\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 Clustering: K-means\n", "\n", "Clustering groups together observations that are homogeneous with respect to a given criterion, finding ''clusters'' in the data.\n", "\n", "Note that these clusters will uncover relevent hidden structure of the data only if the criterion used highlights it." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.cluster import KMeans\n", "k_means = KMeans(n_clusters=3, random_state=0) # Fixing the RNG in kmeans\n", "k_means.fit(X)\n", "y_pred = k_means.predict(X)\n", "\n", "plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y_pred);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets then evaluate the performance of the clustering versus the ground truth" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0 50 0]\n", " [48 0 2]\n", " [14 0 36]]\n" ] } ], "source": [ "from sklearn.metrics import confusion_matrix\n", "\n", "# Compute confusion matrix\n", "cm = confusion_matrix(y, y_pred)\n", "np.set_printoptions(precision=2)\n", "print(cm)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot_confusion_matrix(cm, title='Confusion matrix', cmap=plt.cm.Blues):\n", " plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", " plt.title(title)\n", " plt.colorbar()\n", " tick_marks = np.arange(len(iris.target_names))\n", " plt.xticks(tick_marks, iris.target_names, rotation=45)\n", " plt.yticks(tick_marks, iris.target_names)\n", " plt.tight_layout()\n", " plt.ylabel('True label')\n", " plt.xlabel('Predicted label')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plot_confusion_matrix(cm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A First Model for Classification: Logistic Regression" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", "\n", "from sklearn import model_selection\n", "\n", "X_train, X_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target, test_size=0.4, random_state=42)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "clf = LogisticRegression()\n", "clf.fit(X_train, y_train)\n", "y_pred = clf.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9666666666666667" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "float((y_pred == y_test).mean())\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plot_confusion_matrix(confusion_matrix(y_test, y_pred))" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0 0.7333333333333333 0.93975 0.038052503932797306\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "accuracy = []\n", "for i in range(1000):\n", " X_train, X_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target, test_size=0.4, random_state=i)\n", "\n", " clf = LogisticRegression()\n", " clf.fit(X_train, y_train)\n", " y_pred = clf.predict(X_test)\n", "\n", " acc = float((y_pred == y_test).mean())\n", " accuracy.append(acc)\n", "\n", "plt.plot(list(range(1000)), accuracy)\n", "\n", "accuracy = np.array(accuracy)\n", "print(accuracy.max(), accuracy.min(), accuracy.mean(), accuracy.std())" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.0 0.85 0.9488666666666665 0.02240644748479528\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "\n", "accuracy = []\n", "for i in range(1000):\n", " X_train, X_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target, test_size=0.4, random_state=i)\n", "\n", " clf = RandomForestClassifier()\n", " clf.fit(X_train, y_train)\n", " y_pred = clf.predict(X_test)\n", "\n", " acc = float((y_pred == y_test).mean())\n", " accuracy.append(acc)\n", "\n", "plt.plot(list(range(1000)), accuracy)\n", "\n", "accuracy = np.array(accuracy)\n", "print(accuracy.max(), accuracy.min(), accuracy.mean(), accuracy.std())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recap: Scikit-learn's estimator interface\n", "\n", "Scikit-learn strives to have a uniform interface across all methods,\n", "and we'll see examples of these below. Given a scikit-learn *estimator*\n", "object named `model`, the following methods are available:\n", "\n", "- Available in **all Estimators**\n", " + `model.fit()` : fit training data. For supervised learning applications,\n", " this accepts two arguments: the data `X` and the labels `y` (e.g. `model.fit(X, y)`).\n", " For unsupervised learning applications, this accepts only a single argument,\n", " the data `X` (e.g. `model.fit(X)`).\n", "- Available in **supervised estimators**\n", " + `model.predict()` : given a trained model, predict the label of a new set of data.\n", " This method accepts one argument, the new data `X_new` (e.g. `model.predict(X_new)`),\n", " and returns the learned label for each object in the array.\n", " + `model.predict_proba()` : For classification problems, some estimators also provide\n", " this method, which returns the probability that a new observation has each categorical label.\n", " In this case, the label with the highest probability is returned by `model.predict()`.\n", " + `model.score()` : for classification or regression problems, most (all?) estimators implement\n", " a score method. Scores are between 0 and 1, with a larger score indicating a better fit.\n", "- Available in **unsupervised estimators**\n", " + `model.predict()` : predict labels in clustering algorithms.\n", " + `model.transform()` : given an unsupervised model, transform new data into the new basis.\n", " This also accepts one argument `X_new`, and returns the new representation of the data based\n", " on the unsupervised model.\n", " + `model.fit_transform()` : some estimators implement this method,\n", " which more efficiently performs a fit and a transform on the same input data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Flow Chart: How to Choose your Estimator\n", "\n", "This is a flow chart created by scikit-learn super-contributor [Andreas Mueller](https://github.com/amueller) which gives a nice summary of which algorithms to choose in various situations. Keep it around as a handy reference!" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "Image(url=\"http://scikit-learn.org/dev/_static/ml_map.png\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Original source on the [scikit-learn website](http://scikit-learn.org/stable/tutorial/machine_learning_map/)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }