{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# COMP 219 - Advanced Artificial Intelligence\n", "# Lab One - Code\n", "\n", "Notice: \n", "This is a Jupyter Notebook. This means that you can change or add code cells, and then run a cell by first selecting it and then clicking the run cell button above ( ▶| Run ) or hitting Ctrl + Enter to see the output.\n", "\n", "## 1. Reading\n", "Begin by reading chapter One of Python Machine Learning found in the learning resources section of the vital page for COMP219. Code for this book is available online via the vital page or the book website, however it is HEAVILY recommended that you do not copy and paste this, try to type each line and understand what it is you are doing as you go along\n", "\n", "## 2. Setting up your python environment\n", "### 2.1\n", "It is generally best practice to use virtual environments for our python package installations however for the scope of these labs this is not entirely necessary. If you are using the university computers then everything should be set up already. If not, install the Anaconda package following these instructions https://docs.continuum.io/anaconda/install/\n", "### 2.2\n", "Once Anaconda is fully installed, open the Spyder IDE to get started\n", "### 2.3\n", "Here we can see a new file, we can ensure that the packages we will be using for this module are installed by typing\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy\n", "import scipy\n", "import sklearn\n", "import matplotlib\n", "import pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Press F5 to run the code and save the file, the IPython console in the bottom right should show the file as run with no errors \n", "\n", "### 2.4 \n", "Once we have verified that the packages can be imported without error, create a new file as below and run it." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "x = np.arange(100) \n", "y = np.array([5])\n", "z = x + y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can explore the values of x, y and z in the top right window by clicking on \"Variable Explorer\" and then double clicking on each of their values. Alternatively, we can find the values of each of these by typing " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x,y,z" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "into the console in the bottom right and pressing enter. This can be very useful for finding information about how your program is operating.
\n", "\n", "At any point of the program we can set a breakpoint by pressing F12 on our desired line of code, when we press Ctrl + F5 our program will run in debug mode until this point and we can query our variable values via the console or variable explorer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Tasks\n", "\n", "### 3.1 \n", "Using array indexing give the last ten values of z" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([90, 91, 92, 93, 94, 95, 96, 97, 98, 99]),\n", " array([90, 91, 92, 93, 94, 95, 96, 97, 98, 99]))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "x = np.arange(100)\n", "# more about arange: https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.arange.html\n", "y = np.array(5)\n", "# more about array: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.array.html\n", "z = x + y\n", "\n", "# Here you will have to use 'list slicing', in the format arrayname[start:stop:step]\n", "# more about slicing: https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html\n", "xLastTen = x[90:] #a slice of x, starting from element 90 to the end, with step 1\n", "# alternative way:\n", "xLastTen2 = x[-10:] #a slice of x, starting from element -10 (10th element from the end counting backwards) \n", "# to the end (moving forward), with step 1\n", "xLastTen, xLastTen2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2\n", "Update the code so that x goes from 0 to 1000 (1000 not included) in steps of 10" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120,\n", " 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250,\n", " 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380,\n", " 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510,\n", " 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640,\n", " 650, 660, 670, 680, 690, 700, 710, 720, 730, 740, 750, 760, 770,\n", " 780, 790, 800, 810, 820, 830, 840, 850, 860, 870, 880, 890, 900,\n", " 910, 920, 930, 940, 950, 960, 970, 980, 990])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xUpdate = np.arange(0, 1000, 10)\n", "xUpdate" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120,\n", " 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250,\n", " 260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380,\n", " 390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510,\n", " 520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640,\n", " 650, 660, 670, 680, 690, 700, 710, 720, 730, 740, 750, 760, 770,\n", " 780, 790, 800, 810, 820, 830, 840, 850, 860, 870, 880, 890, 900,\n", " 910, 920, 930, 940, 950, 960, 970, 980, 990])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#alternative way:\n", "xUpdate = np.array(10)*x\n", "xUpdate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.3 \n", "Reshape x so that it is no longer a 100 value array but a 10x10 matrix\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90],\n", " [100, 110, 120, 130, 140, 150, 160, 170, 180, 190],\n", " [200, 210, 220, 230, 240, 250, 260, 270, 280, 290],\n", " [300, 310, 320, 330, 340, 350, 360, 370, 380, 390],\n", " [400, 410, 420, 430, 440, 450, 460, 470, 480, 490],\n", " [500, 510, 520, 530, 540, 550, 560, 570, 580, 590],\n", " [600, 610, 620, 630, 640, 650, 660, 670, 680, 690],\n", " [700, 710, 720, 730, 740, 750, 760, 770, 780, 790],\n", " [800, 810, 820, 830, 840, 850, 860, 870, 880, 890],\n", " [900, 910, 920, 930, 940, 950, 960, 970, 980, 990]])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xReshape = xUpdate.reshape((10, 10))\n", "# more about reshape: https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.reshape.html\n", "xReshape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.4\n", "Multiply the first row by 1, the second by 2, the third by 3 and so on " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90],\n", " [ 200, 220, 240, 260, 280, 300, 320, 340, 360, 380],\n", " [ 600, 630, 660, 690, 720, 750, 780, 810, 840, 870],\n", " [1200, 1240, 1280, 1320, 1360, 1400, 1440, 1480, 1520, 1560],\n", " [2000, 2050, 2100, 2150, 2200, 2250, 2300, 2350, 2400, 2450],\n", " [3000, 3060, 3120, 3180, 3240, 3300, 3360, 3420, 3480, 3540],\n", " [4200, 4270, 4340, 4410, 4480, 4550, 4620, 4690, 4760, 4830],\n", " [5600, 5680, 5760, 5840, 5920, 6000, 6080, 6160, 6240, 6320],\n", " [7200, 7290, 7380, 7470, 7560, 7650, 7740, 7830, 7920, 8010],\n", " [9000, 9100, 9200, 9300, 9400, 9500, 9600, 9700, 9800, 9900]])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# we are going to multiply the xReshape matrix by a column-matrix with elements from 1 to 10\n", "a = np.arange(1,11) #we do not use np.arange(10), because this would result to an array from 0 to 9\n", "aNew = a[:, np.newaxis] #this will convert the array a from a column-matrix (10x1) to a row-matrix (1x10)\n", "zNew = xReshape * aNew\n", "zNew" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.5\n", "Using the matplotlib library plot each row of this matrix as a single series on the same graph" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i in range(10):\n", " plt.plot(zNew[i])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.6\n", "Using the matplotlib library plot each row of this matrix as a single series on separate sub-plots of the same figure and save this figure as figure1.png" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for i in range(10):\n", " plt.subplot(5, 2, i + 1) # places subplot in position i+1, of a plot with 5 rows and 2 columns\n", " plt.plot(zNew[i])\n", "# more about subplot function: https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplot.html\n", "plt.savefig('figure1.png')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Further Questions\n", "
    \n", "
  1. Give an example for a supervised learning problem, an unsupervised learning problem and a reinforcement learning problem
  2. \n", "
  3. For the spam filtering example, what would be our Training data and what would be our Labels? Once we have a machine learning algorithm, what would we expect the predictions to be
  4. \n", "
  5. Give an example of a supervised learning problem (not spam filtering) that is a classification task
  6. \n", "
  7. Give an example of a supervised learning problem (not student SAT scores) that is a regression task
  8. \n", "
  9. Give an example of a clustering learning problem
  10. \n", "
  11. How many samples are in the iris dataset and how many features are given for each sample in the iris dataset
  12. \n", "
" ] } ], "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.1" } }, "nbformat": 4, "nbformat_minor": 2 }