1
0
mirror of https://github.com/gsi-upm/sitc synced 2024-11-12 18:02:28 +00:00
sitc/ml1/2_3_0_Visualisation.ipynb
J. Fernando Sánchez f661394859 Fix typo in axis
2018-02-27 16:14:18 +01:00

345 lines
74 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](files/images/EscUpmPolit_p.gif \"UPM\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Course Notes for Learning Intelligent Systems"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Department of Telematic Engineering Systems, Universidad Politécnica de Madrid, © 2016 Carlos A. Iglesias"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## [Introduction to Machine Learning](2_0_0_Intro_ML.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Table of Contents\n",
"* [Visualisation](#Visualisation)\n",
"* [Exploratory visualisation](#Exploratory-visualisation)\n",
"* [References](#References)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Visualisation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The goal of this notebook is to learn how to analyse a dataset. We will cover other tasks such as cleaning or munging (changing the format) the dataset in other sessions."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exploratory visualisation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This section covers different ways to inspect the distribution of samples per feature.\n",
"\n",
"First of all, let's see how many samples of each class we have, using a [histogram](https://en.wikipedia.org/wiki/Histogram). \n",
"\n",
"A histogram is a graphical representation of the distribution of numerical data. It is an estimation of the probability distribution of a continuous variable (quantitative variable). \n",
"\n",
"For building a histogram, we need first to 'bin' the range of values—that is, divide the entire range of values into a series of intervals—and then count how many values fall into each interval. \n",
"\n",
"In our case, since the values are not continuous and we have only three values, we do not need to bin them."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import datasets\n",
"iris = datasets.load_iris()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# library for displaying plots\n",
"import matplotlib.pyplot as plt\n",
"# display plots in the notebook\n",
"# if this is not set, you will not see the graphic here\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd9e04f14e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot histogram, the default is 10 bins\n",
"plt.hist(iris.target)\n",
"plt.ylabel('Number of instances')\n",
"plt.xlabel('iris class')\n",
"plt.xticks(range(len(iris.target_names)), iris.target_names);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As can be seen, we have the same distribution of samples for every class.\n",
"The next step is to see the distribution of the features"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']\n"
]
}
],
"source": [
"# This is a reminder of the name and index of each feature\n",
"print(iris.feature_names)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['setosa' 'versicolor' 'virginica']\n"
]
}
],
"source": [
"# A reminder of feature names and indexes\n",
"print(iris.target_names)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A [**scatter plot**](https://en.wikipedia.org/wiki/Scatter_plot) (*gráfico de dispersión*) displays the value of typically two variables for a set of data."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0,0.5,'iris class')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd9e04f1470>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# scatter makes a plot of x vs y\n",
"plt.scatter(iris.data[:,0], iris.target)\n",
"plt.yticks(range(len(iris.target_names)), iris.target_names);\n",
"plt.xlabel(iris.feature_names[0])\n",
"plt.ylabel('iris class')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xt0VeWd//H3NyGaqAhemBIBBTojjhI0GBWl0zqgxQqlqGTQ5Q219VaVTh1ntEXNOPzGztilQ3/j0vHSYpWhQBRGYdTWC9OfVrHhGhXxAigEUIQhggU15Pn9cZKQHHLY++Ts7LP3Pp/XWixz9tl5zvdsw5eTvT/7ecw5h4iIJEtRvgsQEZHgqbmLiCSQmruISAKpuYuIJJCau4hIAqm5i4gkkJq7iEgC+W7uZlZsZsvMbEEnz002sy1mtrzlz/eDLVNERLLRI4t9pwCrgEMzPD/bOXdD7iWJiEiufDV3M+sPjAX+D/DjIF74yCOPdAMHDgxiKBGRgrFkyZJPnXN9vPbz+8n934C/B3ruZ58LzOybwLvA3zrn1u9vwIEDB1JXV+fz5UVEBMDMPvSzn+c5dzMbB3zinFuyn92eAQY654YBvwMeyzDW1WZWZ2Z1W7Zs8VOfiIh0gZ8LqiOB8Wa2DvgNMMrMnmi/g3Nuq3Pui5aHjwAndzaQc+4h51yVc66qTx/P3ypERKSLPJu7c+4251x/59xA4ELgJefcJe33MbPydg/Hk7rwKiIieZJNWqYDM7sLqHPOPQ3cZGbjgSZgGzA5mPJEJC6++uorNmzYwO7du/NdSiKUlpbSv39/SkpKuvT9lq/53KuqqpwuqIokx9q1a+nZsydHHHEEZpbvcmLNOcfWrVvZsWMHgwYN6vCcmS1xzlV5jdHlT+4iQZq/rIF7nl/Nxu27OKp3GbeMGcKEyn75LkuysHv3bgYOHKjGHgAz44gjjiCX4Imau+Td/GUN3PZUPbu+2gNAw/Zd3PZUPYAafMyosQcn12OpuWUk7+55fnVbY2+166s93PP86jxVJBJ/au6Sdxu378pqu0gQZsyYwcaNG/NdRrdRc5e8O6p3WVbbJRnmL2tg5M9eYtCtCxn5s5eYv6wh1NdXcxfpZreMGUJZSXGHbWUlxdwyZkieKpLu1nqdpWH7Lhx7r7Pk2uA///xzxo4dy4knnsjQoUOZPXs2S5Ys4Vvf+hYnn3wyY8aMYdOmTdTW1lJXV8fFF1/MSSedxK5du3jxxReprKykoqKCK6+8ki++SN2Xeeutt3L88cczbNgw/u7v/g6AZ555htNOO43KykrOOussPv7441wPSeDU3CXvJlT24+7zK+jXuwwD+vUu4+7zK3QxNcG66zrLc889x1FHHcWKFSt48803Oeecc7jxxhupra1lyZIlXHnllfz0pz9l4sSJVFVVMXPmTJYvX46ZMXnyZGbPnk19fT1NTU088MADbN26lXnz5vHWW2+xcuVKpk6dCsA3vvENXn/9dZYtW8aFF17Iv/7rv+ZUd3dQWkYiYUJlPzXzAtJd11kqKiq4+eab+Yd/+AfGjRvHYYcdxptvvsnZZ58NwJ49eygvL9/n+1avXs2gQYM49thjAbj88su5//77ueGGGygtLeWqq65i3LhxjBs3DoANGzYwadIkNm3axJdffrlPFj0K9MldRELXXddZjj32WJYuXUpFRQVTp07lySef5IQTTmD58uUsX76c+vp6fvvb3/oer0ePHrzxxhtMnDiRBQsWcM455wBw4403csMNN1BfX89//Md/RPKuXDV3EQldd11n2bhxIwcddBCXXHIJt9xyC4sXL2bLli289tprQGqKhLfeeguAnj17smPHDgCGDBnCunXreP/99wF4/PHH+da3vsXOnTtpbGzk3HPP5b777mPFihUANDY20q9f6jfNxx7rdBLcvNNpGREJXespuKDvSq6vr+eWW26hqKiIkpISHnjgAXr06MFNN91EY2MjTU1N/OhHP+KEE05g8uTJXHvttZSVlfHaa6/xq1/9iurqapqamjjllFO49tpr2bZtG9/73vfYvXs3zjnuvfdeAGpqaqiuruawww5j1KhRrF27NudjEjTNLSMigVi1ahV/+Zd/me8yEqWzY+p3bhmdlhERSSA1dxGRBFJzFxFJIDV3EZEEUnMXEUkgRSElZ1poQyR69MldctJdE0CJRMUdd9zBCy+8kPX3LVq0qG26gnzQJ3fJyf4mgNKnd9mvlXPgxbugcQP06g+j74Bhf5OXUpxzOOcoKtr38+5dd90VSg1NTU306BFcS9Ynd8mJFtqQLlk5B565CRrXAy7132duSm3Pwa233sr999/f9rimpoaf//zn3HPPPZxyyikMGzaMO++8E4B169Yx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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd9de43e400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot the distribution of the dataset\n",
"names = set(iris.target)\n",
"\n",
"# x and y are all the samples from column 0 (sepal_length) and 1 (sepal_width) respectively\n",
"x,y = iris.data[:,0], iris.data[:,1]\n",
"\n",
"for name in names:\n",
" cond = iris.target == name\n",
" plt.plot(x[cond], y[cond], linestyle='none', marker='o', label=iris.target_names[name])\n",
"\n",
"plt.legend(numpoints=1)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see, the Setosa class seems to be linearly separable with these two features.\n",
"\n",
"Another nice visualisation is given below."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd9de38a278>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x_index = 0\n",
"y_index = 1\n",
"formatter = plt.FuncFormatter(lambda i, *args: iris.target_names[int(i)])\n",
"plt.scatter(iris.data[:, x_index], iris.data[:, y_index], s=40,\n",
"c=iris.target)\n",
"plt.colorbar(ticks=[0, 1, 2], format=formatter)\n",
"plt.xlabel(iris.feature_names[x_index])\n",
"plt.ylabel(iris.feature_names[y_index]);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This alternate visualisation also suggests that the Setosa class seems to be linearly separable.\n",
"\n",
"Students interested in practicing advanced visualisations can check [Advanced visualisation notebook](2_3_1_Advanced_Visualisation.ipynb).\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# References"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* [Feature selection](http://scikit-learn.org/stable/modules/feature_selection.html)\n",
"* [Classification probability](http://scikit-learn.org/stable/auto_examples/classification/plot_classification_probability.html)\n",
"* [Mastering Pandas](http://proquest.safaribooksonline.com/book/programming/python/9781783981960), Femi Anthony, Packt Publishing, 2015.\n",
"* [Matplotlib web page](http://matplotlib.org/index.html)\n",
"* [Using matlibplot in IPython](http://ipython.readthedocs.org/en/stable/interactive/plotting.html)\n",
"* [Seaborn Tutorial](https://stanford.edu/~mwaskom/software/seaborn/tutorial.html)\n",
"* [Iris dataset visualisation notebook](https://www.kaggle.com/benhamner/d/uciml/iris/python-data-visualizations/notebook)\n",
"* [Tutorial plotting with Seaborn](https://stanford.edu/~mwaskom/software/seaborn/tutorial/axis_grids.html)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Licence\n",
"\n",
"The notebook is freely licensed under under the [Creative Commons Attribution Share-Alike license](https://creativecommons.org/licenses/by/2.0/). \n",
"\n",
"© 2016 Carlos A. Iglesias, Universidad Politécnica de Madrid."
]
}
],
"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": 1
}