diff --git a/README.md b/README.md
old mode 100644
new mode 100755
index 6c91fda..54d4a06
--- a/README.md
+++ b/README.md
@@ -1,27 +1,24 @@
-# QSTP-ML
-A repository for the Machine Learning QSTP course. Look for assignments and downloads here!
-
-## Submission
-Submit your assignments on this google drive link: https://tinyurl.com/qstp-ml-2018
-
-## Resources
-"Machine Learning" by Stanford on Coursera: https://www.coursera.org/learn/machine-learning
-
-"Intro to Machine Learning" on Udacity: https://in.udacity.com/course/intro-to-machine-learning--ud120
-
-## Downloads
-Install Anaconda 3 on Windows: https://jcutrer.com/howto/dev/python/python-tutorial-howto-install-anaconda3-python-windows
-
-Install Anaconda 3 on Ubuntu: https://www.digitalocean.com/community/tutorials/how-to-install-the-anaconda-python-distribution-on-ubuntu-16-04
-
-#### Running Jupyter-Notebook:
-For Ubuntu:
-1) Open terminal in the same folder as the .ipynb file
-2) Start the jupyter-notebook server:
- ```bash
- $ jupyter-notebook
- ```
-3) Click on the relevant file in the browser.
-
-For Windows:
-http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html
+# QSTP-ML
+A repository for the Machine Learning QSTP course. Look for assignments and downloads here!
+
+## Resources
+"Machine Learning" by Stanford on Coursera: https://www.coursera.org/learn/machine-learning
+
+"Intro to Machine Learning" on Udacity: https://in.udacity.com/course/intro-to-machine-learning--ud120
+
+## Downloads
+Install Anaconda 3 on Windows: https://jcutrer.com/howto/dev/python/python-tutorial-howto-install-anaconda3-python-windows
+
+Install Anaconda 3 on Ubuntu: https://www.digitalocean.com/community/tutorials/how-to-install-the-anaconda-python-distribution-on-ubuntu-16-04
+
+#### Running Jupyter-Notebook:
+For Ubuntu:
+1) Open terminal in the same folder as the .ipynb file
+2) Start the jupyter-notebook server:
+ ```bash
+ $ jupyter-notebook
+ ```
+3) Click on the relevant file in the browser.
+
+For Windows:
+http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/execute.html
diff --git a/python-assn/assn-01/.ipynb_checkpoints/Assignment1-checkpoint.ipynb b/python-assn/assn-01/.ipynb_checkpoints/Assignment1-checkpoint.ipynb
deleted file mode 100644
index 799f00d..0000000
--- a/python-assn/assn-01/.ipynb_checkpoints/Assignment1-checkpoint.ipynb
+++ /dev/null
@@ -1,500 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Assignment 1: Strings, Lists and Files\n",
- "\n",
- "This assignment is based on basic python operations and to help you get a better understanding of lists, dictionaries, string operations, file I/O and other basic python operations. All the best!"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Q1) Given an positive integer, write a function to print the smallest integer that can be formed by rearranging the digits of the given number.**\n",
- "\n",
- "For e.g.:\n",
- "```\n",
- " >>> least_int(54235)\n",
- " 23455\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "23455\n"
- ]
- }
- ],
- "source": [
- "def least_int(num):\n",
- " #write your code here\n",
- " digits=[int(x) for x in str(num)]\n",
- " num_len=len(digits)\n",
- " result=0\n",
- " digits.sort()\n",
- " for i in digits:\n",
- " result=result*10\n",
- " result=result+i\n",
- " print(result)\n",
- "least_int(54235)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "**Q2) Given a string consisting of words and whitespaces, write a function to print a word consisting of the last letters of all the words beginning with the letter 'a'. Assume that all the alphabets in the strings are lower case.**\n",
- "\n",
- "For e.g.: \n",
- "```\n",
- ">>> mystring = 'apple banana aeroplace machine learning python append'\n",
- ">>> function_a(mystring)\n",
- "eed\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "eed"
- ]
- }
- ],
- "source": [
- "def function_a(string1):\n",
- " #write your code here\n",
- " words=[x for x in string1.split(\" \")]\n",
- " rev_word=[\"\".join(reversed(x)) for x in words]\n",
- " for i in range(0,len(words),1):\n",
- " x=words[i][0]\n",
- " y=rev_word[i][0]\n",
- " if x=='a':\n",
- " print(y,end=\"\")\n",
- "function_a(\"apple banana aeroplace machine learning python append\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "***\n",
- "**Q3) Given a string in the form of a sentence, remove all duplicate words from the sentence.(Order of words in the return value can differ from original)**\n",
- "For e.g.:\n",
- "```\n",
- ">>> mystr = 'Vedang Pro is Pro at ML'\n",
- ">>> remove_dup(mystr)\n",
- "'Vedang at ML Pro is'\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "['Vedang', 'Pro', 'is', 'at', 'ML']\n"
- ]
- }
- ],
- "source": [
- "def remove_dup(mystring):\n",
- " words=[x for x in mystring.split(\" \")]\n",
- " temp_list=[]\n",
- " for x in words:\n",
- " if x in temp_list:\n",
- " pass\n",
- " else:\n",
- " temp_list.append(x)\n",
- " return temp_list\n",
- "print(remove_dup(\"Vedang Pro is Pro at ML\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "______\n",
- "**Q4) Write a single line of code to check if a given string ```mystring``` is a palindrome or not.**\n",
- "For e.g.:\n",
- "```\n",
- ">>> mystring = 'SatanoscillatemymetallicsonataS'\n",
- "#your code\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 64,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "mystring = 'SatanoscillatemymetallicsonataS' #give any random string\n",
- "mystring[::]==mystring[::-1]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q5) Given a list of integers, create a new list where the i'th entry in the list is the average of previous i - 1 entries in the original list.**\n",
- "For e.g.:\n",
- "```\n",
- ">>> a = [1, 2, 3, 4, 5]\n",
- ">>> list_of_avgs(a)\n",
- "[1.0, 1.5, 2.0, 2.5, 3.0]\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[1.0, 1.5, 2.0, 2.5, 3.0]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "[1.0, 1.5, 2.0, 2.5, 3.0]"
- ]
- },
- "execution_count": 27,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "def list_of_avgs(a):\n",
- " sum_var=0\n",
- " result=[]\n",
- " for i in range(len(a)):\n",
- " sum_var=sum_var+a[i]\n",
- " result.append(sum_var/(i+1))\n",
- " print(result)\n",
- " return result\n",
- "list_of_avgs([1, 2, 3, 4, 5])"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q6) Given a list of random integers, modify the list such that all the elements in even places are in ascending order and all those in the odd places appear in a decreasing order. Assume labeling of the places start from the number zero.**\n",
- "\n",
- "For e.g.\n",
- "```\n",
- ">>> a = [1, 8, 4, 5, 2, 5, 3, 9, 4]\n",
- ">>> asc_desc_list(a)\n",
- "[1, 9, 2, 8, 3, 5, 4, 5, 4]\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[1, 9, 2, 8, 3, 5, 4, 5, 4]"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "def asc_decc_list(a):\n",
- " #write your code here\n",
- " odd_list=[a[i] for i in range(len(a)) if i%2==1]\n",
- " odd_list.sort(reverse=True)\n",
- " even_list=[a[i] for i in range(len(a)) if i%2==0]\n",
- " even_list.sort()\n",
- " result=[]\n",
- " for i in range(len(a)):\n",
- " if i%2==0:\n",
- " result.append(even_list[i//2])\n",
- " else:\n",
- " result.append(odd_list[i//2])\n",
- " return result\n",
- "\n",
- "asc_decc_list([1, 8, 4, 5, 2, 5, 3, 9, 4])"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q7) Write an iterator function to return the elements of the Fibonacci series.**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "#write your code here"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "**Q8) Print all the sublists of a list, seperated by a comma and a whitespace.**\n",
- "For e.g.:\n",
- "```\n",
- ">>> a = [1, 2]\n",
- ">>> sub_lists(a)\n",
- "[], [1], [1, 2] [2][\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[], [1], [1, 2], [2]]\n"
- ]
- }
- ],
- "source": [
- "def sub_lists(a):\n",
- " result=[[]]\n",
- " for i in range (len(a)):\n",
- " for j in range (i+1,len(a),1):\n",
- " temp_list=a[i:j]\n",
- " result.append(temp_list)\n",
- " return result\n",
- "print(sub_lists([1,2,3]))\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "**Q9) Write two functions, each of which take a list as an argument. The first function modifies the list by appending the sum of entries of the list passed as an argument. The second function reassigns a new list to the argument passed, where each entry in the new list is one more than the corresponding entry given as an argument. Is the change reflected outside the functions in both cases? Why/Why not?**\n",
- "Note: For reassign_list(a), you have to reassign a new list to the argument, and not change the existing list."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[1, 2, 3]\n",
- "[1, 2, 3]\n"
- ]
- }
- ],
- "source": [
- "def modify_list(a):\n",
- " #write your code here\n",
- " pass\n",
- "\n",
- "def reassign_list(a):\n",
- " #write your code here\n",
- " pass\n",
- "a = [1, 2, 3]\n",
- "modify_list(a)\n",
- "print(a)\n",
- "\n",
- "a = [1, 2, 3]\n",
- "reassign_list(a)\n",
- "print(a)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "**Q10) Given a string, return a dictionary consisting of each character in the string and the position at which it occurs. (Positions are to be taken as keys, and position numbering starts from 1)**\n",
- "\n",
- "For e.g.)\n",
- "\n",
- "```\n",
- ">>> a = 'Machine Learning'\n",
- ">>> char_position(a)\n",
- "{1: 'M', 2: 'a', 3: 'c', 4: 'h', 5: 'i', 6: 'n', 7: 'e', 9: 'L', 10: 'e', 11: 'a', 12: 'r', 13: 'n', 14: 'i', 15: 'n', 16: 'g'}\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{1: 'M', 2: 'a', 3: 'c', 4: 'h', 5: 'i', 6: 'n', 7: 'e', 8: ' ', 9: 'L', 10: 'e', 11: 'a', 12: 'r', 13: 'n', 14: 'i', 15: 'n', 16: 'g'}\n"
- ]
- }
- ],
- "source": [
- "def char_position(a):\n",
- " dict_char={i+1:a[i] for i in range(len(a))}\n",
- " return dict_char\n",
- "print(char_position(\"Machine Learning\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "\n",
- "**Q11) Given a string, arrange the characters in increasing order of their frequency at which they appear(Ignore any whitespaces)**\n",
- "\n",
- "For e.g.:\n",
- "```\n",
- ">>> a = 'ifadhaiusbdufbugfsdbfubgsidf'\n",
- ">>> sort_by_freq(a)\n",
- "'haaggiiisssdddduuuubbbbfffff'\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 82,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "def sort_by_freq(a):\n",
- " import string\n",
- " char_freq = dict.fromkeys(string.ascii_lowercase,0)\n",
- " for x in a:\n",
- " char_freq[x]=char_freq[x]+1\n",
- " for key in char_freq:\n",
- " min_freq=char_freq[key]\n",
- " for key in char_freq:\n",
- " if char_freq[key]>> least_int(54235)\n",
- " 23455\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "23455\n"
- ]
- }
- ],
- "source": [
- "def least_int(num):\n",
- " #write your code here\n",
- " digits=[int(x) for x in str(num)]\n",
- " num_len=len(digits)\n",
- " result=0\n",
- " digits.sort()\n",
- " for i in digits:\n",
- " result=result*10\n",
- " result=result+i\n",
- " print(result)\n",
- "least_int(54235)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "**Q2) Given a string consisting of words and whitespaces, write a function to print a word consisting of the last letters of all the words beginning with the letter 'a'. Assume that all the alphabets in the strings are lower case.**\n",
- "\n",
- "For e.g.: \n",
- "```\n",
- ">>> mystring = 'apple banana aeroplace machine learning python append'\n",
- ">>> function_a(mystring)\n",
- "eed\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "eed"
- ]
- }
- ],
- "source": [
- "def function_a(string1):\n",
- " #write your code here\n",
- " words=[x for x in string1.split(\" \")]\n",
- " rev_word=[\"\".join(reversed(x)) for x in words]\n",
- " for i in range(0,len(words),1):\n",
- " x=words[i][0]\n",
- " y=rev_word[i][0]\n",
- " if x=='a':\n",
- " print(y,end=\"\")\n",
- "function_a(\"apple banana aeroplace machine learning python append\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "***\n",
- "**Q3) Given a string in the form of a sentence, remove all duplicate words from the sentence.(Order of words in the return value can differ from original)**\n",
- "For e.g.:\n",
- "```\n",
- ">>> mystr = 'Vedang Pro is Pro at ML'\n",
- ">>> remove_dup(mystr)\n",
- "'Vedang at ML Pro is'\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "['Vedang', 'Pro', 'is', 'at', 'ML']\n"
- ]
- }
- ],
- "source": [
- "def remove_dup(mystring):\n",
- " words=[x for x in mystring.split(\" \")]\n",
- " temp_list=[]\n",
- " for x in words:\n",
- " if x in temp_list:\n",
- " pass\n",
- " else:\n",
- " temp_list.append(x)\n",
- " return temp_list\n",
- "print(remove_dup(\"Vedang Pro is Pro at ML\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "______\n",
- "**Q4) Write a single line of code to check if a given string ```mystring``` is a palindrome or not.**\n",
- "For e.g.:\n",
- "```\n",
- ">>> mystring = 'SatanoscillatemymetallicsonataS'\n",
- "#your code\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 64,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "mystring = 'SatanoscillatemymetallicsonataS' #give any random string\n",
- "mystring[::]==mystring[::-1]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q5) Given a list of integers, create a new list where the i'th entry in the list is the average of previous i - 1 entries in the original list.**\n",
- "For e.g.:\n",
- "```\n",
- ">>> a = [1, 2, 3, 4, 5]\n",
- ">>> list_of_avgs(a)\n",
- "[1.0, 1.5, 2.0, 2.5, 3.0]\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[1.0, 1.5, 2.0, 2.5, 3.0]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "[1.0, 1.5, 2.0, 2.5, 3.0]"
- ]
- },
- "execution_count": 27,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "def list_of_avgs(a):\n",
- " sum_var=0\n",
- " result=[]\n",
- " for i in range(len(a)):\n",
- " sum_var=sum_var+a[i]\n",
- " result.append(sum_var/(i+1))\n",
- " print(result)\n",
- " return result\n",
- "list_of_avgs([1, 2, 3, 4, 5])"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q6) Given a list of random integers, modify the list such that all the elements in even places are in ascending order and all those in the odd places appear in a decreasing order. Assume labeling of the places start from the number zero.**\n",
- "\n",
- "For e.g.\n",
- "```\n",
- ">>> a = [1, 8, 4, 5, 2, 5, 3, 9, 4]\n",
- ">>> asc_desc_list(a)\n",
- "[1, 9, 2, 8, 3, 5, 4, 5, 4]\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[1, 9, 2, 8, 3, 5, 4, 5, 4]"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "def asc_decc_list(a):\n",
- " #write your code here\n",
- " odd_list=[a[i] for i in range(len(a)) if i%2==1]\n",
- " odd_list.sort(reverse=True)\n",
- " even_list=[a[i] for i in range(len(a)) if i%2==0]\n",
- " even_list.sort()\n",
- " result=[]\n",
- " for i in range(len(a)):\n",
- " if i%2==0:\n",
- " result.append(even_list[i//2])\n",
- " else:\n",
- " result.append(odd_list[i//2])\n",
- " return result\n",
- "\n",
- "asc_decc_list([1, 8, 4, 5, 2, 5, 3, 9, 4])"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q7) Write an iterator function to return the elements of the Fibonacci series.**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "def Fibonacci(n):\n",
- " a0 = 0\n",
- " a1 = 1\n",
- " count = 0\n",
- " result=[]\n",
- " result.append(a0)\n",
- " while count>> a = [1, 2]\n",
- ">>> sub_lists(a)\n",
- "[], [1], [1, 2] [2][\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[], [1], [1, 2], [2]]\n"
- ]
- }
- ],
- "source": [
- "def sub_lists(a):\n",
- " result=[[]]\n",
- " for i in range (len(a)):\n",
- " for j in range (i+1,len(a),1):\n",
- " temp_list=a[i:j]\n",
- " result.append(temp_list)\n",
- " return result\n",
- "print(sub_lists([1,2,3]))\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "**Q9) Write two functions, each of which take a list as an argument. The first function modifies the list by appending the sum of entries of the list passed as an argument. The second function reassigns a new list to the argument passed, where each entry in the new list is one more than the corresponding entry given as an argument. Is the change reflected outside the functions in both cases? Why/Why not?**\n",
- "Note: For reassign_list(a), you have to reassign a new list to the argument, and not change the existing list."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[1, 2, 3]\n",
- "[1, 2, 3]\n"
- ]
- }
- ],
- "source": [
- "def modify_list(a):\n",
- " #write your code here\n",
- " pass\n",
- "\n",
- "def reassign_list(a):\n",
- " #write your code here\n",
- " pass\n",
- "a = [1, 2, 3]\n",
- "modify_list(a)\n",
- "print(a)\n",
- "\n",
- "a = [1, 2, 3]\n",
- "reassign_list(a)\n",
- "print(a)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "**Q10) Given a string, return a dictionary consisting of each character in the string and the position at which it occurs. (Positions are to be taken as keys, and position numbering starts from 1)**\n",
- "\n",
- "For e.g.)\n",
- "\n",
- "```\n",
- ">>> a = 'Machine Learning'\n",
- ">>> char_position(a)\n",
- "{1: 'M', 2: 'a', 3: 'c', 4: 'h', 5: 'i', 6: 'n', 7: 'e', 9: 'L', 10: 'e', 11: 'a', 12: 'r', 13: 'n', 14: 'i', 15: 'n', 16: 'g'}\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{1: 'M', 2: 'a', 3: 'c', 4: 'h', 5: 'i', 6: 'n', 7: 'e', 8: ' ', 9: 'L', 10: 'e', 11: 'a', 12: 'r', 13: 'n', 14: 'i', 15: 'n', 16: 'g'}\n"
- ]
- }
- ],
- "source": [
- "def char_position(a):\n",
- " dict_char={i+1:a[i] for i in range(len(a))}\n",
- " return dict_char\n",
- "print(char_position(\"Machine Learning\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "\n",
- "**Q11) Given a string, arrange the characters in increasing order of their frequency at which they appear(Ignore any whitespaces)**\n",
- "\n",
- "For e.g.:\n",
- "```\n",
- ">>> a = 'ifadhaiusbdufbugfsdbfubgsidf'\n",
- ">>> sort_by_freq(a)\n",
- "'haaggiiisssdddduuuubbbbfffff'\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "haaggiiisssbbbbdddduuuufffff5\n"
- ]
- }
- ],
- "source": [
- "def sort_by_freq(a):\n",
- " import string\n",
- " char_freq = dict.fromkeys(string.ascii_lowercase,0)\n",
- " for x in a:\n",
- " char_freq[x]=char_freq[x]+1\n",
- " \n",
- " for key in char_freq:\n",
- " min_freq=char_freq[key]\n",
- " for key2 in char_freq:\n",
- " if char_freq[key2]>min_freq and min_freq==0:\n",
- " min_freq=char_freq[key2]\n",
- " elif char_freq[key2]0:\n",
- " min_freq=char_freq[key2]\n",
- "\n",
- " for key2 in char_freq:\n",
- " if char_freq[key2]==min_freq:\n",
- " for i in range(char_freq[key2]):\n",
- " print(key2,end='')\n",
- " char_freq[key2]=0\n",
- " break\n",
- "\n",
- "sort_by_freq(\"ifadhaiusbdufbugfsdbfubgsidf\")\n",
- "############################\n",
- "#Q12\n",
- "n=int(input())\n",
- "read_file = open(\"myfile.txt\",\"r+\")\n",
- "words=[x for x in read_file.read().split(\" \")]\n",
- "write_file = open(words[n-1], \"w+\")\n",
- "for i in range(1,len(words),1):\n",
- " write_file.write(words[len((words))-i-1])\n",
- " write_file.write(\" \")\n",
- "write_file.close()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "---\n",
- "**Q12)**\n",
- "\n",
- "**A) Create a file called myfile.txt**\n",
- "\n",
- "**B) Enter some random paragraph into the file.**\n",
- "\n",
- "**C) Take an integer input n from the user. Create a file with the name as the nth word in myfile.txt.(Assume that n is less than the number of words in your file.)**\n",
- "\n",
- "**D) Enter the paragraph from myfile.txt into your new file, in reverse order. \n",
- "Note: In part (D) only the order of the words should change, the words are not reversed in themselves.**"
- ]
- }
- ],
- "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.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/python-assn/assn-01/Assignment1.ipynb b/python-assn/assn-01/.ipynb_checkpoints/Samyak Jain-Assignment1-checkpoint.ipynb
old mode 100644
new mode 100755
similarity index 68%
rename from python-assn/assn-01/Assignment1.ipynb
rename to python-assn/assn-01/.ipynb_checkpoints/Samyak Jain-Assignment1-checkpoint.ipynb
index 2456c0b..7b0ba92
--- a/python-assn/assn-01/Assignment1.ipynb
+++ b/python-assn/assn-01/.ipynb_checkpoints/Samyak Jain-Assignment1-checkpoint.ipynb
@@ -24,13 +24,29 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "def least_int(num):\n",
- " #write your code here\n",
- " pass"
+ "def least_int(num): \n",
+ " num_list=[]\n",
+ " for d in str(num):\n",
+ " num_list.append(int(d))\n",
+ " zero_flag=False\n",
+ " num_list=sorted(num_list)\n",
+ " for i in range(0,len(num_list)): #Handling Zeroes\n",
+ " if(num_list[i]==0):\n",
+ " zero_flag=True\n",
+ " else:\n",
+ " if(zero_flag==True):\n",
+ " temp=num_list[i]\n",
+ " num_list[i]=num_list[0]\n",
+ " num_list[0]=temp\n",
+ " break\n",
+ " number=\"\"\n",
+ " for i in num_list:\n",
+ " number+=str(i)\n",
+ " return int(number)"
]
},
{
@@ -51,13 +67,17 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def function_a(string1):\n",
- " #write your code here\n",
- " pass"
+ " words=string1.split()\n",
+ " rev_string=\"\"\n",
+ " for word in words:\n",
+ " if(word[0]=='a'):\n",
+ " rev_string+=word[len(word)-1]\n",
+ " return rev_string"
]
},
{
@@ -76,13 +96,23 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def remove_dup(mystring):\n",
- " #write your code here\n",
- " pass"
+ " words=mystring.split()\n",
+ " word_dup={key:1 for key in words}\n",
+ " for index,word in enumerate(words):\n",
+ " if(word_dup[word]>1):\n",
+ " del(words[index])\n",
+ " else:\n",
+ " word_dup[word]+=1\n",
+ " final_str=\"\"\n",
+ " for word in words:\n",
+ " final_str+=\" \"+word\n",
+ " return final_str\n",
+ "remove_dup('Vedang Pro is Pro at ML')"
]
},
{
@@ -100,12 +130,13 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "mystring = '' #give any random string\n",
- "#write your code here"
+ "mystring = 'SatanoscillatemymetallicsonataS'\n",
+ "result=True if mystring==mystring[::-1] else False\n",
+ "result"
]
},
{
@@ -124,13 +155,18 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def list_of_avgs(a):\n",
- " #write your code here\n",
- " pass"
+ " avg=[]\n",
+ " for num in a:\n",
+ " sum=0\n",
+ " for i in range(num):\n",
+ " sum+=i\n",
+ " avg.append(sum/num+1)\n",
+ " return avg"
]
},
{
@@ -150,7 +186,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -169,11 +205,36 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "#write your code here"
+ "class Fibonacci:\n",
+ " def __init__(self,stop_index):\n",
+ " self.stop=stop_index\n",
+ " self.num=0\n",
+ " self.res=0\n",
+ " self.next=1\n",
+ " self.prev=0\n",
+ " \n",
+ " def __next__(self):\n",
+ " self.num+=1\n",
+ " if(self.num<=self.stop):\n",
+ " if(self.num==1):\n",
+ " return 0\n",
+ " self.res=self.next+self.prev\n",
+ " self.prev=self.next\n",
+ " self.next=self.res\n",
+ " return self.res\n",
+ " else:\n",
+ " raise StopIteration\n",
+ " \n",
+ " def __iter__(self):\n",
+ " return self\n",
+ "\n",
+ "f=Fibonacci(100)\n",
+ "for i in f:\n",
+ " print(i)"
]
},
{
@@ -192,7 +253,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
@@ -212,18 +273,9 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[1, 2, 3]\n",
- "[1, 2, 3]\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"def modify_list(a):\n",
" #write your code here\n",
@@ -259,13 +311,19 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def char_position(a):\n",
- " #write your code here\n",
- " pass"
+ " pos_dict={}\n",
+ " for key,val in enumerate(a):\n",
+ " if(val==' '):\n",
+ " continue\n",
+ " else:\n",
+ " pos_dict[key+1]=val\n",
+ " print(pos_dict)\n",
+ "char_position('Hello World')"
]
},
{
@@ -286,13 +344,25 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
+ "import operator\n",
"def sort_by_freq(a):\n",
- " #write your code here\n",
- " pass"
+ " freq={}\n",
+ " for val in a:\n",
+ " if(val in freq):\n",
+ " freq[val]+=1\n",
+ " else:\n",
+ " freq[val]=1\n",
+ " x=freq\n",
+ " final_str=\"\"\n",
+ " sorted_x = sorted(x.items(), key=operator.itemgetter(1))\n",
+ " for i in sorted_x:\n",
+ " final_str+=(i[0]*i[1])\n",
+ " return (final_str)\n",
+ "sort_by_freq('ifadhaiusbdufbugfsdbfubgsidf')"
]
},
{
@@ -330,7 +400,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.6.5"
+ "version": "3.6.4"
}
},
"nbformat": 4,
diff --git a/python-assn/assn-01/Rohan Prabhu K.ipynb b/python-assn/assn-01/Rohan Prabhu K.ipynb
deleted file mode 100644
index 83cdd1e..0000000
--- a/python-assn/assn-01/Rohan Prabhu K.ipynb
+++ /dev/null
@@ -1,547 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Assignment 1: Strings, Lists and Files\n",
- "\n",
- "This assignment is based on basic python operations and to help you get a better understanding of lists, dictionaries, string operations, file I/O and other basic python operations. All the best!"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Q1) Given an positive integer, write a function to print the smallest integer that can be formed by rearranging the digits of the given number.**\n",
- "\n",
- "For e.g.:\n",
- "```\n",
- " >>> least_int(54235)\n",
- " 23455\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "23455\n"
- ]
- }
- ],
- "source": [
- "def least_int(num):\n",
- " #write your code here\n",
- " digits=[int(x) for x in str(num)]\n",
- " num_len=len(digits)\n",
- " result=0\n",
- " digits.sort()\n",
- " for i in digits:\n",
- " result=result*10\n",
- " result=result+i\n",
- " print(result)\n",
- "least_int(54235)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "**Q2) Given a string consisting of words and whitespaces, write a function to print a word consisting of the last letters of all the words beginning with the letter 'a'. Assume that all the alphabets in the strings are lower case.**\n",
- "\n",
- "For e.g.: \n",
- "```\n",
- ">>> mystring = 'apple banana aeroplace machine learning python append'\n",
- ">>> function_a(mystring)\n",
- "eed\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "eed"
- ]
- }
- ],
- "source": [
- "def function_a(string1):\n",
- " #write your code here\n",
- " words=[x for x in string1.split(\" \")]\n",
- " rev_word=[\"\".join(reversed(x)) for x in words]\n",
- " for i in range(0,len(words),1):\n",
- " x=words[i][0]\n",
- " y=rev_word[i][0]\n",
- " if x=='a':\n",
- " print(y,end=\"\")\n",
- "function_a(\"apple banana aeroplace machine learning python append\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "***\n",
- "**Q3) Given a string in the form of a sentence, remove all duplicate words from the sentence.(Order of words in the return value can differ from original)**\n",
- "For e.g.:\n",
- "```\n",
- ">>> mystr = 'Vedang Pro is Pro at ML'\n",
- ">>> remove_dup(mystr)\n",
- "'Vedang at ML Pro is'\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "['Vedang', 'Pro', 'is', 'at', 'ML']\n"
- ]
- }
- ],
- "source": [
- "def remove_dup(mystring):\n",
- " words=[x for x in mystring.split(\" \")]\n",
- " temp_list=[]\n",
- " for x in words:\n",
- " if x in temp_list:\n",
- " pass\n",
- " else:\n",
- " temp_list.append(x)\n",
- " return temp_list\n",
- "print(remove_dup(\"Vedang Pro is Pro at ML\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "______\n",
- "**Q4) Write a single line of code to check if a given string ```mystring``` is a palindrome or not.**\n",
- "For e.g.:\n",
- "```\n",
- ">>> mystring = 'SatanoscillatemymetallicsonataS'\n",
- "#your code\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "True"
- ]
- },
- "execution_count": 64,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "mystring = 'SatanoscillatemymetallicsonataS' #give any random string\n",
- "mystring[::]==mystring[::-1]"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q5) Given a list of integers, create a new list where the i'th entry in the list is the average of previous i - 1 entries in the original list.**\n",
- "For e.g.:\n",
- "```\n",
- ">>> a = [1, 2, 3, 4, 5]\n",
- ">>> list_of_avgs(a)\n",
- "[1.0, 1.5, 2.0, 2.5, 3.0]\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[1.0, 1.5, 2.0, 2.5, 3.0]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "[1.0, 1.5, 2.0, 2.5, 3.0]"
- ]
- },
- "execution_count": 27,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "def list_of_avgs(a):\n",
- " sum_var=0\n",
- " result=[]\n",
- " for i in range(len(a)):\n",
- " sum_var=sum_var+a[i]\n",
- " result.append(sum_var/(i+1))\n",
- " print(result)\n",
- " return result\n",
- "list_of_avgs([1, 2, 3, 4, 5])"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q6) Given a list of random integers, modify the list such that all the elements in even places are in ascending order and all those in the odd places appear in a decreasing order. Assume labeling of the places start from the number zero.**\n",
- "\n",
- "For e.g.\n",
- "```\n",
- ">>> a = [1, 8, 4, 5, 2, 5, 3, 9, 4]\n",
- ">>> asc_desc_list(a)\n",
- "[1, 9, 2, 8, 3, 5, 4, 5, 4]\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[1, 9, 2, 8, 3, 5, 4, 5, 4]"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "def asc_decc_list(a):\n",
- " #write your code here\n",
- " odd_list=[a[i] for i in range(len(a)) if i%2==1]\n",
- " odd_list.sort(reverse=True)\n",
- " even_list=[a[i] for i in range(len(a)) if i%2==0]\n",
- " even_list.sort()\n",
- " result=[]\n",
- " for i in range(len(a)):\n",
- " if i%2==0:\n",
- " result.append(even_list[i//2])\n",
- " else:\n",
- " result.append(odd_list[i//2])\n",
- " return result\n",
- "\n",
- "asc_decc_list([1, 8, 4, 5, 2, 5, 3, 9, 4])"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "___\n",
- "**Q7) Write an iterator function to return the elements of the Fibonacci series.**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "def Fibonacci(n):\n",
- " a0 = 0\n",
- " a1 = 1\n",
- " count = 0\n",
- " result=[]\n",
- " result.append(a0)\n",
- " while count>> a = [1, 2]\n",
- ">>> sub_lists(a)\n",
- "[], [1], [1, 2] [2][\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[], [1], [1, 2], [2]]\n"
- ]
- }
- ],
- "source": [
- "def sub_lists(a):\n",
- " result=[[]]\n",
- " for i in range (len(a)):\n",
- " for j in range (i+1,len(a),1):\n",
- " temp_list=a[i:j]\n",
- " result.append(temp_list)\n",
- " return result\n",
- "print(sub_lists([1,2,3]))\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "**Q9) Write two functions, each of which take a list as an argument. The first function modifies the list by appending the sum of entries of the list passed as an argument. The second function reassigns a new list to the argument passed, where each entry in the new list is one more than the corresponding entry given as an argument. Is the change reflected outside the functions in both cases? Why/Why not?**\n",
- "Note: For reassign_list(a), you have to reassign a new list to the argument, and not change the existing list."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[1, 2, 3]\n",
- "[1, 2, 3]\n"
- ]
- }
- ],
- "source": [
- "def modify_list(a):\n",
- " #write your code here\n",
- " pass\n",
- "\n",
- "def reassign_list(a):\n",
- " #write your code here\n",
- " pass\n",
- "a = [1, 2, 3]\n",
- "modify_list(a)\n",
- "print(a)\n",
- "\n",
- "a = [1, 2, 3]\n",
- "reassign_list(a)\n",
- "print(a)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "**Q10) Given a string, return a dictionary consisting of each character in the string and the position at which it occurs. (Positions are to be taken as keys, and position numbering starts from 1)**\n",
- "\n",
- "For e.g.)\n",
- "\n",
- "```\n",
- ">>> a = 'Machine Learning'\n",
- ">>> char_position(a)\n",
- "{1: 'M', 2: 'a', 3: 'c', 4: 'h', 5: 'i', 6: 'n', 7: 'e', 9: 'L', 10: 'e', 11: 'a', 12: 'r', 13: 'n', 14: 'i', 15: 'n', 16: 'g'}\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{1: 'M', 2: 'a', 3: 'c', 4: 'h', 5: 'i', 6: 'n', 7: 'e', 8: ' ', 9: 'L', 10: 'e', 11: 'a', 12: 'r', 13: 'n', 14: 'i', 15: 'n', 16: 'g'}\n"
- ]
- }
- ],
- "source": [
- "def char_position(a):\n",
- " dict_char={i+1:a[i] for i in range(len(a))}\n",
- " return dict_char\n",
- "print(char_position(\"Machine Learning\"))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "\n",
- "**Q11) Given a string, arrange the characters in increasing order of their frequency at which they appear(Ignore any whitespaces)**\n",
- "\n",
- "For e.g.:\n",
- "```\n",
- ">>> a = 'ifadhaiusbdufbugfsdbfubgsidf'\n",
- ">>> sort_by_freq(a)\n",
- "'haaggiiisssdddduuuubbbbfffff'\n",
- "```"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "haaggiiisssbbbbdddduuuufffff5\n"
- ]
- }
- ],
- "source": [
- "def sort_by_freq(a):\n",
- " import string\n",
- " char_freq = dict.fromkeys(string.ascii_lowercase,0)\n",
- " for x in a:\n",
- " char_freq[x]=char_freq[x]+1\n",
- " \n",
- " for key in char_freq:\n",
- " min_freq=char_freq[key]\n",
- " for key2 in char_freq:\n",
- " if char_freq[key2]>min_freq and min_freq==0:\n",
- " min_freq=char_freq[key2]\n",
- " elif char_freq[key2]0:\n",
- " min_freq=char_freq[key2]\n",
- "\n",
- " for key2 in char_freq:\n",
- " if char_freq[key2]==min_freq:\n",
- " for i in range(char_freq[key2]):\n",
- " print(key2,end='')\n",
- " char_freq[key2]=0\n",
- " break\n",
- "\n",
- "sort_by_freq(\"ifadhaiusbdufbugfsdbfubgsidf\")\n",
- "############################\n",
- "#Q12\n",
- "n=int(input())\n",
- "read_file = open(\"myfile.txt\",\"r+\")\n",
- "words=[x for x in read_file.read().split(\" \")]\n",
- "write_file = open(words[n-1], \"w+\")\n",
- "for i in range(1,len(words),1):\n",
- " write_file.write(words[len((words))-i-1])\n",
- " write_file.write(\" \")\n",
- "write_file.close()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "---\n",
- "---\n",
- "**Q12)**\n",
- "\n",
- "**A) Create a file called myfile.txt**\n",
- "\n",
- "**B) Enter some random paragraph into the file.**\n",
- "\n",
- "**C) Take an integer input n from the user. Create a file with the name as the nth word in myfile.txt.(Assume that n is less than the number of words in your file.)**\n",
- "\n",
- "**D) Enter the paragraph from myfile.txt into your new file, in reverse order. \n",
- "Note: In part (D) only the order of the words should change, the words are not reversed in themselves.**"
- ]
- }
- ],
- "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.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/python-assn/assn-01/Rohan Prabhu.py b/python-assn/assn-01/Rohan Prabhu.py
deleted file mode 100644
index e69de29..0000000
diff --git a/python-assn/assn-01/Sahil_Jain.ipynb b/python-assn/assn-01/Samyak Jain-Assignment1.ipynb
old mode 100644
new mode 100755
similarity index 65%
rename from python-assn/assn-01/Sahil_Jain.ipynb
rename to python-assn/assn-01/Samyak Jain-Assignment1.ipynb
index a51a989..7b0ba92
--- a/python-assn/assn-01/Sahil_Jain.ipynb
+++ b/python-assn/assn-01/Samyak Jain-Assignment1.ipynb
@@ -24,21 +24,29 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "def least_int(num):\n",
- " num = str(num)\n",
- " digits=[]\n",
- " final_number=0\n",
- " for x in str(num):\n",
- " digits = digits + [int(x)]\n",
- " digits.sort()\n",
- " for i in range(len(num),0,-1):\n",
- " final_number = final_number + digits[len(num)-i]*pow(10,i-1)\n",
- " return final_number\n",
- " pass "
+ "def least_int(num): \n",
+ " num_list=[]\n",
+ " for d in str(num):\n",
+ " num_list.append(int(d))\n",
+ " zero_flag=False\n",
+ " num_list=sorted(num_list)\n",
+ " for i in range(0,len(num_list)): #Handling Zeroes\n",
+ " if(num_list[i]==0):\n",
+ " zero_flag=True\n",
+ " else:\n",
+ " if(zero_flag==True):\n",
+ " temp=num_list[i]\n",
+ " num_list[i]=num_list[0]\n",
+ " num_list[0]=temp\n",
+ " break\n",
+ " number=\"\"\n",
+ " for i in num_list:\n",
+ " number+=str(i)\n",
+ " return int(number)"
]
},
{
@@ -59,19 +67,17 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def function_a(string1):\n",
- " words = mystring.split(\" \")\n",
- " string=''\n",
- " for i in range(len(words)):\n",
- " character = words[i][0]\n",
- " if character=='a' :\n",
- " string = string + words[i][-1]\n",
- " return string\n",
- " pass"
+ " words=string1.split()\n",
+ " rev_string=\"\"\n",
+ " for word in words:\n",
+ " if(word[0]=='a'):\n",
+ " rev_string+=word[len(word)-1]\n",
+ " return rev_string"
]
},
{
@@ -90,18 +96,23 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def remove_dup(mystring):\n",
- " words = mystr.split(\" \")\n",
- " new_string=''\n",
- " for i in words:\n",
- " if i not in new_string:\n",
- " new_string = new_string + i + ' ' \n",
- " return new_string\n",
- " pass"
+ " words=mystring.split()\n",
+ " word_dup={key:1 for key in words}\n",
+ " for index,word in enumerate(words):\n",
+ " if(word_dup[word]>1):\n",
+ " del(words[index])\n",
+ " else:\n",
+ " word_dup[word]+=1\n",
+ " final_str=\"\"\n",
+ " for word in words:\n",
+ " final_str+=\" \"+word\n",
+ " return final_str\n",
+ "remove_dup('Vedang Pro is Pro at ML')"
]
},
{
@@ -119,21 +130,13 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"mystring = 'SatanoscillatemymetallicsonataS'\n",
- "for i in range(len(mystring)):\n",
- " if mystring[i]==mystring[-1-i] :\n",
- " count = 1 \n",
- " else:\n",
- " count = 0\n",
- " break\n",
- "if count==1 :\n",
- " print(\"Is palendrome\")\n",
- "else:\n",
- " print(\"No palendrome \")"
+ "result=True if mystring==mystring[::-1] else False\n",
+ "result"
]
},
{
@@ -152,21 +155,18 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def list_of_avgs(a):\n",
- " a = [1, 2, 3, 4, 5]\n",
- " avg = []\n",
- " for i in range(1,len(a)+1):\n",
- " total = 0\n",
- " for j in range(i):\n",
- " total = total + a[j]\n",
- " average = total/(i)\n",
- " avg.append(average)\n",
- " return(avg)\n",
- " pass"
+ " avg=[]\n",
+ " for num in a:\n",
+ " sum=0\n",
+ " for i in range(num):\n",
+ " sum+=i\n",
+ " avg.append(sum/num+1)\n",
+ " return avg"
]
},
{
@@ -186,31 +186,12 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def asc_decc_list(a):\n",
- " a = [1, 8, 4, 5, 2, 5, 3, 9, 4]\n",
- " even = []\n",
- " odd = []\n",
- " for i in range(len(a)):\n",
- " if i%2==0:\n",
- " even.append(a[i])\n",
- " else:\n",
- " odd.append(a[i])\n",
- " even.sort()\n",
- " odd.sort(reverse=True)\n",
- " ecount=0\n",
- " ocount=0\n",
- " for i in range(len(a)):\n",
- " if i%2==0:\n",
- " a[i]=even[ecount]\n",
- " ecount +=1\n",
- " else:\n",
- " a[i]=odd[ocount]\n",
- " ocount +=1\n",
- " return a\n",
+ " #write your code here\n",
" pass\n"
]
},
@@ -224,22 +205,36 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
- "def fib(limit):\n",
- " a, b = 0, 1\n",
- " while a < limit:\n",
- " yield a\n",
- " a, b = b, a + b\n",
+ "class Fibonacci:\n",
+ " def __init__(self,stop_index):\n",
+ " self.stop=stop_index\n",
+ " self.num=0\n",
+ " self.res=0\n",
+ " self.next=1\n",
+ " self.prev=0\n",
+ " \n",
+ " def __next__(self):\n",
+ " self.num+=1\n",
+ " if(self.num<=self.stop):\n",
+ " if(self.num==1):\n",
+ " return 0\n",
+ " self.res=self.next+self.prev\n",
+ " self.prev=self.next\n",
+ " self.next=self.res\n",
+ " return self.res\n",
+ " else:\n",
+ " raise StopIteration\n",
+ " \n",
+ " def __iter__(self):\n",
+ " return self\n",
"\n",
- "print(\"Enter Max limit\")\n",
- "a=input()\n",
- "#iterating using a for in loop \n",
- "for i in fib(int(a)):\n",
- " if i!=0:\n",
- " print(i)"
+ "f=Fibonacci(100)\n",
+ "for i in f:\n",
+ " print(i)"
]
},
{
@@ -258,16 +253,12 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def sub_lists(a):\n",
- " list=[[]]\n",
- " for i in range(len(a)):\n",
- " for j in range(i+1,len(a)+1):\n",
- " list.append(a[i:j])\n",
- " return list\n",
+ " #write your code here\n",
" pass"
]
},
@@ -282,32 +273,16 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[1, 2, 3]\n",
- "[1, 2, 3]\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"def modify_list(a):\n",
- " total = 0\n",
- " for i in a:\n",
- " total = total + i\n",
- " a.append(total)\n",
+ " #write your code here\n",
" pass\n",
"\n",
"def reassign_list(a):\n",
- " new_a=[]\n",
- " for i in a:\n",
- " new_a.append( i + 1)\n",
- " a = new_a\n",
- " print(a)\n",
+ " #write your code here\n",
" pass\n",
"a = [1, 2, 3]\n",
"modify_list(a)\n",
@@ -336,19 +311,19 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def char_position(a):\n",
- " position={}\n",
- " count=1\n",
- " for i in a:\n",
- " if i!=' ':\n",
- " position[count]=i\n",
- " count +=1\n",
- " return position\n",
- " pass"
+ " pos_dict={}\n",
+ " for key,val in enumerate(a):\n",
+ " if(val==' '):\n",
+ " continue\n",
+ " else:\n",
+ " pos_dict[key+1]=val\n",
+ " print(pos_dict)\n",
+ "char_position('Hello World')"
]
},
{
@@ -369,23 +344,25 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
+ "import operator\n",
"def sort_by_freq(a):\n",
- " import operator\n",
- " new_string=''\n",
- " count = {}\n",
- "\n",
- " for character in a:\n",
- " count.setdefault(character, 0)\n",
- " count[character] = count[character] + 1\n",
- " #sorting Dictionary by its values\n",
- " sorted_count = sorted(count.items(), key=operator.itemgetter(1))\n",
- " for k in sorted_count:\n",
- " new_string = new_string + k[0]*k[1]\n",
- " pass"
+ " freq={}\n",
+ " for val in a:\n",
+ " if(val in freq):\n",
+ " freq[val]+=1\n",
+ " else:\n",
+ " freq[val]=1\n",
+ " x=freq\n",
+ " final_str=\"\"\n",
+ " sorted_x = sorted(x.items(), key=operator.itemgetter(1))\n",
+ " for i in sorted_x:\n",
+ " final_str+=(i[0]*i[1])\n",
+ " return (final_str)\n",
+ "sort_by_freq('ifadhaiusbdufbugfsdbfubgsidf')"
]
},
{
diff --git a/python-assn/assn-01/entered b/python-assn/assn-01/entered
deleted file mode 100644
index 7c646c8..0000000
--- a/python-assn/assn-01/entered
+++ /dev/null
@@ -1 +0,0 @@
-her of one slighted having his by resentment particular into sharpened was behaviour general his of dislike whose Bennet, Mrs. was him against violent most the Amongst again. there come never would he that hoped everybody and world, the in man disagreeable most proudest, the was He decided. was character His party. own his of one to occasionally speaking room, the about walking in evening the of rest the spent and lady, other any to introduced being declined Bingley, Miss with once and Hurst Mrs. with once only danced Darcy Mr. friend! his and him between contrast a What themselves. for speak must qualities amiable Such Netherfield. at himself one giving of talked and early, so closed ball the that angry was dance, every danced unreserved, and lively was he room; the in people principal the all with acquainted himself made soon had Bingley friend.Mr. his with compared be to unworthy being and countenance, disagreeable forbidding, most a having from him save then could Derbyshire in estate large his all not and pleased; being above and company, his above be to proud; be to discovered was he for popularity; his of tide the turned which disgust a gave manners his till evening, the half about for admiration great with at looked was he and Bingley, Mr. than handsomer much was he declared ladies the man, a of figure fine a be to him pronounced gentlemen The a-year. thousand ten having his of entrance, his after minutes five within circulation general in was which report the and mien, noble features, handsome person, tall fine, his by room the of attention the drew soon Darcy Mr. friend his but gentleman; the looked merely Hurst, Mr. brother-in-law, His fashion. decided of air an with women, fine were sisters His manners. unaffected easy, and countenance, pleasant a had he gentlemanlike; and good-looking was Bingley man.Mr. young another and eldest, the of husband the sisters, two his Bingley, Mr. – together, all five of only consisted it room assembly the entered party the when And
\ No newline at end of file
diff --git a/python-assn/assn-01/myfile.txt b/python-assn/assn-01/myfile.txt
deleted file mode 100644
index 46a65f5..0000000
--- a/python-assn/assn-01/myfile.txt
+++ /dev/null
@@ -1 +0,0 @@
-And when the party entered the assembly room it consisted only of five all together, – Mr. Bingley, his two sisters, the husband of the eldest, and another young man.Mr. Bingley was good-looking and gentlemanlike; he had a pleasant countenance, and easy, unaffected manners. His sisters were fine women, with an air of decided fashion. His brother-in-law, Mr. Hurst, merely looked the gentleman; but his friend Mr. Darcy soon drew the attention of the room by his fine, tall person, handsome features, noble mien, and the report which was in general circulation within five minutes after his entrance, of his having ten thousand a-year. The gentlemen pronounced him to be a fine figure of a man, the ladies declared he was much handsomer than Mr. Bingley, and he was looked at with great admiration for about half the evening, till his manners gave a disgust which turned the tide of his popularity; for he was discovered to be proud; to be above his company, and above being pleased; and not all his large estate in Derbyshire could then save him from having a most forbidding, disagreeable countenance, and being unworthy to be compared with his friend.Mr. Bingley had soon made himself acquainted with all the principal people in the room; he was lively and unreserved, danced every dance, was angry that the ball closed so early, and talked of giving one himself at Netherfield. Such amiable qualities must speak for themselves. What a contrast between him and his friend! Mr. Darcy danced only once with Mrs. Hurst and once with Miss Bingley, declined being introduced to any other lady, and spent the rest of the evening in walking about the room, speaking occasionally to one of his own party. His character was decided. He was the proudest, most disagreeable man in the world, and everybody hoped that he would never come there again. Amongst the most violent against him was Mrs. Bennet, whose dislike of his general behaviour was sharpened into particular resentment by his having slighted one of her daughters.
diff --git a/python-assn/assn-02/.ipynb_checkpoints/Assignment2-checkpoint.ipynb b/python-assn/assn-02/.ipynb_checkpoints/Assignment2-checkpoint.ipynb
deleted file mode 100644
index f5d93a0..0000000
--- a/python-assn/assn-02/.ipynb_checkpoints/Assignment2-checkpoint.ipynb
+++ /dev/null
@@ -1,648 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Numpy exercise\n",
- "===\n",
- "\n",
- "This exercise is designed to get you familiarised with numpy and shows the most common operations that you will perform in the future.\n",
- "\n",
- "You will need the Iris.csv file from the GitHub repositry to perform this exercise.\n",
- "\n",
- "Write your code in the following way:\n",
- "#################################
\n",
- "\n",
- "Your code here\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import numpy as np"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 0 1 2 3]\n",
- " [ 4 5 6 7]\n",
- " [ 8 9 10 11]\n",
- " [12 13 14 15]]\n"
- ]
- }
- ],
- "source": [
- "A=np.arange(16) #This creates a vector with values from 0 to 15.\n",
- "\n",
- "#Reshape A into a 4x4 numpy array and print the array\n",
- "#################################\n",
- "print(np.resize(A,(4,4)))\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 2 3]\n",
- " [ 4 5 6 7]\n",
- " [ 8 9 10 11]\n",
- " [12 13 14 15]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": false,
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 0 1 4 9]\n",
- " [ 16 25 36 49]\n",
- " [ 64 81 100 121]\n",
- " [144 169 196 225]]\n"
- ]
- }
- ],
- "source": [
- "#Create another array B which is made of square of each elements of B and print B.\n",
- "#################################\n",
- "B=np.square(A)\n",
- "\n",
- "print(np.resize(B,(4,4)))\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 4 9]\n",
- " [ 16 25 36 49]\n",
- " [ 64 81 100 121]\n",
- " [144 169 196 225]]\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[ 71.86829988, -8.46874992, 52.30252237, -27.1307263 ,\n",
- " 21.02564997, -15.93545337, -20.78714205, 34.1521907 ,\n",
- " 38.10416525, -13.53815109]])"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#Create a numpy array of shape (28,28) whose values are chosen randomly from 0-255\n",
- "#################################\n",
- "X=np.random.randint(low=0,high=256,size=[28,28])\n",
- "\n",
- "#################################\n",
- "\n",
- "#Convert x into a vector (Make it of single dimension)\n",
- "#################################\n",
- "X=np.resize(X,(1,28*28))\n",
- "#################################\n",
- "\n",
- "#Add the number 1 at the start of x\n",
- "# e.g.: If x is [3,2,5,7,5,...], new x should be [1,3,2,5,7,5,...]\n",
- "#################################\n",
- "X=np.append(np.array([1]),X)\n",
- "X=np.resize(X,(1,28*28+1))\n",
- "#################################\n",
- "\n",
- "#Create vector W of shape (785,10) whose values follow a normal distribution with mean=0 and standard dev=0.01\n",
- "#################################\n",
- "W=np.random.normal(0,0.01,(785,10))\n",
- "#################################\n",
- "\n",
- "#Multiply the 2 matrices W and x. (Keep in mind the shape of the two)\n",
- "#################################\n",
- "np.matmul(X,W)\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[ 7.7, 2.6, 6.9, 2.3, 2. ],\n",
- " [ 4.5, 2.3, 1.3, 0.3, 0. ],\n",
- " [ 5.5, 3.5, 1.3, 0.2, 0. ],\n",
- " [ 6.7, 3. , 5. , 1.7, 1. ],\n",
- " [ 6.3, 3.4, 5.6, 2.4, 2. ],\n",
- " [ 5.9, 3.2, 4.8, 1.8, 1. ],\n",
- " [ 6.4, 3.1, 5.5, 1.8, 2. ],\n",
- " [ 4.9, 3.1, 1.5, 0.1, 0. ],\n",
- " [ 5.7, 2.8, 4.1, 1.3, 1. ],\n",
- " [ 4.9, 3.1, 1.5, 0.1, 0. ],\n",
- " [ 4.8, 3.4, 1.6, 0.2, 0. ],\n",
- " [ 6.5, 3. , 5.2, 2. , 2. ],\n",
- " [ 5. , 3.2, 1.2, 0.2, 0. ],\n",
- " [ 7.6, 3. , 6.6, 2.1, 2. ],\n",
- " [ 5.4, 3. , 4.5, 1.5, 1. ],\n",
- " [ 5.5, 2.3, 4. , 1.3, 1. ],\n",
- " [ 6.6, 3. , 4.4, 1.4, 1. ],\n",
- " [ 5.6, 2.5, 3.9, 1.1, 1. ],\n",
- " [ 6. , 2.2, 5. , 1.5, 2. ],\n",
- " [ 4.6, 3.6, 1. , 0.2, 0. ],\n",
- " [ 5.2, 3.5, 1.5, 0.2, 0. ],\n",
- " [ 7.2, 3. , 5.8, 1.6, 2. ],\n",
- " [ 5.1, 3.8, 1.9, 0.4, 0. ],\n",
- " [ 6.3, 2.5, 5. , 1.9, 2. ],\n",
- " [ 5.2, 3.4, 1.4, 0.2, 0. ],\n",
- " [ 6.1, 2.9, 4.7, 1.4, 1. ],\n",
- " [ 5.5, 2.4, 3.7, 1. , 1. ],\n",
- " [ 6.7, 3.1, 4.7, 1.5, 1. ],\n",
- " [ 5. , 3. , 1.6, 0.2, 0. ],\n",
- " [ 5.1, 3.4, 1.5, 0.2, 0. ],\n",
- " [ 5.7, 2.9, 4.2, 1.3, 1. ],\n",
- " [ 6. , 2.2, 4. , 1. , 1. ],\n",
- " [ 6.3, 2.9, 5.6, 1.8, 2. ],\n",
- " [ 4.4, 3.2, 1.3, 0.2, 0. ],\n",
- " [ 5. , 2.3, 3.3, 1. , 1. ],\n",
- " [ 4.4, 2.9, 1.4, 0.2, 0. ],\n",
- " [ 4.8, 3.4, 1.9, 0.2, 0. ],\n",
- " [ 6.8, 3. , 5.5, 2.1, 2. ],\n",
- " [ 5.1, 3.7, 1.5, 0.4, 0. ],\n",
- " [ 6.7, 3. , 5.2, 2.3, 2. ],\n",
- " [ 5.1, 3.8, 1.6, 0.2, 0. ],\n",
- " [ 5.8, 2.7, 5.1, 1.9, 2. ],\n",
- " [ 6.6, 2.9, 4.6, 1.3, 1. ],\n",
- " [ 5.8, 2.7, 3.9, 1.2, 1. ],\n",
- " [ 4.4, 3. , 1.3, 0.2, 0. ],\n",
- " [ 5.4, 3.7, 1.5, 0.2, 0. ],\n",
- " [ 5.7, 4.4, 1.5, 0.4, 0. ],\n",
- " [ 6.2, 2.2, 4.5, 1.5, 1. ],\n",
- " [ 4.7, 3.2, 1.6, 0.2, 0. ],\n",
- " [ 4.9, 3.1, 1.5, 0.1, 0. ],\n",
- " [ 6.4, 3.2, 5.3, 2.3, 2. ],\n",
- " [ 5.1, 3.8, 1.5, 0.3, 0. ],\n",
- " [ 5. , 3.3, 1.4, 0.2, 0. ],\n",
- " [ 5. , 3.4, 1.6, 0.4, 0. ],\n",
- " [ 5.6, 3. , 4.5, 1.5, 1. ],\n",
- " [ 7.9, 3.8, 6.4, 2. , 2. ],\n",
- " [ 6.7, 3.3, 5.7, 2.1, 2. ],\n",
- " [ 6.9, 3.1, 5.4, 2.1, 2. ],\n",
- " [ 5.4, 3.4, 1.5, 0.4, 0. ],\n",
- " [ 6. , 2.7, 5.1, 1.6, 1. ],\n",
- " [ 5.1, 2.5, 3. , 1.1, 1. ],\n",
- " [ 5.7, 3. , 4.2, 1.2, 1. ],\n",
- " [ 5.8, 2.7, 4.1, 1. , 1. ],\n",
- " [ 5.9, 3. , 5.1, 1.8, 2. ],\n",
- " [ 5.9, 3. , 4.2, 1.5, 1. ],\n",
- " [ 7.2, 3.2, 6. , 1.8, 2. ],\n",
- " [ 7. , 3.2, 4.7, 1.4, 1. ],\n",
- " [ 6. , 3. , 4.8, 1.8, 2. ],\n",
- " [ 6.4, 2.8, 5.6, 2.2, 2. ],\n",
- " [ 4.6, 3.2, 1.4, 0.2, 0. ],\n",
- " [ 5. , 2. , 3.5, 1. , 1. ],\n",
- " [ 4.6, 3.1, 1.5, 0.2, 0. ],\n",
- " [ 6.3, 2.7, 4.9, 1.8, 2. ],\n",
- " [ 6.1, 2.6, 5.6, 1.4, 2. ],\n",
- " [ 6.3, 2.8, 5.1, 1.5, 2. ],\n",
- " [ 6.2, 2.8, 4.8, 1.8, 2. ],\n",
- " [ 6.7, 3.1, 4.4, 1.4, 1. ],\n",
- " [ 6.3, 3.3, 4.7, 1.6, 1. ],\n",
- " [ 5.5, 2.6, 4.4, 1.2, 1. ],\n",
- " [ 7.1, 3. , 5.9, 2.1, 2. ],\n",
- " [ 6.5, 3. , 5.8, 2.2, 2. ],\n",
- " [ 6.2, 2.9, 4.3, 1.3, 1. ],\n",
- " [ 5.4, 3.4, 1.7, 0.2, 0. ],\n",
- " [ 5.7, 2.8, 4.5, 1.3, 1. ],\n",
- " [ 4.3, 3. , 1.1, 0.1, 0. ],\n",
- " [ 5.7, 3.8, 1.7, 0.3, 0. ],\n",
- " [ 6.7, 2.5, 5.8, 1.8, 2. ],\n",
- " [ 6.8, 3.2, 5.9, 2.3, 2. ],\n",
- " [ 6.3, 3.3, 6. , 2.5, 2. ],\n",
- " [ 6.4, 2.9, 4.3, 1.3, 1. ],\n",
- " [ 5.8, 4. , 1.2, 0.2, 0. ],\n",
- " [ 6.3, 2.3, 4.4, 1.3, 1. ],\n",
- " [ 4.6, 3.4, 1.4, 0.3, 0. ],\n",
- " [ 6.5, 3. , 5.5, 1.8, 2. ],\n",
- " [ 7.3, 2.9, 6.3, 1.8, 2. ],\n",
- " [ 4.9, 3. , 1.4, 0.2, 0. ],\n",
- " [ 6.5, 3.2, 5.1, 2. , 2. ],\n",
- " [ 5.6, 2.8, 4.9, 2. , 2. ],\n",
- " [ 5.7, 2.6, 3.5, 1. , 1. ],\n",
- " [ 5.8, 2.6, 4. , 1.2, 1. ],\n",
- " [ 6.9, 3.2, 5.7, 2.3, 2. ],\n",
- " [ 5.5, 4.2, 1.4, 0.2, 0. ],\n",
- " [ 6.7, 3.1, 5.6, 2.4, 2. ],\n",
- " [ 5. , 3.5, 1.6, 0.6, 0. ],\n",
- " [ 5.4, 3.9, 1.3, 0.4, 0. ],\n",
- " [ 5.5, 2.4, 3.8, 1.1, 1. ],\n",
- " [ 5.8, 2.7, 5.1, 1.9, 2. ],\n",
- " [ 6.2, 3.4, 5.4, 2.3, 2. ],\n",
- " [ 6.4, 2.7, 5.3, 1.9, 2. ],\n",
- " [ 4.8, 3.1, 1.6, 0.2, 0. ],\n",
- " [ 6.9, 3.1, 4.9, 1.5, 1. ],\n",
- " [ 6.1, 2.8, 4. , 1.3, 1. ],\n",
- " [ 5.6, 3. , 4.1, 1.3, 1. ],\n",
- " [ 4.9, 2.5, 4.5, 1.7, 2. ],\n",
- " [ 5.8, 2.8, 5.1, 2.4, 2. ],\n",
- " [ 5.4, 3.9, 1.7, 0.4, 0. ],\n",
- " [ 5. , 3.5, 1.3, 0.3, 0. ],\n",
- " [ 5. , 3.4, 1.5, 0.2, 0. ],\n",
- " [ 7.4, 2.8, 6.1, 1.9, 2. ],\n",
- " [ 6.5, 2.8, 4.6, 1.5, 1. ],\n",
- " [ 6.1, 3. , 4.9, 1.8, 2. ],\n",
- " [ 4.7, 3.2, 1.3, 0.2, 0. ],\n",
- " [ 7.7, 3. , 6.1, 2.3, 2. ],\n",
- " [ 5. , 3.6, 1.4, 0.2, 0. ],\n",
- " [ 5.5, 2.5, 4. , 1.3, 1. ],\n",
- " [ 7.2, 3.6, 6.1, 2.5, 2. ],\n",
- " [ 5.1, 3.5, 1.4, 0.2, 0. ],\n",
- " [ 6.9, 3.1, 5.1, 2.3, 2. ],\n",
- " [ 7.7, 3.8, 6.7, 2.2, 2. ],\n",
- " [ 4.8, 3. , 1.4, 0.1, 0. ],\n",
- " [ 6.8, 2.8, 4.8, 1.4, 1. ],\n",
- " [ 5.1, 3.5, 1.4, 0.3, 0. ],\n",
- " [ 6. , 2.9, 4.5, 1.5, 1. ],\n",
- " [ 6.7, 3.3, 5.7, 2.5, 2. ],\n",
- " [ 6. , 3.4, 4.5, 1.6, 1. ],\n",
- " [ 6.4, 2.8, 5.6, 2.1, 2. ],\n",
- " [ 5.1, 3.3, 1.7, 0.5, 0. ],\n",
- " [ 5.3, 3.7, 1.5, 0.2, 0. ],\n",
- " [ 5.2, 4.1, 1.5, 0.1, 0. ],\n",
- " [ 6.1, 2.8, 4.7, 1.2, 1. ],\n",
- " [ 4.8, 3. , 1.4, 0.3, 0. ],\n",
- " [ 6.3, 2.5, 4.9, 1.5, 1. ],\n",
- " [ 7.7, 2.8, 6.7, 2. , 2. ],\n",
- " [ 6.1, 3. , 4.6, 1.4, 1. ],\n",
- " [ 6.4, 3.2, 4.5, 1.5, 1. ],\n",
- " [ 5.2, 2.7, 3.9, 1.4, 1. ],\n",
- " [ 4.9, 2.4, 3.3, 1. , 1. ],\n",
- " [ 5.6, 2.9, 3.6, 1.3, 1. ],\n",
- " [ 5.7, 2.5, 5. , 2. , 2. ],\n",
- " [ 5.6, 2.7, 4.2, 1.3, 1. ]])"
- ]
- },
- "execution_count": 22,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#Load the Iris.csv file into numpy array 'data' and shuffle the data.(The data array should contain rows in random order)\n",
- "#################################\n",
- "mydata=np.genfromtxt('Iris.csv',delimiter=',')\n",
- "np.random.shuffle(mydata)\n",
- "#################################\n",
- "\n",
- "\n",
- "#Create a numpy array X that contains the firts 4 columns of data. Keep the last column of data in numpy array y.\n",
- "#################################\n",
- "X=np.array(mydata[:,0:4])\n",
- "Y=np.array(mydata[:,4])\n",
- "mydata\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 7.7 2.6 6.9 2.3 2. ]\n",
- " [ 4.5 2.3 1.3 0.3 0. ]\n",
- " [ 5.5 3.5 1.3 0.2 0. ]\n",
- " [ 6.7 3. 5. 1.7 1. ]\n",
- " [ 6.3 3.4 5.6 2.4 2. ]\n",
- " [ 5.9 3.2 4.8 1.8 1. ]\n",
- " [ 6.4 3.1 5.5 1.8 2. ]\n",
- " [ 4.9 3.1 1.5 0.1 0. ]\n",
- " [ 5.7 2.8 4.1 1.3 1. ]\n",
- " [ 4.9 3.1 1.5 0.1 0. ]]\n",
- "[[ 4.8 3. 1.4 0.3 0. ]\n",
- " [ 6.3 2.5 4.9 1.5 1. ]\n",
- " [ 7.7 2.8 6.7 2. 2. ]\n",
- " [ 6.1 3. 4.6 1.4 1. ]\n",
- " [ 6.4 3.2 4.5 1.5 1. ]\n",
- " [ 5.2 2.7 3.9 1.4 1. ]\n",
- " [ 4.9 2.4 3.3 1. 1. ]\n",
- " [ 5.6 2.9 3.6 1.3 1. ]\n",
- " [ 5.7 2.5 5. 2. 2. ]\n",
- " [ 5.6 2.7 4.2 1.3 1. ]]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "array([ 7.7, 4.5, 1.3, 0.2, 3. , 5.6, 3.2, 1.8, 5.7, 3.1, 0.1,\n",
- " 3.4, 1.2, 2.1, 5.4, 3. , 1.3, 3. , 1.4, 5.6, 6. , 2.2,\n",
- " 5. , 1.5, 0.2, 5.2, 5.8, 1.6, 5.1, 2.5, 5. , 5.2, 3.4,\n",
- " 6.1, 4.7, 3.7, 1. , 6.7, 3. , 1.6, 1.5, 5.7, 4.2, 2.2,\n",
- " 1. , 6.3, 3.2, 0.2, 1.4, 6.8])"
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Print the following:\n",
- "# 1) First 10 values of data\n",
- "# 2) Last 10 values of data\n",
- "# 3) All rows of X whose corresponding value in y is 2\n",
- "\n",
- "#################################\n",
- "print(mydata[0:10])\n",
- "size=int(mydata.size)//5\n",
- "print(mydata[size-10:size])\n",
- "condition = np.equal(2,Y)\n",
- "np.extract(condition,X)\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0]])"
- ]
- },
- "execution_count": 17,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Create a numpy array y1 of same length as y and number of columns 3. \n",
- "# Values of y1 are such that,\n",
- "# If y contains 0, y1 should have (1,0,0)\n",
- "# If y contains 1, y1 should have (0,1,0)\n",
- "# If y contains 2, y1 should have (0,0,1)\n",
- "# This type of encoding is known as one-hot encoding\n",
- "#################################\n",
- "\n",
- "y1=np.full((size,3),0)\n",
- "count=0\n",
- "for i in Y:\n",
- " index=(int(i)%3)\n",
- " y1[count][index]=1\n",
- " count=count+1\n",
- "y1\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1, 32, 64, 3)"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "A=np.random.randint(100,size=(32,64,3))\n",
- "# Convert A into shape (1,32,64,3) without using np.reshape()\n",
- "#################################\n",
- "A=np.array([A])\n",
- "A.shape\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected Output:
(1,32,64,3)"
- ]
- }
- ],
- "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.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/python-assn/assn-02/.ipynb_checkpoints/Samyak Jain-Assignment2-checkpoint.ipynb b/python-assn/assn-02/.ipynb_checkpoints/Samyak Jain-Assignment2-checkpoint.ipynb
new file mode 100755
index 0000000..68d014a
--- /dev/null
+++ b/python-assn/assn-02/.ipynb_checkpoints/Samyak Jain-Assignment2-checkpoint.ipynb
@@ -0,0 +1,472 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Numpy exercise\n",
+ "===\n",
+ "\n",
+ "This exercise is designed to get you familiarised with numpy and shows the most common operations that you will perform in the future.\n",
+ "\n",
+ "You will need the Iris.csv file from the GitHub repositry to perform this exercise.\n",
+ "\n",
+ "Write your code in the following way:\n",
+ "#################################
\n",
+ "\n",
+ "Your code here\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[ 0 1 2 3]\n",
+ " [ 4 5 6 7]\n",
+ " [ 8 9 10 11]\n",
+ " [12 13 14 15]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "A=np.arange(16) #This creates a vector with values from 0 to 15.\n",
+ "#Reshape A into a 4x4 numpy array and print the array\n",
+ "#################################\n",
+ "A=A.reshape((4,4))\n",
+ "print(A)\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Expected output:
\n",
+ "[[ 0 1 2 3]\n",
+ " [ 4 5 6 7]\n",
+ " [ 8 9 10 11]\n",
+ " [12 13 14 15]]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[ 0 1 4 9]\n",
+ " [ 16 25 36 49]\n",
+ " [ 64 81 100 121]\n",
+ " [144 169 196 225]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Create another array B which is made of square of each elements of A and print B.\n",
+ "#################################\n",
+ "B=np.array([x**2 for x in A])\n",
+ "print(B)\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Expected output:
\n",
+ "[[ 0 1 4 9]\n",
+ " [ 16 25 36 49]\n",
+ " [ 64 81 100 121]\n",
+ " [144 169 196 225]]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Create a numpy array of shape (28,28) whose values are chosen randomly from 0-255\n",
+ "#################################\n",
+ "np.random.seed(0)\n",
+ "x=np.random.randint(0,255,size=(28,28))\n",
+ "#################################\n",
+ "\n",
+ "#Convert x into a vector (Make it of single dimension)\n",
+ "#################################\n",
+ "x=x.ravel()\n",
+ "\n",
+ "#################################\n",
+ "\n",
+ "#Add the number 1 at the start of x\n",
+ "# e.g.: If x is [3,2,5,7,5,...], new x should be [1,3,2,5,7,5,...]\n",
+ "#################################\n",
+ "x=np.append(1,x)\n",
+ "\n",
+ "#################################\n",
+ "\n",
+ "#Create vector W of shape (785,10) whose values follow a normal distribution with mean=0 and standard dev=0.01\n",
+ "#################################\n",
+ "W=np.random.normal(0,0.01,size=(785,10))\n",
+ "#################################\n",
+ "\n",
+ "#Multiply the 2 matrices W and x. (Keep in mind the shape of the two)\n",
+ "#################################\n",
+ "##Doubt\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Load the Iris.csv file into numpy array 'data' and shuffle the data.(The data array should contain rows in random order)\n",
+ "#################################\n",
+ "data=np.genfromtxt('iris.csv',delimiter=',')\n",
+ "#################################\n",
+ "\n",
+ "\n",
+ "#Create a numpy array X that contains the firts 4 columns of data. Keep the last column of data in numpy array y.\n",
+ "#################################\n",
+ "X=data[:,[0,1,2,3]]\n",
+ "Y=data[:,[4]]\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[6.3 3.3 6. 2.5]\n",
+ "[5.8 2.7 5.1 1.9]\n",
+ "[7.1 3. 5.9 2.1]\n",
+ "[6.3 2.9 5.6 1.8]\n",
+ "[6.5 3. 5.8 2.2]\n",
+ "[7.6 3. 6.6 2.1]\n",
+ "[4.9 2.5 4.5 1.7]\n",
+ "[7.3 2.9 6.3 1.8]\n",
+ "[6.7 2.5 5.8 1.8]\n",
+ "[7.2 3.6 6.1 2.5]\n",
+ "[6.5 3.2 5.1 2. ]\n",
+ "[6.4 2.7 5.3 1.9]\n",
+ "[6.8 3. 5.5 2.1]\n",
+ "[5.7 2.5 5. 2. ]\n",
+ "[5.8 2.8 5.1 2.4]\n",
+ "[6.4 3.2 5.3 2.3]\n",
+ "[6.5 3. 5.5 1.8]\n",
+ "[7.7 3.8 6.7 2.2]\n",
+ "[7.7 2.6 6.9 2.3]\n",
+ "[6. 2.2 5. 1.5]\n",
+ "[6.9 3.2 5.7 2.3]\n",
+ "[5.6 2.8 4.9 2. ]\n",
+ "[7.7 2.8 6.7 2. ]\n",
+ "[6.3 2.7 4.9 1.8]\n",
+ "[6.7 3.3 5.7 2.1]\n",
+ "[7.2 3.2 6. 1.8]\n",
+ "[6.2 2.8 4.8 1.8]\n",
+ "[6.1 3. 4.9 1.8]\n",
+ "[6.4 2.8 5.6 2.1]\n",
+ "[7.2 3. 5.8 1.6]\n",
+ "[7.4 2.8 6.1 1.9]\n",
+ "[7.9 3.8 6.4 2. ]\n",
+ "[6.4 2.8 5.6 2.2]\n",
+ "[6.3 2.8 5.1 1.5]\n",
+ "[6.1 2.6 5.6 1.4]\n",
+ "[7.7 3. 6.1 2.3]\n",
+ "[6.3 3.4 5.6 2.4]\n",
+ "[6.4 3.1 5.5 1.8]\n",
+ "[6. 3. 4.8 1.8]\n",
+ "[6.9 3.1 5.4 2.1]\n",
+ "[6.7 3.1 5.6 2.4]\n",
+ "[6.9 3.1 5.1 2.3]\n",
+ "[5.8 2.7 5.1 1.9]\n",
+ "[6.8 3.2 5.9 2.3]\n",
+ "[6.7 3.3 5.7 2.5]\n",
+ "[6.7 3. 5.2 2.3]\n",
+ "[6.3 2.5 5. 1.9]\n",
+ "[6.5 3. 5.2 2. ]\n",
+ "[6.2 3.4 5.4 2.3]\n",
+ "[5.9 3. 5.1 1.8]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the following:\n",
+ "# 1) First 10 values of data\n",
+ "# 2) Last 10 values of data\n",
+ "# 3) All rows of X whose corresponding value in y is 2\n",
+ "\n",
+ "#################################\n",
+ "#1\n",
+ "print(data[0:10])\n",
+ "#2\n",
+ "print(data[-10:])\n",
+ "#3\n",
+ "index=0\n",
+ "for row in X:\n",
+ " if Y[index]==2:\n",
+ " print(row)\n",
+ " index+=1\n",
+ "#############################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Create a numpy array y1 of same length as y and number of columns 3. \n",
+ "# Values of y1 are such that,\n",
+ "# If y contains 0, y1 should have (1,0,0)\n",
+ "# If y contains 1, y1 should have (0,1,0)\n",
+ "# If y contains 2, y1 should have (0,0,1)\n",
+ "# This type of encoding is known as one-hot encoding\n",
+ "#################################\n",
+ "y1=np.zeros((len(Y),3))\n",
+ "ind=0\n",
+ "for i in Y:\n",
+ " if i==0:\n",
+ " y1[ind][0]=1\n",
+ " y1[ind][1]=0\n",
+ " y1[ind][2]=0\n",
+ " elif i==1:\n",
+ " y1[ind][0]=0\n",
+ " y1[ind][1]=1\n",
+ " y1[ind][2]=0\n",
+ " elif i==2:\n",
+ " y1[ind][0]=0\n",
+ " y1[ind][1]=0\n",
+ " y1[ind][2]=1\n",
+ " ind+=1\n",
+ "print(y1)\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "A=np.random.randint(100,size=(32,64,3))\n",
+ "# Convert A into shape (1,32,64,3) without using np.reshape()\n",
+ "#################################\n",
+ "\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Expected Output:
(1,32,64,3)"
+ ]
+ }
+ ],
+ "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
+}
diff --git a/python-assn/assn-02/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/python-assn/assn-02/.ipynb_checkpoints/Untitled-checkpoint.ipynb
old mode 100644
new mode 100755
index 2fd6442..589c563
--- a/python-assn/assn-02/.ipynb_checkpoints/Untitled-checkpoint.ipynb
+++ b/python-assn/assn-02/.ipynb_checkpoints/Untitled-checkpoint.ipynb
@@ -1,6 +1,6 @@
-{
- "cells": [],
- "metadata": {},
- "nbformat": 4,
- "nbformat_minor": 2
-}
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/python-assn/assn-02/.ipynb_checkpoints/numpy-checkpoint.ipynb b/python-assn/assn-02/.ipynb_checkpoints/numpy-checkpoint.ipynb
deleted file mode 100644
index 464b5bd..0000000
--- a/python-assn/assn-02/.ipynb_checkpoints/numpy-checkpoint.ipynb
+++ /dev/null
@@ -1,451 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Numpy exercise\n",
- "===\n",
- "\n",
- "This exercise is designed to get you familiarised with numpy and shows the most common operations that you will perform in the future.\n",
- "\n",
- "You will need the Iris.csv file from the GitHub repositry to perform this exercise.\n",
- "\n",
- "Write your code in the following way:\n",
- "#################################
\n",
- "\n",
- "Your code here\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import numpy as np"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 0 1 2 3]\n",
- " [ 4 5 6 7]\n",
- " [ 8 9 10 11]\n",
- " [12 13 14 15]]\n"
- ]
- }
- ],
- "source": [
- "A=np.arange(16) #This creates a vector with values from 0 to 15.\n",
- "\n",
- "#Reshape A into a 4x4 numpy array and print the array\n",
- "#################################\n",
- "print(np.resize(A,(4,4)))\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 2 3]\n",
- " [ 4 5 6 7]\n",
- " [ 8 9 10 11]\n",
- " [12 13 14 15]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": false,
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 0 1 4 9]\n",
- " [ 16 25 36 49]\n",
- " [ 64 81 100 121]\n",
- " [144 169 196 225]]\n"
- ]
- }
- ],
- "source": [
- "#Create another array B which is made of square of each elements of B and print B.\n",
- "#################################\n",
- "B=np.square(A)\n",
- "\n",
- "print(np.resize(B,(4,4)))\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 4 9]\n",
- " [ 16 25 36 49]\n",
- " [ 64 81 100 121]\n",
- " [144 169 196 225]]\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[ 35.0265107 , -1.2916513 , -27.01472927, 41.9706085 ,\n",
- " -40.7716668 , -24.4861161 , 87.83272046, -3.11720271,\n",
- " 21.18579012, -19.82497199]])"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#Create a numpy array of shape (28,28) whose values are chosen randomly from 0-255\n",
- "#################################\n",
- "X=np.random.randint(low=0,high=256,size=[28,28])\n",
- "\n",
- "#################################\n",
- "\n",
- "#Convert x into a vector (Make it of single dimension)\n",
- "#################################\n",
- "X=np.resize(X,(1,28*28))\n",
- "#################################\n",
- "\n",
- "#Add the number 1 at the start of x\n",
- "# e.g.: If x is [3,2,5,7,5,...], new x should be [1,3,2,5,7,5,...]\n",
- "#################################\n",
- "X=np.append(np.array([1]),X)\n",
- "X=np.resize(X,(1,28*28+1))\n",
- "#################################\n",
- "\n",
- "#Create vector W of shape (785,10) whose values follow a normal distribution with mean=0 and standard dev=0.01\n",
- "#################################\n",
- "W=np.random.normal(0,0.01,(785,10))\n",
- "#################################\n",
- "\n",
- "#Multiply the 2 matrices W and x. (Keep in mind the shape of the two)\n",
- "#################################\n",
- "np.matmul(X,W)\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 127,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[ 2. 1. 0. 0. 2. 2. 1. 1. 0. 0. 2. 1. 0. 0. 2. 2. 1. 0.\n",
- " 0. 1. 1. 2. 2. 1. 0. 1. 0. 2. 2. 1. 2. 2. 0. 2. 2. 1.\n",
- " 2. 1. 2. 2. 0. 1. 0. 0. 1. 2. 0. 0. 1. 2. 0. 2. 2. 0.\n",
- " 1. 1. 2. 0. 0. 2. 1. 1. 1. 2. 1. 0. 2. 1. 1. 1. 1. 1.\n",
- " 2. 0. 1. 2. 0. 2. 1. 1. 1. 1. 1. 0. 0. 0. 1. 0. 1. 2.\n",
- " 0. 0. 1. 0. 2. 0. 1. 0. 0. 1. 2. 2. 1. 0. 2. 2. 0. 0.\n",
- " 2. 0. 1. 2. 1. 2. 1. 0. 0. 2. 2. 0. 0. 0. 0. 2. 0. 1.\n",
- " 1. 0. 1. 1. 2. 1. 1. 2. 2. 0. 2. 0. 2. 2. 1. 0. 0. 2.\n",
- " 2. 2. 1. 1. 0. 2.]\n"
- ]
- }
- ],
- "source": [
- "#Load the Iris.csv file into numpy array 'data' and shuffle the data.(The data array should contain rows in random order)\n",
- "#################################\n",
- "mydata=np.genfromtxt('Iris.csv',delimiter=',')\n",
- "np.random.shuffle(mydata)\n",
- "#################################\n",
- "\n",
- "\n",
- "#Create a numpy array X that contains the firts 4 columns of data. Keep the last column of data in numpy array y.\n",
- "#################################\n",
- "X=np.array(mydata[:,0:4])\n",
- "Y=np.array(mydata[:,4])\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 143,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 6.4 2.8 5.6 2.2 2. ]\n",
- " [ 5.9 3. 4.2 1.5 1. ]\n",
- " [ 5. 3.6 1.4 0.2 0. ]\n",
- " [ 4.5 2.3 1.3 0.3 0. ]\n",
- " [ 6.5 3. 5.2 2. 2. ]\n",
- " [ 5.6 2.8 4.9 2. 2. ]\n",
- " [ 5.5 2.4 3.8 1.1 1. ]\n",
- " [ 6.6 2.9 4.6 1.3 1. ]\n",
- " [ 5.1 3.8 1.9 0.4 0. ]\n",
- " [ 5.4 3.9 1.7 0.4 0. ]]\n",
- "[[ 6.2 2.2 4.5 1.5 1. ]\n",
- " [ 4.8 3.1 1.6 0.2 0. ]\n",
- " [ 4.9 3.1 1.5 0.1 0. ]\n",
- " [ 7.2 3.2 6. 1.8 2. ]\n",
- " [ 6.9 3.2 5.7 2.3 2. ]\n",
- " [ 5.8 2.7 5.1 1.9 2. ]\n",
- " [ 6. 3.4 4.5 1.6 1. ]\n",
- " [ 6.6 3. 4.4 1.4 1. ]\n",
- " [ 4.6 3.1 1.5 0.2 0. ]\n",
- " [ 7.9 3.8 6.4 2. 2. ]]\n"
- ]
- }
- ],
- "source": [
- "# Print the following:\n",
- "# 1) First 10 values of data\n",
- "# 2) Last 10 values of data\n",
- "# 3) All rows of X whose corresponding value in y is 2\n",
- "\n",
- "#################################\n",
- "print(mydata[0:10])\n",
- "size=int(mydata.size)//5\n",
- "print(mydata[size-10:size])\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 158,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1]])"
- ]
- },
- "execution_count": 158,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Create a numpy array y1 of same length as y and number of columns 3. \n",
- "# Values of y1 are such that,\n",
- "# If y contains 0, y1 should have (1,0,0)\n",
- "# If y contains 1, y1 should have (0,1,0)\n",
- "# If y contains 2, y1 should have (0,0,1)\n",
- "# This type of encoding is known as one-hot encoding\n",
- "\n",
- "y1=np.full((size,3),0)\n",
- "count=0\n",
- "for i in Y:\n",
- " index=(int(i)%3)\n",
- " y1[count][index]=1\n",
- " count=count+1\n",
- "y1"
- ]
- }
- ],
- "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.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/python-assn/assn-02/Assignment2.ipynb b/python-assn/assn-02/Assignment2.ipynb
deleted file mode 100644
index 512dbcc..0000000
--- a/python-assn/assn-02/Assignment2.ipynb
+++ /dev/null
@@ -1,206 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Numpy exercise\n",
- "===\n",
- "\n",
- "This exercise is designed to get you familiarised with numpy and shows the most common operations that you will perform in the future.\n",
- "\n",
- "You will need the Iris.csv file from the GitHub repositry to perform this exercise.\n",
- "\n",
- "Write your code in the following way:\n",
- "#################################
\n",
- "\n",
- "Your code here\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import numpy as np"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "A=np.arange(16) #This creates a vector with values from 0 to 15.\n",
- "\n",
- "#Reshape A into a 4x4 numpy array and print the array\n",
- "#################################\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 2 3]\n",
- " [ 4 5 6 7]\n",
- " [ 8 9 10 11]\n",
- " [12 13 14 15]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "scrolled": true
- },
- "outputs": [],
- "source": [
- "#Create another array B which is made of square of each elements of B and print B.\n",
- "#################################\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 4 9]\n",
- " [ 16 25 36 49]\n",
- " [ 64 81 100 121]\n",
- " [144 169 196 225]]\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#Create a numpy array of shape (28,28) whose values are chosen randomly from 0-255\n",
- "#################################\n",
- "\n",
- "#################################\n",
- "\n",
- "#Convert x into a vector (Make it of single dimension)\n",
- "#################################\n",
- "\n",
- "#################################\n",
- "\n",
- "#Add the number 1 at the start of x\n",
- "# e.g.: If x is [3,2,5,7,5,...], new x should be [1,3,2,5,7,5,...]\n",
- "#################################\n",
- "\n",
- "#################################\n",
- "\n",
- "#Create vector W of shape (785,10) whose values follow a normal distribution with mean=0 and standard dev=0.01\n",
- "#################################\n",
- "\n",
- "#################################\n",
- "\n",
- "#Multiply the 2 matrices W and x. (Keep in mind the shape of the two)\n",
- "#################################\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#Load the Iris.csv file into numpy array 'data' and shuffle the data.(The data array should contain rows in random order)\n",
- "#################################\n",
- "\n",
- "#################################\n",
- "\n",
- "\n",
- "#Create a numpy array X that contains the firts 4 columns of data. Keep the last column of data in numpy array y.\n",
- "#################################\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Print the following:\n",
- "# 1) First 10 values of data\n",
- "# 2) Last 10 values of data\n",
- "# 3) All rows of X whose corresponding value in y is 2\n",
- "\n",
- "#################################\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create a numpy array y1 of same length as y and number of columns 3. \n",
- "# Values of y1 are such that,\n",
- "# If y contains 0, y1 should have (1,0,0)\n",
- "# If y contains 1, y1 should have (0,1,0)\n",
- "# If y contains 2, y1 should have (0,0,1)\n",
- "# This type of encoding is known as one-hot encoding\n",
- "#################################\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "A=np.random.randint(100,size=(32,64,3))\n",
- "# Convert A into shape (1,32,64,3) without using np.reshape()\n",
- "#################################\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected Output:
(1,32,64,3)"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 2
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython2",
- "version": "2.7.12"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/python-assn/assn-02/Iris.csv b/python-assn/assn-02/Iris.csv
old mode 100644
new mode 100755
index 9679609..5ebe700
--- a/python-assn/assn-02/Iris.csv
+++ b/python-assn/assn-02/Iris.csv
@@ -1,150 +1,150 @@
-5.1,3.5,1.4,0.2,0
-4.9,3,1.4,0.2,0
-4.7,3.2,1.3,0.2,0
-4.6,3.1,1.5,0.2,0
-5,3.6,1.4,0.2,0
-5.4,3.9,1.7,0.4,0
-4.6,3.4,1.4,0.3,0
-5,3.4,1.5,0.2,0
-4.4,2.9,1.4,0.2,0
-4.9,3.1,1.5,0.1,0
-5.4,3.7,1.5,0.2,0
-4.8,3.4,1.6,0.2,0
-4.8,3,1.4,0.1,0
-4.3,3,1.1,0.1,0
-5.8,4,1.2,0.2,0
-5.7,4.4,1.5,0.4,0
-5.4,3.9,1.3,0.4,0
-5.1,3.5,1.4,0.3,0
-5.7,3.8,1.7,0.3,0
-5.1,3.8,1.5,0.3,0
-5.4,3.4,1.7,0.2,0
-5.1,3.7,1.5,0.4,0
-4.6,3.6,1,0.2,0
-5.1,3.3,1.7,0.5,0
-4.8,3.4,1.9,0.2,0
-5,3,1.6,0.2,0
-5,3.4,1.6,0.4,0
-5.2,3.5,1.5,0.2,0
-5.2,3.4,1.4,0.2,0
-4.7,3.2,1.6,0.2,0
-4.8,3.1,1.6,0.2,0
-5.4,3.4,1.5,0.4,0
-5.2,4.1,1.5,0.1,0
-5.5,4.2,1.4,0.2,0
-4.9,3.1,1.5,0.1,0
-5,3.2,1.2,0.2,0
-5.5,3.5,1.3,0.2,0
-4.9,3.1,1.5,0.1,0
-4.4,3,1.3,0.2,0
-5.1,3.4,1.5,0.2,0
-5,3.5,1.3,0.3,0
-4.5,2.3,1.3,0.3,0
-4.4,3.2,1.3,0.2,0
-5,3.5,1.6,0.6,0
-5.1,3.8,1.9,0.4,0
-4.8,3,1.4,0.3,0
-5.1,3.8,1.6,0.2,0
-4.6,3.2,1.4,0.2,0
-5.3,3.7,1.5,0.2,0
-5,3.3,1.4,0.2,0
-7,3.2,4.7,1.4,1
-6.4,3.2,4.5,1.5,1
-6.9,3.1,4.9,1.5,1
-5.5,2.3,4,1.3,1
-6.5,2.8,4.6,1.5,1
-5.7,2.8,4.5,1.3,1
-6.3,3.3,4.7,1.6,1
-4.9,2.4,3.3,1,1
-6.6,2.9,4.6,1.3,1
-5.2,2.7,3.9,1.4,1
-5,2,3.5,1,1
-5.9,3,4.2,1.5,1
-6,2.2,4,1,1
-6.1,2.9,4.7,1.4,1
-5.6,2.9,3.6,1.3,1
-6.7,3.1,4.4,1.4,1
-5.6,3,4.5,1.5,1
-5.8,2.7,4.1,1,1
-6.2,2.2,4.5,1.5,1
-5.6,2.5,3.9,1.1,1
-5.9,3.2,4.8,1.8,1
-6.1,2.8,4,1.3,1
-6.3,2.5,4.9,1.5,1
-6.1,2.8,4.7,1.2,1
-6.4,2.9,4.3,1.3,1
-6.6,3,4.4,1.4,1
-6.8,2.8,4.8,1.4,1
-6.7,3,5,1.7,1
-6,2.9,4.5,1.5,1
-5.7,2.6,3.5,1,1
-5.5,2.4,3.8,1.1,1
-5.5,2.4,3.7,1,1
-5.8,2.7,3.9,1.2,1
-6,2.7,5.1,1.6,1
-5.4,3,4.5,1.5,1
-6,3.4,4.5,1.6,1
-6.7,3.1,4.7,1.5,1
-6.3,2.3,4.4,1.3,1
-5.6,3,4.1,1.3,1
-5.5,2.5,4,1.3,1
-5.5,2.6,4.4,1.2,1
-6.1,3,4.6,1.4,1
-5.8,2.6,4,1.2,1
-5,2.3,3.3,1,1
-5.6,2.7,4.2,1.3,1
-5.7,3,4.2,1.2,1
-5.7,2.9,4.2,1.3,1
-6.2,2.9,4.3,1.3,1
-5.1,2.5,3,1.1,1
-5.7,2.8,4.1,1.3,1
-6.3,3.3,6,2.5,2
-5.8,2.7,5.1,1.9,2
-7.1,3,5.9,2.1,2
-6.3,2.9,5.6,1.8,2
-6.5,3,5.8,2.2,2
-7.6,3,6.6,2.1,2
-4.9,2.5,4.5,1.7,2
-7.3,2.9,6.3,1.8,2
-6.7,2.5,5.8,1.8,2
-7.2,3.6,6.1,2.5,2
-6.5,3.2,5.1,2,2
-6.4,2.7,5.3,1.9,2
-6.8,3,5.5,2.1,2
-5.7,2.5,5,2,2
-5.8,2.8,5.1,2.4,2
-6.4,3.2,5.3,2.3,2
-6.5,3,5.5,1.8,2
-7.7,3.8,6.7,2.2,2
-7.7,2.6,6.9,2.3,2
-6,2.2,5,1.5,2
-6.9,3.2,5.7,2.3,2
-5.6,2.8,4.9,2,2
-7.7,2.8,6.7,2,2
-6.3,2.7,4.9,1.8,2
-6.7,3.3,5.7,2.1,2
-7.2,3.2,6,1.8,2
-6.2,2.8,4.8,1.8,2
-6.1,3,4.9,1.8,2
-6.4,2.8,5.6,2.1,2
-7.2,3,5.8,1.6,2
-7.4,2.8,6.1,1.9,2
-7.9,3.8,6.4,2,2
-6.4,2.8,5.6,2.2,2
-6.3,2.8,5.1,1.5,2
-6.1,2.6,5.6,1.4,2
-7.7,3,6.1,2.3,2
-6.3,3.4,5.6,2.4,2
-6.4,3.1,5.5,1.8,2
-6,3,4.8,1.8,2
-6.9,3.1,5.4,2.1,2
-6.7,3.1,5.6,2.4,2
-6.9,3.1,5.1,2.3,2
-5.8,2.7,5.1,1.9,2
-6.8,3.2,5.9,2.3,2
-6.7,3.3,5.7,2.5,2
-6.7,3,5.2,2.3,2
-6.3,2.5,5,1.9,2
-6.5,3,5.2,2,2
-6.2,3.4,5.4,2.3,2
-5.9,3,5.1,1.8,2
+5.1,3.5,1.4,0.2,0
+4.9,3,1.4,0.2,0
+4.7,3.2,1.3,0.2,0
+4.6,3.1,1.5,0.2,0
+5,3.6,1.4,0.2,0
+5.4,3.9,1.7,0.4,0
+4.6,3.4,1.4,0.3,0
+5,3.4,1.5,0.2,0
+4.4,2.9,1.4,0.2,0
+4.9,3.1,1.5,0.1,0
+5.4,3.7,1.5,0.2,0
+4.8,3.4,1.6,0.2,0
+4.8,3,1.4,0.1,0
+4.3,3,1.1,0.1,0
+5.8,4,1.2,0.2,0
+5.7,4.4,1.5,0.4,0
+5.4,3.9,1.3,0.4,0
+5.1,3.5,1.4,0.3,0
+5.7,3.8,1.7,0.3,0
+5.1,3.8,1.5,0.3,0
+5.4,3.4,1.7,0.2,0
+5.1,3.7,1.5,0.4,0
+4.6,3.6,1,0.2,0
+5.1,3.3,1.7,0.5,0
+4.8,3.4,1.9,0.2,0
+5,3,1.6,0.2,0
+5,3.4,1.6,0.4,0
+5.2,3.5,1.5,0.2,0
+5.2,3.4,1.4,0.2,0
+4.7,3.2,1.6,0.2,0
+4.8,3.1,1.6,0.2,0
+5.4,3.4,1.5,0.4,0
+5.2,4.1,1.5,0.1,0
+5.5,4.2,1.4,0.2,0
+4.9,3.1,1.5,0.1,0
+5,3.2,1.2,0.2,0
+5.5,3.5,1.3,0.2,0
+4.9,3.1,1.5,0.1,0
+4.4,3,1.3,0.2,0
+5.1,3.4,1.5,0.2,0
+5,3.5,1.3,0.3,0
+4.5,2.3,1.3,0.3,0
+4.4,3.2,1.3,0.2,0
+5,3.5,1.6,0.6,0
+5.1,3.8,1.9,0.4,0
+4.8,3,1.4,0.3,0
+5.1,3.8,1.6,0.2,0
+4.6,3.2,1.4,0.2,0
+5.3,3.7,1.5,0.2,0
+5,3.3,1.4,0.2,0
+7,3.2,4.7,1.4,1
+6.4,3.2,4.5,1.5,1
+6.9,3.1,4.9,1.5,1
+5.5,2.3,4,1.3,1
+6.5,2.8,4.6,1.5,1
+5.7,2.8,4.5,1.3,1
+6.3,3.3,4.7,1.6,1
+4.9,2.4,3.3,1,1
+6.6,2.9,4.6,1.3,1
+5.2,2.7,3.9,1.4,1
+5,2,3.5,1,1
+5.9,3,4.2,1.5,1
+6,2.2,4,1,1
+6.1,2.9,4.7,1.4,1
+5.6,2.9,3.6,1.3,1
+6.7,3.1,4.4,1.4,1
+5.6,3,4.5,1.5,1
+5.8,2.7,4.1,1,1
+6.2,2.2,4.5,1.5,1
+5.6,2.5,3.9,1.1,1
+5.9,3.2,4.8,1.8,1
+6.1,2.8,4,1.3,1
+6.3,2.5,4.9,1.5,1
+6.1,2.8,4.7,1.2,1
+6.4,2.9,4.3,1.3,1
+6.6,3,4.4,1.4,1
+6.8,2.8,4.8,1.4,1
+6.7,3,5,1.7,1
+6,2.9,4.5,1.5,1
+5.7,2.6,3.5,1,1
+5.5,2.4,3.8,1.1,1
+5.5,2.4,3.7,1,1
+5.8,2.7,3.9,1.2,1
+6,2.7,5.1,1.6,1
+5.4,3,4.5,1.5,1
+6,3.4,4.5,1.6,1
+6.7,3.1,4.7,1.5,1
+6.3,2.3,4.4,1.3,1
+5.6,3,4.1,1.3,1
+5.5,2.5,4,1.3,1
+5.5,2.6,4.4,1.2,1
+6.1,3,4.6,1.4,1
+5.8,2.6,4,1.2,1
+5,2.3,3.3,1,1
+5.6,2.7,4.2,1.3,1
+5.7,3,4.2,1.2,1
+5.7,2.9,4.2,1.3,1
+6.2,2.9,4.3,1.3,1
+5.1,2.5,3,1.1,1
+5.7,2.8,4.1,1.3,1
+6.3,3.3,6,2.5,2
+5.8,2.7,5.1,1.9,2
+7.1,3,5.9,2.1,2
+6.3,2.9,5.6,1.8,2
+6.5,3,5.8,2.2,2
+7.6,3,6.6,2.1,2
+4.9,2.5,4.5,1.7,2
+7.3,2.9,6.3,1.8,2
+6.7,2.5,5.8,1.8,2
+7.2,3.6,6.1,2.5,2
+6.5,3.2,5.1,2,2
+6.4,2.7,5.3,1.9,2
+6.8,3,5.5,2.1,2
+5.7,2.5,5,2,2
+5.8,2.8,5.1,2.4,2
+6.4,3.2,5.3,2.3,2
+6.5,3,5.5,1.8,2
+7.7,3.8,6.7,2.2,2
+7.7,2.6,6.9,2.3,2
+6,2.2,5,1.5,2
+6.9,3.2,5.7,2.3,2
+5.6,2.8,4.9,2,2
+7.7,2.8,6.7,2,2
+6.3,2.7,4.9,1.8,2
+6.7,3.3,5.7,2.1,2
+7.2,3.2,6,1.8,2
+6.2,2.8,4.8,1.8,2
+6.1,3,4.9,1.8,2
+6.4,2.8,5.6,2.1,2
+7.2,3,5.8,1.6,2
+7.4,2.8,6.1,1.9,2
+7.9,3.8,6.4,2,2
+6.4,2.8,5.6,2.2,2
+6.3,2.8,5.1,1.5,2
+6.1,2.6,5.6,1.4,2
+7.7,3,6.1,2.3,2
+6.3,3.4,5.6,2.4,2
+6.4,3.1,5.5,1.8,2
+6,3,4.8,1.8,2
+6.9,3.1,5.4,2.1,2
+6.7,3.1,5.6,2.4,2
+6.9,3.1,5.1,2.3,2
+5.8,2.7,5.1,1.9,2
+6.8,3.2,5.9,2.3,2
+6.7,3.3,5.7,2.5,2
+6.7,3,5.2,2.3,2
+6.3,2.5,5,1.9,2
+6.5,3,5.2,2,2
+6.2,3.4,5.4,2.3,2
+5.9,3,5.1,1.8,2
diff --git a/python-assn/assn-02/Rohan Prabhu k.ipynb b/python-assn/assn-02/Rohan Prabhu k.ipynb
deleted file mode 100644
index f5d93a0..0000000
--- a/python-assn/assn-02/Rohan Prabhu k.ipynb
+++ /dev/null
@@ -1,648 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Numpy exercise\n",
- "===\n",
- "\n",
- "This exercise is designed to get you familiarised with numpy and shows the most common operations that you will perform in the future.\n",
- "\n",
- "You will need the Iris.csv file from the GitHub repositry to perform this exercise.\n",
- "\n",
- "Write your code in the following way:\n",
- "#################################
\n",
- "\n",
- "Your code here\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import numpy as np"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 0 1 2 3]\n",
- " [ 4 5 6 7]\n",
- " [ 8 9 10 11]\n",
- " [12 13 14 15]]\n"
- ]
- }
- ],
- "source": [
- "A=np.arange(16) #This creates a vector with values from 0 to 15.\n",
- "\n",
- "#Reshape A into a 4x4 numpy array and print the array\n",
- "#################################\n",
- "print(np.resize(A,(4,4)))\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 2 3]\n",
- " [ 4 5 6 7]\n",
- " [ 8 9 10 11]\n",
- " [12 13 14 15]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "collapsed": false,
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 0 1 4 9]\n",
- " [ 16 25 36 49]\n",
- " [ 64 81 100 121]\n",
- " [144 169 196 225]]\n"
- ]
- }
- ],
- "source": [
- "#Create another array B which is made of square of each elements of B and print B.\n",
- "#################################\n",
- "B=np.square(A)\n",
- "\n",
- "print(np.resize(B,(4,4)))\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 4 9]\n",
- " [ 16 25 36 49]\n",
- " [ 64 81 100 121]\n",
- " [144 169 196 225]]\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[ 71.86829988, -8.46874992, 52.30252237, -27.1307263 ,\n",
- " 21.02564997, -15.93545337, -20.78714205, 34.1521907 ,\n",
- " 38.10416525, -13.53815109]])"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#Create a numpy array of shape (28,28) whose values are chosen randomly from 0-255\n",
- "#################################\n",
- "X=np.random.randint(low=0,high=256,size=[28,28])\n",
- "\n",
- "#################################\n",
- "\n",
- "#Convert x into a vector (Make it of single dimension)\n",
- "#################################\n",
- "X=np.resize(X,(1,28*28))\n",
- "#################################\n",
- "\n",
- "#Add the number 1 at the start of x\n",
- "# e.g.: If x is [3,2,5,7,5,...], new x should be [1,3,2,5,7,5,...]\n",
- "#################################\n",
- "X=np.append(np.array([1]),X)\n",
- "X=np.resize(X,(1,28*28+1))\n",
- "#################################\n",
- "\n",
- "#Create vector W of shape (785,10) whose values follow a normal distribution with mean=0 and standard dev=0.01\n",
- "#################################\n",
- "W=np.random.normal(0,0.01,(785,10))\n",
- "#################################\n",
- "\n",
- "#Multiply the 2 matrices W and x. (Keep in mind the shape of the two)\n",
- "#################################\n",
- "np.matmul(X,W)\n",
- "\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[ 7.7, 2.6, 6.9, 2.3, 2. ],\n",
- " [ 4.5, 2.3, 1.3, 0.3, 0. ],\n",
- " [ 5.5, 3.5, 1.3, 0.2, 0. ],\n",
- " [ 6.7, 3. , 5. , 1.7, 1. ],\n",
- " [ 6.3, 3.4, 5.6, 2.4, 2. ],\n",
- " [ 5.9, 3.2, 4.8, 1.8, 1. ],\n",
- " [ 6.4, 3.1, 5.5, 1.8, 2. ],\n",
- " [ 4.9, 3.1, 1.5, 0.1, 0. ],\n",
- " [ 5.7, 2.8, 4.1, 1.3, 1. ],\n",
- " [ 4.9, 3.1, 1.5, 0.1, 0. ],\n",
- " [ 4.8, 3.4, 1.6, 0.2, 0. ],\n",
- " [ 6.5, 3. , 5.2, 2. , 2. ],\n",
- " [ 5. , 3.2, 1.2, 0.2, 0. ],\n",
- " [ 7.6, 3. , 6.6, 2.1, 2. ],\n",
- " [ 5.4, 3. , 4.5, 1.5, 1. ],\n",
- " [ 5.5, 2.3, 4. , 1.3, 1. ],\n",
- " [ 6.6, 3. , 4.4, 1.4, 1. ],\n",
- " [ 5.6, 2.5, 3.9, 1.1, 1. ],\n",
- " [ 6. , 2.2, 5. , 1.5, 2. ],\n",
- " [ 4.6, 3.6, 1. , 0.2, 0. ],\n",
- " [ 5.2, 3.5, 1.5, 0.2, 0. ],\n",
- " [ 7.2, 3. , 5.8, 1.6, 2. ],\n",
- " [ 5.1, 3.8, 1.9, 0.4, 0. ],\n",
- " [ 6.3, 2.5, 5. , 1.9, 2. ],\n",
- " [ 5.2, 3.4, 1.4, 0.2, 0. ],\n",
- " [ 6.1, 2.9, 4.7, 1.4, 1. ],\n",
- " [ 5.5, 2.4, 3.7, 1. , 1. ],\n",
- " [ 6.7, 3.1, 4.7, 1.5, 1. ],\n",
- " [ 5. , 3. , 1.6, 0.2, 0. ],\n",
- " [ 5.1, 3.4, 1.5, 0.2, 0. ],\n",
- " [ 5.7, 2.9, 4.2, 1.3, 1. ],\n",
- " [ 6. , 2.2, 4. , 1. , 1. ],\n",
- " [ 6.3, 2.9, 5.6, 1.8, 2. ],\n",
- " [ 4.4, 3.2, 1.3, 0.2, 0. ],\n",
- " [ 5. , 2.3, 3.3, 1. , 1. ],\n",
- " [ 4.4, 2.9, 1.4, 0.2, 0. ],\n",
- " [ 4.8, 3.4, 1.9, 0.2, 0. ],\n",
- " [ 6.8, 3. , 5.5, 2.1, 2. ],\n",
- " [ 5.1, 3.7, 1.5, 0.4, 0. ],\n",
- " [ 6.7, 3. , 5.2, 2.3, 2. ],\n",
- " [ 5.1, 3.8, 1.6, 0.2, 0. ],\n",
- " [ 5.8, 2.7, 5.1, 1.9, 2. ],\n",
- " [ 6.6, 2.9, 4.6, 1.3, 1. ],\n",
- " [ 5.8, 2.7, 3.9, 1.2, 1. ],\n",
- " [ 4.4, 3. , 1.3, 0.2, 0. ],\n",
- " [ 5.4, 3.7, 1.5, 0.2, 0. ],\n",
- " [ 5.7, 4.4, 1.5, 0.4, 0. ],\n",
- " [ 6.2, 2.2, 4.5, 1.5, 1. ],\n",
- " [ 4.7, 3.2, 1.6, 0.2, 0. ],\n",
- " [ 4.9, 3.1, 1.5, 0.1, 0. ],\n",
- " [ 6.4, 3.2, 5.3, 2.3, 2. ],\n",
- " [ 5.1, 3.8, 1.5, 0.3, 0. ],\n",
- " [ 5. , 3.3, 1.4, 0.2, 0. ],\n",
- " [ 5. , 3.4, 1.6, 0.4, 0. ],\n",
- " [ 5.6, 3. , 4.5, 1.5, 1. ],\n",
- " [ 7.9, 3.8, 6.4, 2. , 2. ],\n",
- " [ 6.7, 3.3, 5.7, 2.1, 2. ],\n",
- " [ 6.9, 3.1, 5.4, 2.1, 2. ],\n",
- " [ 5.4, 3.4, 1.5, 0.4, 0. ],\n",
- " [ 6. , 2.7, 5.1, 1.6, 1. ],\n",
- " [ 5.1, 2.5, 3. , 1.1, 1. ],\n",
- " [ 5.7, 3. , 4.2, 1.2, 1. ],\n",
- " [ 5.8, 2.7, 4.1, 1. , 1. ],\n",
- " [ 5.9, 3. , 5.1, 1.8, 2. ],\n",
- " [ 5.9, 3. , 4.2, 1.5, 1. ],\n",
- " [ 7.2, 3.2, 6. , 1.8, 2. ],\n",
- " [ 7. , 3.2, 4.7, 1.4, 1. ],\n",
- " [ 6. , 3. , 4.8, 1.8, 2. ],\n",
- " [ 6.4, 2.8, 5.6, 2.2, 2. ],\n",
- " [ 4.6, 3.2, 1.4, 0.2, 0. ],\n",
- " [ 5. , 2. , 3.5, 1. , 1. ],\n",
- " [ 4.6, 3.1, 1.5, 0.2, 0. ],\n",
- " [ 6.3, 2.7, 4.9, 1.8, 2. ],\n",
- " [ 6.1, 2.6, 5.6, 1.4, 2. ],\n",
- " [ 6.3, 2.8, 5.1, 1.5, 2. ],\n",
- " [ 6.2, 2.8, 4.8, 1.8, 2. ],\n",
- " [ 6.7, 3.1, 4.4, 1.4, 1. ],\n",
- " [ 6.3, 3.3, 4.7, 1.6, 1. ],\n",
- " [ 5.5, 2.6, 4.4, 1.2, 1. ],\n",
- " [ 7.1, 3. , 5.9, 2.1, 2. ],\n",
- " [ 6.5, 3. , 5.8, 2.2, 2. ],\n",
- " [ 6.2, 2.9, 4.3, 1.3, 1. ],\n",
- " [ 5.4, 3.4, 1.7, 0.2, 0. ],\n",
- " [ 5.7, 2.8, 4.5, 1.3, 1. ],\n",
- " [ 4.3, 3. , 1.1, 0.1, 0. ],\n",
- " [ 5.7, 3.8, 1.7, 0.3, 0. ],\n",
- " [ 6.7, 2.5, 5.8, 1.8, 2. ],\n",
- " [ 6.8, 3.2, 5.9, 2.3, 2. ],\n",
- " [ 6.3, 3.3, 6. , 2.5, 2. ],\n",
- " [ 6.4, 2.9, 4.3, 1.3, 1. ],\n",
- " [ 5.8, 4. , 1.2, 0.2, 0. ],\n",
- " [ 6.3, 2.3, 4.4, 1.3, 1. ],\n",
- " [ 4.6, 3.4, 1.4, 0.3, 0. ],\n",
- " [ 6.5, 3. , 5.5, 1.8, 2. ],\n",
- " [ 7.3, 2.9, 6.3, 1.8, 2. ],\n",
- " [ 4.9, 3. , 1.4, 0.2, 0. ],\n",
- " [ 6.5, 3.2, 5.1, 2. , 2. ],\n",
- " [ 5.6, 2.8, 4.9, 2. , 2. ],\n",
- " [ 5.7, 2.6, 3.5, 1. , 1. ],\n",
- " [ 5.8, 2.6, 4. , 1.2, 1. ],\n",
- " [ 6.9, 3.2, 5.7, 2.3, 2. ],\n",
- " [ 5.5, 4.2, 1.4, 0.2, 0. ],\n",
- " [ 6.7, 3.1, 5.6, 2.4, 2. ],\n",
- " [ 5. , 3.5, 1.6, 0.6, 0. ],\n",
- " [ 5.4, 3.9, 1.3, 0.4, 0. ],\n",
- " [ 5.5, 2.4, 3.8, 1.1, 1. ],\n",
- " [ 5.8, 2.7, 5.1, 1.9, 2. ],\n",
- " [ 6.2, 3.4, 5.4, 2.3, 2. ],\n",
- " [ 6.4, 2.7, 5.3, 1.9, 2. ],\n",
- " [ 4.8, 3.1, 1.6, 0.2, 0. ],\n",
- " [ 6.9, 3.1, 4.9, 1.5, 1. ],\n",
- " [ 6.1, 2.8, 4. , 1.3, 1. ],\n",
- " [ 5.6, 3. , 4.1, 1.3, 1. ],\n",
- " [ 4.9, 2.5, 4.5, 1.7, 2. ],\n",
- " [ 5.8, 2.8, 5.1, 2.4, 2. ],\n",
- " [ 5.4, 3.9, 1.7, 0.4, 0. ],\n",
- " [ 5. , 3.5, 1.3, 0.3, 0. ],\n",
- " [ 5. , 3.4, 1.5, 0.2, 0. ],\n",
- " [ 7.4, 2.8, 6.1, 1.9, 2. ],\n",
- " [ 6.5, 2.8, 4.6, 1.5, 1. ],\n",
- " [ 6.1, 3. , 4.9, 1.8, 2. ],\n",
- " [ 4.7, 3.2, 1.3, 0.2, 0. ],\n",
- " [ 7.7, 3. , 6.1, 2.3, 2. ],\n",
- " [ 5. , 3.6, 1.4, 0.2, 0. ],\n",
- " [ 5.5, 2.5, 4. , 1.3, 1. ],\n",
- " [ 7.2, 3.6, 6.1, 2.5, 2. ],\n",
- " [ 5.1, 3.5, 1.4, 0.2, 0. ],\n",
- " [ 6.9, 3.1, 5.1, 2.3, 2. ],\n",
- " [ 7.7, 3.8, 6.7, 2.2, 2. ],\n",
- " [ 4.8, 3. , 1.4, 0.1, 0. ],\n",
- " [ 6.8, 2.8, 4.8, 1.4, 1. ],\n",
- " [ 5.1, 3.5, 1.4, 0.3, 0. ],\n",
- " [ 6. , 2.9, 4.5, 1.5, 1. ],\n",
- " [ 6.7, 3.3, 5.7, 2.5, 2. ],\n",
- " [ 6. , 3.4, 4.5, 1.6, 1. ],\n",
- " [ 6.4, 2.8, 5.6, 2.1, 2. ],\n",
- " [ 5.1, 3.3, 1.7, 0.5, 0. ],\n",
- " [ 5.3, 3.7, 1.5, 0.2, 0. ],\n",
- " [ 5.2, 4.1, 1.5, 0.1, 0. ],\n",
- " [ 6.1, 2.8, 4.7, 1.2, 1. ],\n",
- " [ 4.8, 3. , 1.4, 0.3, 0. ],\n",
- " [ 6.3, 2.5, 4.9, 1.5, 1. ],\n",
- " [ 7.7, 2.8, 6.7, 2. , 2. ],\n",
- " [ 6.1, 3. , 4.6, 1.4, 1. ],\n",
- " [ 6.4, 3.2, 4.5, 1.5, 1. ],\n",
- " [ 5.2, 2.7, 3.9, 1.4, 1. ],\n",
- " [ 4.9, 2.4, 3.3, 1. , 1. ],\n",
- " [ 5.6, 2.9, 3.6, 1.3, 1. ],\n",
- " [ 5.7, 2.5, 5. , 2. , 2. ],\n",
- " [ 5.6, 2.7, 4.2, 1.3, 1. ]])"
- ]
- },
- "execution_count": 22,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "#Load the Iris.csv file into numpy array 'data' and shuffle the data.(The data array should contain rows in random order)\n",
- "#################################\n",
- "mydata=np.genfromtxt('Iris.csv',delimiter=',')\n",
- "np.random.shuffle(mydata)\n",
- "#################################\n",
- "\n",
- "\n",
- "#Create a numpy array X that contains the firts 4 columns of data. Keep the last column of data in numpy array y.\n",
- "#################################\n",
- "X=np.array(mydata[:,0:4])\n",
- "Y=np.array(mydata[:,4])\n",
- "mydata\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 7.7 2.6 6.9 2.3 2. ]\n",
- " [ 4.5 2.3 1.3 0.3 0. ]\n",
- " [ 5.5 3.5 1.3 0.2 0. ]\n",
- " [ 6.7 3. 5. 1.7 1. ]\n",
- " [ 6.3 3.4 5.6 2.4 2. ]\n",
- " [ 5.9 3.2 4.8 1.8 1. ]\n",
- " [ 6.4 3.1 5.5 1.8 2. ]\n",
- " [ 4.9 3.1 1.5 0.1 0. ]\n",
- " [ 5.7 2.8 4.1 1.3 1. ]\n",
- " [ 4.9 3.1 1.5 0.1 0. ]]\n",
- "[[ 4.8 3. 1.4 0.3 0. ]\n",
- " [ 6.3 2.5 4.9 1.5 1. ]\n",
- " [ 7.7 2.8 6.7 2. 2. ]\n",
- " [ 6.1 3. 4.6 1.4 1. ]\n",
- " [ 6.4 3.2 4.5 1.5 1. ]\n",
- " [ 5.2 2.7 3.9 1.4 1. ]\n",
- " [ 4.9 2.4 3.3 1. 1. ]\n",
- " [ 5.6 2.9 3.6 1.3 1. ]\n",
- " [ 5.7 2.5 5. 2. 2. ]\n",
- " [ 5.6 2.7 4.2 1.3 1. ]]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "array([ 7.7, 4.5, 1.3, 0.2, 3. , 5.6, 3.2, 1.8, 5.7, 3.1, 0.1,\n",
- " 3.4, 1.2, 2.1, 5.4, 3. , 1.3, 3. , 1.4, 5.6, 6. , 2.2,\n",
- " 5. , 1.5, 0.2, 5.2, 5.8, 1.6, 5.1, 2.5, 5. , 5.2, 3.4,\n",
- " 6.1, 4.7, 3.7, 1. , 6.7, 3. , 1.6, 1.5, 5.7, 4.2, 2.2,\n",
- " 1. , 6.3, 3.2, 0.2, 1.4, 6.8])"
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Print the following:\n",
- "# 1) First 10 values of data\n",
- "# 2) Last 10 values of data\n",
- "# 3) All rows of X whose corresponding value in y is 2\n",
- "\n",
- "#################################\n",
- "print(mydata[0:10])\n",
- "size=int(mydata.size)//5\n",
- "print(mydata[size-10:size])\n",
- "condition = np.equal(2,Y)\n",
- "np.extract(condition,X)\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [1, 0, 0],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 0, 1],\n",
- " [0, 1, 0],\n",
- " [1, 0, 0],\n",
- " [0, 1, 0]])"
- ]
- },
- "execution_count": 17,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Create a numpy array y1 of same length as y and number of columns 3. \n",
- "# Values of y1 are such that,\n",
- "# If y contains 0, y1 should have (1,0,0)\n",
- "# If y contains 1, y1 should have (0,1,0)\n",
- "# If y contains 2, y1 should have (0,0,1)\n",
- "# This type of encoding is known as one-hot encoding\n",
- "#################################\n",
- "\n",
- "y1=np.full((size,3),0)\n",
- "count=0\n",
- "for i in Y:\n",
- " index=(int(i)%3)\n",
- " y1[count][index]=1\n",
- " count=count+1\n",
- "y1\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1, 32, 64, 3)"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "A=np.random.randint(100,size=(32,64,3))\n",
- "# Convert A into shape (1,32,64,3) without using np.reshape()\n",
- "#################################\n",
- "A=np.array([A])\n",
- "A.shape\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected Output:
(1,32,64,3)"
- ]
- }
- ],
- "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.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/python-assn/assn-02/Sahil_Jain.ipynb b/python-assn/assn-02/Sahil_Jain.ipynb
deleted file mode 100644
index 162e5b5..0000000
--- a/python-assn/assn-02/Sahil_Jain.ipynb
+++ /dev/null
@@ -1,423 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Numpy exercise\n",
- "===\n",
- "\n",
- "This exercise is designed to get you familiarised with numpy and shows the most common operations that you will perform in the future.\n",
- "\n",
- "You will need the Iris.csv file from the GitHub repositry to perform this exercise.\n",
- "\n",
- "Write your code in the following way:\n",
- "#################################
\n",
- "\n",
- "Your code here\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import numpy as np"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "A=np.arange(16) #This creates a vector with values from 0 to 15.\n",
- "\n",
- "#Reshape A into a 4x4 numpy array and print the array\n",
- "#################################\n",
- "A.shape = (4,4)\n",
- "print(A)\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 2 3]\n",
- " [ 4 5 6 7]\n",
- " [ 8 9 10 11]\n",
- " [12 13 14 15]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "scrolled": true
- },
- "outputs": [],
- "source": [
- "#Create another array B which is made of square of each elements of B and print B.\n",
- "#################################\n",
- "B=np.empty([4,4],dtype='int')\n",
- "B=A*A\n",
- "print(B)\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected output:
\n",
- "[[ 0 1 4 9]\n",
- " [ 16 25 36 49]\n",
- " [ 64 81 100 121]\n",
- " [144 169 196 225]]\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 140,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[ 0 0 0 0 0 0 0 0 240 206 217 81 0 0 0 0 218 2\n",
- " 0 0 0 0 0 0 255 255 255 255]\n",
- " [255 255 255 255 228 101 93 10 32 91 70 97 0 0 0 0 0 0\n",
- " 0 0 32 32 32 49 32 32 51 53]\n",
- " [ 32 32 54 55 32 49 49 52 32 49 48 49 32 32 57 55 32 49\n",
- " 49 54 32 49 48 49 32 32 51 50]\n",
- " [ 32 32 57 55 32 32 51 50 32 49 49 48 32 49 49 55 32 49\n",
- " 48 57 32 49 49 50 32 49 50 49]\n",
- " [ 32 32 51 50 32 32 57 55 10 32 49 49 52 32 49 49 52 32\n",
- " 32 57 55 32 49 50 49 32 32 51]\n",
- " [ 50 32 49 49 49 32 49 48 50 32 32 51 50 32 49 49 53 32\n",
- " 49 48 52 32 32 57 55 32 49 49]\n",
- " [ 50 32 49 48 49 32 32 51 50 32 32 52 48 32 32 53 48 32\n",
- " 32 53 54 32 32 52 52 10 32 32]\n",
- " [ 53 48 32 32 53 54 32 32 52 49 32 32 51 50 32 49 49 57\n",
- " 32 49 48 52 32 49 49 49 32 49]\n",
- " [ 49 53 32 49 48 49 32 32 51 50 32 49 49 56 32 32 57 55\n",
- " 32 49 48 56 32 49 49 55 32 49]\n",
- " [ 48 49 32 49 49 53 32 32 51 50 32 32 57 55 10 32 49 49\n",
- " 52 32 49 48 49 32 32 51 50 32]\n",
- " [ 32 57 57 32 49 48 52 32 49 49 49 32 49 49 53 32 49 48\n",
- " 49 32 49 49 48 32 32 51 50 32]\n",
- " [ 49 49 52 32 32 57 55 32 49 49 48 32 49 48 48 32 49 49\n",
- " 49 32 49 48 57 32 49 48 56 32]\n",
- " [ 49 50 49 10 32 32 51 50 32 49 48 50 32 49 49 52 32 49\n",
- " 49 49 32 49 48 57 32 32 51 50]\n",
- " [ 32 32 52 56 32 32 52 53 32 32 53 48 32 32 53 51 32 32\n",
- " 53 51 32 32 49 48 32 32 51 53]\n",
- " [ 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32\n",
- " 51 53 10 32 32 51 53 32 32 51]\n",
- " [ 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 32 32 51 53 32 32 51]\n",
- " [ 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 32 32 51 53 32 32 51]\n",
- " [ 53 32 32 51 53 32 32 51 53 10 32 32 51 53 32 32 51 53\n",
- " 32 32 51 53 32 32 51 53 32 32]\n",
- " [ 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53\n",
- " 32 32 49 48 32 49 50 48 32 32]\n",
- " [ 54 49 32 49 49 48 32 49 49 50 32 32 52 54 32 49 48 49\n",
- " 32 49 48 57 32 49 49 50 10 32]\n",
- " [ 49 49 54 32 49 50 49 32 32 52 48 32 32 57 49 32 32 53\n",
- " 48 32 32 53 54 32 32 52 52 32]\n",
- " [ 32 53 48 32 32 53 54 32 32 57 51 32 32 52 52 32 49 48\n",
- " 48 32 49 49 54 32 49 50 49 32]\n",
- " [ 49 49 50 32 49 48 49 32 32 54 49 32 32 51 57 10 32 49\n",
- " 49 55 32 49 48 53 32 49 49 48]\n",
- " [ 32 49 49 54 32 32 53 54 32 32 51 57 32 32 52 49 32 32\n",
- " 49 48 32 49 49 50 32 49 49 52]\n",
- " [ 32 49 48 53 32 49 49 48 32 49 49 54 32 32 52 48 32 49\n",
- " 50 48 32 32 52 49 32 32 49 48]\n",
- " [ 32 32 51 53 10 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 32 32 51 53 32 32 51]\n",
- " [ 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 32 32 51 53 32 32 51]\n",
- " [ 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 10 0 10 112 114 105 110]]\n",
- "[ 0 0 0 0 0 0 0 0 240 206 217 81 0 0 0 0 218 2\n",
- " 0 0 0 0 0 0 255 255 255 255 255 255 255 255 228 101 93 10\n",
- " 32 91 70 97 0 0 0 0 0 0 0 0 32 32 32 49 32 32\n",
- " 51 53 32 32 54 55 32 49 49 52 32 49 48 49 32 32 57 55\n",
- " 32 49 49 54 32 49 48 49 32 32 51 50 32 32 57 55 32 32\n",
- " 51 50 32 49 49 48 32 49 49 55 32 49 48 57 32 49 49 50\n",
- " 32 49 50 49 32 32 51 50 32 32 57 55 10 32 49 49 52 32\n",
- " 49 49 52 32 32 57 55 32 49 50 49 32 32 51 50 32 49 49\n",
- " 49 32 49 48 50 32 32 51 50 32 49 49 53 32 49 48 52 32\n",
- " 32 57 55 32 49 49 50 32 49 48 49 32 32 51 50 32 32 52\n",
- " 48 32 32 53 48 32 32 53 54 32 32 52 52 10 32 32 53 48\n",
- " 32 32 53 54 32 32 52 49 32 32 51 50 32 49 49 57 32 49\n",
- " 48 52 32 49 49 49 32 49 49 53 32 49 48 49 32 32 51 50\n",
- " 32 49 49 56 32 32 57 55 32 49 48 56 32 49 49 55 32 49\n",
- " 48 49 32 49 49 53 32 32 51 50 32 32 57 55 10 32 49 49\n",
- " 52 32 49 48 49 32 32 51 50 32 32 57 57 32 49 48 52 32\n",
- " 49 49 49 32 49 49 53 32 49 48 49 32 49 49 48 32 32 51\n",
- " 50 32 49 49 52 32 32 57 55 32 49 49 48 32 49 48 48 32\n",
- " 49 49 49 32 49 48 57 32 49 48 56 32 49 50 49 10 32 32\n",
- " 51 50 32 49 48 50 32 49 49 52 32 49 49 49 32 49 48 57\n",
- " 32 32 51 50 32 32 52 56 32 32 52 53 32 32 53 48 32 32\n",
- " 53 51 32 32 53 51 32 32 49 48 32 32 51 53 32 32 51 53\n",
- " 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 10 32\n",
- " 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51\n",
- " 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51\n",
- " 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 10\n",
- " 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32\n",
- " 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53\n",
- " 32 32 49 48 32 49 50 48 32 32 54 49 32 49 49 48 32 49\n",
- " 49 50 32 32 52 54 32 49 48 49 32 49 48 57 32 49 49 50\n",
- " 10 32 49 49 54 32 49 50 49 32 32 52 48 32 32 57 49 32\n",
- " 32 53 48 32 32 53 54 32 32 52 52 32 32 53 48 32 32 53\n",
- " 54 32 32 57 51 32 32 52 52 32 49 48 48 32 49 49 54 32\n",
- " 49 50 49 32 49 49 50 32 49 48 49 32 32 54 49 32 32 51\n",
- " 57 10 32 49 49 55 32 49 48 53 32 49 49 48 32 49 49 54\n",
- " 32 32 53 54 32 32 51 57 32 32 52 49 32 32 49 48 32 49\n",
- " 49 50 32 49 49 52 32 49 48 53 32 49 49 48 32 49 49 54\n",
- " 32 32 52 48 32 49 50 48 32 32 52 49 32 32 49 48 32 32\n",
- " 51 53 10 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51\n",
- " 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51\n",
- " 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 10 0 10 112 114 105 110]\n",
- "[ 1 0 0 0 0 0 0 0 0 240 206 217 81 0 0 0 0 218\n",
- " 2 0 0 0 0 0 0 255 255 255 255 255 255 255 255 228 101 93\n",
- " 10 32 91 70 97 0 0 0 0 0 0 0 0 32 32 32 49 32\n",
- " 32 51 53 32 32 54 55 32 49 49 52 32 49 48 49 32 32 57\n",
- " 55 32 49 49 54 32 49 48 49 32 32 51 50 32 32 57 55 32\n",
- " 32 51 50 32 49 49 48 32 49 49 55 32 49 48 57 32 49 49\n",
- " 50 32 49 50 49 32 32 51 50 32 32 57 55 10 32 49 49 52\n",
- " 32 49 49 52 32 32 57 55 32 49 50 49 32 32 51 50 32 49\n",
- " 49 49 32 49 48 50 32 32 51 50 32 49 49 53 32 49 48 52\n",
- " 32 32 57 55 32 49 49 50 32 49 48 49 32 32 51 50 32 32\n",
- " 52 48 32 32 53 48 32 32 53 54 32 32 52 52 10 32 32 53\n",
- " 48 32 32 53 54 32 32 52 49 32 32 51 50 32 49 49 57 32\n",
- " 49 48 52 32 49 49 49 32 49 49 53 32 49 48 49 32 32 51\n",
- " 50 32 49 49 56 32 32 57 55 32 49 48 56 32 49 49 55 32\n",
- " 49 48 49 32 49 49 53 32 32 51 50 32 32 57 55 10 32 49\n",
- " 49 52 32 49 48 49 32 32 51 50 32 32 57 57 32 49 48 52\n",
- " 32 49 49 49 32 49 49 53 32 49 48 49 32 49 49 48 32 32\n",
- " 51 50 32 49 49 52 32 32 57 55 32 49 49 48 32 49 48 48\n",
- " 32 49 49 49 32 49 48 57 32 49 48 56 32 49 50 49 10 32\n",
- " 32 51 50 32 49 48 50 32 49 49 52 32 49 49 49 32 49 48\n",
- " 57 32 32 51 50 32 32 52 56 32 32 52 53 32 32 53 48 32\n",
- " 32 53 51 32 32 53 51 32 32 49 48 32 32 51 53 32 32 51\n",
- " 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 10\n",
- " 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32\n",
- " 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53\n",
- " 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32\n",
- " 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53\n",
- " 10 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32\n",
- " 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51\n",
- " 53 32 32 49 48 32 49 50 48 32 32 54 49 32 49 49 48 32\n",
- " 49 49 50 32 32 52 54 32 49 48 49 32 49 48 57 32 49 49\n",
- " 50 10 32 49 49 54 32 49 50 49 32 32 52 48 32 32 57 49\n",
- " 32 32 53 48 32 32 53 54 32 32 52 52 32 32 53 48 32 32\n",
- " 53 54 32 32 57 51 32 32 52 52 32 49 48 48 32 49 49 54\n",
- " 32 49 50 49 32 49 49 50 32 49 48 49 32 32 54 49 32 32\n",
- " 51 57 10 32 49 49 55 32 49 48 53 32 49 49 48 32 49 49\n",
- " 54 32 32 53 54 32 32 51 57 32 32 52 49 32 32 49 48 32\n",
- " 49 49 50 32 49 49 52 32 49 48 53 32 49 49 48 32 49 49\n",
- " 54 32 32 52 48 32 49 50 48 32 32 52 49 32 32 49 48 32\n",
- " 32 51 53 10 32 32 51 53 32 32 51 53 32 32 51 53 32 32\n",
- " 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53\n",
- " 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32\n",
- " 51 53 32 32 51 53 32 32 51 53 32 32 51 53 32 32 51 53\n",
- " 32 32 51 53 10 0 10 112 114 105 110]\n",
- "[[-1.70959053e-02 2.59759698e-03 1.37182524e-02 ... -1.75612468e-02\n",
- " 1.07571267e-02 2.40498293e-02]\n",
- " [ 3.40539936e-03 -5.21691889e-04 1.21487599e-02 ... -1.88415975e-07\n",
- " 1.03528476e-03 1.31321075e-02]\n",
- " [-9.43320303e-03 -1.28074581e-02 5.71105194e-03 ... 6.19979477e-03\n",
- " 5.07207269e-04 -6.50443912e-03]\n",
- " ...\n",
- " [ 7.76289696e-03 2.92500197e-03 -1.24003235e-02 ... 1.36733358e-02\n",
- " 1.29526136e-02 5.02107937e-03]\n",
- " [-1.40916544e-02 2.57908976e-02 -4.13449709e-04 ... -5.02315078e-03\n",
- " -9.43358502e-04 1.37318601e-02]\n",
- " [-2.74217129e-03 -5.60632340e-03 -3.41017567e-02 ... 1.27718592e-02\n",
- " -5.89726637e-03 -1.47913861e-02]]\n",
- "(10, 785)\n",
- "[ 20.16197655 11.17914099 -0.38878155 -27.72195217 23.27443093\n",
- " 15.05961274 1.38725079 -2.16423043 22.14473215 -8.27130715]\n"
- ]
- }
- ],
- "source": [
- "#Create a numpy array of shape (28,28) whose values are chosen randomly from 0-255\n",
- "#################################\n",
- "x=np.empty([28,28],dtype='uint8')\n",
- "print(x)\n",
- "#################################\n",
- "\n",
- "#Convert x into a vector (Make it of single dimension)\n",
- "#################################\n",
- "x.shape=(x.size)\n",
- "print(x)\n",
- "#################################\n",
- "\n",
- "#Add the number 1 at the start of x\n",
- "# e.g.: If x is [3,2,5,7,5,...], new x should be [1,3,2,5,7,5,...]\n",
- "#################################\n",
- "x=np.insert(x,0,1)\n",
- "print(x)\n",
- "#################################\n",
- "\n",
- "#Create vector W of shape (785,10) whose values follow a normal distribution with mean=0 and standard dev=0.01\n",
- "#################################\n",
- "w = np.random.normal(0, 0.01, (785, 10))\n",
- "print(w)\n",
- "#################################\n",
- "\n",
- "#Multiply the 2 matrices W and x. (Keep in mind the shape of the two)\n",
- "#################################\n",
- "print(w.T.shape)\n",
- "if w.T.shape[1]==x.shape[0]:\n",
- " mul = np.dot(w.T,x)\n",
- " print(mul)\n",
- "else :\n",
- " print(\"Cannot be multiplied\") \n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "#Load the Iris.csv file into numpy array 'data' and shuffle the data.(The data array should contain rows in random order)\n",
- "#################################\n",
- "import csv \n",
- "import numpy as np\n",
- "with open('Iris.csv', 'r') as f:\n",
- " reader = csv.reader(f)\n",
- " count=0\n",
- " data = np.ones([150,5]) \n",
- " for row in reader:\n",
- " data[count]=row\n",
- " count +=1\n",
- " np.random.shuffle(data) \n",
- " print(data)\n",
- "#################################\n",
- "\n",
- "\n",
- "#Create a numpy array X that contains the firts 4 columns of data. Keep the last column of data in numpy array y.\n",
- "#################################\n",
- "x = np.ones([150,4])\n",
- "y = np.ones([150,1])\n",
- "x = data[...,0:4]\n",
- "y[...,0] = data[...,4]\n",
- "\n",
- "print(x)\n",
- "print(y)\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Print the following:\n",
- "# 1) First 10 values of data\n",
- "# 2) Last 10 values of data\n",
- "# 3) All rows of X whose corresponding value in y is 2\n",
- "\n",
- "#################################\n",
- "print(data[0:10])\n",
- "print(data[-10:])\n",
- "'''\n",
- "for i in range(150):\n",
- " if y[i]==2:\n",
- " print(x[i])\n",
- "'''\n",
- "print(x[(y==2).flatten()])\n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create a numpy array y1 of same length as y and number of columns 3. \n",
- "# Values of y1 are such that,\n",
- "# If y contains 0, y1 should have (1,0,0)\n",
- "# If y contains 1, y1 should have (0,1,0)\n",
- "# If y contains 2, y1 should have (0,0,1)\n",
- "# This type of encoding is known as one-hot encoding\n",
- "#################################\n",
- "y1 = np.zeros([150,3])\n",
- "\"\"\"for i in range(150):\n",
- " if y[i]==0:\n",
- " y1[i,0]=1\n",
- " elif y[i]==1:\n",
- " y1[i,1]=1\n",
- " elif y[i]==2:\n",
- " y1[i,2]=1\"\"\"\n",
- "y1[(y==0).flatten(),0]=1\n",
- "y1[(y==1).flatten(),1]=1\n",
- "y1[(y==2).flatten(),2]=1\n",
- "print(y1) \n",
- "#################################"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "import numpy as np\n",
- "A=np.random.randint(100,size=(32,64,3))\n",
- "# Convert A into shape (1,32,64,3) without using np.reshape()\n",
- "#################################\n",
- "B = np.zeros([1,32,64,3],dtype='i1')\n",
- "B[0:1,0:32,0:64,0:3] = A[0:32,0:64,0:3]\n",
- "A = B\n",
- "print(A.shape)\n",
- "#################################"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Expected Output:
(1,32,64,3)"
- ]
- }
- ],
- "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
-}
diff --git a/python-assn/assn-02/Samyak Jain-Assignment2.ipynb b/python-assn/assn-02/Samyak Jain-Assignment2.ipynb
new file mode 100755
index 0000000..68d014a
--- /dev/null
+++ b/python-assn/assn-02/Samyak Jain-Assignment2.ipynb
@@ -0,0 +1,472 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Numpy exercise\n",
+ "===\n",
+ "\n",
+ "This exercise is designed to get you familiarised with numpy and shows the most common operations that you will perform in the future.\n",
+ "\n",
+ "You will need the Iris.csv file from the GitHub repositry to perform this exercise.\n",
+ "\n",
+ "Write your code in the following way:\n",
+ "#################################
\n",
+ "\n",
+ "Your code here\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[ 0 1 2 3]\n",
+ " [ 4 5 6 7]\n",
+ " [ 8 9 10 11]\n",
+ " [12 13 14 15]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "A=np.arange(16) #This creates a vector with values from 0 to 15.\n",
+ "#Reshape A into a 4x4 numpy array and print the array\n",
+ "#################################\n",
+ "A=A.reshape((4,4))\n",
+ "print(A)\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Expected output:
\n",
+ "[[ 0 1 2 3]\n",
+ " [ 4 5 6 7]\n",
+ " [ 8 9 10 11]\n",
+ " [12 13 14 15]]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[ 0 1 4 9]\n",
+ " [ 16 25 36 49]\n",
+ " [ 64 81 100 121]\n",
+ " [144 169 196 225]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "#Create another array B which is made of square of each elements of A and print B.\n",
+ "#################################\n",
+ "B=np.array([x**2 for x in A])\n",
+ "print(B)\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Expected output:
\n",
+ "[[ 0 1 4 9]\n",
+ " [ 16 25 36 49]\n",
+ " [ 64 81 100 121]\n",
+ " [144 169 196 225]]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Create a numpy array of shape (28,28) whose values are chosen randomly from 0-255\n",
+ "#################################\n",
+ "np.random.seed(0)\n",
+ "x=np.random.randint(0,255,size=(28,28))\n",
+ "#################################\n",
+ "\n",
+ "#Convert x into a vector (Make it of single dimension)\n",
+ "#################################\n",
+ "x=x.ravel()\n",
+ "\n",
+ "#################################\n",
+ "\n",
+ "#Add the number 1 at the start of x\n",
+ "# e.g.: If x is [3,2,5,7,5,...], new x should be [1,3,2,5,7,5,...]\n",
+ "#################################\n",
+ "x=np.append(1,x)\n",
+ "\n",
+ "#################################\n",
+ "\n",
+ "#Create vector W of shape (785,10) whose values follow a normal distribution with mean=0 and standard dev=0.01\n",
+ "#################################\n",
+ "W=np.random.normal(0,0.01,size=(785,10))\n",
+ "#################################\n",
+ "\n",
+ "#Multiply the 2 matrices W and x. (Keep in mind the shape of the two)\n",
+ "#################################\n",
+ "##Doubt\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#Load the Iris.csv file into numpy array 'data' and shuffle the data.(The data array should contain rows in random order)\n",
+ "#################################\n",
+ "data=np.genfromtxt('iris.csv',delimiter=',')\n",
+ "#################################\n",
+ "\n",
+ "\n",
+ "#Create a numpy array X that contains the firts 4 columns of data. Keep the last column of data in numpy array y.\n",
+ "#################################\n",
+ "X=data[:,[0,1,2,3]]\n",
+ "Y=data[:,[4]]\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[6.3 3.3 6. 2.5]\n",
+ "[5.8 2.7 5.1 1.9]\n",
+ "[7.1 3. 5.9 2.1]\n",
+ "[6.3 2.9 5.6 1.8]\n",
+ "[6.5 3. 5.8 2.2]\n",
+ "[7.6 3. 6.6 2.1]\n",
+ "[4.9 2.5 4.5 1.7]\n",
+ "[7.3 2.9 6.3 1.8]\n",
+ "[6.7 2.5 5.8 1.8]\n",
+ "[7.2 3.6 6.1 2.5]\n",
+ "[6.5 3.2 5.1 2. ]\n",
+ "[6.4 2.7 5.3 1.9]\n",
+ "[6.8 3. 5.5 2.1]\n",
+ "[5.7 2.5 5. 2. ]\n",
+ "[5.8 2.8 5.1 2.4]\n",
+ "[6.4 3.2 5.3 2.3]\n",
+ "[6.5 3. 5.5 1.8]\n",
+ "[7.7 3.8 6.7 2.2]\n",
+ "[7.7 2.6 6.9 2.3]\n",
+ "[6. 2.2 5. 1.5]\n",
+ "[6.9 3.2 5.7 2.3]\n",
+ "[5.6 2.8 4.9 2. ]\n",
+ "[7.7 2.8 6.7 2. ]\n",
+ "[6.3 2.7 4.9 1.8]\n",
+ "[6.7 3.3 5.7 2.1]\n",
+ "[7.2 3.2 6. 1.8]\n",
+ "[6.2 2.8 4.8 1.8]\n",
+ "[6.1 3. 4.9 1.8]\n",
+ "[6.4 2.8 5.6 2.1]\n",
+ "[7.2 3. 5.8 1.6]\n",
+ "[7.4 2.8 6.1 1.9]\n",
+ "[7.9 3.8 6.4 2. ]\n",
+ "[6.4 2.8 5.6 2.2]\n",
+ "[6.3 2.8 5.1 1.5]\n",
+ "[6.1 2.6 5.6 1.4]\n",
+ "[7.7 3. 6.1 2.3]\n",
+ "[6.3 3.4 5.6 2.4]\n",
+ "[6.4 3.1 5.5 1.8]\n",
+ "[6. 3. 4.8 1.8]\n",
+ "[6.9 3.1 5.4 2.1]\n",
+ "[6.7 3.1 5.6 2.4]\n",
+ "[6.9 3.1 5.1 2.3]\n",
+ "[5.8 2.7 5.1 1.9]\n",
+ "[6.8 3.2 5.9 2.3]\n",
+ "[6.7 3.3 5.7 2.5]\n",
+ "[6.7 3. 5.2 2.3]\n",
+ "[6.3 2.5 5. 1.9]\n",
+ "[6.5 3. 5.2 2. ]\n",
+ "[6.2 3.4 5.4 2.3]\n",
+ "[5.9 3. 5.1 1.8]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the following:\n",
+ "# 1) First 10 values of data\n",
+ "# 2) Last 10 values of data\n",
+ "# 3) All rows of X whose corresponding value in y is 2\n",
+ "\n",
+ "#################################\n",
+ "#1\n",
+ "print(data[0:10])\n",
+ "#2\n",
+ "print(data[-10:])\n",
+ "#3\n",
+ "index=0\n",
+ "for row in X:\n",
+ " if Y[index]==2:\n",
+ " print(row)\n",
+ " index+=1\n",
+ "#############################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[[1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [1. 0. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 1. 0.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]\n",
+ " [0. 0. 1.]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Create a numpy array y1 of same length as y and number of columns 3. \n",
+ "# Values of y1 are such that,\n",
+ "# If y contains 0, y1 should have (1,0,0)\n",
+ "# If y contains 1, y1 should have (0,1,0)\n",
+ "# If y contains 2, y1 should have (0,0,1)\n",
+ "# This type of encoding is known as one-hot encoding\n",
+ "#################################\n",
+ "y1=np.zeros((len(Y),3))\n",
+ "ind=0\n",
+ "for i in Y:\n",
+ " if i==0:\n",
+ " y1[ind][0]=1\n",
+ " y1[ind][1]=0\n",
+ " y1[ind][2]=0\n",
+ " elif i==1:\n",
+ " y1[ind][0]=0\n",
+ " y1[ind][1]=1\n",
+ " y1[ind][2]=0\n",
+ " elif i==2:\n",
+ " y1[ind][0]=0\n",
+ " y1[ind][1]=0\n",
+ " y1[ind][2]=1\n",
+ " ind+=1\n",
+ "print(y1)\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "A=np.random.randint(100,size=(32,64,3))\n",
+ "# Convert A into shape (1,32,64,3) without using np.reshape()\n",
+ "#################################\n",
+ "\n",
+ "#################################"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Expected Output:
(1,32,64,3)"
+ ]
+ }
+ ],
+ "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
+}
diff --git a/python-assn/assn-03/.ipynb_checkpoints/Assn-03-checkpoint.ipynb b/python-assn/assn-03/.ipynb_checkpoints/Assn-03-checkpoint.ipynb
deleted file mode 100644
index 6e00ed5..0000000
--- a/python-assn/assn-03/.ipynb_checkpoints/Assn-03-checkpoint.ipynb
+++ /dev/null
@@ -1,2222 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Using Pandas, Matplotlib and Scikit-Learn**\n",
- "\n",
- "NOTE: SAVE FILE BEFORE ATTEMPTING.\n",
- "\n",
- "Since the outputs will get cleared as you run cells. Take screenshots to compare answers to expected answers."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Using Pandas**\n",
- "\n",
- "We start out by practicing how to handle data given to us. The rows in any dataset are called tuples or instances and the columns are the features with one of the columns being the label (there may also not be a label if it is an Unsupervised learning task). \n",
- "\n",
- "Storing this data as a list of lists might be cumbersome and difficult depending on the complexity and size of the data.\n",
- "\n",
- "Pandas offers a data structure called a DataFrame, which makes it easy to handle data and visualise the intricacies of it.\n",
- "\n",
- "In this example we'll try to handle and analyse the Iris dataset and build a simple model for learning it using Scikit-Learn. The problem is to look at a few features of the data (sepal length, sepal width, etc.) and determine which of the three given flowers (here called 0, 1 and 2) are we looking at."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# Just to load the data. Don't worry about scikit-learn for now.\n",
- "from sklearn.datasets import load_iris\n",
- "data = load_iris()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 185,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[ 5.1, 3.5, 1.4, 0.2],\n",
- " [ 4.9, 3. , 1.4, 0.2],\n",
- " [ 4.7, 3.2, 1.3, 0.2],\n",
- " [ 4.6, 3.1, 1.5, 0.2],\n",
- " [ 5. , 3.6, 1.4, 0.2],\n",
- " [ 5.4, 3.9, 1.7, 0.4],\n",
- " [ 4.6, 3.4, 1.4, 0.3],\n",
- " [ 5. , 3.4, 1.5, 0.2],\n",
- " [ 4.4, 2.9, 1.4, 0.2],\n",
- " [ 4.9, 3.1, 1.5, 0.1],\n",
- " [ 5.4, 3.7, 1.5, 0.2],\n",
- " [ 4.8, 3.4, 1.6, 0.2],\n",
- " [ 4.8, 3. , 1.4, 0.1],\n",
- " [ 4.3, 3. , 1.1, 0.1],\n",
- " [ 5.8, 4. , 1.2, 0.2],\n",
- " [ 5.7, 4.4, 1.5, 0.4],\n",
- " [ 5.4, 3.9, 1.3, 0.4],\n",
- " [ 5.1, 3.5, 1.4, 0.3],\n",
- " [ 5.7, 3.8, 1.7, 0.3],\n",
- " [ 5.1, 3.8, 1.5, 0.3],\n",
- " [ 5.4, 3.4, 1.7, 0.2],\n",
- " [ 5.1, 3.7, 1.5, 0.4],\n",
- " [ 4.6, 3.6, 1. , 0.2],\n",
- " [ 5.1, 3.3, 1.7, 0.5],\n",
- " [ 4.8, 3.4, 1.9, 0.2],\n",
- " [ 5. , 3. , 1.6, 0.2],\n",
- " [ 5. , 3.4, 1.6, 0.4],\n",
- " [ 5.2, 3.5, 1.5, 0.2],\n",
- " [ 5.2, 3.4, 1.4, 0.2],\n",
- " [ 4.7, 3.2, 1.6, 0.2],\n",
- " [ 4.8, 3.1, 1.6, 0.2],\n",
- " [ 5.4, 3.4, 1.5, 0.4],\n",
- " [ 5.2, 4.1, 1.5, 0.1],\n",
- " [ 5.5, 4.2, 1.4, 0.2],\n",
- " [ 4.9, 3.1, 1.5, 0.1],\n",
- " [ 5. , 3.2, 1.2, 0.2],\n",
- " [ 5.5, 3.5, 1.3, 0.2],\n",
- " [ 4.9, 3.1, 1.5, 0.1],\n",
- " [ 4.4, 3. , 1.3, 0.2],\n",
- " [ 5.1, 3.4, 1.5, 0.2],\n",
- " [ 5. , 3.5, 1.3, 0.3],\n",
- " [ 4.5, 2.3, 1.3, 0.3],\n",
- " [ 4.4, 3.2, 1.3, 0.2],\n",
- " [ 5. , 3.5, 1.6, 0.6],\n",
- " [ 5.1, 3.8, 1.9, 0.4],\n",
- " [ 4.8, 3. , 1.4, 0.3],\n",
- " [ 5.1, 3.8, 1.6, 0.2],\n",
- " [ 4.6, 3.2, 1.4, 0.2],\n",
- " [ 5.3, 3.7, 1.5, 0.2],\n",
- " [ 5. , 3.3, 1.4, 0.2],\n",
- " [ 7. , 3.2, 4.7, 1.4],\n",
- " [ 6.4, 3.2, 4.5, 1.5],\n",
- " [ 6.9, 3.1, 4.9, 1.5],\n",
- " [ 5.5, 2.3, 4. , 1.3],\n",
- " [ 6.5, 2.8, 4.6, 1.5],\n",
- " [ 5.7, 2.8, 4.5, 1.3],\n",
- " [ 6.3, 3.3, 4.7, 1.6],\n",
- " [ 4.9, 2.4, 3.3, 1. ],\n",
- " [ 6.6, 2.9, 4.6, 1.3],\n",
- " [ 5.2, 2.7, 3.9, 1.4],\n",
- " [ 5. , 2. , 3.5, 1. ],\n",
- " [ 5.9, 3. , 4.2, 1.5],\n",
- " [ 6. , 2.2, 4. , 1. ],\n",
- " [ 6.1, 2.9, 4.7, 1.4],\n",
- " [ 5.6, 2.9, 3.6, 1.3],\n",
- " [ 6.7, 3.1, 4.4, 1.4],\n",
- " [ 5.6, 3. , 4.5, 1.5],\n",
- " [ 5.8, 2.7, 4.1, 1. ],\n",
- " [ 6.2, 2.2, 4.5, 1.5],\n",
- " [ 5.6, 2.5, 3.9, 1.1],\n",
- " [ 5.9, 3.2, 4.8, 1.8],\n",
- " [ 6.1, 2.8, 4. , 1.3],\n",
- " [ 6.3, 2.5, 4.9, 1.5],\n",
- " [ 6.1, 2.8, 4.7, 1.2],\n",
- " [ 6.4, 2.9, 4.3, 1.3],\n",
- " [ 6.6, 3. , 4.4, 1.4],\n",
- " [ 6.8, 2.8, 4.8, 1.4],\n",
- " [ 6.7, 3. , 5. , 1.7],\n",
- " [ 6. , 2.9, 4.5, 1.5],\n",
- " [ 5.7, 2.6, 3.5, 1. ],\n",
- " [ 5.5, 2.4, 3.8, 1.1],\n",
- " [ 5.5, 2.4, 3.7, 1. ],\n",
- " [ 5.8, 2.7, 3.9, 1.2],\n",
- " [ 6. , 2.7, 5.1, 1.6],\n",
- " [ 5.4, 3. , 4.5, 1.5],\n",
- " [ 6. , 3.4, 4.5, 1.6],\n",
- " [ 6.7, 3.1, 4.7, 1.5],\n",
- " [ 6.3, 2.3, 4.4, 1.3],\n",
- " [ 5.6, 3. , 4.1, 1.3],\n",
- " [ 5.5, 2.5, 4. , 1.3],\n",
- " [ 5.5, 2.6, 4.4, 1.2],\n",
- " [ 6.1, 3. , 4.6, 1.4],\n",
- " [ 5.8, 2.6, 4. , 1.2],\n",
- " [ 5. , 2.3, 3.3, 1. ],\n",
- " [ 5.6, 2.7, 4.2, 1.3],\n",
- " [ 5.7, 3. , 4.2, 1.2],\n",
- " [ 5.7, 2.9, 4.2, 1.3],\n",
- " [ 6.2, 2.9, 4.3, 1.3],\n",
- " [ 5.1, 2.5, 3. , 1.1],\n",
- " [ 5.7, 2.8, 4.1, 1.3],\n",
- " [ 6.3, 3.3, 6. , 2.5],\n",
- " [ 5.8, 2.7, 5.1, 1.9],\n",
- " [ 7.1, 3. , 5.9, 2.1],\n",
- " [ 6.3, 2.9, 5.6, 1.8],\n",
- " [ 6.5, 3. , 5.8, 2.2],\n",
- " [ 7.6, 3. , 6.6, 2.1],\n",
- " [ 4.9, 2.5, 4.5, 1.7],\n",
- " [ 7.3, 2.9, 6.3, 1.8],\n",
- " [ 6.7, 2.5, 5.8, 1.8],\n",
- " [ 7.2, 3.6, 6.1, 2.5],\n",
- " [ 6.5, 3.2, 5.1, 2. ],\n",
- " [ 6.4, 2.7, 5.3, 1.9],\n",
- " [ 6.8, 3. , 5.5, 2.1],\n",
- " [ 5.7, 2.5, 5. , 2. ],\n",
- " [ 5.8, 2.8, 5.1, 2.4],\n",
- " [ 6.4, 3.2, 5.3, 2.3],\n",
- " [ 6.5, 3. , 5.5, 1.8],\n",
- " [ 7.7, 3.8, 6.7, 2.2],\n",
- " [ 7.7, 2.6, 6.9, 2.3],\n",
- " [ 6. , 2.2, 5. , 1.5],\n",
- " [ 6.9, 3.2, 5.7, 2.3],\n",
- " [ 5.6, 2.8, 4.9, 2. ],\n",
- " [ 7.7, 2.8, 6.7, 2. ],\n",
- " [ 6.3, 2.7, 4.9, 1.8],\n",
- " [ 6.7, 3.3, 5.7, 2.1],\n",
- " [ 7.2, 3.2, 6. , 1.8],\n",
- " [ 6.2, 2.8, 4.8, 1.8],\n",
- " [ 6.1, 3. , 4.9, 1.8],\n",
- " [ 6.4, 2.8, 5.6, 2.1],\n",
- " [ 7.2, 3. , 5.8, 1.6],\n",
- " [ 7.4, 2.8, 6.1, 1.9],\n",
- " [ 7.9, 3.8, 6.4, 2. ],\n",
- " [ 6.4, 2.8, 5.6, 2.2],\n",
- " [ 6.3, 2.8, 5.1, 1.5],\n",
- " [ 6.1, 2.6, 5.6, 1.4],\n",
- " [ 7.7, 3. , 6.1, 2.3],\n",
- " [ 6.3, 3.4, 5.6, 2.4],\n",
- " [ 6.4, 3.1, 5.5, 1.8],\n",
- " [ 6. , 3. , 4.8, 1.8],\n",
- " [ 6.9, 3.1, 5.4, 2.1],\n",
- " [ 6.7, 3.1, 5.6, 2.4],\n",
- " [ 6.9, 3.1, 5.1, 2.3],\n",
- " [ 5.8, 2.7, 5.1, 1.9],\n",
- " [ 6.8, 3.2, 5.9, 2.3],\n",
- " [ 6.7, 3.3, 5.7, 2.5],\n",
- " [ 6.7, 3. , 5.2, 2.3],\n",
- " [ 6.3, 2.5, 5. , 1.9],\n",
- " [ 6.5, 3. , 5.2, 2. ],\n",
- " [ 6.2, 3.4, 5.4, 2.3],\n",
- " [ 5.9, 3. , 5.1, 1.8]])"
- ]
- },
- "execution_count": 185,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# We retrieve the X vector which contains the features of each tuple\n",
- "X = data['data']\n",
- "\n",
- "X"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 107,
- "metadata": {
- "collapsed": false,
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
- " 0, 0, 0, 0, 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,\n",
- " 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 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,\n",
- " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
- ]
- },
- "execution_count": 107,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# And the y vector which is the numpy array containing the labels.\n",
- "y = data['target']\n",
- "\n",
- "y"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 186,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "['sepal length (cm)',\n",
- " 'sepal width (cm)',\n",
- " 'petal length (cm)',\n",
- " 'petal width (cm)']"
- ]
- },
- "execution_count": 186,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Here we store the names of the features for our understanding later.\n",
- "headers = data['feature_names']\n",
- "\n",
- "headers"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "There are also a lot of other keys in the dictionary that is the variable ```data```, but we'll not use these.\n",
- "\n",
- "We'll now make a DataFrame object to handle the data properly."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 187,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " 5.1 | \n",
- " 3.5 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " 4.9 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " 4.7 | \n",
- " 3.2 | \n",
- " 1.3 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " 4.6 | \n",
- " 3.1 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " 5.0 | \n",
- " 3.6 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 5 | \n",
- " 5.4 | \n",
- " 3.9 | \n",
- " 1.7 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 6 | \n",
- " 4.6 | \n",
- " 3.4 | \n",
- " 1.4 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 7 | \n",
- " 5.0 | \n",
- " 3.4 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 8 | \n",
- " 4.4 | \n",
- " 2.9 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 9 | \n",
- " 4.9 | \n",
- " 3.1 | \n",
- " 1.5 | \n",
- " 0.1 | \n",
- "
\n",
- " \n",
- " | 10 | \n",
- " 5.4 | \n",
- " 3.7 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 11 | \n",
- " 4.8 | \n",
- " 3.4 | \n",
- " 1.6 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 12 | \n",
- " 4.8 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
- " 0.1 | \n",
- "
\n",
- " \n",
- " | 13 | \n",
- " 4.3 | \n",
- " 3.0 | \n",
- " 1.1 | \n",
- " 0.1 | \n",
- "
\n",
- " \n",
- " | 14 | \n",
- " 5.8 | \n",
- " 4.0 | \n",
- " 1.2 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 15 | \n",
- " 5.7 | \n",
- " 4.4 | \n",
- " 1.5 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 16 | \n",
- " 5.4 | \n",
- " 3.9 | \n",
- " 1.3 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 17 | \n",
- " 5.1 | \n",
- " 3.5 | \n",
- " 1.4 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 18 | \n",
- " 5.7 | \n",
- " 3.8 | \n",
- " 1.7 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 19 | \n",
- " 5.1 | \n",
- " 3.8 | \n",
- " 1.5 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 20 | \n",
- " 5.4 | \n",
- " 3.4 | \n",
- " 1.7 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 21 | \n",
- " 5.1 | \n",
- " 3.7 | \n",
- " 1.5 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 22 | \n",
- " 4.6 | \n",
- " 3.6 | \n",
- " 1.0 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 23 | \n",
- " 5.1 | \n",
- " 3.3 | \n",
- " 1.7 | \n",
- " 0.5 | \n",
- "
\n",
- " \n",
- " | 24 | \n",
- " 4.8 | \n",
- " 3.4 | \n",
- " 1.9 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 25 | \n",
- " 5.0 | \n",
- " 3.0 | \n",
- " 1.6 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 26 | \n",
- " 5.0 | \n",
- " 3.4 | \n",
- " 1.6 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 27 | \n",
- " 5.2 | \n",
- " 3.5 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 28 | \n",
- " 5.2 | \n",
- " 3.4 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 29 | \n",
- " 4.7 | \n",
- " 3.2 | \n",
- " 1.6 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " | 120 | \n",
- " 6.9 | \n",
- " 3.2 | \n",
- " 5.7 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 121 | \n",
- " 5.6 | \n",
- " 2.8 | \n",
- " 4.9 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 122 | \n",
- " 7.7 | \n",
- " 2.8 | \n",
- " 6.7 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 123 | \n",
- " 6.3 | \n",
- " 2.7 | \n",
- " 4.9 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 124 | \n",
- " 6.7 | \n",
- " 3.3 | \n",
- " 5.7 | \n",
- " 2.1 | \n",
- "
\n",
- " \n",
- " | 125 | \n",
- " 7.2 | \n",
- " 3.2 | \n",
- " 6.0 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 126 | \n",
- " 6.2 | \n",
- " 2.8 | \n",
- " 4.8 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 127 | \n",
- " 6.1 | \n",
- " 3.0 | \n",
- " 4.9 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 128 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.1 | \n",
- "
\n",
- " \n",
- " | 129 | \n",
- " 7.2 | \n",
- " 3.0 | \n",
- " 5.8 | \n",
- " 1.6 | \n",
- "
\n",
- " \n",
- " | 130 | \n",
- " 7.4 | \n",
- " 2.8 | \n",
- " 6.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 131 | \n",
- " 7.9 | \n",
- " 3.8 | \n",
- " 6.4 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 132 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.2 | \n",
- "
\n",
- " \n",
- " | 133 | \n",
- " 6.3 | \n",
- " 2.8 | \n",
- " 5.1 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 134 | \n",
- " 6.1 | \n",
- " 2.6 | \n",
- " 5.6 | \n",
- " 1.4 | \n",
- "
\n",
- " \n",
- " | 135 | \n",
- " 7.7 | \n",
- " 3.0 | \n",
- " 6.1 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 136 | \n",
- " 6.3 | \n",
- " 3.4 | \n",
- " 5.6 | \n",
- " 2.4 | \n",
- "
\n",
- " \n",
- " | 137 | \n",
- " 6.4 | \n",
- " 3.1 | \n",
- " 5.5 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 138 | \n",
- " 6.0 | \n",
- " 3.0 | \n",
- " 4.8 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 139 | \n",
- " 6.9 | \n",
- " 3.1 | \n",
- " 5.4 | \n",
- " 2.1 | \n",
- "
\n",
- " \n",
- " | 140 | \n",
- " 6.7 | \n",
- " 3.1 | \n",
- " 5.6 | \n",
- " 2.4 | \n",
- "
\n",
- " \n",
- " | 141 | \n",
- " 6.9 | \n",
- " 3.1 | \n",
- " 5.1 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 142 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 143 | \n",
- " 6.8 | \n",
- " 3.2 | \n",
- " 5.9 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 144 | \n",
- " 6.7 | \n",
- " 3.3 | \n",
- " 5.7 | \n",
- " 2.5 | \n",
- "
\n",
- " \n",
- " | 145 | \n",
- " 6.7 | \n",
- " 3.0 | \n",
- " 5.2 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 146 | \n",
- " 6.3 | \n",
- " 2.5 | \n",
- " 5.0 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 147 | \n",
- " 6.5 | \n",
- " 3.0 | \n",
- " 5.2 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 148 | \n",
- " 6.2 | \n",
- " 3.4 | \n",
- " 5.4 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 149 | \n",
- " 5.9 | \n",
- " 3.0 | \n",
- " 5.1 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- "
\n",
- "
150 rows × 4 columns
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
- "0 5.1 3.5 1.4 0.2\n",
- "1 4.9 3.0 1.4 0.2\n",
- "2 4.7 3.2 1.3 0.2\n",
- "3 4.6 3.1 1.5 0.2\n",
- "4 5.0 3.6 1.4 0.2\n",
- "5 5.4 3.9 1.7 0.4\n",
- "6 4.6 3.4 1.4 0.3\n",
- "7 5.0 3.4 1.5 0.2\n",
- "8 4.4 2.9 1.4 0.2\n",
- "9 4.9 3.1 1.5 0.1\n",
- "10 5.4 3.7 1.5 0.2\n",
- "11 4.8 3.4 1.6 0.2\n",
- "12 4.8 3.0 1.4 0.1\n",
- "13 4.3 3.0 1.1 0.1\n",
- "14 5.8 4.0 1.2 0.2\n",
- "15 5.7 4.4 1.5 0.4\n",
- "16 5.4 3.9 1.3 0.4\n",
- "17 5.1 3.5 1.4 0.3\n",
- "18 5.7 3.8 1.7 0.3\n",
- "19 5.1 3.8 1.5 0.3\n",
- "20 5.4 3.4 1.7 0.2\n",
- "21 5.1 3.7 1.5 0.4\n",
- "22 4.6 3.6 1.0 0.2\n",
- "23 5.1 3.3 1.7 0.5\n",
- "24 4.8 3.4 1.9 0.2\n",
- "25 5.0 3.0 1.6 0.2\n",
- "26 5.0 3.4 1.6 0.4\n",
- "27 5.2 3.5 1.5 0.2\n",
- "28 5.2 3.4 1.4 0.2\n",
- "29 4.7 3.2 1.6 0.2\n",
- ".. ... ... ... ...\n",
- "120 6.9 3.2 5.7 2.3\n",
- "121 5.6 2.8 4.9 2.0\n",
- "122 7.7 2.8 6.7 2.0\n",
- "123 6.3 2.7 4.9 1.8\n",
- "124 6.7 3.3 5.7 2.1\n",
- "125 7.2 3.2 6.0 1.8\n",
- "126 6.2 2.8 4.8 1.8\n",
- "127 6.1 3.0 4.9 1.8\n",
- "128 6.4 2.8 5.6 2.1\n",
- "129 7.2 3.0 5.8 1.6\n",
- "130 7.4 2.8 6.1 1.9\n",
- "131 7.9 3.8 6.4 2.0\n",
- "132 6.4 2.8 5.6 2.2\n",
- "133 6.3 2.8 5.1 1.5\n",
- "134 6.1 2.6 5.6 1.4\n",
- "135 7.7 3.0 6.1 2.3\n",
- "136 6.3 3.4 5.6 2.4\n",
- "137 6.4 3.1 5.5 1.8\n",
- "138 6.0 3.0 4.8 1.8\n",
- "139 6.9 3.1 5.4 2.1\n",
- "140 6.7 3.1 5.6 2.4\n",
- "141 6.9 3.1 5.1 2.3\n",
- "142 5.8 2.7 5.1 1.9\n",
- "143 6.8 3.2 5.9 2.3\n",
- "144 6.7 3.3 5.7 2.5\n",
- "145 6.7 3.0 5.2 2.3\n",
- "146 6.3 2.5 5.0 1.9\n",
- "147 6.5 3.0 5.2 2.0\n",
- "148 6.2 3.4 5.4 2.3\n",
- "149 5.9 3.0 5.1 1.8\n",
- "\n",
- "[150 rows x 4 columns]"
- ]
- },
- "execution_count": 187,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "import pandas as pd\n",
- "\n",
- "df = pd.DataFrame(X, columns=headers)\n",
- "\n",
- "df"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This will give you a very user-friendly version of the data which you can manipulate using the methods in ```DataFrame```.\n",
- "\n",
- "The advantage of using a DataFrame over a list of lists or any other Python data structure is that it is much more versatile and easy to use."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " 5.1 | \n",
- " 3.5 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " 4.9 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " 4.7 | \n",
- " 3.2 | \n",
- " 1.3 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " 4.6 | \n",
- " 3.1 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " 5.0 | \n",
- " 3.6 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 5 | \n",
- " 5.4 | \n",
- " 3.9 | \n",
- " 1.7 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 6 | \n",
- " 4.6 | \n",
- " 3.4 | \n",
- " 1.4 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 7 | \n",
- " 5.0 | \n",
- " 3.4 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 8 | \n",
- " 4.4 | \n",
- " 2.9 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 9 | \n",
- " 4.9 | \n",
- " 3.1 | \n",
- " 1.5 | \n",
- " 0.1 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
- "0 5.1 3.5 1.4 0.2\n",
- "1 4.9 3.0 1.4 0.2\n",
- "2 4.7 3.2 1.3 0.2\n",
- "3 4.6 3.1 1.5 0.2\n",
- "4 5.0 3.6 1.4 0.2\n",
- "5 5.4 3.9 1.7 0.4\n",
- "6 4.6 3.4 1.4 0.3\n",
- "7 5.0 3.4 1.5 0.2\n",
- "8 4.4 2.9 1.4 0.2\n",
- "9 4.9 3.1 1.5 0.1"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return the first 10 rows in df\n",
- "### CODE HERE ###\n",
- "df[0:10]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 140 | \n",
- " 6.7 | \n",
- " 3.1 | \n",
- " 5.6 | \n",
- " 2.4 | \n",
- "
\n",
- " \n",
- " | 141 | \n",
- " 6.9 | \n",
- " 3.1 | \n",
- " 5.1 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 142 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 143 | \n",
- " 6.8 | \n",
- " 3.2 | \n",
- " 5.9 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 144 | \n",
- " 6.7 | \n",
- " 3.3 | \n",
- " 5.7 | \n",
- " 2.5 | \n",
- "
\n",
- " \n",
- " | 145 | \n",
- " 6.7 | \n",
- " 3.0 | \n",
- " 5.2 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 146 | \n",
- " 6.3 | \n",
- " 2.5 | \n",
- " 5.0 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 147 | \n",
- " 6.5 | \n",
- " 3.0 | \n",
- " 5.2 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 148 | \n",
- " 6.2 | \n",
- " 3.4 | \n",
- " 5.4 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 149 | \n",
- " 5.9 | \n",
- " 3.0 | \n",
- " 5.1 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
- "140 6.7 3.1 5.6 2.4\n",
- "141 6.9 3.1 5.1 2.3\n",
- "142 5.8 2.7 5.1 1.9\n",
- "143 6.8 3.2 5.9 2.3\n",
- "144 6.7 3.3 5.7 2.5\n",
- "145 6.7 3.0 5.2 2.3\n",
- "146 6.3 2.5 5.0 1.9\n",
- "147 6.5 3.0 5.2 2.0\n",
- "148 6.2 3.4 5.4 2.3\n",
- "149 5.9 3.0 5.1 1.8"
- ]
- },
- "execution_count": 12,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return the last 10 rows in df\n",
- "### CODE HERE ###\n",
- "df[-10:]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(150, 4)"
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Get to know the shape of the data\n",
- "### CODE HERE ###\n",
- "df.shape"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This tells us there are 150 rows and 4 columns in ```df```."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | count | \n",
- " 150.000000 | \n",
- " 150.000000 | \n",
- " 150.000000 | \n",
- " 150.000000 | \n",
- "
\n",
- " \n",
- " | mean | \n",
- " 5.843333 | \n",
- " 3.054000 | \n",
- " 3.758667 | \n",
- " 1.198667 | \n",
- "
\n",
- " \n",
- " | std | \n",
- " 0.828066 | \n",
- " 0.433594 | \n",
- " 1.764420 | \n",
- " 0.763161 | \n",
- "
\n",
- " \n",
- " | min | \n",
- " 4.300000 | \n",
- " 2.000000 | \n",
- " 1.000000 | \n",
- " 0.100000 | \n",
- "
\n",
- " \n",
- " | 25% | \n",
- " 5.100000 | \n",
- " 2.800000 | \n",
- " 1.600000 | \n",
- " 0.300000 | \n",
- "
\n",
- " \n",
- " | 50% | \n",
- " 5.800000 | \n",
- " 3.000000 | \n",
- " 4.350000 | \n",
- " 1.300000 | \n",
- "
\n",
- " \n",
- " | 75% | \n",
- " 6.400000 | \n",
- " 3.300000 | \n",
- " 5.100000 | \n",
- " 1.800000 | \n",
- "
\n",
- " \n",
- " | max | \n",
- " 7.900000 | \n",
- " 4.400000 | \n",
- " 6.900000 | \n",
- " 2.500000 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) \\\n",
- "count 150.000000 150.000000 150.000000 \n",
- "mean 5.843333 3.054000 3.758667 \n",
- "std 0.828066 0.433594 1.764420 \n",
- "min 4.300000 2.000000 1.000000 \n",
- "25% 5.100000 2.800000 1.600000 \n",
- "50% 5.800000 3.000000 4.350000 \n",
- "75% 6.400000 3.300000 5.100000 \n",
- "max 7.900000 4.400000 6.900000 \n",
- "\n",
- " petal width (cm) \n",
- "count 150.000000 \n",
- "mean 1.198667 \n",
- "std 0.763161 \n",
- "min 0.100000 \n",
- "25% 0.300000 \n",
- "50% 1.300000 \n",
- "75% 1.800000 \n",
- "max 2.500000 "
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Get a more detailed description of the dataset\n",
- "### CODE HERE ###\n",
- "df.describe()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This gives us the statistics of each of features in detail. ```count``` is the number of values in that feature, ```mean``` and ```std``` are the mean and standard deviation and the other values are the minimum, maximum and values for each of the quartiles (1st, 2nd and 3rd).\n",
- "\n",
- "Other methods:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0 5.1\n",
- "1 4.9\n",
- "2 4.7\n",
- "3 4.6\n",
- "4 5.0\n",
- "5 5.4\n",
- "6 4.6\n",
- "7 5.0\n",
- "8 4.4\n",
- "9 4.9\n",
- "10 5.4\n",
- "11 4.8\n",
- "12 4.8\n",
- "13 4.3\n",
- "14 5.8\n",
- "15 5.7\n",
- "16 5.4\n",
- "17 5.1\n",
- "18 5.7\n",
- "19 5.1\n",
- "20 5.4\n",
- "21 5.1\n",
- "22 4.6\n",
- "23 5.1\n",
- "24 4.8\n",
- "25 5.0\n",
- "26 5.0\n",
- "27 5.2\n",
- "28 5.2\n",
- "29 4.7\n",
- " ... \n",
- "120 6.9\n",
- "121 5.6\n",
- "122 7.7\n",
- "123 6.3\n",
- "124 6.7\n",
- "125 7.2\n",
- "126 6.2\n",
- "127 6.1\n",
- "128 6.4\n",
- "129 7.2\n",
- "130 7.4\n",
- "131 7.9\n",
- "132 6.4\n",
- "133 6.3\n",
- "134 6.1\n",
- "135 7.7\n",
- "136 6.3\n",
- "137 6.4\n",
- "138 6.0\n",
- "139 6.9\n",
- "140 6.7\n",
- "141 6.9\n",
- "142 5.8\n",
- "143 6.8\n",
- "144 6.7\n",
- "145 6.7\n",
- "146 6.3\n",
- "147 6.5\n",
- "148 6.2\n",
- "149 5.9\n",
- "Name: sepal length (cm), dtype: float64"
- ]
- },
- "execution_count": 34,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Retrieve only sepal_length from df\n",
- "### CODE HERE ###\n",
- "df[df.columns[0]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "sepal length (cm) 5.0\n",
- "sepal width (cm) 3.6\n",
- "petal length (cm) 1.4\n",
- "petal width (cm) 0.2\n",
- "Name: 4, dtype: float64"
- ]
- },
- "execution_count": 53,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return 5th row of df\n",
- "### CODE HERE ###\n",
- "df.iloc[4]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "collapsed": false,
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "1.3999999999999999"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return petal length of 5th row of df\n",
- "### CODE HERE ###\n",
- "df.iloc[4,2]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 57,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 41 | \n",
- " 4.5 | \n",
- " 2.3 | \n",
- " 1.3 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 53 | \n",
- " 5.5 | \n",
- " 2.3 | \n",
- " 4.0 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 54 | \n",
- " 6.5 | \n",
- " 2.8 | \n",
- " 4.6 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 55 | \n",
- " 5.7 | \n",
- " 2.8 | \n",
- " 4.5 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 57 | \n",
- " 4.9 | \n",
- " 2.4 | \n",
- " 3.3 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 59 | \n",
- " 5.2 | \n",
- " 2.7 | \n",
- " 3.9 | \n",
- " 1.4 | \n",
- "
\n",
- " \n",
- " | 60 | \n",
- " 5.0 | \n",
- " 2.0 | \n",
- " 3.5 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 62 | \n",
- " 6.0 | \n",
- " 2.2 | \n",
- " 4.0 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 67 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 4.1 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 68 | \n",
- " 6.2 | \n",
- " 2.2 | \n",
- " 4.5 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 69 | \n",
- " 5.6 | \n",
- " 2.5 | \n",
- " 3.9 | \n",
- " 1.1 | \n",
- "
\n",
- " \n",
- " | 71 | \n",
- " 6.1 | \n",
- " 2.8 | \n",
- " 4.0 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 72 | \n",
- " 6.3 | \n",
- " 2.5 | \n",
- " 4.9 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 73 | \n",
- " 6.1 | \n",
- " 2.8 | \n",
- " 4.7 | \n",
- " 1.2 | \n",
- "
\n",
- " \n",
- " | 76 | \n",
- " 6.8 | \n",
- " 2.8 | \n",
- " 4.8 | \n",
- " 1.4 | \n",
- "
\n",
- " \n",
- " | 79 | \n",
- " 5.7 | \n",
- " 2.6 | \n",
- " 3.5 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 80 | \n",
- " 5.5 | \n",
- " 2.4 | \n",
- " 3.8 | \n",
- " 1.1 | \n",
- "
\n",
- " \n",
- " | 81 | \n",
- " 5.5 | \n",
- " 2.4 | \n",
- " 3.7 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 82 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 3.9 | \n",
- " 1.2 | \n",
- "
\n",
- " \n",
- " | 83 | \n",
- " 6.0 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.6 | \n",
- "
\n",
- " \n",
- " | 87 | \n",
- " 6.3 | \n",
- " 2.3 | \n",
- " 4.4 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 89 | \n",
- " 5.5 | \n",
- " 2.5 | \n",
- " 4.0 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 90 | \n",
- " 5.5 | \n",
- " 2.6 | \n",
- " 4.4 | \n",
- " 1.2 | \n",
- "
\n",
- " \n",
- " | 92 | \n",
- " 5.8 | \n",
- " 2.6 | \n",
- " 4.0 | \n",
- " 1.2 | \n",
- "
\n",
- " \n",
- " | 93 | \n",
- " 5.0 | \n",
- " 2.3 | \n",
- " 3.3 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 94 | \n",
- " 5.6 | \n",
- " 2.7 | \n",
- " 4.2 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 98 | \n",
- " 5.1 | \n",
- " 2.5 | \n",
- " 3.0 | \n",
- " 1.1 | \n",
- "
\n",
- " \n",
- " | 99 | \n",
- " 5.7 | \n",
- " 2.8 | \n",
- " 4.1 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 101 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 106 | \n",
- " 4.9 | \n",
- " 2.5 | \n",
- " 4.5 | \n",
- " 1.7 | \n",
- "
\n",
- " \n",
- " | 108 | \n",
- " 6.7 | \n",
- " 2.5 | \n",
- " 5.8 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 111 | \n",
- " 6.4 | \n",
- " 2.7 | \n",
- " 5.3 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 113 | \n",
- " 5.7 | \n",
- " 2.5 | \n",
- " 5.0 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 114 | \n",
- " 5.8 | \n",
- " 2.8 | \n",
- " 5.1 | \n",
- " 2.4 | \n",
- "
\n",
- " \n",
- " | 118 | \n",
- " 7.7 | \n",
- " 2.6 | \n",
- " 6.9 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 119 | \n",
- " 6.0 | \n",
- " 2.2 | \n",
- " 5.0 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 121 | \n",
- " 5.6 | \n",
- " 2.8 | \n",
- " 4.9 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 122 | \n",
- " 7.7 | \n",
- " 2.8 | \n",
- " 6.7 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 123 | \n",
- " 6.3 | \n",
- " 2.7 | \n",
- " 4.9 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 126 | \n",
- " 6.2 | \n",
- " 2.8 | \n",
- " 4.8 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 128 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.1 | \n",
- "
\n",
- " \n",
- " | 130 | \n",
- " 7.4 | \n",
- " 2.8 | \n",
- " 6.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 132 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.2 | \n",
- "
\n",
- " \n",
- " | 133 | \n",
- " 6.3 | \n",
- " 2.8 | \n",
- " 5.1 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 134 | \n",
- " 6.1 | \n",
- " 2.6 | \n",
- " 5.6 | \n",
- " 1.4 | \n",
- "
\n",
- " \n",
- " | 142 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 146 | \n",
- " 6.3 | \n",
- " 2.5 | \n",
- " 5.0 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
- "41 4.5 2.3 1.3 0.3\n",
- "53 5.5 2.3 4.0 1.3\n",
- "54 6.5 2.8 4.6 1.5\n",
- "55 5.7 2.8 4.5 1.3\n",
- "57 4.9 2.4 3.3 1.0\n",
- "59 5.2 2.7 3.9 1.4\n",
- "60 5.0 2.0 3.5 1.0\n",
- "62 6.0 2.2 4.0 1.0\n",
- "67 5.8 2.7 4.1 1.0\n",
- "68 6.2 2.2 4.5 1.5\n",
- "69 5.6 2.5 3.9 1.1\n",
- "71 6.1 2.8 4.0 1.3\n",
- "72 6.3 2.5 4.9 1.5\n",
- "73 6.1 2.8 4.7 1.2\n",
- "76 6.8 2.8 4.8 1.4\n",
- "79 5.7 2.6 3.5 1.0\n",
- "80 5.5 2.4 3.8 1.1\n",
- "81 5.5 2.4 3.7 1.0\n",
- "82 5.8 2.7 3.9 1.2\n",
- "83 6.0 2.7 5.1 1.6\n",
- "87 6.3 2.3 4.4 1.3\n",
- "89 5.5 2.5 4.0 1.3\n",
- "90 5.5 2.6 4.4 1.2\n",
- "92 5.8 2.6 4.0 1.2\n",
- "93 5.0 2.3 3.3 1.0\n",
- "94 5.6 2.7 4.2 1.3\n",
- "98 5.1 2.5 3.0 1.1\n",
- "99 5.7 2.8 4.1 1.3\n",
- "101 5.8 2.7 5.1 1.9\n",
- "106 4.9 2.5 4.5 1.7\n",
- "108 6.7 2.5 5.8 1.8\n",
- "111 6.4 2.7 5.3 1.9\n",
- "113 5.7 2.5 5.0 2.0\n",
- "114 5.8 2.8 5.1 2.4\n",
- "118 7.7 2.6 6.9 2.3\n",
- "119 6.0 2.2 5.0 1.5\n",
- "121 5.6 2.8 4.9 2.0\n",
- "122 7.7 2.8 6.7 2.0\n",
- "123 6.3 2.7 4.9 1.8\n",
- "126 6.2 2.8 4.8 1.8\n",
- "128 6.4 2.8 5.6 2.1\n",
- "130 7.4 2.8 6.1 1.9\n",
- "132 6.4 2.8 5.6 2.2\n",
- "133 6.3 2.8 5.1 1.5\n",
- "134 6.1 2.6 5.6 1.4\n",
- "142 5.8 2.7 5.1 1.9\n",
- "146 6.3 2.5 5.0 1.9"
- ]
- },
- "execution_count": 57,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return all instances in df where sepal width is less than 2.9 and store it in a different DataFrame, df1\n",
- "### CODE HERE ###\n",
- "df1=df.loc[df['sepal width (cm)'] < 2.9]\n",
- "df1"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "sepal length (cm) 5.843333\n",
- "sepal width (cm) 3.054000\n",
- "petal length (cm) 3.758667\n",
- "petal width (cm) 1.198667\n",
- "dtype: float64"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Get mean of each column in df\n",
- "# Hint: use numpy.mean\n",
- "import numpy as np\n",
- "np.mean(df)\n",
- "### CODE HERE ###"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "While we can always get the mean using ```df.describe()```, ```df.apply()``` can be used to apply any function to each column, such as ```np.sum```, ```np.max``` and so on."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Using Matplotlib**\n",
- "\n",
- "It is important to visualise the data we have so we can get useful inferences from it, such as by plotting one feature against another. If we can guess beforehand which features are more likely to decide the value of the target variable, we'll be able to create a better model accordingly.\n",
- "\n",
- "```matplotlib.pyplot``` is the library for creating 2D graphs in Python. It mimics the functions used in Matlab, which is a much more comprehensive tool for a wide range of experimental purposes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Only for jupyter-notebooks; don't bother about this line elsewhere.\n",
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We'll try to plot the features from the Iris dataset."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "sl = df['sepal length (cm)']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\nd0dExMaNG+PQQw+Nl156KSIirr322jjllFMiImLmzJlx+umnR0TEPffcE5MnT46IiPXr18emTZsi\nIuKOO+6IE088MSIi7rrrrvjIRz6y3bqLy88999z43ve+FxERr776akyaNCneeOON+M53vhMTJ06M\n1157Ld5+++0YN25crFmzJn7961/H+PHjY926dbFx48Y4/PDD41Of+lRERCxYsCCuu+66reuZOXNm\nfPazn42IiB/96Ecxe/bs7WIp9z6Q3Z8o6Tu2prukJM0F/pnsBkrfjogvl9TvCvwbMA1YB5wUEc/l\ndecCpwFbgLMj4rZaxmpmjeG88+Ctt7qWvfVWVn7yyTvW52677cayZcu47777uOuuuzjppJP48pe/\nTFtbGytWrODII48EYMuWLey9995bl5s/fz4AH/rQh3j99dd57bXX2LBhAwsWLODpp59GEps2bUqO\n4/bbb2fp0qV87WtfA7Kzx9asWQPA7NmzGTFiBACtra08//zzvPzyy8ycOZM999wTgI9//OM89dRT\n3fZ/4oknAjBt2jSee+655LhS1WyXlKQm4FLgGKAVmC+pdGfbacCrEfF7wD8BX8mXbSW7petkYC7w\nL3l/NVFp83fOHJC2TXPm9G55gMmTu/YxeXLX+jPPhCFDsrohQ7L5UmPGdO1jzJjerWPYsK71w4Zt\nv45KbSqNRcp4VHodKWNRSUof1d7tYdWRf38ml6dqampi1qxZ/O3f/i3f/OY3ueGGG4gIJk+ezPLl\ny1m+fDmPPfYYt99++9ZlSs8sksT555/PEUccwYoVK/jhD3/Yq1NVI4Ibbrhh6/rWrFnD/vvvD7B1\nd1kh1s2bNxO9vMFdoY/C8tVWy2MY04HVEfFsRGwErgWOL2lzPPDd/Pn1wGxl79DxwLUR8ZuI+BWw\nOu+v6pYsgYUL4fnns43f55/P5gtfHnPmwJ13dl3mzju3fVFWWh6yL+6VJTeYXbly2xf6mWfCt74F\nW7Zk81u2ZPPFX3JjxsDatV37WLt225dtpXUMGwal/wht2tQ1IVRqU2ksUsaj0utIGYtKUvpIed+s\nPsaN6115ilWrVvH0009vnV++fDnjx49nv/32o7OzkwceeADIfpH++OOPb233/e9/H4Cf/exnjBgx\nghEjRrB+/XrG5B/Yq666qldxHH300VxyySVbE8EjjzzSY/vp06dzzz338Oqrr7J582ZuuOGGrXW7\n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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Create a plt.figure object\n",
- "fig = plt.figure('Sepal length vs y')\n",
- "\n",
- "ax0 = fig.add_subplot(111) # This means there's only 1 plot in the whole figure. 211 would mean 2 plots\n",
- "# and the top plot is being added. 212 means 2 plots and bottom plot is being added.\n",
- "ax0.scatter(sl, y, c = 'b', marker='o', label='Sepal length')\n",
- "ax0.set_xlabel('sepal length (cm)')\n",
- "ax0.set_ylabel('flower')\n",
- "ax0.legend()\n",
- "\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\nEqyIiBQ3KTwHTDOzqWY2ArgQWJvewMyOSysuAl4uYjwiIpJH0a4+cvd2M7sc+BVQBvzE3V8ys78G\nmt19LXCFmS0C2oH3gL8sVjwiIpKfucen+Qe2hoYGb25uLnUYIiKDipm1uHtDvnZ6R7OIiESUFERE\nJKKkICIiESUFERGJKCmIiEhESUFERCJKCiIiElFSEBGRiJKCiIhElBRERCSipCAiIhElBRERiSgp\niIhIRElBREQiSgoiIhJRUhARkYiSgoiIRJQUREQkUrTPaBaRD5e2tja2bNnCwYMHSx3Kh1pFRQWT\nJk2ivLy8V/srKYhIv9iyZQuVlZXU1NRgZqUO50PJ3dm5cydbtmxh6tSpvepD00ci0i8OHjzIuHHj\nlBBKyMwYN25cn16tKSmISL9RQii9vj4HSgoiMmR8+9vfZsaMGdTW1lJXV8czzzzTr/2vW7eOhQsX\nFlzfVw8//DCbNm2Kyk1NTTQ3N/f7OOm0piAiQ8KGDRt45JFHeP755xk5ciQ7duygtbW11GH1ycMP\nP8zChQuZPn36YRtTrxREpCTuugtqamDYsPD1rrv61t8777xDVVUVI0eOBKCqqorjjz8egJaWFhob\nG6mvr+ecc87hnXfeAcJ/3ldeeSVz587lxBNP5NlnnwXg2WefZe7cuZx88snMnTuXV155peA49u3b\nxxe/+EVmzZrFySefzM9//nMA7rjjDi644ALOPfdcpk2bxjXXXBPtc9ttt/Gxj32MpqYm/uqv/orL\nL7+cp59+mrVr13L11VdTV1fH66+/DsD999/P7Nmz+djHPsb69ev7dtCycfdBtdXX17uIDDybNm0q\nuO2aNe6jR7tDahs9OtT31p49e3zmzJk+bdo0X7Jkia9bt87d3VtbW/20007zbdu2ubv7vffe61/4\nwhfc3b2xsdG//OUvu7v7E0884TNmzHB39927d3tbW5u7uz/66KN+wQUXuLv7448/7uedd16XsdPr\nr7vuOv/pT3/q7u7vv/++T5s2zffu3eu33367T5061Xft2uUHDhzw6upqf/PNN/3tt9/2KVOm+M6d\nO721tdXPOOMMv+yyy9zd/ZJLLvH7778/GqexsdG/9rWvubv7L37xC1+wYEHWY5HtuQCavYBzrKaP\nROSwu/562L8/s27//lB/8cW96/OII46gpaWF9evX8/jjj/PZz36W733vezQ0NPDiiy9y1llnAdDR\n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\nkoKIiET+P27ChXPgCZ+jAAAAAElFTkSuQmCC\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot petal width vs y with blue o's and petal length vs y with red x's\n",
- "fig = plt.figure('Petal width vs y,Petal length vs y')\n",
- "\n",
- "### CODE HERE ###\n",
- "ax0 = fig.add_subplot(111)\n",
- "pw=df['petal width (cm)']\n",
- "pl=df['petal length (cm)']\n",
- "ax0.scatter(pw, y, c = 'b', marker='o', label='Sepal length')\n",
- "ax0.scatter(pl,y,c='r',marker='x',label='Petal length')\n",
- "ax0.set_xlabel('length/width')\n",
- "ax0.set_ylabel('flower')\n",
- "ax0.legend()\n",
- "\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEKCAYAAAARnO4WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2UXFWZ7/Hvkw50eE0kyQo2mRCjdjRgSEgLksxASxAU\nEQV1AYt7B43XKBlRxjsyV1jcQZ3Mi6ALx7nBFY2KY8ZBgiCXi4owNKCJwQSiQCCNZhKIDU0IJoEA\nMZ0894+qajqdqjq7us45VafO77NWr6R2nTp71yE8feqpZ+9t7o6IiLS+UY0egIiIpEMBX0QkJxTw\nRURyQgFfRCQnFPBFRHJCAV9EJCcU8EVEckIBX0QkJxTwRURyYnSjBzDUhAkTfOrUqY0ehohIZqxd\nu/Z5d58YcmxTBfypU6eyZs2aRg9DRCQzzGxz6LFK6YiI5IQCvohITiQW8M1supmtG/Kz08wuT6o/\nERGpLrEcvrtvAGYBmFkb8Afg1lrPs2fPHrZs2cKrr74a8wgl1JgxY5g8eTIHHXRQo4ciInVI60vb\n+cDv3T34y4WSLVu2cMQRRzB16lTMLIGhSTXuzrZt29iyZQtveMMbGj0cEalDWjn8C4EflHvCzBaa\n2RozW7N169YDnn/11VcZP368gn2DmBnjx4/XJyyRFpB4wDezg4FzgZvLPe/uS929y927Jk4sX0qq\nYN9Yuv4iB+pf3s+qqavoGdXDqqmr6F/e3+ghRUojpfMe4CF3b/6rISISoH95PxsWbmDfy/sA2L15\nNxsWbgBg0sWTGjm0qtJI6VxEhXROVixevJjjjjuOmTNnMmvWLFavXh3r+Xt6ejjnnHOC2+t12223\nsX79+sHH3d3dmvAmUoONV20cDPYl+17ex8arNjZoRGESvcM3s0OBdwGfSLKfJK1atYo77riDhx56\niPb2dp5//nn+9Kc/NXpYdbnttts455xzmDFjRqOHIpJJu5/aXVN7s0j0Dt/dX3b38e6+I8l+hoo7\nr/bMM88wYcIE2tvbAZgwYQIdHR0ArF27ltNOO405c+Zw1lln8cwzzwCFO+bLL7+cuXPncvzxx/Pg\ngw8C8OCDDzJ37lxmz57N3Llz2bBhQ/A4du3axYIFC3j729/O7Nmz+fGPfwzAd7/7Xc4//3ze/e53\n8+Y3v5krrrhi8DXLli2js7OT7u5uPv7xj/OpT32KlStXcvvtt/O5z32OWbNm8fvf/x6Am2++mZNO\nOonOzk4eeOCBuq6ZSKtrn9JeU3uzaKmZtqW82u7Nu8Ffy6vVE/TPPPNMnn76aTo7O1m0aBH33Xcf\nUJgfcNlll7FixQrWrl3LggULuOqqqwZft2vXLlauXMmSJUtYsGABAG95y1u4//77efjhh/niF7/I\nlVdeGTyOxYsXc/rpp/PrX/+ae++9l8997nPs2rULgHXr1nHTTTfxyCOPcNNNN/H000/T19fHl770\nJX71q1/x85//nCeeeAKAuXPncu6553Lttdeybt063vjGNwIwMDDAgw8+yPXXX88XvvCFEV8vkTyY\ntngaow7dP3yOOnQU0xZPa9CIwjTV4mn1qpZXG+kXKYcffjhr167lgQce4N577+WCCy7gn/7pn+jq\n6uLRRx/lXe96FwB79+7l9a9//eDrLrroIgBOPfVUdu7cyfbt23nxxRe55JJLePLJJzEz9uzZEzyO\nu+66i9tvv53rrrsOKJSrPvXUUwDMnz+fsWPHAjBjxgw2b97M888/z2mnncZRRx0FwIc//GF6e3sr\nnv/8888HYM6cOWzatCl4XCJ5NOniSTzznWfYfs/2wbYjTzmyqb+whRYL+Enl1dra2uju7qa7u5u3\nve1t3HjjjcyZM4fjjjuOVatWlX3N8FJGM+Pqq6/mne98J7feeiubNm2iu7s7eAzuzi233ML06dP3\na1+9evVguqk01oGBAdw9/A3C4DlKrxeRynoX9e4X7AG237Od3kW9dC7pbNCoorVUSieJvNqGDRt4\n8sknBx+vW7eOY489lunTp7N169bBgL9nzx4ee+yxweNuuukmAH7xi18wduxYxo4dy44dOzjmmGOA\nQu69FmeddRZf//rXBwP5ww8/XPX4k046ifvuu48//vGPDAwMcMsttww+d8QRR/Diiy/W1L+IvKZv\naV9N7c2ipQJ+Enm1l156iUsuuYQZM2Ywc+ZM1q9fzzXXXMPBBx/MihUr+Nu//VtOOOEEZs2axcqV\nKwdf97rXvY65c+fyyU9+kmXLlgFwxRVX8PnPf5558+axd+/emsZx9dVXs2fPHmbOnMnxxx/P1Vdf\nXfX4Y445hiuvvJKTTz6ZM844gxkzZgymfS688EKuvfZaZs+ePfilrYjUoNL/vrX9b506q/Wjf5K6\nurp8eD34448/zlvf+tbgc/Qv72fjVRvZ/dRu2qe0M23xtNTzat3d3Vx33XV0dXWl2u9wL730Eocf\n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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot sepal length vs petal length for each instance\n",
- "fig = plt.figure('Sepal length vs petal length')\n",
- "\n",
- "### CODE HERE ###\n",
- "ax0=fig.add_subplot(111)\n",
- "\n",
- "ax0.scatter(sl,pl,c='m',marker='o',label='Sepal length')\n",
- "ax0.set_xlabel(\"sepal length\")\n",
- "ax0.set_ylabel(\"petal length\")\n",
- "ax0.legend()\n",
- "\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 168,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot sepal length as a line graph for each instance\n",
- "# Hint: use numpy.arange() for x axis\n",
- "\n",
- "fig = plt.figure('Sepal length')\n",
- "\n",
- "### CODE HERE ###\n",
- "import numpy as np\n",
- "ax0=fig.add_subplot(111)\n",
- "ax0.set_ylabel(\"sepal length\")\n",
- "ax0.set_xlabel(\"instance\")\n",
- "ax0.plot(sl,color='green')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Using Scikit-Learn**\n",
- "\n",
- "Scikit-Learn offers a variety of classifiers for learning the data and creating a model for it. This task is a classification task and hence a regression method such as Linear Regression cannot be used for it. We'll use Logistic Regression to create a classifier for this data. "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Before using a model on the data, we will need some data to test the model on. For this, we'll keep some data aside called the 'test set'.\n",
- "\n",
- "Also, we can have some problems in learning the data if the data is not randomly shuffled and chosen first. (More on this later)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": 204,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "# Join target variable to dataframe\n",
- "### CODE HERE ###\n",
- "from sklearn.datasets import load_iris\n",
- "import pandas as pd\n",
- "data = load_iris()\n",
- "X = data['data']\n",
- "header=data['feature_names']\n",
- "df=pd.DataFrame(X,columns=header)\n",
- "header=data['target']\n",
- "df2=pd.DataFrame(header,columns=['target'])\n",
- "df['target']=df2\n",
- "# Randomly shuffle dataframe\n",
- "### CODE HERE ###"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 205,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
- " intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
- " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
- " verbose=0, warm_start=False)"
- ]
- },
- "execution_count": 205,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "from sklearn.linear_model import LogisticRegression\n",
- "from sklearn.model_selection import train_test_split\n",
- "\n",
- "# We divide df into training and testing sets such that the training set is 80% of df and test set is 20%\n",
- "train, test = train_test_split(df, test_size=0.2)\n",
- "\n",
- "y_train = train['target']\n",
- "y_test = test['target']\n",
- "X_train = train[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']]\n",
- "X_test = test[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']]\n",
- "\n",
- "# Create a classifier\n",
- "clf = LogisticRegression()\n",
- "# Train it on the training set\n",
- "clf.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 206,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([1, 2, 2, 2, 0, 2, 1, 0, 1, 2, 2, 0, 1, 1, 2, 2, 0, 2, 0, 2, 0, 0, 2,\n",
- " 0, 0, 2, 2, 0, 2, 1])"
- ]
- },
- "execution_count": 206,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Calculate the predictions on the test set\n",
- "pred = clf.predict(X_test)\n",
- "\n",
- "pred"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 208,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0.96666666666666667"
- ]
- },
- "execution_count": 208,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "from sklearn.metrics import accuracy_score\n",
- "\n",
- "# Find the accuracy on the test set\n",
- "accuracy_score(pred, y_test)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Since the accuracy is high, we can assume this is a good model we have created. However, there are a lot of factors that decide how relevant the accuracy is to the actual performance of the model. (Again, more on this later!)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Saving data and model**\n",
- "\n",
- "To save the data, we'll use the csv format, which is quite popular with data scientists since it is easy to read from and write to. \n",
- "\n",
- "To store the model, we'll use the pickle module in python to save it to disk.\n",
- "\n",
- "Both of these shall be in the same directory as this."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 212,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Assn-03.ipynb Compare.ipynb dataframe.csv model\r\n"
- ]
- }
- ],
- "source": [
- "ls"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 211,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import pickle\n",
- "\n",
- "# Save dataframe to csv\n",
- "### CODE HERE ###\n",
- "df.to_csv('dataframe.csv')\n",
- "# Save model to model.pkl\n",
- "### CODE HERE ###\n",
- "pickle_out = open(\"model\",\"wb\")\n",
- "pickle.dump(clf, pickle_out)\n",
- "pickle_out.close()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "It is recommended you practice these functions to get a good idea of how to create a model for a dataset in Python. Hope you enjoyed it!"
- ]
- }
- ],
- "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.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/python-assn/assn-03/Assn-03.ipynb b/python-assn/assn-03/.ipynb_checkpoints/Samyak Jain-Assn-03-checkpoint.ipynb
old mode 100644
new mode 100755
similarity index 57%
rename from python-assn/assn-03/Assn-03.ipynb
rename to python-assn/assn-03/.ipynb_checkpoints/Samyak Jain-Assn-03-checkpoint.ipynb
index 72fd792..4a2b9db
--- a/python-assn/assn-03/Assn-03.ipynb
+++ b/python-assn/assn-03/.ipynb_checkpoints/Samyak Jain-Assn-03-checkpoint.ipynb
@@ -957,12 +957,13 @@
],
"source": [
"# Return the first 10 rows in df\n",
- "### CODE HERE ###"
+ "### CODE HERE ###\n",
+ "df.head(10)"
]
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 14,
"metadata": {},
"outputs": [
{
@@ -1081,19 +1082,20 @@
"149 5.9 3.0 5.1 1.8"
]
},
- "execution_count": 7,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Return the last 10 rows in df\n",
- "### CODE HERE ###"
+ "### CODE HERE ###\n",
+ "df.tail(10)"
]
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
@@ -1102,14 +1104,15 @@
"(150, 4)"
]
},
- "execution_count": 8,
+ "execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get to know the shape of the data\n",
- "### CODE HERE ###"
+ "### CODE HERE ###\n",
+ "df.shape"
]
},
{
@@ -1121,7 +1124,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
@@ -1234,14 +1237,15 @@
"max 2.500000 "
]
},
- "execution_count": 9,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get a more detailed description of the dataset\n",
- "### CODE HERE ###"
+ "### CODE HERE ###\n",
+ "df.describe()"
]
},
{
@@ -1255,7 +1259,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 21,
"metadata": {},
"outputs": [
{
@@ -1325,44 +1329,46 @@
"Name: sepal length (cm), Length: 150, dtype: float64"
]
},
- "execution_count": 10,
+ "execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Retrieve only sepal_length from df\n",
- "### CODE HERE ###"
+ "### CODE HERE ###\n",
+ "df[df.columns[0]]"
]
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "sepal length (cm) 5.1\n",
- "sepal width (cm) 3.5\n",
+ "sepal length (cm) 5.0\n",
+ "sepal width (cm) 3.6\n",
"petal length (cm) 1.4\n",
"petal width (cm) 0.2\n",
- "Name: 0, dtype: float64"
+ "Name: 4, dtype: float64"
]
},
- "execution_count": 11,
+ "execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Return 5th row of df\n",
- "### CODE HERE ###"
+ "### CODE HERE ###\n",
+ "df.iloc[4]"
]
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 28,
"metadata": {},
"outputs": [
{
@@ -1371,19 +1377,20 @@
"1.4"
]
},
- "execution_count": 13,
+ "execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Return petal length of 5th row of df\n",
- "### CODE HERE ###"
+ "### CODE HERE ###\n",
+ "df.iloc[4]['petal length (cm)']"
]
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 30,
"metadata": {},
"outputs": [
{
@@ -1798,7 +1805,7 @@
"146 6.3 2.5 5.0 1.9"
]
},
- "execution_count": 12,
+ "execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
@@ -1807,12 +1814,13 @@
"# Return all instances in df where sepal width is less than 2.9 and store it in a different DataFrame, df1\n",
"### CODE HERE ###\n",
"\n",
+ "df1=df[df[df.columns[1]]<2.9]\n",
"df1"
]
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 36,
"metadata": {},
"outputs": [
{
@@ -1825,7 +1833,7 @@
"dtype: float64"
]
},
- "execution_count": 14,
+ "execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
@@ -1834,6 +1842,7 @@
"# Get mean of each column in df\n",
"# Hint: use numpy.mean\n",
"import numpy as np\n",
+ "df.apply(np.mean)\n",
"\n",
"### CODE HERE ###"
]
@@ -1858,7 +1867,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
@@ -1877,7 +1886,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
@@ -1886,14 +1895,14 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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mDp1Kj/4wQ8AuOqqqzjxxBOZO3cukyZN4pxzztm6zBVXXMG+++7LrFmz+PM//3POOuss7r//fpYuXcrnP/95pkyZwjPPZDcjve6665g+fTr77rsv9913X98GrZyI2GmmadOmhZk1npUrVya3vfrqiObmCNg2NTdn5Ttqw4YNcdBBB8WkSZNi0aJFcffdd0dExMaNG+PQQw+Nl156KSIirr322jjllFMiImLmzJlx+umnR0TEPffcE5MnT46IiPXr18emTZsiIuKOO+6IE088MSIi7rrrrvjIRz6y3bqLy88999z43ve+FxERr776akyaNCneeOON+M53vhMTJ06M1157Ld5+++0YN25crFmzJn7961/H+PHjY926dbFx48Y4/PDD41Of+lRERCxYsCCuu+66reuZOXNmfPazn42IiB/96Ecxe/bs7WIp9z6Q3Z8o6Tu2prukJM0F/pnsBkrfjogvl9TvCvwbMA1YB5wUEc/ldecCpwFbgLMj4rZaxmpmjeG88+Ctt7qWvfVWVn7yyTvW52677cayZcu47777uOuuuzjppJP48pe/TFtbGytWrODII48EYMuWLey9995bl5s/fz4AH/rQh3j99dd57bXX2LBhAwsWLODpp59GEps2bUqO4/bbb2fp0qV87WtfA7Kzx9asWQPA7NmzGTFiBACtra08//zzvPzyy8ycOZM999wTgI9//OM89dRT3fZ/4oknAjBt2jSee+655LhS1WyXlKQm4FLgGKAVmC+pdGfbacCrEfF7wD8BX8mXbSW7petkYC7wL3l/NVFp83fOHJC2TXPm9G55gMmTu/YxeXLX+jPPhCFDsrohQ7L5UmPGdO1jzJjerWPYsK71w4Ztv45KbSqNRcp4VHodKWNRSUof1d7tYdWRf38ml6dqampi1qxZ/O3f/i3f/OY3ueGGG4gIJk+ezPLly1m+fDmPPfYYt99++9ZlSs8sksT555/PEUccwYoVK/jhD3/Yq1NVI4Ibbrhh6/rWrFnD/vvvD7B1d1kh1s2bNxO9vMFdoY/C8tVWy2MY04HVEfFsRGwErgWOL2lzPPDd/Pn1wGxl79DxwLUR8ZuI+BWwOu+v6pYsgYUL4fnns43f55/P5gtfHnPmwJ13dl3mzju3fVFWWh6yL+6VJTeYXbly2xf6mWfCt74FW7Zk81u2ZPPFX3JjxsDatV37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\n",
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -1916,14 +1925,14 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
- "image/png": "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\n",
+ "image/png": "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\n",
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -1933,26 +1942,24 @@
"source": [
"# Plot petal width vs y with blue o's and petal length vs y with red x's\n",
"fig = plt.figure('Petal width vs y')\n",
- "\n",
+ "s2=df[df.columns[1]]\n",
+ "s3=df[df.columns[0]]\n",
+ "ax0 = fig.add_subplot(111) # This means there's only 1 plot in the whole figure. 211 would mean 2 plots\n",
+ "# and the top plot is being added. 212 means 2 plots and bottom plot is being added.\n",
+ "ax0.scatter(s2, y, c = 'b', marker='o', label='Sepal width')\n",
+ "ax0.set_xlabel(df.columns[1])\n",
+ "ax0.set_ylabel('flower')\n",
+ "ax0.legend()\n",
+ "ax0.scatter(s3,y,c='r',marker='x')\n",
+ "plt.show()\n",
"### CODE HERE ###"
]
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEKCAYAAAARnO4WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3X+YVPV59/H3zaqLPyECF4oUEeOSoiLIViMkuorRxFgTTXKpj2215Ak1Nra2T7VVH5+YH6RptH2S2mIuGpLYlqZWjIbHGuOPsmqUYACJv8FIQQm6riiIqMjC/fwxZ9bdYWbOd3bOOfPr87quvWDOnDnnniPee+ae+/v9mrsjIiLNb1itAxARkWwo4YuItAglfBGRFqGELyLSIpTwRURahBK+iEiLUMIXEWkRSvgiIi1CCV9EpEXsVesABho9erRPnDix1mGIiDSMlStXvubuY0L2rauEP3HiRFasWFHrMEREGoaZbQjdVyUdEZEWoYQvItIiUkv4ZjbZzFYP+HnTzK5I63wiIlJeajV8d18DTAMwszbgN8AdlR5n586dbNy4kXfffTfhCCXU8OHDGT9+PHvvvXetQxGRKmT1pe1s4AV3D/5yIW/jxo0ceOCBTJw4ETNLITQpx93ZvHkzGzdu5Igjjqh1OCJShaxq+BcAPyr2hJnNNbMVZrait7d3j+ffffddRo0apWRfI2bGqFGj9AlLpAmknvDNbB/gHOC2Ys+7+wJ373T3zjFjireSKtnXlq6/yJ56FvWwbOIyuod1s2ziMnoW9dQ6pFhZlHQ+Aaxy9/q/GiIiAXoW9bBm7hp2v70bgB0bdrBm7hoAxl40tpahlZVFSedCSpRzGsW8efM4+uijmTp1KtOmTWP58uWJHr+7u5uzzz47eHu17rzzTp555pn+x11dXRrwJlKBddeu60/2ebvf3s26a9fVKKIwqd7hm9l+wMeAP0rzPGlatmwZd911F6tWraK9vZ3XXnuN9957r9ZhVeXOO+/k7LPPZsqUKbUORaQh7XhxR0Xb60Wqd/ju/ra7j3L3rWmeZ6Ck62ovv/wyo0ePpr29HYDRo0czbtw4AFauXMkpp5zCjBkzOPPMM3n55ZeB3B3zFVdcwcyZMznmmGN47LHHAHjssceYOXMm06dPZ+bMmaxZsyY4ju3btzNnzhx+53d+h+nTp/OTn/wEgB/+8Iecd955fPzjH+eoo47iqquu6n/NwoUL6ejooKuriy984Qt86Utf4tFHH2XJkiVceeWVTJs2jRdeeAGA2267jRNOOIGOjg4efvjhqq6ZSLNrn9Be0fZ60VQjbfN1tR0bdoC/X1erJumfccYZvPTSS3R0dHDZZZfx4IMPArnxAZdffjmLFy9m5cqVzJkzh2uvvbb/ddu3b+fRRx9l/vz5zJkzB4APfehDPPTQQzz++ON89atf5ZprrgmOY968eZx22mn88pe/ZOnSpVx55ZVs374dgNWrV3Prrbfy5JNPcuutt/LSSy+xadMmvva1r/GLX/yC++67j+eeew6AmTNncs4553DDDTewevVqjjzySAD6+vp47LHH+Pa3v81XvvKVIV8vkVYwad4khu03OH0O228Yk+ZNqlFEYepq8rRqlaurDfWLlAMOOICVK1fy8MMPs3TpUs4//3y++c1v0tnZyVNPPcXHPvYxAHbt2sWhhx7a/7oLL7wQgJNPPpk333yTLVu2sG3bNi6++GKef/55zIydO3cGx3HvvfeyZMkSbrzxRiDXrvriiy8CMHv2bEaMGAHAlClT2LBhA6+99hqnnHIKBx98MACf+9znWLt2bcnjn3feeQDMmDGD9evXB8cl0orGXjSWl3/wMlse2NK/7aCTDqrrL2yhyRJ+WnW1trY2urq66Orq4thjj+WWW25hxowZHH300SxbtqzoawpbGc2M6667jlNPPZU77riD9evX09XVFRyDu3P77bczefLkQduXL1/eX27Kx9rX14e7h79B6D9G/vUiUtray9YOSvYAWx7YwtrL1tIxv6NGUcVrqpJOGnW1NWvW8Pzzz/c/Xr16NYcffjiTJ0+mt7e3P+Hv3LmTp59+un+/W2+9FYCf//znjBgxghEjRrB161YOO+wwIFd7r8SZZ57JTTfd1J/IH3/88bL7n3DCCTz44IO88cYb9PX1cfvtt/c/d+CBB7Jt27aKzi8i79u0YFNF2+tFUyX8NOpqb731FhdffDFTpkxh6tSpPPPMM1x//fXss88+LF68mL/8y7/kuOOOY9q0aTz66KP9r/vABz7AzJkzufTSS1m4cCEAV111FVdffTWzZs1i165dFcVx3XXXsXPnTqZOncoxxxzDddddV3b/ww47jGuuuYYTTzyR008/nSlTpvSXfS644AJuuOEGpk+f3v+lrYhUoNT/vpX9b505q/Sjf5o6Ozu9sB/82Wef5bd/+7eDj9GzqId1165jx4s7aJ/QzqR5kzKvq3V1dXHjjTfS2dmZ6XkLvfXWWxxwwAH09fVx7rnnMmfOHM4999whHavS/w4ijSwuj3Tv1V08ubdBV19XVmECYGYr3T0o2TRVDR9yX6bU+xcnWbn++uu5//77effddznjjDP49Kc/XeuQROpeyCjacXPHsenmPcs34+aOyy7QIWi6hF8Puru7ax0CQH9Hj4iEC+n2y38xu2nBptydflsu2dfzF7bQIAnf3TWBVw3VU9lPJG2h3X4d8zvqPsEXqvsvbYcPH87mzZuVdGokPx/+8OHDax2KSCYadRRtiLq/wx8/fjwbN26k2Fz5ko38ilcirWDSvEmDavjQGKNoQ9R9wt9777210pKIZCZfp0+7268WHYV1n/BFRLKWdrdfrebTr/savohIs6nVfPpK+CIiGavVfPpK+CLSUBpxLdlCteoEUsIXkYaRxpoXtVCr+fSV8EWkYTTqWrKFxl40lskLJtN+eDsYtB/ezuQFk9WlIyKS16hryRZTi3m/dIcvIg2jmUfBZkEJX0QaRqOuJVsvlPBFpK6U68IJqX1n1cXTiN1CquGLSN0IGYFarvad1QjWWo2UrZbu8EWkblTbhZNVF0+jdgulmvDNbKSZLTaz58zsWTM7Kc3ziUhjq7YLJ6sunkbtFkr7Dv87wD3u/iHgOODZlM8nUncasdZbK9V24WTVxdOo3UKpJXwzOwg4GVgI4O7vufuWtM4nUo+aZWRoVkadNaqi7YWy6uJp1G6hNO/wJwG9wA/M7HEz+56Z7Z/i+UTqTqPWemtl892bK9peKKsRrLUaKVstS2vpQDPrBH4BzHL35Wb2HeBNd7+uYL+5wFyACRMmzNiwYUMq8YjUQvewbij2v5hB1+6ujKMpL4sFOeLO0UjXq16Y2Up37wzZN807/I3ARndfHj1eDBxfuJO7L3D3TnfvHDNmTIrhiGSvUWq9WZSeQs7RKNerUaWW8N39FeAlM5scbZoNPJPW+UTqUaPUerMoPYWco1GuV6NKu0vncmCRmT0BTAO+kfL5ROpKUrXeajt94l6fRZthyDnGXjSWQy4+BNqiDW1wyMWH1H1tvFGkOtLW3VcDQbUlkWZV7ayI1Y7qDHl9+4T2XKmlQJKllJBz9Czq4ZVbXoFd0YZd8MotrzBi1ggl/QRopK1Incti9GkWpZSQc6irKV1K+CJ1LovRp1m0GYaco1FHsDYKTZ4mUueqLbeEvj6u9JRE22bcObIoLbUy3eGL1Llqyy37fnDfirYXk9WIYXXppEsJX6TOVVtu2dJdfEaTUtuLyaq23qgjWBuFSjoiZSRRxlh72Vo2LdiU6zxpg3Fzx9ExvyP4eaiy02dXhduLyLK2Xou1XluF7vBFSkiijLH2srVsunnToDbDTTdvYu1la4OeT0Sp/8sr+L9fI2CbgxK+SAlJlDE2LdhUdnvc80mwfa2i7cWott4clPBFSkikjBFXTgkst1Qz0tbfLj5BYuH2ateSlfqnGr5ICYm0CLZRPKnnpw4wSs4OmVftSNvQEa7VrCUrjUF3+CIlJFHGGDd3XNntbfu3FX1+4PZqS0sa4Sp5SvgiJSRRxuiY38G4L44bNBnYuC++34Wza3vxms7A7dWWljTCVfJU0hEpI4nRpx3zO/Zos8wLKbckUVpKYoRrFgukSLp0hy8yREm0bYaUW+phYjOtzdsclPBFhiiJundIuaUeJjZTjb85qKQjMkRJ1b23PrKVHRujO+eNO9j6yNY9knkWHTLlzqEaf3PQHb7IECUx+jSTkbYJ0Ejb5qCELzJESdTWsxhpmwSNtG0OSvgiQ5RIbT2DkbZJvF4jbZuDavgiVai6th43Epds1rQNoZG2jU93+CI1FDcSF7JZ01Zag+7wRWooPyCr3Hz4WaxpK60hNuGbWSfwUWAc8A7wFHC/u7+ecmwiZa0+fTVbHnh/1aaRs0cy7f5p/Y9DRoZmMXo07hzlRuJCdmvaxtFI28ZXsqRjZpeY2SrgamBfYA3wKvAR4D4zu8XMJmQTpshghckeYMsDW1h9+mogbGRoFqNHkzjHqLNGVbS9UBIdNhpp2xzK3eHvD8xy93eKPWlm04CjgBdLHcDM1gPbyH1Y7XP3zqGHKvK+wmRfuL1c3Tpk9GhSd65JnGPz3Zsr2l5o4Psd6t15FtdK0lcy4bv7P5Z7obuvDjzHqe7+WkVRScurtnwQUrfOoradxDnqoQZfDzFI9UJq+EcAlwMTB+7v7uekF5a0siTaCEPq1m0Ht7Fr8549kW0HF5+jfiiSOEe1NfisrqfUv5C2zDuB9cBNwN8O+AnhwL1mttLM5g4pQmk5IW2EI2ePLPra/PaQurVRYq3XEtuHIolzVFuDT6ItUyNtm0NIwn/X3f/e3Ze6+4P5n8Djz3L344FPAH9sZicX7mBmc81shZmt6O3trSR2aWDlRn6GlA+m3T9tj6Q/sEsnZGRo3+t9Rc8zcHu1I1RDzhGn2lGuSZRjxl40lkMuPmTQQi6HXHyI6vcNJqQP/ztm9mXgXqD/X4i7r4p7obtviv581czuAE4AHirYZwGwAKCzs7P4asvSVOJKDKHlg4EtmMVUu+hHEqWQtv3b2PVWkZJOiaUNS6lmlGsS5ZieRT28cssrgyZ5e+WWVxgxa4SSfgMJucM/FvgC8E3eL+fcGPciM9vfzA7M/x04g1wPv7S4uBJDVuWDuPMkUQoJWcIwbUlcT43WbQ4hd/jnApPc/b0Kjz0WuMPM8uf5N3e/p8JjSBOKKzEk0UYYIu48iXSmlPrMmuFn2SSup7p0mkNIwv8VMJLcoKtg7r4OOG4oQUlzCykxJDFRV7WtnYms8xowOVoWQq5nufeiLp3mEFLSGQs8Z2Y/M7Ml+Z+0A5PmlUXJJomRtkms8xoyOVo9qPZaSGMw9/KfLc3slGLbK+jUCdbZ2ekrVqxI+rBSh9Kel2XZxGXF70gPb+ek9ScF71MuzpDXQ7SqVZnJ0epBtddCasfMVobOYhBS0nkReNnd340Ovi+5u36RIUt7bvWkRtqWW282tK49YtYINt+9OZcox7czYtaIit5LEuKSdch7qbYsJLUXUtK5DRj49fyuaJtI3QpZgzVun7j1ZkPOUQ+TjoXEkMSatfXwXqW8kIS/18AOnejv+6QXkkj1QmrOcfvErTcbco56aGcMiUGtm60hJOH3mln/vDlm9ilAk6FJXQsZnRq7T8x6syHnSKqdMW7Eb7Ujl5NYs1atm/UvpIZ/KbDIzP4herwR+P30QhJJRkjNuew+RvF++QHT4FQ7mjdE3IjfpEYuV/u9ilo361/sHb67v+DuHwamAEe7+0x3fyH90ERqq9T0B5VMi5BFqaRRRi5L7ZVb8er3zKz/eXd/y923DXj+SDP7SNoBitRKEtMiZFEqCRm5XG0MIbI6jwxduZLOKOBxM1sJrAR6geHAB4FTyNXx/yr1CFtIo7S0JRFn3DGyuhbleuQTGWlLfKkk7hhxcWQ1cjlEVueRoSl5h+/u3wGOB34EjAFmR49/A/y+u3/G3Z/PJMoW0CgtbUnEGXeMrK5FXNtlEiNt44QcIy4OlVIkVOxI2yy18kjb0FGbtZZEnHHHyOpadO/VXXKem66+LiCZkbblhB6jXj4RSf1JeqStZKBRWtpC4qx2VGdm1yKm7RLKlyhC4yx3PUKPUW2pRL8QBML68CUDSYx0zEJcnEmM6szsWpRqtglswklipG0WI1wbpVwo6VPCrxONUodNYtGQeqlJVzuTZRIjbeuhbVNaR2xJx8zagc8AEwfu7+5fTS+s1pPVoh/VSmLRkLhjZHUt8t04Q53JcuxFY9n6yNZBry9c5zWkZTLuGHHqpkQmdS+khv8TYCu51kz9C0lRo7S0lYszqVGdWV2LjvkdQ56qOGSd15B1c6tdKzaJtk1pDSElnfHufr67f8vd/zb/k3pk0pAapTSVhCTKV0mUW+qlRCb1LyThP2pmx6YeiTSFVhptmcSkZEmUW+LO0Ur/TaS8kn34ZvYkuamj9gKOAtaRK+kY4O4+NelgWrkPv9XEtQkmsUpUPayqlcUxpLUl1Yd/dkLxiAwSN7tj/wjYvGgELBCc9OPOkYRJ8yYNOgdUXipJ4hgiocpNrbDB3TcAX8//feC27EKUZhNXt45beCSJcyQhiVKJyi2SpZAunaMHPjCzNmBGOuFIK4itWweMgIVkRrBWK4luokbpzpLGV2565KvNbBsw1czejH62Aa+Sa9UUGZK9Di5+n9G/3Yo+PWh7FiNYRZpNuZLOX7v7gcAN7n5Q9HOgu49y96szjFGajBddRur97SELj9TLoh8ijSSkpHObmR1fsG0rsMHd++JeHJWAVgC/cXd9EdwC4jpsdr1eYmGRaHvIwiMhI1ghfrSuZqGUVhKS8OeTmwf/CXIfqo8FfgWMMrNL3f3emNf/KfAscFA1gUpjCOmwSWJkaNvBbezavOcvhraD3/8UELLwSDVrxYo0mpCBV+uB6e7e6e4zgGnAU8DpwLfKvdDMxgOfBL5XZZzSIEI6bJIYGWolCv2lthejScek1YQk/A+5+9P5B+7+DLlfACH/6r8NXAXsLrWDmc01sxVmtqK3tzfgkFLXAueYr3ZkaN/rxauJpbYXo0nHpNWElHTWmNnNwL9Hj88H1kazaO4s9SIzOxt41d1XmllXqf3cfQGwAHIjbUMDl6FJvSbdRslVpCoRV45JYkIwTTomrSbkDv8S4NfAFcCfkZti4RJyyf7UMq+bBZxjZuvJ/bI4zcz+tYpYpUpZLIQRMsd8EnGMOmtURduL0aRj0moyWdM2usP/i7guHc2lk66s5m2J69Kppzlo1KUjjS7RNW3NbBZwPXA4gxdA0W1Og8mqJj1i1gg23705lyTHtzNi1ojE40jqvdTLvPwiWQip4S8kV8pZSemv5Mpy926geyivleRkUZMOaWXMov4uInsKqeFvdfefuvur7r45/5N6ZJK4LGrSSSwKEkL1dZHKhdzhLzWzG4AfM2CJQ3dflVpUkoos1opNYk3bEI2yBrBIPYn90tbMlhbZ7O5+WtLB6Evbxvfw6IeLj4Ad1cZHX/toDSISaW6Jfmnr7uVaL0UGSWIErIikI7aGb2ZjzWyhmf00ejzFzD6ffmjSiJIYASsi6Qj50vaHwM+A/MiZteQGYYnsIXQe+p5FPSybuIzuYd0sm7gs0cFfIlJcSMIf7e7/QTQfTjQl8pDaM6X5hXTPZDHiV0T2FJLwt5vZKMitTmFmHyY3H77IHkImPtMslCK1EdKW+efAEuBIM3sEGAN8NtWopKhGGeYfNzo1pHWzUd6rSCMJ6dJZZWanAJPJLYCyxt1LzpIp6WimxTjiRsk203sVqSflFjE/L/8DnEMu4XcAvxttkww1Uxkkrs7fTO9VpJ6Uu8P/3TLPObmRt5KRZlqMI26UbDO9V5F6UjLhu/sfZhmIlNdsk4WVq/M323sVqRchXTpSB1ppsrBWeq8iWVLCbxAh7Y7NopXeq0iWQtoyJSNqRXyfFh4RSV7JhB/XiePu+tI2QXGtiGpVFJFqqUunTpRrRRx70djY50VE4qhLp07EtSKqVVFEqhVUwzezTwJHA8Pz29z9q2kF1YriWhHVqigi1QqZD/+7wPnA5eSmVvgccHjKcbWcuFZEtSqKSLVC2jJnuvsfAG+4+1eAk4DfSjes1hPXiqhWRRGpVkhJ553oz7fNbBywGTgivZBaV1wroloVRaQaIQn/LjMbCdwArCLXofO9VKMSEZHEhST8b7n7DuB2M7uL3Be378a9yMyGAw8B7dF5Frv7l6sJVkREhi6khr8s/xd33+HuWwduK2MHcJq7HwdMAz4erZYlKdJasSJSSrmRtocAhwH7mtl0ch06AAcB+8Ud2N0deCt6uHf041VFK2VpNK6IlFOupHMmcAkwHvi7AdvfBK4JObiZtQErgQ8C/+juy4cWpoTQaFwRKafcSNtbgFvM7DPufvtQDu7uu4Bp0Ze+d5jZMe7+1MB9zGwuMBdgwoQJQzmNRDQaV0TKCanhP2JmC83spwBmNsXMPl/JSdx9C9ANfLzIcwvcvdPdO8eMGVPJYaVAqVG3Go0rIhCW8H8A/AwYFz1eC1wR9yIzGxPd2WNm+wKnA88NMU4JoNG4IlJOSMIf7e7/AewGcPc+YFfA6w4FlprZE8Avgfvc/a4hRyqxNBpXRMoJ6cPfbmajiDpsotbKrXEvcvcngOnVhSeV0mhcESklJOH/ObAEONLMHgHGAJ9NNSoREUlcbMJ391VmdgowmVwv/hp335l6ZCIikqjYhB9NkXAZ8BFyZZ2Hzey77h47vYKIiNSPkJLOPwPbgJuixxcC/0JuXnwREWkQIQl/cjQfTt5SM/tVWgGJiEg6QtoyHx846ZmZnQg8kl5IIiKShpA7/BOBPzCzF6PHE4BnzexJcnOkTU0tOhERSUxIwt9jOgQREWk8IW2ZG7IIRERE0hVSwxcRkSaghC8i0iKU8EVEWoQSvohIi1DCFxFpEUr4IiItQglfRKRFKOGLiLQIJXwRkRahhC8i0iKU8EVEWoQSvohIi1DCFxFpEUr4IiItQglfRKRFpJbwzey3zGypmT1rZk+b2Z+mdS4REYkXsuLVUPUB/8vdV5nZgcBKM7vP3Z9J8ZwiIlJCanf47v6yu6+K/r4NeBY4LK3ziYhIeZnU8M1sIjAdWJ7F+UREZE+pJ3wzOwC4HbjC3d8s8vxcM1thZit6e3vTDqemehb1sGziMrqHdbNs4jJ6FvU05DlEpDGlmvDNbG9yyX6Ru/+42D7uvsDdO929c8yYMWmGU1M9i3pYM3cNOzbsAIcdG3awZu6aRBNyFucQkcaVZpeOAQuBZ93979I6T6NYd+06dr+9e9C23W/vZt216xrqHCLSuNK8w58F/D5wmpmtjn7OSvF8dW3Hizsq2l6v5xCRxpVaW6a7/xywtI7faNontOdKLUW2N9I5RKRxaaRtRibNm8Sw/QZf7mH7DWPSvEkNdQ4RaVxK+BkZe9FYJi+YTPvh7WDQfng7kxdMZuxFYxvqHCLSuNIcaSsFxl40timS79rL1rJpwSbYBbTBuLnj6Jjfkeg5ehb1sO7adex4cQftE9qZNG9SU1w7kVpSwm8i+bbMfKdOvi0TSCxZrr1sLZtu3vT+hl30P04q6WfxPkRakUo6TSSLtsxNCzZVtH0o1F4qkg7d4SckpARRbSlk9emr2fLAlv7HI2ePZNr90/ofZ9KWuavC7UOg9lKRdOgOPwEhI1z7SyH5xBiVQtZetjboHIXJHmDLA1tYffrq/sdtB7cVfW2p7UNS6lAJnqJUG6naS0Wqo4SfgJASRLWlkMJkX2y7lRj2UGr7UIybO66i7UOh9lKRdCjhJyCoBJFBKaTv9b6Ktg9Fx/wOxn1x3Pt39G0w7ovJdumovVQkHarhBypXow8a4dpG8eQ+oBQSV6OPExJHyPcIaokUaU66ww8QV6MPKUHElULiavT7Ttm36OsHbh+2f/H/nPntId8jxL3Xar+LCKFZP0XSoYQfIK5GH1KCiCuFxNXod2/fXfT5gdvfeeadovvkt4d8jxD3XtWWKdK4WqKkU22JIqRGn/Yo2kRaFQO+R4g9T8AxsrjeIlK5pr/DT6I8YPuV6H4psb2YakshScRQ8r/2gO2xLZExbZlJXG+1ZYqko+kTfhLlAX/HK9peTGwpZJ8SL9wnuRhs3xK/NAZsj/s+Iu67iCSut9oyRdLR9Ak/pDwQuw5s8fL5oO2xx4grhews8Xx+e0AMcfztEr80BmyP+z6iY34HI2ePHPT6kbNH9n8XkUQ5Rm2ZIulo+hq+7Wf49j0TXb4UEjRRV0xLZRLHiG2pHEbx5D7wV3a154iU+z6iZ1EPby4bvBb9m8vepGdRD2MvGkvbwW3s2rxnEJWO9m2WmUVF6knT3+HHlUJCShBJlDHijhFXxggpx1R7jhBx7zWL0b4iMjRNn/DjSiEhJYi4lsokjhFXxggpx1R7jhBx7zWL0b4iMjRNX9JJqszRMb+j5PQBSRwDypcxsjhHiLg4slxXVyOCRSrT9Hf4WZQ5sugqGXXWqIq2pyXuvWbVYaPRuCKVa/qEn0WZI4uuks13b65oe1ri3mtWHTYajStSOXMP7+NOW2dnp69YsaLi17XCR/vuYd1Q7D+VQdfuroyjqT1dD5EcM1vp7p0h+zb8HX6rfLTX6NPBdD1EKtfwCb9VPtpr9Olguh4ilUst4ZvZ983sVTN7Kq1zQHYTbcWOpE2ZRp8OpushUrk02zJ/CPwD8M8pniOTNsCgkbQZ0OjTwXQ9RCqT2h2+uz8EvJ7W8fOy+GjfKmUjEWluNa/hm9lcM1thZit6e3srfn0WH+01P7uINIOaj7R19wXAAsi1ZQ7lGGl/tM9y9KiISFpqfoffCNQRIiLNQAk/gDpCRKQZpFbSMbMfAV3AaDPbCHzZ3Remdb60qSNERBpdagnf3S9M69giIlI5lXRERFqEEr6ISItQwhcRaRFK+CIiLUIJX0SkRdTVAihm1gtsqGEIo4HXanj+UIozeY0Sq+JMVjPEebi7jwk5SF0l/FozsxWhK8fUkuJMXqPEqjiT1WpxqqQjItIilPBFRFqEEv5gC2odQCDFmbxGiVVxJqul4lQNX0SkRegOX0SkRbTeePbfAAAH+klEQVRswjezNjN73MzuKvLcJWbWa2aro5//WaMY15vZk1EMK4o8b2b292b2azN7wsyOr9M4u8xs64Dr+X9qFOdIM1tsZs+Z2bNmdlLB8/VyPePirJfrOXlADKvN7E0zu6Jgn5pf08A46+Wa/pmZPW1mT5nZj8xseMHz7WZ2a3Q9l5vZxEqOX/MVr2roT4FngYNKPH+ru38pw3hKOdXdS/XffgI4Kvo5Ebg5+rMWysUJ8LC7n51ZNMV9B7jH3T9rZvsA+xU8Xy/XMy5OqIPr6e5rgGmQu4ECfgPcUbBbza9pYJxQ42tqZocBfwJMcfd3zOw/gAuAHw7Y7fPAG+7+QTO7APgb4PzQc7TkHb6ZjQc+CXyv1rFU6VPAP3vOL4CRZnZorYOqR2Z2EHAysBDA3d9z9y0Fu9X8egbGWY9mAy+4e+HAyZpf0wKl4qwXewH7mtle5H7Rbyp4/lPALdHfFwOzzcxCD96SCR/4NnAVsLvMPp+JPoIuNrPfyiiuQg7ca2YrzWxukecPA14a8HhjtC1rcXECnGRmvzKzn5rZ0VkGF5kE9AI/iEp53zOz/Qv2qYfrGRIn1P56FroA+FGR7fVwTQcqFSfU+Jq6+2+AG4EXgZeBre5+b8Fu/dfT3fuArcCo0HO0XMI3s7OBV919ZZnd/h8w0d2nAvfz/m/UrM1y9+PJfSz+YzM7ueD5Yr/Za9F2FRfnKnLDv48DbgLuzDpAcndOxwM3u/t0YDvwVwX71MP1DImzHq5nv6jsdA5wW7Gni2yrSWtgTJw1v6Zm9gFyd/BHAOOA/c3s9wp3K/LS4OvZcgkfmAWcY2brgX8HTjOzfx24g7tvdvcd0cN/AmZkG2J/HJuiP18lV3M8oWCXjcDATx/j2fMjYOri4nT3N939rejvdwN7m9nojMPcCGx09+XR48XkEmvhPrW+nrFx1sn1HOgTwCp37ynyXD1c07yScdbJNT0d+G9373X3ncCPgZkF+/Rfz6jsMwJ4PfQELZfw3f1qdx/v7hPJfbz7L3cf9Fu0oMZ4DrkvdzNlZvub2YH5vwNnAE8V7LYE+IOoE+LD5D4CvlxvcZrZIfk6o5mdQO7f3eYs43T3V4CXzGxytGk28EzBbjW/niFx1sP1LHAhpcskNb+mA5SMs06u6YvAh81svyiW2eyZe5YAF0d//yy5/BV8h9/KXTqDmNlXgRXuvgT4EzM7B+gj99vzkhqENBa4I/o3uBfwb+5+j5ldCuDu3wXuBs4Cfg28Dfxhncb5WeCLZtYHvANcUMk/0gRdDiyKPtqvA/6wDq9nSJz1cj0xs/2AjwF/NGBb3V3TgDhrfk3dfbmZLSZXXuoDHgcWFOSmhcC/mNmvyeWmCyo5h0baioi0iJYr6YiItColfBGRFqGELyLSIpTwRURahBK+iEiLUMKXphTNflhsJtSi2xM436fNbMqAx91mFrsGqZkdmkQ8ZjbGzO6p9jjS3JTwRZLxaWBK7F57+nNyo7mr4u69wMtmNqvaY0nzUsKXmohG6P5nNFnVU2Z2frR9hpk9GE3E9rP8qOfojvnbZvZotP8J0fYTom2PR39OLnfeIjF838x+Gb3+U9H2S8zsx2Z2j5k9b2bfGvCaz5vZ2iiefzKzfzCzmeRGZN9gubnUj4x2/5yZPRbt/9ESYXwGuCc6dpuZ3Wi5tQWeMLPLo+3rzewbZrbMzFaY2fHRtXkhP3gocidwUej7l9ajkbZSKx8HNrn7JwHMbISZ7U1u4qpPuXtv9EtgHjAnes3+7j7TcpOzfR84BngOONnd+8zsdOAb5JJoiGvJDU2fY2YjgcfM7P7ouWnAdGAHsMbMbgJ2AdeRm9tmG/BfwK/c/VEzWwLc5e6Lo/cDsJe7n2BmZwFfJjdXSj8zO4Lc3Ob5eZvmkps4a3r0fg4esPtL7n6Smf1fcvOjzwKGA08D3432WQF8PfC9SwtSwpdaeRK40cz+hlyifNjMjiGXxO+LEmYbuWli834E4O4PmdlBUZI+ELjFzI4iN2vg3hXEcAa5ifT+Ino8HJgQ/f0Bd98KYGbPAIcDo4EH3f31aPttQEeZ4/84+nMlMLHI84eSmwo573Tgu9G0t+TPE1kS/fkkcIC7bwO2mdm7ZjYymjP/VXKzLIoUpYQvNeHua81sBrl5Vv7azO4lN9Pm0+5+UqmXFXn8NWCpu59rueXeuisIw4DPRCsivb/R7ERyd/Z5u8j9vxK80EQkf4z86wu9Q+6XzMB4Ss11kj/W7oLYdg849vDomCJFqYYvNWFm44C33f1fyS36cDywBhhj0RquZra3DV6IIl/n/wi5WRe3kpse9jfR85dUGMbPgMujmQkxs+kx+z8GnGJmH7Dc1LQDS0fbyH3aqMRaBt/53wtcGh2bgpJOiA72nFFVpJ8SvtTKseRq5qvJ1dK/7u7vkZu18G/M7FfAagbPB/6GmT1Krmb9+Wjbt8h9QniEXAmoEl8jVwJ6wsyeih6XFK1I9A1gObmFcZ4ht+IQ5NZWuDL68vfIEocoPN524AUz+2C06Xvkpsh9Inr//6PC93Mq8J8VvkZaiGbLlIZgZt3AX7j7ihrHcYC7vxXdhd8BfN/diy2IHXq8c4EZ7v6/E4jtIXJfeL9R7bGkOekOX6Qy10efSp4C/psql8KLflmsrzYoMxsD/J2SvZSjO3wRkRahO3wRkRahhC8i0iKU8EVEWoQSvohIi1DCFxFpEUr4IiIt4v8DA4OegJljT4UAAAAASUVORK5CYII=\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"# Plot sepal length vs petal length for each instance\n",
"fig = plt.figure('Sepal length vs petal length')\n",
@@ -1962,14 +1969,23 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsvXmYXFWd//86tXb1ku6kO+nO3hCSMBCSDoQIEVmVZUBABmdwRgUcyeAo87ggKu76U58Z92G+CihKGNFBFAFHRAYR2ZckdJOwBsiedKfTnd6raz2/P6rO7Xtv3Vt79Xpez9NP0nWr7j1V3X0+9/3+fM7nCCklGo1Go9EAeCZ6ABqNRqOZPOigoNFoNBoDHRQ0Go1GY6CDgkaj0WgMdFDQaDQajYEOChqNRqMx0EFBo9FoNAY6KGg0Go3GQAcFjUaj0Rj4JnoAhdLU1CRbW1snehgajUYzpdiyZcthKeXcXM+raFAQQnwC+DAggW3A1VLKUdPxIHAHcBLQA/yDlHJXtnO2trayefPmio1Zo9FopiNCiN35PK9i9pEQYiHwb8A6KeUqwAtcYXvaPwNHpJTHAN8H/r1S49FoNBpNbiqdU/ABISGED6gGDtiOXwJsSv//N8A5QghR4TFpNBqNxoWKBQUp5X7gO8Ae4CDQL6V8yPa0hcDe9PPjQD/QWKkxaTQajSY7FcspCCFmk1ICRwF9wN1CiPdLKX9hfprDSzN6eQshNgIbAZYsWZLxglgsxr59+xgdHc04ppleVFVVsWjRIvx+/0QPRaOZllQy0fxOYKeUshtACHEPsAEwB4V9wGJgX9piqgd67SeSUt4K3Aqwbt26jKCxb98+6urqaG1tRbtP0xcpJT09Pezbt4+jjjpqooej0UxLKplT2AOcIoSoTucJzgFesT3nfuDK9P8vBx6RRez6Mzo6SmNjow4I0xwhBI2NjVoRajQVpJI5hWdJJY+3kipH9QC3CiG+JoS4OP2024BGIcQbwCeBzxZ7PR0QZgb656zRVJaKrlOQUn4Z+LLt4S+Zjo8C763kGDQajaZQthzYQkImWL9w/UQPZdzRbS6mAI8++igXXXRR3o+Xyr333svLL79sfH/mmWfmtWDw4MGDZRlPd3c3559/fsnn0WiK5VMPfYpP/9+nJ3oYE4IOCpoM7EEhX773ve9xzTXXlHz9uXPnMn/+fJ588smSz6XRFMOh4UOMxEYmehgTgg4KZWB4eJgLL7yQNWvWsGrVKu666y4AtmzZwhlnnMFJJ53Eeeedx8GDB4HUnffHP/5xNmzYwKpVq3juuecAeO6559iwYQNr165lw4YNvPbaawWN4UMf+hAnn3wya9eu5b777gPg9ttv57LLLuP8889n+fLl3HDDDcZrbrvtNlasWMGZZ57JNddcw8c+9jGeeuop7r//fj796U/T1tbGm2++CcDdd9/N+vXrWbFiBY8//rjjGH77298ad/iJRILrr7+eE044gdWrV3PTTTcBqTYlN954I6eeeirr1q1j69atnHfeeSxbtoybb77ZONell17KnXfemff712jKSU+4h2giOtHDmBCmXEO8XHz8wY/T3tle1nO2tbTxg/N/4Hr8wQcfZMGCBfzhD38AoL+/n1gsxnXXXcd9993H3Llzueuuu/j85z/Pz372MyA1iT/11FM89thjfOhDH2L79u0ce+yxPPbYY/h8Ph5++GFuvPFGfvvb3+Y1xm984xucffbZ/OxnP6Ovr4/169fzzne+E4D29nZeeOEFgsEgK1eu5LrrrsPr9fL1r3+drVu3UldXx9lnn82aNWvYsGEDF198MRdddBGXX365cf54PM5zzz3HAw88wFe/+lUefvhhy/V37tzJ7NmzCQaDANx6663s3LmTF154AZ/PR2/vWKXx4sWLefrpp/nEJz7BVVddxZNPPsno6CjHH3881157LQDr1q3jC1/4Ql7vXaMpJ1JKesO9zAnNmeihTAjTLihMBCeccALXX389n/nMZ7jooot4xzvewfbt29m+fTvvete7gNSd8/z5843XvO997wPg9NNPZ2BggL6+PgYHB7nyyivZsWMHQghisVjeY3jooYe4//77+c53vgOkynT37NkDwDnnnEN9fT0Axx13HLt37+bw4cOcccYZzJmT+sV/73vfy+uvv+56/ssuuwyAk046iV27dmUcP3jwIHPnjjVgfPjhh7n22mvx+VK/Yuo6ABdffLHxuQ0NDVFXV0ddXR1VVVX09fXR0NDAvHnzOHDA3hVFo6k8A5EB4sk4kXhkoocyIUy7oJDtjr5SrFixgi1btvDAAw/wuc99jnPPPZf3vOc9HH/88Tz99NOOr7GXVgoh+OIXv8hZZ53F7373O3bt2sWZZ56Z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\n",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD8CAYAAAB0IB+mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJztvXmcLEd15/s7uVZ3Vy937Xt1F12tgCRkAdcSIGwEiDGLQJ6xjMGYEVh+8hizDcYG7LHx2MMb/DzDMmYefhrjQcwAQoAAPRYbgWBkzEigDSQkIQmtd+u+a1d3dVVWLjF/RGRmZFZWdXVXVXdX1/nq05/KioiMjOy+OpEZcc7vkBACDMMwzMbHWOsBMAzDMKsDG3yGYZghgQ0+wzDMkMAGn2EYZkhgg88wDDMksMFnGIYZEtjgMwzDDAls8BmGYYYENvgMwzBDgrXWAwCArVu3in379q31MBiGYQaKu+6665gQYlun7deFwd+3bx/uvPPOtR4GwzDMQEFETy6nPS/pMAzDDAls8BmGYYYENvgMwzBDAht8hmGYIYENPsMwzJDABp9hGGZIYIPPMAwzJKwLP3yGWS7//Ogx3PH4CbiWAdskOKYBxzLlsWWocgOOZag6+d210mPH0upNA4ZBa31bDNNX2OAzA8ntjx3H39z6aE/7tAzKTgZNEwapScJUZZSZTPITiJObXJJJKFfnWgbOmS7Dtcye3g/D5KH1kMR8//79giNtmeUihIAfCjTCCI0g/an5IRY8HwteiKoXYKEeYN4LUFU/meN6gAV1vODJ8+p+tOr38qbnn46//NULVv26zGBDRHcJIfZ32p6f8JlCYmPqhxECZVSDSDtWdX4YIYjiY4FAffqqvd5Hpk0Ulxe0ieJ+VPsogh8I+FH2uvF5saH3VHkvn2EMQuHTfvs3gdzTfos61zRgWwTHNPH8Mzf3btAM0wI2+APMP9x/BHc9eaKNUVTlhcY4b4jVsTLSYdT/Nz/bJNimAcuQn7ZpwGoqI1jqs2xbmbbxEkur5ZSMcc0tpzQts7RYjjF5XZ/ZQLDBH2BuuvsAvv3gDFbBNneMaxkYdUyM2CZGHBOjjqUdp+Ul20wNuiGfdG0jNfjJZGAasA3KTAbxsWMaKNkGXEv2V7KNpF+GYZphgz/AXPev5dJdFKVP5k1LJFFUuKQSL8sEUYSGKkuXa+QbQKNoKSaz5NK8FOMH2aWcRhCh2gjgV+J2uaWcqLdLMABgGoSSZahJwISbTAoGSlY6McSTRH7C0M8t2QZc24QblxWcX7JM9vBhBgI2+BsAwyC4hgl3QP+aYZRbVipYx29alorUun0Qoe6H8PwQdV8e1wPt2I9QD0J4fgQvCFH3QxxbCJraeb6cBFeKYxpw1URw4a5JfPLNv9jD3xDD9IYBNRHMRsI0CKYhn5g7pbtN5eLNYC8IpadOPcCC52O+HqBS93HgZA0HTtba7muMuSamJ0rYMVnCc0/f1ItfC8P0HDb4TFvCSODHB07B86PcBnCxQW3yvGl6ek89eBqByBlptZQUyM8g83S/dpvKW8sunrd3E6YnS5ged7FjspQY9x0TJWwbd5c1WTHMWrGkwSeivwdwBYBZIcQFubr3APhrANuEEMeIiAB8DMCrACwCeLMQ4u7eD5tZLa7/wRP4i689sKZjsAzCqGOiXLIw6pgYc9WnY2HUtTCmNofLrokRx8KYq+rU5rClNoYdS20Q57x/Eq8gy0g2ji2DIP85M8zGoZMn/E8B+DiAT+uFRLQHwMsBPKUVvxLAOernEgCfUJ/MgPLG5+/FmdvGUPej1Oc9TI+9QCvX6jz1PXNOIOCFuXLtOK7LE0QClXqASj1Y9vjzfvS/d9nZuOZFZ/TiV8MwA8eSBl8IcRsR7Suo+giAPwLwVa3sSgCfFjJ893YimiKinUKIw70YLLP6uJaJy56xfdWuJ4RIlnX0SUWfZOIJJJ0wBBphqMpF00QSt73p7gO468kTbPCZoWVFa/hE9FoAB4UQP8699u4C8LT2/YAqazL4RHQtgGsBYO/evSsZBrMBIaJkmaVXhJHA8QUP3/3ZbM/6ZJhBZNkGn4hGAfwJgH9RVF1QVri7JoS4DsB1gNTSWe44GAYA5us+ZioeZip1HJmr40iljtmK/DxS8TAzV8fRBS/Z5N1/OksYMMPLSp7wzwJwBoD46X43gLuJ6GLIJ/o9WtvdAA51O0iGyfO9n83i7Z+9B/Ne8bq+Yxk4b+cEXnTOVuyYKGF6wsX0RAmXnLFllUfKMOuHZRt8IcR9AJJFXSJ6AsB+5aVzM4C3EdENkJu1c7x+z/SDfVvG8Kpn78ShuVrydK9v6jaCCPc+fQoPz8wrgy/dKH/w8+MyQCoXXZtE0qo6185F1GrRt6yvwwwqnbhlfg7AZQC2EtEBAB8QQnyyRfNvQLpkPgrplvmWHo2TYTLs2zqGv7rqwkxZrRFK41+p55Z4PByp1PHDx0+gUvcTD6KVYptUMCnk5RvMJPI2K8eQlrnahPLcvVMYL9nd/loYpi2deOm8YYn6fdqxAPD73Q+LYTonjrqNhMDkiI0Rx8SuqZGcJ48moRxEqAcRFlQk7XzdR6Umjyu1NMJ2vp7q5evIYLCg5XLSSnjjJXvxwX/57J71xzBFcKQt0zFCiGZ3yCBSLpFpXZM7peYa2dJHXytP6pL62NUy1K6ZdbnsJaaRZrIq2SYmR+xsxqtWKRMLyh3TgN2Bnv6Fuyd7eg8MUwQb/CGi1gjx0W8/jNl5r/DpN29Em41yb52p4pSCiWEsyjlrGhh18nWx4TVhWwS3R0lJYm18XqNnNips8IeIxUaAWx+axeG5OqqNoCeyxBMlC5vHHGwac7B5VH5uGXNw6dlbsaXsNCUTT552OWk4w6w6bPCHiC1lF7e8+8UApIb+oq9yvqq8r3q+1wVPy/VaT/O9Vr0wkxN2oR7gyROLeOL4YuZaNT/EX1zJOVoZZj3BBn9IMQxC2bVQdi1Md9mXEAKLjXTyeMN/ux2fveMpfPmegzCIYBoEgwgGIT02AJMIhvqeHqO4fdxP3Ea1N1Vf2esQTFWWtCFo7XNtknPTNqYSTzPVGEiVmUQgiiWd4zayr/RYa0PauU3Xa/V7yN8PtHvPtVHnMkwnsMFnuoaIMOZaGHMtbAfwgdecj7uePIlICESRQCgEIiHfKsJIHYv4WGjHSNqHkYAQUhYhFFJG2QsEQiEnmDDS2qjrREJdK8r2n+87Um3i415n3FoL9MmxeILNTXztJlV9cownpaY2RRMRMOKY+P2XnI3dm0bX+lfCFMAGn+k5F+6ehGmQMszSsBYZaXmsynVDLjRjH7dRfRW2yfQPrX2LNrlJI8olU8mmhdQ0/pW2/3qcICIBRKFACyWTriBC9g0s85aUNf4l28QbLm6wwV+nsMFnes4f3Phj3PH4ib5eY8Q24VhGi2Wf7HKHQbklEkM+jcbHlmHAtYqWYZBbtqHE+KXLPMgt2xS00Zd8erAs1H48zf0X33/x76noaZ/zAmwc2OAzPee6N+3Hw7Pzmc3geBN4vh7g6LwUO4ujYuv+8v3oa36IC3dP4vO/+4I+3AHDbEzY4DM955v3H8atD82i2og9fAJUvVB+dugOahqEMceUG8sluT8QbzLHxxftmer/zTDMBoINPtNzHpldwH0H5xK3zuWkn3UsA9MTLraMuRgvWRhzpIEfL6nUha6FcWX0n7lzvH83wTAbEBLrYAdq//794s4771zrYTA9QggBL4ikX389wPGqhyNzXkbUrNslHQDYt2UU3/vDl/R49AwzOBDRXUKI/Z225yd8pue87XP34Os/6Z0qtmsZ2BJH84452DQqP8+ZLuPbD8xkZBWW0rBh2QRmmGGDz/Sc1+3fg9M3j/YsqbkXRDg0V8ehuXrXYzMNmUJRTgCmkn6grBaPNkm4toGtZZk8ZXqihB0TJeyYlN/LrsUeLMxAwQaf6TkvPncbXnzutp70pSc1z6htdprUvCixeYFIXM0PUWuEWGwEmKv5qPkhqp6MHq75YeHYRh0zk1xl+4SLHRMlPGfvJt5QZtYlbPCZJYmDkIIo/kyPw/g4EmldqH/PnhNGMpgpbHNOGMkgp1AFOmXOKbi+bBupNgXX147TvrJjWwmLjRCPHavisWPVTPn2cRc//JPLe/GrZ5iewgafactNdx/Au2/88apf1zZlQJRlECyTYBpy6cU0SJXl6lSQ0YhtwnSttG3cTvVlmqTaGs1tTErbNl2fEunkzPWT84ykzfSEu+q/L4bphE5SHP49gCsAzAohLlBlfw3gNQAaAH4O4C1CiFOq7v0ArgEQAniHEOIf+zR2ZhW45MwteOtlZyUeNjMVDzNz9bbZngwCfvfFZ+Elz9jeZERNg2AbhmZ48waXN1YZpl908oT/KQAfB/BprewWAO8XQgRE9FcA3g/gvUR0HoDXAzgfwGkAvk1E5wohihdBmXXPrqkR/NErntlUXvUCbRKo48hcGj37nYdmcfeTJ/ELuyebN0ItA5Ep4MCAQQYMpDIAtsEa+QzTTzrJaXsbEe3LlX1L+3o7gKvU8ZUAbhBCeAAeJ6JHAVwM4H/3ZLTMumHMtXDWtjLO2lZuqnvN33wfdzx+YkV6OnoWrHiicHMZq6RXjanVUVPGK9fMZbnS3TbNfH+t3Tnj5OQMsxHoxRr+bwP4vDreBTkBxBxQZcwyEKJZQritxG++jS49rMkAt5cnRkbOuFhpshPlS+D5Z27Gns0jqPsRao0Q9SBE3Y9Q98Pkp+aHhQFXQSQQNEIsNtbHS6FjGfjKWy/FeadNrPVQGKZrujL4RPQnAAIAn4mLCpoVukAQ0bUArgWAvXv3djOMvvPRbz+Mu5861SSpGymDmDGaGV32Fm10Dfi4jWa4V+g0sq4wqEUCEqXGWHZtTI60TkCSnFuUpKSN8mWvE6KUXQv7trLUL7MxWLHBJ6KrITdzXyZSfYYDAPZozXYDOFR0vhDiOgDXAVJaYaXjWA1OLfo4Ou+hEYTSxzsJHEqDg9YDcaBQyTYxYpso2QZGbBOubaoyWWfnNkltU26cJt4rltpYVUFK8aaqbRotziHYlpGcY5nNyTVIM9TxcSzNS4mhTcvjY2J5XobpGSsy+ET0CgDvBfBiIYSezPRmAJ8log9DbtqeA+CHXY9yjfnz157ftj4fHJQP7CkMEMrVeXHAUBChEaYTS2GEaovI1fh73Q9RqflorNNkHctFnwiKJ45Utz4zaRjZ88yCPmK999Z96N+zfVMyacWTU3E/+bHm+4317eO3jmR81Ooe07b5yVFPSJL0q43VoFS/v6iP/O8t6ccovk5+8rZMmf2MWZ904pb5OQCXAdhKRAcAfADSK8cFcIt6+rpdCPFvhBA/JaIbATwAudTz+8PgoUMkn4Rt08DYOnPBDkJdxkBGnwqBzJKUvmcQr/snxyJd249Emk0qLhfaPkF+70G/jr5cFZ+n7yckqQrVsZ4aUehjiYrHVVQfnxcuY6xBJNTkG2e8khOx/D1q2a9CgUa4Pt7s1hMGAZ/+7UvwonO2rvVQmAI68dJ5Q0HxJ9u0/yCAD3YzKKZ3WKYByzQABwDstR5Oz7jvwBz++ls/QyMIEUWQUbTK4AdRdvM586Pvw6i28f7JSiNuV4s4g1Wc4SrNaCVjHeJsX5aRZgIzDSPJypVpb+bO08o6u448NnJtRmwTF+6ZXOtfFdMCfvdiBhI/ijBf91Gp+UmClU6Tq3SCZRAmR2xMT5Twq885DSO2mWzy6gYuNoyJAVTfk+MWxrOdQY3P0w1qvLTCMN3ABp/pGbEOvudHyfJRI7c30QjEknsbfsFeR7PwmYBrGZgcsTHqWGiMRPCCEKdqPuZqfteGP4gEjlcbOLnYwPPPfDYu3M1iaMzgwwZ/AxNv4MY+8J7yh/cyfvHqUyvz/BD1QPebj8+P20ayTVwXhEl9r56widCkZV8kXzzqWE3BWI5FSZtM8FWuv1Z1SfCWZWDMtbB5zOnNTTHMGsMGf4D5yC0P458eOZoYXU8PbgqkMmQvGbFNlEsy3eC4a2FL2cG4aydlZddCyZYa865twi0wrLZJKtrVhK0Z5rxRt5RHCsMwvYMN/gAjkHoIASZMkhIDI47Z7GWi5IO7oaYiZI/Oey3bxP79tiElCmL//cRvPz5OyqVvf1qetimui8sNPGvnOF54FnuDMEyncE7bISKOFwiUS2GsG98IokSTvlEwURw8WUOl7mO+LnPUxrlqF7wA83Uf816ABfV9NSURnrVzAt985y+t2vUYZr3BOW2ZlqTxAsAIOhME++wdT+GPv3xfn0eWYhkkl4xKNsquJZeL4s+ShbJrq3oL28oubnv4KCyVsjCOCHYybxaG9saRviXwchEzjLDBZ9ryigt2IBLxW4B86i9eLiqqk28OevBS0iZK+0zfOGRfJxd9nFz0+3pfydKTme4ZFC09xZ9yQ5iaNnYzm75LbQYXbBynG84GXG1fwzKNvt4/M5ywwWfasnnMwW89//RVvWbR0pM+USSTSUeTjshNVK370iedRqD1GQjM1fzEXdTLeDRFfYm4NQjNks4FHkaJdHRheTxByYnkrG1l/Mr5O3o+VmZwYIM/wNT9EMcWvEQKQZcxzsskLKeuqV27ukhKF+SlEnQVUL2uqV0HdUKTQGhXp8sz5JVKW9XFEgv5ceoSDfm61SASUJNKhPke9Tk94bLBH3LY4A8wv/V3d+DOJ0+u9TA6Io1IzQmDGZSIeenyxIaRFTvTpY7jurxYmcyapUsiN4uI6XW6oFrLury4mJEKkOl1umBaMp6cQFl8f63q0vL2dfrvo+k8o1kELa4bcTiRy7DDBn+A+cBrzsdPDp5Ko1VVNGos2dwcyRpHuWoyz7moVs8PUW2EPffhDyMBU3OtzAdSbR5z8NHfuAjbJ0o9vS7DMCls8AeYSt3HyWpDyiirteaGkjTQ5ZXz0srt5Ay69dXPYysPmtYblvL7plGHk5czTJ9hgz/AfOJ7P8f3Hz22pmOI5QfGXBNjjoVRx8SYKz9HHUvzdFGeMJZMmpL3hLFMwncenM24TsYBVrY6L+9quX3cxXhp4yiAMky/YYM/wFz/2xdjsRFIj5SowPUxLg+a3SMzHimqrMlTpUAT3g8j+FHBdVR53Y+w4NULvF6ijOdNL9g27uJHf3J5T/pimGGADf4AYxo0kE+4scdLEIncpJKdYOpBiMOn6jhwchEHTtZw4OQinlafdT/C8YXWEg8MwzTDBp9ZdUgl27BMoGSbCMIIn/3hU3h4Zh5H5jzMVOqYqdSly2luS8E2CdvHS5iecHHxGVvW5gYYZkBhg8+sOfP1AP/pH3+GSj1o2ebMbWO4aPcUnrlzHDsmR7BjooRzp8urOEqGGXw6yWn79wCuADArhLhAlW0G8HkA+wA8AeB1QoiTJAVKPgbgVQAWAbxZCHF3f4bOrCVBGGU08xOtfF9p5bfR3C/S0r9g1ySePrmIgydrhcFNjx2t4rGjVeCetOzMrWO49T2Xrdo9M8yg08kT/qcAfBzAp7Wy9wH4jhDiQ0T0PvX9vQBeCeAc9XMJgE+oT2ZAue3ho/jLrz2AxUaYkRTod/5XxzJQVt4/ZddG2TXVdyv5vGDXBB4/Vk10cWTglQFTiaWZBrFQGsNodJLE/DYi2pcrvhLAZer4egDfgzT4VwL4tJCay7cT0RQR7RRCHO7VgJnVZdOog3OmyxkvmyCSyVX8UKjPKNmEjcXQYrnl+JxQ1XU6TzSCCCeCBk5UAaDW1T0YJBN7J5OCaSRRufrkEKttWkqvPz7HUsnAM3WZtvI47uuc6TKuvGhXV2NmmH6w0jX86diICyEOE9F2Vb4LwNNauwOqrMngE9G1AK4FgL17965wGEy/efbuSfy/b3xey3ohROJRE4uJ1f0wCeLKipXJfLf1IEStEaGmlnZqDfWpfuKymrYcVMuUhcsKEIsEZJDZKkn1P3PHOBt8Zl3S603bonfnwv8zhRDXAbgOkAlQejyOoaWrtfV8mkRtjT2f19bTrtGP1Z04yErPeGWbBkYdMw3IioOzNA18S0Xuxk/ejpU+qTuZ/tpl4zKyAWMmadcqysal9W8QRwwz65aVGvyZeKmGiHYCmFXlBwDs0drtBnComwEyrfnTr9yPWx+a7evaOhEw7sqEJOMlC9vGXUyUbEyMWJhQSUpKtiFz2domSiqfbZxMXE9ZmDfSRSkOOZ8tw/SPlRr8mwFcDeBD6vOrWvnbiOgGyM3aOV6/7x9nby/jeNVLNHMSwbREPK1YT2c5wmhCAJV60NJlkghSs71Jr10lDbGMTOKQVlruEyM2rnnRGbA58QfD9I1O3DI/B7lBu5WIDgD4AKShv5GIrgHwFIBfV82/AemS+SikW+Zb+jBmRnH1C/fh6hfuW/Z58UZrZpLIiak1llHXTrgtFmar+xEqtSA9R5uc4iWj07eM4ooLT+MlEYbpE5zEnFlzHp2dx+Ufvg2AlIvYVnYxPVnC9LiLHZMlTE+UsGNCfU66mJ4oDaSkBMP0Gk5izqwLokjkNoizm8BebsP45edN46EjFRw8WcORSh1HKvW2/Y85Ji57xnb81zc+d5XuiGEGHzb4GwwhRG7ZRSU6CUMtAYqWLCWnh58p1451g+218PDpVZ5XxzTgqo3gkm2gZJnyu2UmZa5t4qLdUz38zTHMxocNfp94ZGYex1Vyklbr4NlkJKlh9jXDvNYJTCyD4FrKC8fSvHGUAR4vWcoIK0OsGeWS8tqJ69Pz4zqtnXY+r+EzTH9gg98HHpmZx8s/clvfryO9WyxsGnUwUbIwMSJdJ8dd6TY5XrIxUbJQLtk5bxkzk2bQ1TxnMtmpTAMGG1+G2TCwwe8DZ28v4wv/5gU4vuBl17CDKBfE1GqNWwZJ6cFN9aDZnbIRRji20MCxhUbb8RAhebouKVfJ5bpN5sudgrq4PF+XTWmYXot97RlmdWGD3weICL+4b3PP+/XDdhNGuzX1MBN9G6/te8myUJi4TTat7WtLSL0O6nLMgoTm7XLfWsrfXx0/e/ckXrd/z9IXYhgGABv8gSKOTB0vLf/cuh9ituLh6EIddb+FT32Br71eV/cjVL0A1UaAhXqABS9A1Qux4Mnj5RLr21SXKXJjkFTTfPLEIht8hlkGbPAHnCgSOF5tJFmijlTqmJmrY6biyWNVdmrRX3bfsUaNvkSjr/dPjTrYPp6u+btW8RO7/lTebskovzSUeeLX2vCmLsOsDDb4A8y7brgHX7/v8LI8czaN2hgv2Rh1pL78iGNizJH68qOOiVHXRNmR5a5ltBQVa9a/aS0qZqs6kzVyGGZNYYM/wLzonG1wLRN+lE3+HURReqzJE/uaPn38VhCEKpF4JJalsbNSUiXLWOEyq2RpGfKNwS5Qy7RMvdzAs3dN4jcvYWlthukUNvh94r4Dczi52EAoBEKVECRNAqInBUk/o+R7aoDDKN8uQhgh0yaI5DVCIRAJkcgVE6RUgQBAZMAgghUJhKaAExmyL21svpJWbgQrD5paipXq0hMhkR62VMKS2UqdDT7DLAM2+H3gkZl5vObj31/rYfSFeMPUTVw6s+6YyXGy5m5myjLHdur3X9Sf3m9s5E2SmaVMIhgGcKLaSI4tw0g/Cbx8xDA52OD3gXOmx/G1t78IlZovn55F+vQeqe9h7gm+VVn+vORYPeXL89RxUgZ1niyLMucVX09vExSUxW8q8XlVL0ClLrAOtPdaEqc2NAzIiUItI7kFEb6xbINr5+ozbeOI49bnx9HCrsVBa8z6gw1+n7hg1+RaD2FV0CewVhNLEMq6tpNNvCQVIVn20ieyojI5CekTXHqdVpNrLMecF287teinmcGCNDtYN1IVjmVkpCX0ScTVJwzLwL967m684KwtPfzLMEwzbPCZrjAMggGCbfa+7yUVN4Os6FuzIJyACEMEyujHgnDx/okAYFCa2FwI+T1OaeiGBmqNcNlxAjHxmIqSx8RLY7Eb6jN3TrDBZ/oOG3ymI4QQ6sm3dZ5bXT6iSFGzSHEzEy3cQ8XNGNOgQvkHXeJBBrNZS0pGdBIJHKd2dEyzSU7CNU3YVuyRxJm9mNWHDT7Tli/c+TQ+cPNPUfPDFa/XmwZlVTNzksdbyytT3HRzG8JFQV0cpMUwKV0ZfCL6twB+B4AAcB9kSsOdAG4AsBnA3QDeJIRor+7F9IX8kkjmSbxI275A4O32x44jCAXe/pKzlSxy8yalboiLDDbnqWWY9cGKDT4R7QLwDgDnCSFqRHQjgNdD5rT9iBDiBiL6WwDXAPhET0a7gZmr+fjh4ydQ88MOl0Ti5ZD+LInoSUguP2873v0vntHDu2UYZi3odknHAjBCRD6AUQCHAbwUwG+q+usB/DnY4C/JR255GJ/6wROFda2WROIn6LLb+ZJInC1Kl0vmJCQMMxys2OALIQ4S0X8C8BSAGoBvAbgLwCkhROyWcADArq5HOQR4WnSrYxrYWnawpexiS9nB1IiNcknq3ZQdKzked+XnmGthPK53LYw5Jm8KMgzTRDdLOpsAXAngDACnAHwBwCsLmhZu9RHRtQCuBYC9ezk8/uoXno4xx0S1EWC+HqCqJIdnKh5+fnQhkSHuVPagZBsouzbKrplMBGU1OYxoT/oly2i7Nl/4xqDeEHhtnmEGi26WdC4H8LgQ4igAENFNAF4IYIqILPWUvxvAoaKThRDXAbgOAPbv37+O4zVXh2fumMC/u+K8Jds1giiZDKQefYB59ZnVqPexoCaJuP3huTqqjaDJpXKlLLXUlE1Crk8ezUtNI46JrWUXOyZL2D7u8mTCMH2gG4P/FIDnE9Eo5JLOywDcCeC7AK6C9NS5GsBXux0kkyJ9ux1sGnN60l/sX7+UX30SndrSB7/Z66dS9zObzXHaxqU2k4mALWMOpidK2DFRwvRkCdPjJeyYdGWZ+j41arNeDsMsg27W8O8goi9Cul4GAO6BfGL/OoAbiOg/qLJP9mKgTH8gouQpezUII4H5uo9jCw0cX/DkZ9XDbMXD48eq+PnRBTx2rJrk6v3poUrLvp53+iZ86fdeuCrjZpiNQFdeOkKIDwD4QK74MQAXd9MvM9h85o4nceuDs3I5KUmHGKLqBajL5FC2AAAgAElEQVT5nckUOJah9hzMZC8i3oOI9yMu3DPV5zthmI0FR9oyPefJ44t46Mh8YuyXk/zcsQxsH3execxJMnFJDySzaRP6rG1jfbwLhtl4kFgH+rb79+8Xd95551oPg+kD8R5BVW0mz3t+ZlM53mw+VWvgiWOLyZJOJ95I+7aM4nt/+JJVuAuGWZ8Q0V1CiP2dtucnfKbv1P0QxxYaSYL1Iyqx+qz6PDLn4XjVa9LqsU3C9vESpiek9068iSs9eUp4xo7xtbkhhhlQ2OAzADqQIi6Sb2jy7kmP45y5M5U66n7z0/qmURvTE9KIn79zEtOTsTF3sX1cGvXNow4nEWGYHsIGf4B56EgFPzkw17EUsV7v9Vp3Jwngkr71m0ZtPHvXJF7+rOnk6Tx+Qt8+4a6aVxDDMCls8AeY937pPvz46VM979cgYHLExtSooz5tTKnvEyPxsfyZHLExYltNwVas+c4w6w82+APMZ3/nEhw8VcsqZi6RhMTLvQG0U9w8eLKGx49VVzy+fFanOGF5PnFIUldUXlDnxMlLcslKCpOSFCQwsQzigC1mKGGDP8CMuRbOne7vxqVMDVg0WbTX1I/T+8XpB2uNEIt+iFpDtllsBKj5EU5WG6ip8prfXQ7ZTiGCnFBySVMcbVKK6yZHbPzZa87D9ESp7+NimH7DBn8d4ofFm6H5p/O6HyKIIgQqQXecqzVO3C2/q3ohEIYibRuJNBm43keUTfodRFGL8rQ+TjyelMfX0RKIrxcsQ+awlU/5SBKvI5Dj980IZkBYVLluvSDsWLCOYdY7bPA7IAhlIupEU6aNfkxR1ihvyaxT2XN7bSB1I2caBMs0ZLLu5Lv8NEn/bmjnGSjZ2T7kj9HUt5n5LusN/dpN7Y2OxhEnF8/2YcA00DQOo6lNWs4wwwwb/A646m//N+7tw+ZoK0ZsE+MlqXs/7loYL9lSTqAko07jsjElPeAWKFSOaDLGlikNomMabPQYZohhg98B//bl5+Knh+YQhAJBGKGhPv0wgh/FxwJ+GCFQn2l5ri6KtHZxuWzvhxGEgFzT9kPMzns9vxeDAMuMvWjkE7Bjyqd+2yTYqtw2DdiGPHasbNLxJI9tGw39lpLIShaZPXgYZvVhg98BLz53G1587rZVuVaoDH+7ySMIBRrxRKEmkaRtp5NOINffmyadQK7nx301gggLXlZDP16a6kZL3zIIpVYTgp2dYHT//nxqR+nf72J6soRx12LvG4ZpAxv8dYZc1149ueJuiCI58bRy68y7fuYjc9tF8p5a9DPtPVXXzotn1DGTwK5YR3/HhBb0NVnCaZMlnhSYoYUNPrNiDINQ6uPkFEUC1UY2g9dczceJqodj8w0cnqvj50cX8POjCzh4qobFRojHjlXxWJvYgXddfg7edfm5fRkvw6x32OAza07VC/Cuz9+LmUpdpm5UOX2rjc608y2DMDliY8yxks3tNMm7mUn4/soLdvb5bhhm/cIGnylECAHpnh618L+X/vbS116u+xfHAYj2fUQRnj5Rwy0PzODZuybxrJ0TiXHWDXW5ZEktfCc+TpOhuJbByzQM0wFs8DvAC0LMLfpNhiooMmKhSIJ5QrWZGtdHQmS+t+yjXVBUqBnU3DUKDa1Atk0uiKpoHHH5amIQ8Je/egEu4ixWDNM3ujL4RDQF4O8AXABAAPhtAD8D8HkA+wA8AeB1QoiTXY1yjfm1T/wA9x9snVt1kHGUjIBra7ICmsyAa5mpto2dbZvKEcg2yXlWqo8jj82c1k024MpUHjuTI/Za/zoYZkPT7RP+xwD8gxDiKiJyAIwC+GMA3xFCfIiI3gfgfQDe2+V11pQ/u+J8PHi4Ip/Sc5IByY+QdfGTcvyUH+Xa6OekbwLp03+ktWlorpZ+EGW/K1fLbok1b/rg8t+WJCqXshG6egSwYQCWYcAgJFG5poHknOfs3YQ/veK81R04wwwwKzb4RDQB4JcBvBkAhBANAA0iuhLAZarZ9QC+hz4Z/Lof4iv3HMR8PZCGUhndSCAxoqH6nh6nRjsSSAxyUxv93ML2xf2HkYAQ0MYSjyvfvxpjURshmrI/DSKxoTZI/shjrUwZfIOkx0/atvi8tL2aDExet2eY5dDNE/6ZAI4C+O9E9AsA7gLwTgDTQojDACCEOExE24tOJqJrAVwLAHv37l3RAB4/VsWffvX+VVFYXC84cUSsLgWsqT7aiXSwmcgIxzLBtpXKBdua5LBtUkZC2M71W7INTCgphyajrL6byginx2yMGWa9seIk5kS0H8DtAC4VQtxBRB8DUAHwdiHElNbupBBiU7u+ukliXlVRoPGSSXZTtIWaY5Qut+Q3LYP8pmiobWj2UHFyyT6aNmKbx7/aGISM58yYK7V9sp4zJsqujbJrSvfIQldJC6OOyZ41DNMlq5nE/ACAA0KIO9T3L0Ku188Q0U71dL8TwGwX11iS2PAMI1GUndjauT6G2qQn5ZfTKNZaEhWbjYitqfqqF+DUoo9TNR+nFhs4sdjAobl6V2MnAspO6nK5fdzFR3/jImxn3XmG6RsrtpRCiCNE9DQRPUMI8TMALwPwgPq5GsCH1OdXezLSDc7BUzV87ceH0AiWJ8oWKF2crChbrLmTirLpWjv9fjkgAmxDLhVZZrrUlBdlS8oNA1OjNi8DMUyf6fbR+O0APqM8dB4D8BYABoAbiegaAE8B+PUurzEU3PrgDP7jNx9a62GsCCIkYmfx/kDsgWPon8rDxsjVmQZhvh7gPV/4cVO5PEZBWbrJaxooKMvVN5Vlx9VUlruWoXkHFV8r7WNL2UV5SN86mfXNitfwe0k3a/gbiaoXZFw/dRfQKEJ6rHkERZkyKC8hkWub91rKn596FWXqkzJkxpO4mmbGqHszxeVo0TZ1Q42XjxpKfTNV4lyddIf9YNfUCP75fS9d62EwQ8BqruEzPWaj7EX83994ELc9fFQuJUVZOefkWE0E/SbR+Dco8UDKLyc15QHItM/lCjAM2BYVLkvZlgHbIJy9vdz3+2KYlbAxLAyzImJ54yCKE7tEKslLXK4Z6DDXJkoTweT1+T/3w6cwUbJx0Z6pAuOaW88vNK7tjHG2nyZDbVKyf2AaxJ5ADKPBBr9PHJmrY67mp0lJIplcJE0yUpSUJE4+0j4piWzfpp+wyFCLnAHv7+bt7/7ymXjbS8/p3wUYhlk2bPD7wKOzC3j5R/7XwEXLxho4TZmoMukNZZ7covSF+rmjjoVvPzAD01xCPkElJ483PK3cpmgiv5DrxyDw0zvDLBM2+H3gzK1j+OTV+3FKKWy209+J1S8Tn3rtuPk8GZwVb4YGyr9e1+2JA83CFlo+LfV+4rFEAnM1HyeraxPctRxMzYOmpeaOmXreWAZhomRrGbBc+amyYU1PlAYi0xjDrBQ2+H3AMAgvfeb0Wg+jJzRNOgUTUl70rbAs109WLE4GhaUeRZH2KRKJ52Ryy02ShdcJm8cdhgKnag08eLiC7/5sFosFCVYmR2wtPaKL3ZtG8eZL92GixEqezODDBp9pi2EQDBA22oOvEALzXoCZuTqOVOqYqXiYqdRxJPlexwOHKji24GHHZAm//rzdvITEDDzsh88wLTh4qoZLP3QrAClat30iXQLSl4T0ZSFeEmJWE/bDZ5gesWtqBP/jmovx6OyCfOpXT/9LLQltKTtp0pdYvVRTNI03x2MV03y5U1CnJ5fR6/RENLZ2LX4bYYpgg88wbfilc7bhl87Z1lSeXxI6MlfH7LyHI3N1HK96aATS/bURSAG6Si1IdJK8QMYz+GGUJKDp9QZ5LKOdmSRy8tj5OtfMljuWgcufNY3nnd5W7JYZINjgM0wbDs/VMFPxskJ2UYRGkI9rEBgvWXCtUezaNJLGPqgYjEbQHMimC+A1ggiLjRBVL8BiI8RiI0DVC9EIoxWNuxFGaIRAteAtZDlEQrDB30CwwWeYFtQaIX75//nuutb0cUyZoGbEMTFiyziJEcdEyTJzZUZSVrJleVpvJGUlrdy1pbJppe7DNqQgnm1y9PIgwwafYVow4pi48XdfgMNz9UR+ItYGClWEc5xzIJad8IIIXiIAFylROPXdj+CFsj4Wi0vqVNvl0lDXrdSDPvwGijEIsJQkhmVIOQzTINgGYcQx8ZHfuAgX7p5auiNm1WGDzwwkB0/V8D9vfxKNIGoZI7B0INsyAtIyMQIyJ7GeTW2dx6glEcyWkQ1Ea4pq1qKbs21UcJuhBbcRmiKoR2wTm0adtb5dpgVs8JmB5KHDFVz/gyf6suG53rBNavLmyXjo5Ddb9XJLis21lK1oYeCXnhigjH4a6WwaQMk2sXvTyFr/ypgWsMFnBpKXPWsaD/zFK5LvRRHBTbIVBU/vy4kIDgrKuokILnzrKBh3fF5R+0YQodaQm7tVT2701vzuNmq75f970/PwK+fvWNMxMMWwwWc2BOspIjiKBOrKHTPNFRypshBeXB7ox2mOYZkEJnt+7NVT99M9gqRvtay1UprE75Qgnqs2cUuaKF5JK3Mzgnmyfrxk40Vnb+3hb5PpJV0bfCIyAdwJ4KAQ4goiOgPADQA2A7gbwJuEEI1ur8MMJkLI9e7iTFrxcXPGraJMXUudV5RVS8/E1SrbV1EGMT3bV2J8gxCeZpSzRl1twPrRil0pAel149qagdWUSsccC1vGlCG2dAOcKpnGhjpjiHNGOTbqcUpK9roZHnrxhP9OAA8CmFDf/wrAR4QQNxDR3wK4BsAnenCdgeJnR+ZxarGxqoZJT2GYtkWhwUzLitMQFqYu1Men1zeV6ekU1/ovsTyI0JTXNjaeqUS0/D5esjKG1LXyRjVraN2Cp+j8+SYncmf6SFcGn4h2A3g1gA8CeDfJR4WXAvhN1eR6AH+OITP4j8zM41c+ettaD2NgyKchzGfDskwpUWAVtpGbkpba2LSaMmXJtIOZNIVmcYpCy0w3MImk5r6hvE8MgvokOSlo5USpRn++nrTzTCKQgab+kmM29kyf6fYJ/6MA/gjAuPq+BcApIUTsFHwAwK4urzFwnL29jC+/9YWYq/kQApmn3WSJQwh1nL4BxHVR/Jk8rcvz4j4i1TZ+utb7lN/jc5E87Rf1GScbT/ssGqt8C2g71ig77nSsWp/q3Ob7z16z5oeIGs1jHRbiCaSTNfmvv+NFOP+0yVUYFbNRWLHBJ6IrAMwKIe4iosvi4oKmhf9yiehaANcCwN69e1c6jHUJEeE5ezkcvZc0T3jaBBelE1uoTTJLTXDxBKZPiPp18hNpFMn0k14QotbQN07TDdl4U1Vf34/b1dSGbbwnUPPDJsMeCaCTVGmOaWDbuNun3zazUenmCf9SAK8lolcBKEGu4X8UwBQRWeopfzeAQ0UnCyGuA3AdIOWRuxgHMwSQSoUYE4QRfvLkKdRU1GpDCZHFgmReICNhZV2o6kQS0ZoIl4WaoJlep/WX1IVRT9NWEiFRwZwo2dgxKWWWt0+4mSxc8sfFqMNOdUx3rPhfkBDi/QDeDwDqCf89Qog3EtEXAFwF6alzNYCv9mCcDJPhi3cdwPtuum9Z50hxM1OpRVKT3LCszypL2h0oTOYDomxTbvQ6pgnbooyEsR4UZRqsS8OsLv14ZHgvgBuI6D8AuAfAJ/twDWbIuep5u7FzagSHT0k1yzhL1ZE5+Xm82uwJ7AURXMuETPojDW3+iV3/rleJlm3kf2md1jdy1xHp+fxKy6wFPTH4QojvAfieOn4MwMW96JdhWmGZBl58brNOfUwjiDA7L43/TMVLJoJ5L8gu6WjLQQuFdQKNIFRLP6KrAKc8RJDJTQreHOK3i/QNIn4jMWGbMhn7W19yFraPl3o2Hmbjw4uCzIbEsQzs3jSK3ZtGV3T+fN3HTKWO2YqHaiONfF1sBJivB6jUfFTqASp1H5WaL8vqPiq1APN1H14HypdCIJlY4HU2LssglGwTEyULr9u/hw0+syzY4DNDhR9GODrvZVIW6gnMZ9TSUCeJQ4jQFEC1texg96YRLRCrOdDKLYiOzUgbFAVxqUAuyzRW4bfEbFTY4DNDw7tvvBc33X1wRec6loFRx8SobWLUtTDqSANtUCoNbKjgq0zgFhGCUGBRSFdNsx6oQK04SCs9TgK0lqjLB3rFwVvxJnBcR0SJmmV6fu68XJ0eaay3S+oMQj5grF1d8jvJ1fGG9drABp8ZGl51wU7cdPdBOJaBbWUX2ydcbB93MVGyIZD1008Cw7RAs7DAhz8UUtQsXxdGWuBalI0b0H3/43ahyMYIxOfosQUbkcxEVRDd3KounmSSCGZ9UtEmq1Z1+qQsAJysNjA77+HovJeojV569hZ86i0Xw95Ab1Vs8Jmh4fLzpvHEh1691sNYEfmo5MxkEGWDw5JgsaaJJitk16oumYBywWr5uswkGOsnFQW8aXVCu37buiiVr9bjJfym7xH8QGRiJWSZatuFkN0/P3ocfhixwWcYpj/ERjTW3s9k74pkwvPicpFo8ettwjDV1I/bBGFW9z8Im/sIoyjXd7aNXpYfb5IfQC/P5RQIoqh5bKF2LdFbjyidyREbOyZKmJ4sYceEmwS36cFuW8acDaltxAafYQoo0rTPSylkpJKX0LTP6Ncn56dlfijWXapEWxOTM7XctZZaHonF5iyV8jCTLUuJ3JVsvU1z9q20XKVNVJm0MuWmNgaDYCoRvXRcHfRhEDaPOdg+XsKIsw6SJqwRbPCZoeGr9x7ELQ/MJNr19Rba9t1q2tsmKb35Zs36UcfC5gJN+1gZdEkjpwzdUsY2aVtgaE2jwAjnrrcRn24ZNvjMEPHQkXnc9vBRVOrB0o0B7JgoYe+WUWwfd7G17GJr2cGWsjzePGZjxLZY054ZKEisg+3//fv3izvvvHOth8EMCbVGKP3uK6nf/ZE5L1M2W/GWfMofc0yMuRbKJQtlV/6Mudnj8ZKVtBsvNdeXSxbGHIsnCWZFENFdQoj9nbbnJ3xm6BhxTOzbOoZ9W8datokigZOLDcxUPMzXfVQbARa8EAv1AFUvwLwXqKTh6fFCPcCJ6qJsWw+w4AXww84eqOKNxLxS5o5YLXPSxdYxl5damK5gg88wBRgGYUvZxZZyd5rzXhCiqiaKBS/ITAYL8YRRD3Ci2sCRSh2zlToenpnH0XmvaQPXMgjbx11snyhhz+ZRvP+Vz8RpUyNdjY8ZLtjgM0yPEUIoPf7UNxwAHIsgIDdox1wLmzS9/VOLDWwtuziiJplDp2p4dHYBgWb1g0jg0Fwdx6qNRL+HYZYDG3xmYAkjkUlQohvYzGebumZlzGzClDSZSjawJ6+02VDBPrGq5krZWpaug6dNjeA5ezepJR1X+YzLn6lRm2UJmBXBBp8ZSP7h/iN462fuWnW/dccy1IaribJrY2vZxZirbco6FkZdmUgln0wllj92C6SQJ0YsbB8vwbE2TlQns/5gg88MJM/ZO4V3vOwc1P1o2U/lSZ32lN/pU3kjiHAiaOBEFQBqLdvZJmWMfFHGK7389b+4Z8VSzgzTKWzwmYFkeqKEd11+bs/6iyKpu6IvzeRz2uZz5CZLQNrkMl/38ZV7D+HAyUVUw3BJmWXbJGwfL2Gm0qEgPsN0ARt8hoH0yikZMoCqG77+k8N46sSjnV+XCNVGgP/ynUdw3W0/T/TyE218TSNf18V3tWCvvK6+rsWv6+qP2Cbr6Q85Kzb4RLQHwKcB7AAQAbhOCPExItoM4PMA9gF4AsDrhBAnux8qw6x/Xn3hTpx32mWoekFr6YYglnDQ9Xf0tvJzbrGBmUQGIlJ9yOOVQARsGXOxY9JVPv/pRvD0pNwc3jFRwuQIbwpvVLp5wg8A/IEQ4m4iGgdwFxHdAuDNAL4jhPgQEb0PwPsgE5szzFBwRpuArl4Qu316uUmg7oeoNgLMLfqYq/k4VfNxatHHXK2BU4s+ji14ePL4Iu4/WMH9Byst+3ctQwZ+jZfwxufvxZUX7err/TCrx4oNvhDiMIDD6nieiB4EsAvAlQAuU82uh0xuzgafYVrw1PFF/ODnx5oUN+Mney/3hlCkuBm/NQRduC3pKRYBYK4mJw5m49CTNXwi2gfgOQDuADCtJgMIIQ4T0fYW51wL4FoA2Lt3by+GwTADyYdv+Rm+cu+hvl+n7FqYKFmYGLExXrIwUbKT47JrwbVM5VVEGdfRr/3kUMa7yClwK40/S7Y51PLD652uxdOIqAzgfwH4oBDiJiI6JYSY0upPCiE2teuDxdOYYaYRRDhwcjHnBSQKg8O8Ai+iIjfUZg8jvTx1XW0EYZIZqhcJR4iAT7zxeXjFBTt68JthlmJVxdOIyAbwJQCfEULcpIpniGinerrfCWC2m2swzEbHsQycua28JtcO1KRQ90MsNkJU6lKyoVLzUakHmK/7qNQCVOp+IucQt5mvyzaVmp8sJQkBHDi5uCb3wixNN146BOCTAB4UQnxYq7oZwNUAPqQ+v9rVCBmGySCEwD89cgyPH6s2r+erTVyvwDsovzfQ7Zq/YxkoWQY2jznJ2v+Ya+HiMzb38G6ZXtLNE/6lAN4E4D4iuleV/TGkob+RiK4B8BSAX+9uiAzD6AgBvPUzd2PB6694mmmQttZvYdyVnxMlG+VSuubvJpHDBMcy8fDMAh4/Vs1KSBRIS+j7ALZhwDJlti12Ce0f3XjpfB9Aq7/My1baL8Mw7TEMwg/e/1KcrDYy6/TJ+nybSOBGmFvv1/cBcvsD+j7AYiPEXM1H41g+6njlqSBbYZsy7aJtyry4tiknA1tNKnqdpbcxtDam1qawverHMmAb+fakypvbO5b8tJR0hmVqxypl5HqesDjSlmEGkImSjYmSvdbDgBAiUQjNTxJt1UULNpID1daP4mOphhqoTz8S8IMIQZStWwiCbLu4ryh3frg6SeIdM31bcSw14ViUmUAsU040JdvEe37lGbhoz9TSHfcANvgMwxQSRQKREAiFQBRBfgqBKBIII4FIQNZHcXnaRggBwwAcyCdfxzQQOaq/CGk/QvUTaf3obYR2raS9QKC9YeTlqdtNLHU/wmIjwGIjRNWTn93sYxQhNZnkcfzWkRXPE3BMgdAiEAFh1Pu3pFawwWcGlhPVBoIwQqiMghBSIz9UBieMkDMi7Y1US0O2XCOVb6PKig2ZNobEwGrGNum/4F5UX+m5S9xv3CYznqL7RU9cNFeTWJ3UzsUFOLl9hM1jFnZMlrKqpRbBMU3NKJNWV9yfXpeRwdb2KWzTWHe5itngMwPJZ+54En/y5fvXehhLYpDc/DRI/shjuQ5vEqWfcVnSdonziGAYgG0YzW1I68cgmKosvWauDRFMI9cmN8ZMm5bjKWqj3UvcT+EYmu/XNABS7eXauGwTf9cNOef67Qw2+MxAcmSuXlhuGYQRpTgZK0Q2qU3aJkZy3/Ntkz4sGTkaq1I6ltGZIVMGkGHWE2zwmYHkxeduw4+eOJHxUNHXcb0gxILnoxH0dqOOCG2XDNq9+meWC3LSBK4ue2wZmYmopCaekm0kE5ljGuvaG4RZn7DBZwaS/fs244ZrX9BR2yBJbCLg5TJjLZ3ntnhTsFVGrbh8sRHgVK1ZykA/p5t1ciJN7MxKJ4bshJHWu3aqr78cLf2dkyXW0N9AsMFnNjyWcoODAwDLc2UUajMzUD9hKBBEUfI9CNVxXB6m5WEk4EcCoXIjDHPnNIIItYaUNF5shFjwAizUA1S9AAtegGpDfl/w5NuKroMvBFS0bASgf4qWb7h4L/7jv3p23/pnVhc2+MzA0QiixCjqP1UvNpDady/M1HlhlBrj5DM2xsXGey0wDenHbamgoDHHwuRIGvRjGtKv2zQItvpuacE/sYeIrJM+33qb2E88+a5FupradS89e+ua3D/TH9jgM2tOGAl8+Z6DePrEYpMhT422j6oXYqEedBzd6VgGJkpS/nfMNTHmWJgasTWDlzOesRHUjF9s+DLGM2dw9b5aGdzMNQvOSQ3v+o/WZAYXNvjMmjNf9/Hvb/4p5nusDdMIIhyveqjU/OZwe1Ma7Pbh9rmw/UwYflFf+WvI9k0SAElYvgrXNw2cNsVr5Uz/YYPPrDlTow5+9O8uR60Rwo/0MHstND6KVFh9Qfh8Qbh9I4ySpZnkOJT6MskaulreybdfrIVJuQzpLwjbV2PqMp1Ewq89dzf+8+t+oTedMUwL2OAz64LYDXGQ0Dd0l5qE8hOFru/yn7/1ML71wBFc9Ylq8xuHcveMl30cVZYKdmXfGJYjDGZbBUJk6jxLW5ZiNg5s8BlmhRCptXgTXU1Wi40Q37z/SPJWUfPDZNO46e1EvenEwmC9esNohUFIl6aUEFjTpKMtTVmmNjF1uDy2Z/MIfvWiXbxvsQqwwWeYNeYNF+/FGy5eWV7n2NsoUG8Vfhih5oeoqQxWtYb69EMsqo1wma0qwILnJ99jl9B5zcsJACIh90IaABJFsB6ztezgigtPg22ywe83bPAZRiNepilaetHX8aWRLZDwjZ/Ck/LcvoFa6mnaZwji8wr2MPJLRoV1vXUjjbNZxUttbi6Yy7WywVr5AC49AMxdInJ4zDF5w3qVYIPPDA0fv/UR3PzjQwXGNmtU+03s5+4UeO8UJfIo2QbGS1aLBBxxYo7mdf6ihCGJPEPGYGeNtmuxGNlGpW8Gn4heAeBjAEwAfyeE+FC/rsUwnbCl7GJq1MFMpY6j8x68YGl//u3jLv6vXzoTkyN2ZlM043Zp6Ua63dq23BRlY8qsFX0x+ERkAvivAF4O4ACAHxHRzUKIB/pxPWb4EELgkdkFVGo+5lWAVlWtR1c9KVcwX9fKtTZVL0Cn+4NzNR+Xnr0V55020d8bYphVoF9P+BcDeFQI8RgAENENAK4EwAaf6QlfvOsA/vCLP+l5v2XXwtSojU2jDqZGbUyNOvjUDx5v6R6ZLpu0zoMae6QUvQm0c4/kNwGm1/TL4O8C8LT2/QCAS/p0Lf4LYtAAAAUjSURBVGYIueLC0zDqWKgrF8bmIK3lB13p+VS9IMTBkwGeOF5N+soHdvWb/Fp/MumoCebdL38GXn3hzr6Pg9k49MvgFz2aZHbDiOhaANcCwN69K3NJY4aXEcdcU2OnB11lJ5V2njeaR00Lz5tssFY8ERV7BU2Nrn0Sc2aw6JfBPwBgj/Z9N4BDegMhxHUArgOA/fv3D1YCTWbo6VXQFcOsJv1yfv0RgHOI6AwicgC8HsDNfboWwzAM0wF9ecIXQgRE9DYA/wjplvn3Qoif9uNaDMMwTGf0zQ9fCPENAN/oV/8MwzDM8uB4ZoZhmCGBDT7DMMyQwAafYRhmSGCDzzAMMySwwWcYhhkSSPQ7ZU4ngyA6CuDJFZ6+FcCxHg5n0Bjm+x/meweG+/753iWnCyG2dXriujD43UBEdwoh9q/1ONaKYb7/Yb53YLjvn+99ZffOSzoMwzBDAht8hmGYIWEjGPzr1noAa8ww3/8w3zsw3PfP974CBn4Nn2EYhumMjfCEzzAMw3TAQBh8ItpDRN8logeJ6KdE9M6CNkRE/4WIHiWinxDRc9dirP2gw/u/jIjmiOhe9fNnazHWXkNEJSL6IRH9WN37vy9o4xLR59Xf/g4i2rf6I+09Hd77m4noqPZ3/521GGs/ISKTiO4hoq8V1G3Iv33MEve+7L9939Qye0wA4A+EEHcT0TiAu4jollxS9FcCOEf9XALgE9g4aRU7uX8A+CchxBVrML5+4gF4qRBigYhsAN8nom8KIW7X2lwD4KQQ4mwiej2AvwLwG2sx2B7Tyb0DwOeFEG9bg/GtFu8E8CCAokzyG/VvH9Pu3oFl/u0H4glfCHFYCHG3Op6H/AXsyjW7EsCnheR2AFNEtCESfnZ4/xsS9fdcUF9t9ZPfeLoSwPXq+IsAXkZEA58BvMN739AQ0W4Arwbwdy2abMi/PdDRvS+bgTD4OuqV7TkA7shVFSVO33BGsc39A8AL1Ov/N4no/FUdWB9Rr7X3ApgFcIsQouXfXggRAJgDsGV1R9kfOrh3APg1tYz5RSLaU1A/yHwUwB8BaJU1fsP+7bH0vQPL/NsPlMEnojKALwF4lxCikq8uOGVDPQ0tcf93Q4ZZ/wKAvwHwldUeX78QQoRCiIsgcyNfTEQX5Jps2L99B/f+/wPYJ4S4EMC3kT7tDjxEdAWAWSHEXe2aFZQN/N++w3tf9t9+YAy+WsP8EoDPCCFuKmiyZOL0QWap+xdCVOLXf5VtzCairas8zL4ihDgF4HsAXpGrSv72RGQBmARwYlUH12da3bsQ4rgQwlNf/xuA563y0PrJpQBeS0RPALgBwEuJ6H/m2mzUv/2S976Sv/1AGHy1JvdJAA8KIT7cotnNAP618tZ5PoA5IcThVRtkH+nk/oloR7x2SUQXQ/5tj6/eKPsDEW0joil1PALgcgAP5ZrdDOBqdXwVgFvFBggw6eTec/tUr4Xc39kQCCHeL4TYLYTYB+D1kH/X38o125B/+07ufSV/+0Hx0rkUwJsA3KfWMwHgjwHsBQAhxN9C5s99FYBHASwCeMsajLNfdHL/VwH4PSIKANQAvH4j/MMHsBPA9URkQk5iNwohvkZEfwHgTiHEzZCT4f8gokchn+5ev3bD7Smd3Ps7iOi1kJ5cJwC8ec1Gu0oMyd++kG7/9hxpyzAMMyQMxJIOwzAM0z1s8BmGYYYENvgMwzBDAht8hmGYIYENPsMwzJDABp9hGGZIYIPPMAwzJLDBZxiGGRL+D4Y891qp26ZsAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -1979,8 +1995,9 @@
"source": [
"# Plot sepal length as a line graph for each instance\n",
"# Hint: use numpy.arange() for x axis\n",
- "\n",
- "fig = plt.figure('Sepal length')\n",
+ "plt.plot(s2,np.arange(150))\n",
+ "plt.figure(figsize=(15,20))\n",
+ "plt.show()\n",
"\n",
"### CODE HERE ###"
]
@@ -2005,7 +2022,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 71,
"metadata": {},
"outputs": [
{
@@ -2038,127 +2055,159 @@
" \n",
" \n",
" \n",
- " | 0 | \n",
- " 5.6 | \n",
- " 3.0 | \n",
- " 4.5 | \n",
- " 1.5 | \n",
- " 1 | \n",
+ " 62 | \n",
+ " 6.0 | \n",
+ " 2.2 | \n",
+ " 4.0 | \n",
+ " 1.0 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 1 | \n",
+ " 141 | \n",
+ " 6.9 | \n",
+ " 3.1 | \n",
" 5.1 | \n",
- " 3.7 | \n",
- " 1.5 | \n",
- " 0.4 | \n",
- " 0 | \n",
+ " 2.3 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 2 | \n",
- " 5.6 | \n",
- " 3.0 | \n",
- " 4.1 | \n",
- " 1.3 | \n",
+ " 115 | \n",
+ " 6.4 | \n",
+ " 3.2 | \n",
+ " 5.3 | \n",
+ " 2.3 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 3 | \n",
- " 5.1 | \n",
- " 3.5 | \n",
+ " 65 | \n",
+ " 6.7 | \n",
+ " 3.1 | \n",
+ " 4.4 | \n",
" 1.4 | \n",
- " 0.3 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 4 | \n",
- " 6.9 | \n",
- " 3.1 | \n",
- " 5.1 | \n",
- " 2.3 | \n",
- " 2 | \n",
- "
\n",
- " \n",
- " | 5 | \n",
- " 6.7 | \n",
- " 3.3 | \n",
- " 5.7 | \n",
- " 2.5 | \n",
- " 2 | \n",
+ " 6 | \n",
+ " 4.6 | \n",
+ " 3.4 | \n",
+ " 1.4 | \n",
+ " 0.3 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 6 | \n",
- " 5.7 | \n",
- " 4.4 | \n",
+ " 21 | \n",
+ " 5.1 | \n",
+ " 3.7 | \n",
" 1.5 | \n",
" 0.4 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 149 | \n",
+ " 5.9 | \n",
+ " 3.0 | \n",
+ " 5.1 | \n",
+ " 1.8 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 7 | \n",
+ " 98 | \n",
" 5.1 | \n",
- " 3.8 | \n",
- " 1.5 | \n",
- " 0.3 | \n",
+ " 2.5 | \n",
+ " 3.0 | \n",
+ " 1.1 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 8 | \n",
- " 5.8 | \n",
- " 4.0 | \n",
- " 1.2 | \n",
+ " 42 | \n",
+ " 4.4 | \n",
+ " 3.2 | \n",
+ " 1.3 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 9 | \n",
- " 6.0 | \n",
+ " 68 | \n",
+ " 6.2 | \n",
" 2.2 | \n",
- " 4.0 | \n",
+ " 4.5 | \n",
+ " 1.5 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 22 | \n",
+ " 4.6 | \n",
+ " 3.6 | \n",
" 1.0 | \n",
+ " 0.2 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 36 | \n",
+ " 5.5 | \n",
+ " 3.5 | \n",
+ " 1.3 | \n",
+ " 0.2 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 10 | \n",
- " 4.8 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
- " 0.3 | \n",
+ " 97 | \n",
+ " 6.2 | \n",
+ " 2.9 | \n",
+ " 4.3 | \n",
+ " 1.3 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 16 | \n",
+ " 5.4 | \n",
+ " 3.9 | \n",
+ " 1.3 | \n",
+ " 0.4 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 11 | \n",
- " 7.7 | \n",
+ " 145 | \n",
+ " 6.7 | \n",
" 3.0 | \n",
- " 6.1 | \n",
+ " 5.2 | \n",
" 2.3 | \n",
- " 2 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 12 | \n",
- " 4.4 | \n",
- " 3.2 | \n",
- " 1.3 | \n",
+ " 46 | \n",
+ " 5.1 | \n",
+ " 3.8 | \n",
+ " 1.6 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 13 | \n",
- " 5.5 | \n",
- " 4.2 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
+ " 77 | \n",
+ " 6.7 | \n",
+ " 3.0 | \n",
+ " 5.0 | \n",
+ " 1.7 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 14 | \n",
- " 5.0 | \n",
- " 3.4 | \n",
+ " 56 | \n",
+ " 6.3 | \n",
+ " 3.3 | \n",
+ " 4.7 | \n",
" 1.6 | \n",
- " 0.4 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 116 | \n",
+ " 6.5 | \n",
+ " 3.0 | \n",
+ " 5.5 | \n",
+ " 1.8 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 15 | \n",
+ " 79 | \n",
" 5.7 | \n",
" 2.6 | \n",
" 3.5 | \n",
@@ -2166,116 +2215,84 @@
" 1 | \n",
"
\n",
" \n",
- " | 16 | \n",
- " 6.7 | \n",
+ " 109 | \n",
+ " 7.2 | \n",
+ " 3.6 | \n",
+ " 6.1 | \n",
" 2.5 | \n",
- " 5.8 | \n",
- " 1.8 | \n",
- " 2 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 17 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.1 | \n",
+ " 107 | \n",
+ " 7.3 | \n",
+ " 2.9 | \n",
+ " 6.3 | \n",
+ " 1.8 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 18 | \n",
+ " 25 | \n",
" 5.0 | \n",
- " 3.6 | \n",
- " 1.4 | \n",
+ " 3.0 | \n",
+ " 1.6 | \n",
" 0.2 | \n",
- " 0 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 19 | \n",
- " 5.7 | \n",
- " 2.8 | \n",
- " 4.1 | \n",
- " 1.3 | \n",
+ " 3 | \n",
+ " 4.6 | \n",
+ " 3.1 | \n",
+ " 1.5 | \n",
+ " 0.2 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 20 | \n",
+ " 128 | \n",
" 6.4 | \n",
- " 3.2 | \n",
- " 5.3 | \n",
- " 2.3 | \n",
- " 2 | \n",
- "
\n",
- " \n",
- " | 21 | \n",
- " 4.9 | \n",
- " 2.4 | \n",
- " 3.3 | \n",
- " 1.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " | 22 | \n",
- " 5.8 | \n",
" 2.8 | \n",
- " 5.1 | \n",
- " 2.4 | \n",
- " 2 | \n",
- "
\n",
- " \n",
- " | 23 | \n",
- " 6.1 | \n",
- " 2.9 | \n",
- " 4.7 | \n",
- " 1.4 | \n",
+ " 5.6 | \n",
+ " 2.1 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 24 | \n",
- " 6.7 | \n",
- " 3.0 | \n",
- " 5.0 | \n",
- " 1.7 | \n",
- " 1 | \n",
+ " 90 | \n",
+ " 5.5 | \n",
+ " 2.6 | \n",
+ " 4.4 | \n",
+ " 1.2 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 25 | \n",
- " 5.4 | \n",
+ " 11 | \n",
+ " 4.8 | \n",
" 3.4 | \n",
- " 1.7 | \n",
+ " 1.6 | \n",
" 0.2 | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " | 26 | \n",
- " 7.7 | \n",
- " 2.6 | \n",
- " 6.9 | \n",
- " 2.3 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 27 | \n",
- " 6.8 | \n",
- " 3.0 | \n",
- " 5.5 | \n",
- " 2.1 | \n",
- " 2 | \n",
+ " 140 | \n",
+ " 6.7 | \n",
+ " 3.1 | \n",
+ " 5.6 | \n",
+ " 2.4 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 28 | \n",
- " 6.2 | \n",
- " 2.2 | \n",
- " 4.5 | \n",
- " 1.5 | \n",
+ " 146 | \n",
+ " 6.3 | \n",
+ " 2.5 | \n",
+ " 5.0 | \n",
+ " 1.9 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 29 | \n",
- " 4.8 | \n",
- " 3.4 | \n",
+ " 43 | \n",
+ " 5.0 | \n",
+ " 3.5 | \n",
" 1.6 | \n",
- " 0.2 | \n",
- " 0 | \n",
+ " 0.6 | \n",
+ " 2 | \n",
"
\n",
" \n",
" | ... | \n",
@@ -2286,183 +2303,167 @@
" ... | \n",
"
\n",
" \n",
- " | 120 | \n",
- " 6.8 | \n",
- " 2.8 | \n",
- " 4.8 | \n",
- " 1.4 | \n",
+ " 89 | \n",
+ " 5.5 | \n",
+ " 2.5 | \n",
+ " 4.0 | \n",
+ " 1.3 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 121 | \n",
- " 6.0 | \n",
- " 3.4 | \n",
- " 4.5 | \n",
- " 1.6 | \n",
+ " 61 | \n",
+ " 5.9 | \n",
+ " 3.0 | \n",
+ " 4.2 | \n",
+ " 1.5 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 122 | \n",
- " 6.6 | \n",
- " 2.9 | \n",
- " 4.6 | \n",
- " 1.3 | \n",
- " 1 | \n",
+ " 14 | \n",
+ " 5.8 | \n",
+ " 4.0 | \n",
+ " 1.2 | \n",
+ " 0.2 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 123 | \n",
- " 5.9 | \n",
- " 3.2 | \n",
- " 4.8 | \n",
- " 1.8 | \n",
+ " 49 | \n",
+ " 5.0 | \n",
+ " 3.3 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 124 | \n",
- " 7.2 | \n",
- " 3.2 | \n",
- " 6.0 | \n",
- " 1.8 | \n",
- " 2 | \n",
+ " 76 | \n",
+ " 6.8 | \n",
+ " 2.8 | \n",
+ " 4.8 | \n",
+ " 1.4 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 125 | \n",
- " 7.0 | \n",
+ " 47 | \n",
+ " 4.6 | \n",
" 3.2 | \n",
- " 4.7 | \n",
" 1.4 | \n",
+ " 0.2 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 126 | \n",
- " 6.4 | \n",
+ " 120 | \n",
+ " 6.9 | \n",
" 3.2 | \n",
- " 4.5 | \n",
- " 1.5 | \n",
- " 1 | \n",
+ " 5.7 | \n",
+ " 2.3 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 127 | \n",
- " 5.5 | \n",
- " 2.6 | \n",
- " 4.4 | \n",
- " 1.2 | \n",
- " 1 | \n",
+ " 130 | \n",
+ " 7.4 | \n",
+ " 2.8 | \n",
+ " 6.1 | \n",
+ " 1.9 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 128 | \n",
- " 5.0 | \n",
- " 3.0 | \n",
+ " 85 | \n",
+ " 6.0 | \n",
+ " 3.4 | \n",
+ " 4.5 | \n",
" 1.6 | \n",
- " 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 129 | \n",
- " 4.6 | \n",
- " 3.4 | \n",
+ " 50 | \n",
+ " 7.0 | \n",
+ " 3.2 | \n",
+ " 4.7 | \n",
" 1.4 | \n",
- " 0.3 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 130 | \n",
+ " 84 | \n",
+ " 5.4 | \n",
+ " 3.0 | \n",
" 4.5 | \n",
- " 2.3 | \n",
- " 1.3 | \n",
- " 0.3 | \n",
- " 0 | \n",
+ " 1.5 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 131 | \n",
- " 4.7 | \n",
- " 3.2 | \n",
+ " 71 | \n",
+ " 6.1 | \n",
+ " 2.8 | \n",
+ " 4.0 | \n",
" 1.3 | \n",
- " 0.2 | \n",
- " 0 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 132 | \n",
- " 6.7 | \n",
+ " 13 | \n",
+ " 4.3 | \n",
" 3.0 | \n",
- " 5.2 | \n",
- " 2.3 | \n",
+ " 1.1 | \n",
+ " 0.1 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 133 | \n",
- " 6.7 | \n",
- " 3.1 | \n",
- " 4.7 | \n",
- " 1.5 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " | 134 | \n",
+ " 72 | \n",
" 6.3 | \n",
- " 3.3 | \n",
- " 6.0 | \n",
" 2.5 | \n",
- " 2 | \n",
+ " 4.9 | \n",
+ " 1.5 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 135 | \n",
+ " 95 | \n",
" 5.7 | \n",
- " 2.9 | \n",
+ " 3.0 | \n",
" 4.2 | \n",
- " 1.3 | \n",
+ " 1.2 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 136 | \n",
- " 5.3 | \n",
- " 3.7 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
+ " 102 | \n",
+ " 7.1 | \n",
+ " 3.0 | \n",
+ " 5.9 | \n",
+ " 2.1 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 137 | \n",
- " 4.9 | \n",
- " 2.5 | \n",
- " 4.5 | \n",
- " 1.7 | \n",
- " 2 | \n",
+ " 126 | \n",
+ " 6.2 | \n",
+ " 2.8 | \n",
+ " 4.8 | \n",
+ " 1.8 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 138 | \n",
- " 6.5 | \n",
- " 3.0 | \n",
- " 5.5 | \n",
+ " 108 | \n",
+ " 6.7 | \n",
+ " 2.5 | \n",
+ " 5.8 | \n",
" 1.8 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 139 | \n",
+ " 31 | \n",
" 5.4 | \n",
- " 3.0 | \n",
- " 4.5 | \n",
+ " 3.4 | \n",
" 1.5 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " | 140 | \n",
- " 5.0 | \n",
- " 3.3 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
+ " 0.4 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 141 | \n",
- " 4.9 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
+ " 117 | \n",
+ " 7.7 | \n",
+ " 3.8 | \n",
+ " 6.7 | \n",
+ " 2.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 142 | \n",
+ " 111 | \n",
" 6.4 | \n",
" 2.7 | \n",
" 5.3 | \n",
@@ -2470,59 +2471,75 @@
" 2 | \n",
"
\n",
" \n",
- " | 143 | \n",
- " 5.1 | \n",
- " 3.3 | \n",
- " 1.7 | \n",
- " 0.5 | \n",
- " 0 | \n",
+ " 8 | \n",
+ " 4.4 | \n",
+ " 2.9 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 144 | \n",
- " 4.3 | \n",
- " 3.0 | \n",
- " 1.1 | \n",
+ " 9 | \n",
+ " 4.9 | \n",
+ " 3.1 | \n",
+ " 1.5 | \n",
" 0.1 | \n",
- " 0 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 145 | \n",
- " 5.7 | \n",
- " 3.8 | \n",
- " 1.7 | \n",
- " 0.3 | \n",
+ " 112 | \n",
+ " 6.8 | \n",
+ " 3.0 | \n",
+ " 5.5 | \n",
+ " 2.1 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 59 | \n",
+ " 5.2 | \n",
+ " 2.7 | \n",
+ " 3.9 | \n",
+ " 1.4 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 146 | \n",
- " 7.3 | \n",
+ " 64 | \n",
+ " 5.6 | \n",
" 2.9 | \n",
- " 6.3 | \n",
- " 1.8 | \n",
- " 2 | \n",
+ " 3.6 | \n",
+ " 1.3 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 147 | \n",
- " 5.0 | \n",
- " 3.2 | \n",
- " 1.2 | \n",
+ " 91 | \n",
+ " 6.1 | \n",
+ " 3.0 | \n",
+ " 4.6 | \n",
+ " 1.4 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 27 | \n",
+ " 5.2 | \n",
+ " 3.5 | \n",
+ " 1.5 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 148 | \n",
- " 4.8 | \n",
+ " 28 | \n",
+ " 5.2 | \n",
" 3.4 | \n",
- " 1.9 | \n",
+ " 1.4 | \n",
" 0.2 | \n",
- " 0 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 149 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 4.1 | \n",
- " 1.0 | \n",
+ " 20 | \n",
+ " 5.4 | \n",
+ " 3.4 | \n",
+ " 1.7 | \n",
+ " 0.2 | \n",
" 1 | \n",
"
\n",
" \n",
@@ -2532,135 +2549,135 @@
],
"text/plain": [
" sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n",
- "0 5.6 3.0 4.5 1.5 \n",
- "1 5.1 3.7 1.5 0.4 \n",
- "2 5.6 3.0 4.1 1.3 \n",
- "3 5.1 3.5 1.4 0.3 \n",
- "4 6.9 3.1 5.1 2.3 \n",
- "5 6.7 3.3 5.7 2.5 \n",
- "6 5.7 4.4 1.5 0.4 \n",
- "7 5.1 3.8 1.5 0.3 \n",
- "8 5.8 4.0 1.2 0.2 \n",
- "9 6.0 2.2 4.0 1.0 \n",
- "10 4.8 3.0 1.4 0.3 \n",
- "11 7.7 3.0 6.1 2.3 \n",
- "12 4.4 3.2 1.3 0.2 \n",
- "13 5.5 4.2 1.4 0.2 \n",
- "14 5.0 3.4 1.6 0.4 \n",
- "15 5.7 2.6 3.5 1.0 \n",
- "16 6.7 2.5 5.8 1.8 \n",
- "17 6.4 2.8 5.6 2.1 \n",
- "18 5.0 3.6 1.4 0.2 \n",
- "19 5.7 2.8 4.1 1.3 \n",
- "20 6.4 3.2 5.3 2.3 \n",
- "21 4.9 2.4 3.3 1.0 \n",
- "22 5.8 2.8 5.1 2.4 \n",
- "23 6.1 2.9 4.7 1.4 \n",
- "24 6.7 3.0 5.0 1.7 \n",
- "25 5.4 3.4 1.7 0.2 \n",
- "26 7.7 2.6 6.9 2.3 \n",
- "27 6.8 3.0 5.5 2.1 \n",
- "28 6.2 2.2 4.5 1.5 \n",
- "29 4.8 3.4 1.6 0.2 \n",
+ "62 6.0 2.2 4.0 1.0 \n",
+ "141 6.9 3.1 5.1 2.3 \n",
+ "115 6.4 3.2 5.3 2.3 \n",
+ "65 6.7 3.1 4.4 1.4 \n",
+ "6 4.6 3.4 1.4 0.3 \n",
+ "21 5.1 3.7 1.5 0.4 \n",
+ "149 5.9 3.0 5.1 1.8 \n",
+ "98 5.1 2.5 3.0 1.1 \n",
+ "42 4.4 3.2 1.3 0.2 \n",
+ "68 6.2 2.2 4.5 1.5 \n",
+ "22 4.6 3.6 1.0 0.2 \n",
+ "36 5.5 3.5 1.3 0.2 \n",
+ "97 6.2 2.9 4.3 1.3 \n",
+ "16 5.4 3.9 1.3 0.4 \n",
+ "145 6.7 3.0 5.2 2.3 \n",
+ "46 5.1 3.8 1.6 0.2 \n",
+ "77 6.7 3.0 5.0 1.7 \n",
+ "56 6.3 3.3 4.7 1.6 \n",
+ "116 6.5 3.0 5.5 1.8 \n",
+ "79 5.7 2.6 3.5 1.0 \n",
+ "109 7.2 3.6 6.1 2.5 \n",
+ "107 7.3 2.9 6.3 1.8 \n",
+ "25 5.0 3.0 1.6 0.2 \n",
+ "3 4.6 3.1 1.5 0.2 \n",
+ "128 6.4 2.8 5.6 2.1 \n",
+ "90 5.5 2.6 4.4 1.2 \n",
+ "11 4.8 3.4 1.6 0.2 \n",
+ "140 6.7 3.1 5.6 2.4 \n",
+ "146 6.3 2.5 5.0 1.9 \n",
+ "43 5.0 3.5 1.6 0.6 \n",
".. ... ... ... ... \n",
- "120 6.8 2.8 4.8 1.4 \n",
- "121 6.0 3.4 4.5 1.6 \n",
- "122 6.6 2.9 4.6 1.3 \n",
- "123 5.9 3.2 4.8 1.8 \n",
- "124 7.2 3.2 6.0 1.8 \n",
- "125 7.0 3.2 4.7 1.4 \n",
- "126 6.4 3.2 4.5 1.5 \n",
- "127 5.5 2.6 4.4 1.2 \n",
- "128 5.0 3.0 1.6 0.2 \n",
- "129 4.6 3.4 1.4 0.3 \n",
- "130 4.5 2.3 1.3 0.3 \n",
- "131 4.7 3.2 1.3 0.2 \n",
- "132 6.7 3.0 5.2 2.3 \n",
- "133 6.7 3.1 4.7 1.5 \n",
- "134 6.3 3.3 6.0 2.5 \n",
- "135 5.7 2.9 4.2 1.3 \n",
- "136 5.3 3.7 1.5 0.2 \n",
- "137 4.9 2.5 4.5 1.7 \n",
- "138 6.5 3.0 5.5 1.8 \n",
- "139 5.4 3.0 4.5 1.5 \n",
- "140 5.0 3.3 1.4 0.2 \n",
- "141 4.9 3.0 1.4 0.2 \n",
- "142 6.4 2.7 5.3 1.9 \n",
- "143 5.1 3.3 1.7 0.5 \n",
- "144 4.3 3.0 1.1 0.1 \n",
- "145 5.7 3.8 1.7 0.3 \n",
- "146 7.3 2.9 6.3 1.8 \n",
- "147 5.0 3.2 1.2 0.2 \n",
- "148 4.8 3.4 1.9 0.2 \n",
- "149 5.8 2.7 4.1 1.0 \n",
+ "89 5.5 2.5 4.0 1.3 \n",
+ "61 5.9 3.0 4.2 1.5 \n",
+ "14 5.8 4.0 1.2 0.2 \n",
+ "49 5.0 3.3 1.4 0.2 \n",
+ "76 6.8 2.8 4.8 1.4 \n",
+ "47 4.6 3.2 1.4 0.2 \n",
+ "120 6.9 3.2 5.7 2.3 \n",
+ "130 7.4 2.8 6.1 1.9 \n",
+ "85 6.0 3.4 4.5 1.6 \n",
+ "50 7.0 3.2 4.7 1.4 \n",
+ "84 5.4 3.0 4.5 1.5 \n",
+ "71 6.1 2.8 4.0 1.3 \n",
+ "13 4.3 3.0 1.1 0.1 \n",
+ "72 6.3 2.5 4.9 1.5 \n",
+ "95 5.7 3.0 4.2 1.2 \n",
+ "102 7.1 3.0 5.9 2.1 \n",
+ "126 6.2 2.8 4.8 1.8 \n",
+ "108 6.7 2.5 5.8 1.8 \n",
+ "31 5.4 3.4 1.5 0.4 \n",
+ "117 7.7 3.8 6.7 2.2 \n",
+ "111 6.4 2.7 5.3 1.9 \n",
+ "8 4.4 2.9 1.4 0.2 \n",
+ "9 4.9 3.1 1.5 0.1 \n",
+ "112 6.8 3.0 5.5 2.1 \n",
+ "59 5.2 2.7 3.9 1.4 \n",
+ "64 5.6 2.9 3.6 1.3 \n",
+ "91 6.1 3.0 4.6 1.4 \n",
+ "27 5.2 3.5 1.5 0.2 \n",
+ "28 5.2 3.4 1.4 0.2 \n",
+ "20 5.4 3.4 1.7 0.2 \n",
"\n",
" target \n",
- "0 1 \n",
- "1 0 \n",
- "2 1 \n",
- "3 0 \n",
- "4 2 \n",
- "5 2 \n",
+ "62 2 \n",
+ "141 1 \n",
+ "115 1 \n",
+ "65 0 \n",
"6 0 \n",
- "7 0 \n",
- "8 0 \n",
- "9 1 \n",
- "10 0 \n",
- "11 2 \n",
- "12 0 \n",
- "13 0 \n",
- "14 0 \n",
- "15 1 \n",
- "16 2 \n",
- "17 2 \n",
- "18 0 \n",
- "19 1 \n",
- "20 2 \n",
"21 1 \n",
+ "149 0 \n",
+ "98 0 \n",
+ "42 0 \n",
+ "68 2 \n",
"22 2 \n",
- "23 1 \n",
- "24 1 \n",
- "25 0 \n",
- "26 2 \n",
- "27 2 \n",
- "28 1 \n",
- "29 0 \n",
+ "36 1 \n",
+ "97 1 \n",
+ "16 0 \n",
+ "145 1 \n",
+ "46 0 \n",
+ "77 0 \n",
+ "56 2 \n",
+ "116 0 \n",
+ "79 1 \n",
+ "109 1 \n",
+ "107 2 \n",
+ "25 1 \n",
+ "3 1 \n",
+ "128 1 \n",
+ "90 2 \n",
+ "11 2 \n",
+ "140 0 \n",
+ "146 1 \n",
+ "43 2 \n",
".. ... \n",
- "120 1 \n",
- "121 1 \n",
- "122 1 \n",
- "123 1 \n",
- "124 2 \n",
- "125 1 \n",
+ "89 1 \n",
+ "61 1 \n",
+ "14 0 \n",
+ "49 1 \n",
+ "76 0 \n",
+ "47 1 \n",
+ "120 0 \n",
+ "130 2 \n",
+ "85 0 \n",
+ "50 0 \n",
+ "84 1 \n",
+ "71 1 \n",
+ "13 2 \n",
+ "72 0 \n",
+ "95 1 \n",
+ "102 0 \n",
"126 1 \n",
- "127 1 \n",
- "128 0 \n",
- "129 0 \n",
- "130 0 \n",
- "131 0 \n",
- "132 2 \n",
- "133 1 \n",
- "134 2 \n",
- "135 1 \n",
- "136 0 \n",
- "137 2 \n",
- "138 2 \n",
- "139 1 \n",
- "140 0 \n",
- "141 0 \n",
- "142 2 \n",
- "143 0 \n",
- "144 0 \n",
- "145 0 \n",
- "146 2 \n",
- "147 0 \n",
- "148 0 \n",
- "149 1 \n",
+ "108 2 \n",
+ "31 0 \n",
+ "117 0 \n",
+ "111 2 \n",
+ "8 2 \n",
+ "9 1 \n",
+ "112 2 \n",
+ "59 0 \n",
+ "64 0 \n",
+ "91 0 \n",
+ "27 0 \n",
+ "28 2 \n",
+ "20 1 \n",
"\n",
"[150 rows x 5 columns]"
]
},
- "execution_count": 21,
+ "execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
@@ -2668,16 +2685,16 @@
"source": [
"# Join target variable to dataframe\n",
"### CODE HERE ###\n",
- "\n",
+ "df['target']=y\n",
"# Randomly shuffle dataframe\n",
"### CODE HERE ###\n",
- "\n",
+ "df=df.sample(frac=1)\n",
"df"
]
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 73,
"metadata": {},
"outputs": [
{
@@ -2689,7 +2706,7 @@
" verbose=0, warm_start=False)"
]
},
- "execution_count": 22,
+ "execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
@@ -2714,17 +2731,17 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "array([1, 1, 0, 0, 2, 1, 0, 2, 1, 1, 2, 0, 2, 0, 2, 2, 2, 2, 0, 1, 0, 0,\n",
- " 2, 2, 2, 2, 2, 2, 2, 1])"
+ "array([2, 1, 0, 0, 2, 1, 0, 2, 2, 0, 1, 0, 0, 1, 0, 2, 0, 2, 0, 0, 2, 0,\n",
+ " 1, 0, 0, 2, 1, 0, 0, 0])"
]
},
- "execution_count": 23,
+ "execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
@@ -2738,16 +2755,16 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "0.9333333333333333"
+ "0.2"
]
},
- "execution_count": 24,
+ "execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
@@ -2781,24 +2798,16 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Assn-03.ipynb dataframe.csv model.pkl\r\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"ls"
]
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
diff --git a/python-assn/assn-03/Rohan Prabhu K.ipynb b/python-assn/assn-03/Rohan Prabhu K.ipynb
deleted file mode 100644
index 6e00ed5..0000000
--- a/python-assn/assn-03/Rohan Prabhu K.ipynb
+++ /dev/null
@@ -1,2222 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Using Pandas, Matplotlib and Scikit-Learn**\n",
- "\n",
- "NOTE: SAVE FILE BEFORE ATTEMPTING.\n",
- "\n",
- "Since the outputs will get cleared as you run cells. Take screenshots to compare answers to expected answers."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Using Pandas**\n",
- "\n",
- "We start out by practicing how to handle data given to us. The rows in any dataset are called tuples or instances and the columns are the features with one of the columns being the label (there may also not be a label if it is an Unsupervised learning task). \n",
- "\n",
- "Storing this data as a list of lists might be cumbersome and difficult depending on the complexity and size of the data.\n",
- "\n",
- "Pandas offers a data structure called a DataFrame, which makes it easy to handle data and visualise the intricacies of it.\n",
- "\n",
- "In this example we'll try to handle and analyse the Iris dataset and build a simple model for learning it using Scikit-Learn. The problem is to look at a few features of the data (sepal length, sepal width, etc.) and determine which of the three given flowers (here called 0, 1 and 2) are we looking at."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# Just to load the data. Don't worry about scikit-learn for now.\n",
- "from sklearn.datasets import load_iris\n",
- "data = load_iris()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 185,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([[ 5.1, 3.5, 1.4, 0.2],\n",
- " [ 4.9, 3. , 1.4, 0.2],\n",
- " [ 4.7, 3.2, 1.3, 0.2],\n",
- " [ 4.6, 3.1, 1.5, 0.2],\n",
- " [ 5. , 3.6, 1.4, 0.2],\n",
- " [ 5.4, 3.9, 1.7, 0.4],\n",
- " [ 4.6, 3.4, 1.4, 0.3],\n",
- " [ 5. , 3.4, 1.5, 0.2],\n",
- " [ 4.4, 2.9, 1.4, 0.2],\n",
- " [ 4.9, 3.1, 1.5, 0.1],\n",
- " [ 5.4, 3.7, 1.5, 0.2],\n",
- " [ 4.8, 3.4, 1.6, 0.2],\n",
- " [ 4.8, 3. , 1.4, 0.1],\n",
- " [ 4.3, 3. , 1.1, 0.1],\n",
- " [ 5.8, 4. , 1.2, 0.2],\n",
- " [ 5.7, 4.4, 1.5, 0.4],\n",
- " [ 5.4, 3.9, 1.3, 0.4],\n",
- " [ 5.1, 3.5, 1.4, 0.3],\n",
- " [ 5.7, 3.8, 1.7, 0.3],\n",
- " [ 5.1, 3.8, 1.5, 0.3],\n",
- " [ 5.4, 3.4, 1.7, 0.2],\n",
- " [ 5.1, 3.7, 1.5, 0.4],\n",
- " [ 4.6, 3.6, 1. , 0.2],\n",
- " [ 5.1, 3.3, 1.7, 0.5],\n",
- " [ 4.8, 3.4, 1.9, 0.2],\n",
- " [ 5. , 3. , 1.6, 0.2],\n",
- " [ 5. , 3.4, 1.6, 0.4],\n",
- " [ 5.2, 3.5, 1.5, 0.2],\n",
- " [ 5.2, 3.4, 1.4, 0.2],\n",
- " [ 4.7, 3.2, 1.6, 0.2],\n",
- " [ 4.8, 3.1, 1.6, 0.2],\n",
- " [ 5.4, 3.4, 1.5, 0.4],\n",
- " [ 5.2, 4.1, 1.5, 0.1],\n",
- " [ 5.5, 4.2, 1.4, 0.2],\n",
- " [ 4.9, 3.1, 1.5, 0.1],\n",
- " [ 5. , 3.2, 1.2, 0.2],\n",
- " [ 5.5, 3.5, 1.3, 0.2],\n",
- " [ 4.9, 3.1, 1.5, 0.1],\n",
- " [ 4.4, 3. , 1.3, 0.2],\n",
- " [ 5.1, 3.4, 1.5, 0.2],\n",
- " [ 5. , 3.5, 1.3, 0.3],\n",
- " [ 4.5, 2.3, 1.3, 0.3],\n",
- " [ 4.4, 3.2, 1.3, 0.2],\n",
- " [ 5. , 3.5, 1.6, 0.6],\n",
- " [ 5.1, 3.8, 1.9, 0.4],\n",
- " [ 4.8, 3. , 1.4, 0.3],\n",
- " [ 5.1, 3.8, 1.6, 0.2],\n",
- " [ 4.6, 3.2, 1.4, 0.2],\n",
- " [ 5.3, 3.7, 1.5, 0.2],\n",
- " [ 5. , 3.3, 1.4, 0.2],\n",
- " [ 7. , 3.2, 4.7, 1.4],\n",
- " [ 6.4, 3.2, 4.5, 1.5],\n",
- " [ 6.9, 3.1, 4.9, 1.5],\n",
- " [ 5.5, 2.3, 4. , 1.3],\n",
- " [ 6.5, 2.8, 4.6, 1.5],\n",
- " [ 5.7, 2.8, 4.5, 1.3],\n",
- " [ 6.3, 3.3, 4.7, 1.6],\n",
- " [ 4.9, 2.4, 3.3, 1. ],\n",
- " [ 6.6, 2.9, 4.6, 1.3],\n",
- " [ 5.2, 2.7, 3.9, 1.4],\n",
- " [ 5. , 2. , 3.5, 1. ],\n",
- " [ 5.9, 3. , 4.2, 1.5],\n",
- " [ 6. , 2.2, 4. , 1. ],\n",
- " [ 6.1, 2.9, 4.7, 1.4],\n",
- " [ 5.6, 2.9, 3.6, 1.3],\n",
- " [ 6.7, 3.1, 4.4, 1.4],\n",
- " [ 5.6, 3. , 4.5, 1.5],\n",
- " [ 5.8, 2.7, 4.1, 1. ],\n",
- " [ 6.2, 2.2, 4.5, 1.5],\n",
- " [ 5.6, 2.5, 3.9, 1.1],\n",
- " [ 5.9, 3.2, 4.8, 1.8],\n",
- " [ 6.1, 2.8, 4. , 1.3],\n",
- " [ 6.3, 2.5, 4.9, 1.5],\n",
- " [ 6.1, 2.8, 4.7, 1.2],\n",
- " [ 6.4, 2.9, 4.3, 1.3],\n",
- " [ 6.6, 3. , 4.4, 1.4],\n",
- " [ 6.8, 2.8, 4.8, 1.4],\n",
- " [ 6.7, 3. , 5. , 1.7],\n",
- " [ 6. , 2.9, 4.5, 1.5],\n",
- " [ 5.7, 2.6, 3.5, 1. ],\n",
- " [ 5.5, 2.4, 3.8, 1.1],\n",
- " [ 5.5, 2.4, 3.7, 1. ],\n",
- " [ 5.8, 2.7, 3.9, 1.2],\n",
- " [ 6. , 2.7, 5.1, 1.6],\n",
- " [ 5.4, 3. , 4.5, 1.5],\n",
- " [ 6. , 3.4, 4.5, 1.6],\n",
- " [ 6.7, 3.1, 4.7, 1.5],\n",
- " [ 6.3, 2.3, 4.4, 1.3],\n",
- " [ 5.6, 3. , 4.1, 1.3],\n",
- " [ 5.5, 2.5, 4. , 1.3],\n",
- " [ 5.5, 2.6, 4.4, 1.2],\n",
- " [ 6.1, 3. , 4.6, 1.4],\n",
- " [ 5.8, 2.6, 4. , 1.2],\n",
- " [ 5. , 2.3, 3.3, 1. ],\n",
- " [ 5.6, 2.7, 4.2, 1.3],\n",
- " [ 5.7, 3. , 4.2, 1.2],\n",
- " [ 5.7, 2.9, 4.2, 1.3],\n",
- " [ 6.2, 2.9, 4.3, 1.3],\n",
- " [ 5.1, 2.5, 3. , 1.1],\n",
- " [ 5.7, 2.8, 4.1, 1.3],\n",
- " [ 6.3, 3.3, 6. , 2.5],\n",
- " [ 5.8, 2.7, 5.1, 1.9],\n",
- " [ 7.1, 3. , 5.9, 2.1],\n",
- " [ 6.3, 2.9, 5.6, 1.8],\n",
- " [ 6.5, 3. , 5.8, 2.2],\n",
- " [ 7.6, 3. , 6.6, 2.1],\n",
- " [ 4.9, 2.5, 4.5, 1.7],\n",
- " [ 7.3, 2.9, 6.3, 1.8],\n",
- " [ 6.7, 2.5, 5.8, 1.8],\n",
- " [ 7.2, 3.6, 6.1, 2.5],\n",
- " [ 6.5, 3.2, 5.1, 2. ],\n",
- " [ 6.4, 2.7, 5.3, 1.9],\n",
- " [ 6.8, 3. , 5.5, 2.1],\n",
- " [ 5.7, 2.5, 5. , 2. ],\n",
- " [ 5.8, 2.8, 5.1, 2.4],\n",
- " [ 6.4, 3.2, 5.3, 2.3],\n",
- " [ 6.5, 3. , 5.5, 1.8],\n",
- " [ 7.7, 3.8, 6.7, 2.2],\n",
- " [ 7.7, 2.6, 6.9, 2.3],\n",
- " [ 6. , 2.2, 5. , 1.5],\n",
- " [ 6.9, 3.2, 5.7, 2.3],\n",
- " [ 5.6, 2.8, 4.9, 2. ],\n",
- " [ 7.7, 2.8, 6.7, 2. ],\n",
- " [ 6.3, 2.7, 4.9, 1.8],\n",
- " [ 6.7, 3.3, 5.7, 2.1],\n",
- " [ 7.2, 3.2, 6. , 1.8],\n",
- " [ 6.2, 2.8, 4.8, 1.8],\n",
- " [ 6.1, 3. , 4.9, 1.8],\n",
- " [ 6.4, 2.8, 5.6, 2.1],\n",
- " [ 7.2, 3. , 5.8, 1.6],\n",
- " [ 7.4, 2.8, 6.1, 1.9],\n",
- " [ 7.9, 3.8, 6.4, 2. ],\n",
- " [ 6.4, 2.8, 5.6, 2.2],\n",
- " [ 6.3, 2.8, 5.1, 1.5],\n",
- " [ 6.1, 2.6, 5.6, 1.4],\n",
- " [ 7.7, 3. , 6.1, 2.3],\n",
- " [ 6.3, 3.4, 5.6, 2.4],\n",
- " [ 6.4, 3.1, 5.5, 1.8],\n",
- " [ 6. , 3. , 4.8, 1.8],\n",
- " [ 6.9, 3.1, 5.4, 2.1],\n",
- " [ 6.7, 3.1, 5.6, 2.4],\n",
- " [ 6.9, 3.1, 5.1, 2.3],\n",
- " [ 5.8, 2.7, 5.1, 1.9],\n",
- " [ 6.8, 3.2, 5.9, 2.3],\n",
- " [ 6.7, 3.3, 5.7, 2.5],\n",
- " [ 6.7, 3. , 5.2, 2.3],\n",
- " [ 6.3, 2.5, 5. , 1.9],\n",
- " [ 6.5, 3. , 5.2, 2. ],\n",
- " [ 6.2, 3.4, 5.4, 2.3],\n",
- " [ 5.9, 3. , 5.1, 1.8]])"
- ]
- },
- "execution_count": 185,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# We retrieve the X vector which contains the features of each tuple\n",
- "X = data['data']\n",
- "\n",
- "X"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 107,
- "metadata": {
- "collapsed": false,
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
- " 0, 0, 0, 0, 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,\n",
- " 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 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,\n",
- " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
- ]
- },
- "execution_count": 107,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# And the y vector which is the numpy array containing the labels.\n",
- "y = data['target']\n",
- "\n",
- "y"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 186,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "['sepal length (cm)',\n",
- " 'sepal width (cm)',\n",
- " 'petal length (cm)',\n",
- " 'petal width (cm)']"
- ]
- },
- "execution_count": 186,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Here we store the names of the features for our understanding later.\n",
- "headers = data['feature_names']\n",
- "\n",
- "headers"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "There are also a lot of other keys in the dictionary that is the variable ```data```, but we'll not use these.\n",
- "\n",
- "We'll now make a DataFrame object to handle the data properly."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 187,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " 5.1 | \n",
- " 3.5 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " 4.9 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " 4.7 | \n",
- " 3.2 | \n",
- " 1.3 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " 4.6 | \n",
- " 3.1 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " 5.0 | \n",
- " 3.6 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 5 | \n",
- " 5.4 | \n",
- " 3.9 | \n",
- " 1.7 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 6 | \n",
- " 4.6 | \n",
- " 3.4 | \n",
- " 1.4 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 7 | \n",
- " 5.0 | \n",
- " 3.4 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 8 | \n",
- " 4.4 | \n",
- " 2.9 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 9 | \n",
- " 4.9 | \n",
- " 3.1 | \n",
- " 1.5 | \n",
- " 0.1 | \n",
- "
\n",
- " \n",
- " | 10 | \n",
- " 5.4 | \n",
- " 3.7 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 11 | \n",
- " 4.8 | \n",
- " 3.4 | \n",
- " 1.6 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 12 | \n",
- " 4.8 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
- " 0.1 | \n",
- "
\n",
- " \n",
- " | 13 | \n",
- " 4.3 | \n",
- " 3.0 | \n",
- " 1.1 | \n",
- " 0.1 | \n",
- "
\n",
- " \n",
- " | 14 | \n",
- " 5.8 | \n",
- " 4.0 | \n",
- " 1.2 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 15 | \n",
- " 5.7 | \n",
- " 4.4 | \n",
- " 1.5 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 16 | \n",
- " 5.4 | \n",
- " 3.9 | \n",
- " 1.3 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 17 | \n",
- " 5.1 | \n",
- " 3.5 | \n",
- " 1.4 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 18 | \n",
- " 5.7 | \n",
- " 3.8 | \n",
- " 1.7 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 19 | \n",
- " 5.1 | \n",
- " 3.8 | \n",
- " 1.5 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 20 | \n",
- " 5.4 | \n",
- " 3.4 | \n",
- " 1.7 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 21 | \n",
- " 5.1 | \n",
- " 3.7 | \n",
- " 1.5 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 22 | \n",
- " 4.6 | \n",
- " 3.6 | \n",
- " 1.0 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 23 | \n",
- " 5.1 | \n",
- " 3.3 | \n",
- " 1.7 | \n",
- " 0.5 | \n",
- "
\n",
- " \n",
- " | 24 | \n",
- " 4.8 | \n",
- " 3.4 | \n",
- " 1.9 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 25 | \n",
- " 5.0 | \n",
- " 3.0 | \n",
- " 1.6 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 26 | \n",
- " 5.0 | \n",
- " 3.4 | \n",
- " 1.6 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 27 | \n",
- " 5.2 | \n",
- " 3.5 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 28 | \n",
- " 5.2 | \n",
- " 3.4 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 29 | \n",
- " 4.7 | \n",
- " 3.2 | \n",
- " 1.6 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " | 120 | \n",
- " 6.9 | \n",
- " 3.2 | \n",
- " 5.7 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 121 | \n",
- " 5.6 | \n",
- " 2.8 | \n",
- " 4.9 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 122 | \n",
- " 7.7 | \n",
- " 2.8 | \n",
- " 6.7 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 123 | \n",
- " 6.3 | \n",
- " 2.7 | \n",
- " 4.9 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 124 | \n",
- " 6.7 | \n",
- " 3.3 | \n",
- " 5.7 | \n",
- " 2.1 | \n",
- "
\n",
- " \n",
- " | 125 | \n",
- " 7.2 | \n",
- " 3.2 | \n",
- " 6.0 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 126 | \n",
- " 6.2 | \n",
- " 2.8 | \n",
- " 4.8 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 127 | \n",
- " 6.1 | \n",
- " 3.0 | \n",
- " 4.9 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 128 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.1 | \n",
- "
\n",
- " \n",
- " | 129 | \n",
- " 7.2 | \n",
- " 3.0 | \n",
- " 5.8 | \n",
- " 1.6 | \n",
- "
\n",
- " \n",
- " | 130 | \n",
- " 7.4 | \n",
- " 2.8 | \n",
- " 6.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 131 | \n",
- " 7.9 | \n",
- " 3.8 | \n",
- " 6.4 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 132 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.2 | \n",
- "
\n",
- " \n",
- " | 133 | \n",
- " 6.3 | \n",
- " 2.8 | \n",
- " 5.1 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 134 | \n",
- " 6.1 | \n",
- " 2.6 | \n",
- " 5.6 | \n",
- " 1.4 | \n",
- "
\n",
- " \n",
- " | 135 | \n",
- " 7.7 | \n",
- " 3.0 | \n",
- " 6.1 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 136 | \n",
- " 6.3 | \n",
- " 3.4 | \n",
- " 5.6 | \n",
- " 2.4 | \n",
- "
\n",
- " \n",
- " | 137 | \n",
- " 6.4 | \n",
- " 3.1 | \n",
- " 5.5 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 138 | \n",
- " 6.0 | \n",
- " 3.0 | \n",
- " 4.8 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 139 | \n",
- " 6.9 | \n",
- " 3.1 | \n",
- " 5.4 | \n",
- " 2.1 | \n",
- "
\n",
- " \n",
- " | 140 | \n",
- " 6.7 | \n",
- " 3.1 | \n",
- " 5.6 | \n",
- " 2.4 | \n",
- "
\n",
- " \n",
- " | 141 | \n",
- " 6.9 | \n",
- " 3.1 | \n",
- " 5.1 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 142 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 143 | \n",
- " 6.8 | \n",
- " 3.2 | \n",
- " 5.9 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 144 | \n",
- " 6.7 | \n",
- " 3.3 | \n",
- " 5.7 | \n",
- " 2.5 | \n",
- "
\n",
- " \n",
- " | 145 | \n",
- " 6.7 | \n",
- " 3.0 | \n",
- " 5.2 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 146 | \n",
- " 6.3 | \n",
- " 2.5 | \n",
- " 5.0 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 147 | \n",
- " 6.5 | \n",
- " 3.0 | \n",
- " 5.2 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 148 | \n",
- " 6.2 | \n",
- " 3.4 | \n",
- " 5.4 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 149 | \n",
- " 5.9 | \n",
- " 3.0 | \n",
- " 5.1 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- "
\n",
- "
150 rows × 4 columns
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
- "0 5.1 3.5 1.4 0.2\n",
- "1 4.9 3.0 1.4 0.2\n",
- "2 4.7 3.2 1.3 0.2\n",
- "3 4.6 3.1 1.5 0.2\n",
- "4 5.0 3.6 1.4 0.2\n",
- "5 5.4 3.9 1.7 0.4\n",
- "6 4.6 3.4 1.4 0.3\n",
- "7 5.0 3.4 1.5 0.2\n",
- "8 4.4 2.9 1.4 0.2\n",
- "9 4.9 3.1 1.5 0.1\n",
- "10 5.4 3.7 1.5 0.2\n",
- "11 4.8 3.4 1.6 0.2\n",
- "12 4.8 3.0 1.4 0.1\n",
- "13 4.3 3.0 1.1 0.1\n",
- "14 5.8 4.0 1.2 0.2\n",
- "15 5.7 4.4 1.5 0.4\n",
- "16 5.4 3.9 1.3 0.4\n",
- "17 5.1 3.5 1.4 0.3\n",
- "18 5.7 3.8 1.7 0.3\n",
- "19 5.1 3.8 1.5 0.3\n",
- "20 5.4 3.4 1.7 0.2\n",
- "21 5.1 3.7 1.5 0.4\n",
- "22 4.6 3.6 1.0 0.2\n",
- "23 5.1 3.3 1.7 0.5\n",
- "24 4.8 3.4 1.9 0.2\n",
- "25 5.0 3.0 1.6 0.2\n",
- "26 5.0 3.4 1.6 0.4\n",
- "27 5.2 3.5 1.5 0.2\n",
- "28 5.2 3.4 1.4 0.2\n",
- "29 4.7 3.2 1.6 0.2\n",
- ".. ... ... ... ...\n",
- "120 6.9 3.2 5.7 2.3\n",
- "121 5.6 2.8 4.9 2.0\n",
- "122 7.7 2.8 6.7 2.0\n",
- "123 6.3 2.7 4.9 1.8\n",
- "124 6.7 3.3 5.7 2.1\n",
- "125 7.2 3.2 6.0 1.8\n",
- "126 6.2 2.8 4.8 1.8\n",
- "127 6.1 3.0 4.9 1.8\n",
- "128 6.4 2.8 5.6 2.1\n",
- "129 7.2 3.0 5.8 1.6\n",
- "130 7.4 2.8 6.1 1.9\n",
- "131 7.9 3.8 6.4 2.0\n",
- "132 6.4 2.8 5.6 2.2\n",
- "133 6.3 2.8 5.1 1.5\n",
- "134 6.1 2.6 5.6 1.4\n",
- "135 7.7 3.0 6.1 2.3\n",
- "136 6.3 3.4 5.6 2.4\n",
- "137 6.4 3.1 5.5 1.8\n",
- "138 6.0 3.0 4.8 1.8\n",
- "139 6.9 3.1 5.4 2.1\n",
- "140 6.7 3.1 5.6 2.4\n",
- "141 6.9 3.1 5.1 2.3\n",
- "142 5.8 2.7 5.1 1.9\n",
- "143 6.8 3.2 5.9 2.3\n",
- "144 6.7 3.3 5.7 2.5\n",
- "145 6.7 3.0 5.2 2.3\n",
- "146 6.3 2.5 5.0 1.9\n",
- "147 6.5 3.0 5.2 2.0\n",
- "148 6.2 3.4 5.4 2.3\n",
- "149 5.9 3.0 5.1 1.8\n",
- "\n",
- "[150 rows x 4 columns]"
- ]
- },
- "execution_count": 187,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "import pandas as pd\n",
- "\n",
- "df = pd.DataFrame(X, columns=headers)\n",
- "\n",
- "df"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This will give you a very user-friendly version of the data which you can manipulate using the methods in ```DataFrame```.\n",
- "\n",
- "The advantage of using a DataFrame over a list of lists or any other Python data structure is that it is much more versatile and easy to use."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " 5.1 | \n",
- " 3.5 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " 4.9 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " 4.7 | \n",
- " 3.2 | \n",
- " 1.3 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " 4.6 | \n",
- " 3.1 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " 5.0 | \n",
- " 3.6 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 5 | \n",
- " 5.4 | \n",
- " 3.9 | \n",
- " 1.7 | \n",
- " 0.4 | \n",
- "
\n",
- " \n",
- " | 6 | \n",
- " 4.6 | \n",
- " 3.4 | \n",
- " 1.4 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 7 | \n",
- " 5.0 | \n",
- " 3.4 | \n",
- " 1.5 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 8 | \n",
- " 4.4 | \n",
- " 2.9 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- "
\n",
- " \n",
- " | 9 | \n",
- " 4.9 | \n",
- " 3.1 | \n",
- " 1.5 | \n",
- " 0.1 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
- "0 5.1 3.5 1.4 0.2\n",
- "1 4.9 3.0 1.4 0.2\n",
- "2 4.7 3.2 1.3 0.2\n",
- "3 4.6 3.1 1.5 0.2\n",
- "4 5.0 3.6 1.4 0.2\n",
- "5 5.4 3.9 1.7 0.4\n",
- "6 4.6 3.4 1.4 0.3\n",
- "7 5.0 3.4 1.5 0.2\n",
- "8 4.4 2.9 1.4 0.2\n",
- "9 4.9 3.1 1.5 0.1"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return the first 10 rows in df\n",
- "### CODE HERE ###\n",
- "df[0:10]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 140 | \n",
- " 6.7 | \n",
- " 3.1 | \n",
- " 5.6 | \n",
- " 2.4 | \n",
- "
\n",
- " \n",
- " | 141 | \n",
- " 6.9 | \n",
- " 3.1 | \n",
- " 5.1 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 142 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 143 | \n",
- " 6.8 | \n",
- " 3.2 | \n",
- " 5.9 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 144 | \n",
- " 6.7 | \n",
- " 3.3 | \n",
- " 5.7 | \n",
- " 2.5 | \n",
- "
\n",
- " \n",
- " | 145 | \n",
- " 6.7 | \n",
- " 3.0 | \n",
- " 5.2 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 146 | \n",
- " 6.3 | \n",
- " 2.5 | \n",
- " 5.0 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 147 | \n",
- " 6.5 | \n",
- " 3.0 | \n",
- " 5.2 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 148 | \n",
- " 6.2 | \n",
- " 3.4 | \n",
- " 5.4 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 149 | \n",
- " 5.9 | \n",
- " 3.0 | \n",
- " 5.1 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
- "140 6.7 3.1 5.6 2.4\n",
- "141 6.9 3.1 5.1 2.3\n",
- "142 5.8 2.7 5.1 1.9\n",
- "143 6.8 3.2 5.9 2.3\n",
- "144 6.7 3.3 5.7 2.5\n",
- "145 6.7 3.0 5.2 2.3\n",
- "146 6.3 2.5 5.0 1.9\n",
- "147 6.5 3.0 5.2 2.0\n",
- "148 6.2 3.4 5.4 2.3\n",
- "149 5.9 3.0 5.1 1.8"
- ]
- },
- "execution_count": 12,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return the last 10 rows in df\n",
- "### CODE HERE ###\n",
- "df[-10:]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(150, 4)"
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Get to know the shape of the data\n",
- "### CODE HERE ###\n",
- "df.shape"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This tells us there are 150 rows and 4 columns in ```df```."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | count | \n",
- " 150.000000 | \n",
- " 150.000000 | \n",
- " 150.000000 | \n",
- " 150.000000 | \n",
- "
\n",
- " \n",
- " | mean | \n",
- " 5.843333 | \n",
- " 3.054000 | \n",
- " 3.758667 | \n",
- " 1.198667 | \n",
- "
\n",
- " \n",
- " | std | \n",
- " 0.828066 | \n",
- " 0.433594 | \n",
- " 1.764420 | \n",
- " 0.763161 | \n",
- "
\n",
- " \n",
- " | min | \n",
- " 4.300000 | \n",
- " 2.000000 | \n",
- " 1.000000 | \n",
- " 0.100000 | \n",
- "
\n",
- " \n",
- " | 25% | \n",
- " 5.100000 | \n",
- " 2.800000 | \n",
- " 1.600000 | \n",
- " 0.300000 | \n",
- "
\n",
- " \n",
- " | 50% | \n",
- " 5.800000 | \n",
- " 3.000000 | \n",
- " 4.350000 | \n",
- " 1.300000 | \n",
- "
\n",
- " \n",
- " | 75% | \n",
- " 6.400000 | \n",
- " 3.300000 | \n",
- " 5.100000 | \n",
- " 1.800000 | \n",
- "
\n",
- " \n",
- " | max | \n",
- " 7.900000 | \n",
- " 4.400000 | \n",
- " 6.900000 | \n",
- " 2.500000 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) \\\n",
- "count 150.000000 150.000000 150.000000 \n",
- "mean 5.843333 3.054000 3.758667 \n",
- "std 0.828066 0.433594 1.764420 \n",
- "min 4.300000 2.000000 1.000000 \n",
- "25% 5.100000 2.800000 1.600000 \n",
- "50% 5.800000 3.000000 4.350000 \n",
- "75% 6.400000 3.300000 5.100000 \n",
- "max 7.900000 4.400000 6.900000 \n",
- "\n",
- " petal width (cm) \n",
- "count 150.000000 \n",
- "mean 1.198667 \n",
- "std 0.763161 \n",
- "min 0.100000 \n",
- "25% 0.300000 \n",
- "50% 1.300000 \n",
- "75% 1.800000 \n",
- "max 2.500000 "
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Get a more detailed description of the dataset\n",
- "### CODE HERE ###\n",
- "df.describe()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "This gives us the statistics of each of features in detail. ```count``` is the number of values in that feature, ```mean``` and ```std``` are the mean and standard deviation and the other values are the minimum, maximum and values for each of the quartiles (1st, 2nd and 3rd).\n",
- "\n",
- "Other methods:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0 5.1\n",
- "1 4.9\n",
- "2 4.7\n",
- "3 4.6\n",
- "4 5.0\n",
- "5 5.4\n",
- "6 4.6\n",
- "7 5.0\n",
- "8 4.4\n",
- "9 4.9\n",
- "10 5.4\n",
- "11 4.8\n",
- "12 4.8\n",
- "13 4.3\n",
- "14 5.8\n",
- "15 5.7\n",
- "16 5.4\n",
- "17 5.1\n",
- "18 5.7\n",
- "19 5.1\n",
- "20 5.4\n",
- "21 5.1\n",
- "22 4.6\n",
- "23 5.1\n",
- "24 4.8\n",
- "25 5.0\n",
- "26 5.0\n",
- "27 5.2\n",
- "28 5.2\n",
- "29 4.7\n",
- " ... \n",
- "120 6.9\n",
- "121 5.6\n",
- "122 7.7\n",
- "123 6.3\n",
- "124 6.7\n",
- "125 7.2\n",
- "126 6.2\n",
- "127 6.1\n",
- "128 6.4\n",
- "129 7.2\n",
- "130 7.4\n",
- "131 7.9\n",
- "132 6.4\n",
- "133 6.3\n",
- "134 6.1\n",
- "135 7.7\n",
- "136 6.3\n",
- "137 6.4\n",
- "138 6.0\n",
- "139 6.9\n",
- "140 6.7\n",
- "141 6.9\n",
- "142 5.8\n",
- "143 6.8\n",
- "144 6.7\n",
- "145 6.7\n",
- "146 6.3\n",
- "147 6.5\n",
- "148 6.2\n",
- "149 5.9\n",
- "Name: sepal length (cm), dtype: float64"
- ]
- },
- "execution_count": 34,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Retrieve only sepal_length from df\n",
- "### CODE HERE ###\n",
- "df[df.columns[0]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "sepal length (cm) 5.0\n",
- "sepal width (cm) 3.6\n",
- "petal length (cm) 1.4\n",
- "petal width (cm) 0.2\n",
- "Name: 4, dtype: float64"
- ]
- },
- "execution_count": 53,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return 5th row of df\n",
- "### CODE HERE ###\n",
- "df.iloc[4]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "collapsed": false,
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "1.3999999999999999"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return petal length of 5th row of df\n",
- "### CODE HERE ###\n",
- "df.iloc[4,2]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 57,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sepal length (cm) | \n",
- " sepal width (cm) | \n",
- " petal length (cm) | \n",
- " petal width (cm) | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 41 | \n",
- " 4.5 | \n",
- " 2.3 | \n",
- " 1.3 | \n",
- " 0.3 | \n",
- "
\n",
- " \n",
- " | 53 | \n",
- " 5.5 | \n",
- " 2.3 | \n",
- " 4.0 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 54 | \n",
- " 6.5 | \n",
- " 2.8 | \n",
- " 4.6 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 55 | \n",
- " 5.7 | \n",
- " 2.8 | \n",
- " 4.5 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 57 | \n",
- " 4.9 | \n",
- " 2.4 | \n",
- " 3.3 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 59 | \n",
- " 5.2 | \n",
- " 2.7 | \n",
- " 3.9 | \n",
- " 1.4 | \n",
- "
\n",
- " \n",
- " | 60 | \n",
- " 5.0 | \n",
- " 2.0 | \n",
- " 3.5 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 62 | \n",
- " 6.0 | \n",
- " 2.2 | \n",
- " 4.0 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 67 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 4.1 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 68 | \n",
- " 6.2 | \n",
- " 2.2 | \n",
- " 4.5 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 69 | \n",
- " 5.6 | \n",
- " 2.5 | \n",
- " 3.9 | \n",
- " 1.1 | \n",
- "
\n",
- " \n",
- " | 71 | \n",
- " 6.1 | \n",
- " 2.8 | \n",
- " 4.0 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 72 | \n",
- " 6.3 | \n",
- " 2.5 | \n",
- " 4.9 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 73 | \n",
- " 6.1 | \n",
- " 2.8 | \n",
- " 4.7 | \n",
- " 1.2 | \n",
- "
\n",
- " \n",
- " | 76 | \n",
- " 6.8 | \n",
- " 2.8 | \n",
- " 4.8 | \n",
- " 1.4 | \n",
- "
\n",
- " \n",
- " | 79 | \n",
- " 5.7 | \n",
- " 2.6 | \n",
- " 3.5 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 80 | \n",
- " 5.5 | \n",
- " 2.4 | \n",
- " 3.8 | \n",
- " 1.1 | \n",
- "
\n",
- " \n",
- " | 81 | \n",
- " 5.5 | \n",
- " 2.4 | \n",
- " 3.7 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 82 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 3.9 | \n",
- " 1.2 | \n",
- "
\n",
- " \n",
- " | 83 | \n",
- " 6.0 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.6 | \n",
- "
\n",
- " \n",
- " | 87 | \n",
- " 6.3 | \n",
- " 2.3 | \n",
- " 4.4 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 89 | \n",
- " 5.5 | \n",
- " 2.5 | \n",
- " 4.0 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 90 | \n",
- " 5.5 | \n",
- " 2.6 | \n",
- " 4.4 | \n",
- " 1.2 | \n",
- "
\n",
- " \n",
- " | 92 | \n",
- " 5.8 | \n",
- " 2.6 | \n",
- " 4.0 | \n",
- " 1.2 | \n",
- "
\n",
- " \n",
- " | 93 | \n",
- " 5.0 | \n",
- " 2.3 | \n",
- " 3.3 | \n",
- " 1.0 | \n",
- "
\n",
- " \n",
- " | 94 | \n",
- " 5.6 | \n",
- " 2.7 | \n",
- " 4.2 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 98 | \n",
- " 5.1 | \n",
- " 2.5 | \n",
- " 3.0 | \n",
- " 1.1 | \n",
- "
\n",
- " \n",
- " | 99 | \n",
- " 5.7 | \n",
- " 2.8 | \n",
- " 4.1 | \n",
- " 1.3 | \n",
- "
\n",
- " \n",
- " | 101 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 106 | \n",
- " 4.9 | \n",
- " 2.5 | \n",
- " 4.5 | \n",
- " 1.7 | \n",
- "
\n",
- " \n",
- " | 108 | \n",
- " 6.7 | \n",
- " 2.5 | \n",
- " 5.8 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 111 | \n",
- " 6.4 | \n",
- " 2.7 | \n",
- " 5.3 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 113 | \n",
- " 5.7 | \n",
- " 2.5 | \n",
- " 5.0 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 114 | \n",
- " 5.8 | \n",
- " 2.8 | \n",
- " 5.1 | \n",
- " 2.4 | \n",
- "
\n",
- " \n",
- " | 118 | \n",
- " 7.7 | \n",
- " 2.6 | \n",
- " 6.9 | \n",
- " 2.3 | \n",
- "
\n",
- " \n",
- " | 119 | \n",
- " 6.0 | \n",
- " 2.2 | \n",
- " 5.0 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 121 | \n",
- " 5.6 | \n",
- " 2.8 | \n",
- " 4.9 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 122 | \n",
- " 7.7 | \n",
- " 2.8 | \n",
- " 6.7 | \n",
- " 2.0 | \n",
- "
\n",
- " \n",
- " | 123 | \n",
- " 6.3 | \n",
- " 2.7 | \n",
- " 4.9 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 126 | \n",
- " 6.2 | \n",
- " 2.8 | \n",
- " 4.8 | \n",
- " 1.8 | \n",
- "
\n",
- " \n",
- " | 128 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.1 | \n",
- "
\n",
- " \n",
- " | 130 | \n",
- " 7.4 | \n",
- " 2.8 | \n",
- " 6.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 132 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.2 | \n",
- "
\n",
- " \n",
- " | 133 | \n",
- " 6.3 | \n",
- " 2.8 | \n",
- " 5.1 | \n",
- " 1.5 | \n",
- "
\n",
- " \n",
- " | 134 | \n",
- " 6.1 | \n",
- " 2.6 | \n",
- " 5.6 | \n",
- " 1.4 | \n",
- "
\n",
- " \n",
- " | 142 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- " | 146 | \n",
- " 6.3 | \n",
- " 2.5 | \n",
- " 5.0 | \n",
- " 1.9 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
- "41 4.5 2.3 1.3 0.3\n",
- "53 5.5 2.3 4.0 1.3\n",
- "54 6.5 2.8 4.6 1.5\n",
- "55 5.7 2.8 4.5 1.3\n",
- "57 4.9 2.4 3.3 1.0\n",
- "59 5.2 2.7 3.9 1.4\n",
- "60 5.0 2.0 3.5 1.0\n",
- "62 6.0 2.2 4.0 1.0\n",
- "67 5.8 2.7 4.1 1.0\n",
- "68 6.2 2.2 4.5 1.5\n",
- "69 5.6 2.5 3.9 1.1\n",
- "71 6.1 2.8 4.0 1.3\n",
- "72 6.3 2.5 4.9 1.5\n",
- "73 6.1 2.8 4.7 1.2\n",
- "76 6.8 2.8 4.8 1.4\n",
- "79 5.7 2.6 3.5 1.0\n",
- "80 5.5 2.4 3.8 1.1\n",
- "81 5.5 2.4 3.7 1.0\n",
- "82 5.8 2.7 3.9 1.2\n",
- "83 6.0 2.7 5.1 1.6\n",
- "87 6.3 2.3 4.4 1.3\n",
- "89 5.5 2.5 4.0 1.3\n",
- "90 5.5 2.6 4.4 1.2\n",
- "92 5.8 2.6 4.0 1.2\n",
- "93 5.0 2.3 3.3 1.0\n",
- "94 5.6 2.7 4.2 1.3\n",
- "98 5.1 2.5 3.0 1.1\n",
- "99 5.7 2.8 4.1 1.3\n",
- "101 5.8 2.7 5.1 1.9\n",
- "106 4.9 2.5 4.5 1.7\n",
- "108 6.7 2.5 5.8 1.8\n",
- "111 6.4 2.7 5.3 1.9\n",
- "113 5.7 2.5 5.0 2.0\n",
- "114 5.8 2.8 5.1 2.4\n",
- "118 7.7 2.6 6.9 2.3\n",
- "119 6.0 2.2 5.0 1.5\n",
- "121 5.6 2.8 4.9 2.0\n",
- "122 7.7 2.8 6.7 2.0\n",
- "123 6.3 2.7 4.9 1.8\n",
- "126 6.2 2.8 4.8 1.8\n",
- "128 6.4 2.8 5.6 2.1\n",
- "130 7.4 2.8 6.1 1.9\n",
- "132 6.4 2.8 5.6 2.2\n",
- "133 6.3 2.8 5.1 1.5\n",
- "134 6.1 2.6 5.6 1.4\n",
- "142 5.8 2.7 5.1 1.9\n",
- "146 6.3 2.5 5.0 1.9"
- ]
- },
- "execution_count": 57,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Return all instances in df where sepal width is less than 2.9 and store it in a different DataFrame, df1\n",
- "### CODE HERE ###\n",
- "df1=df.loc[df['sepal width (cm)'] < 2.9]\n",
- "df1"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "sepal length (cm) 5.843333\n",
- "sepal width (cm) 3.054000\n",
- "petal length (cm) 3.758667\n",
- "petal width (cm) 1.198667\n",
- "dtype: float64"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Get mean of each column in df\n",
- "# Hint: use numpy.mean\n",
- "import numpy as np\n",
- "np.mean(df)\n",
- "### CODE HERE ###"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "While we can always get the mean using ```df.describe()```, ```df.apply()``` can be used to apply any function to each column, such as ```np.sum```, ```np.max``` and so on."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Using Matplotlib**\n",
- "\n",
- "It is important to visualise the data we have so we can get useful inferences from it, such as by plotting one feature against another. If we can guess beforehand which features are more likely to decide the value of the target variable, we'll be able to create a better model accordingly.\n",
- "\n",
- "```matplotlib.pyplot``` is the library for creating 2D graphs in Python. It mimics the functions used in Matlab, which is a much more comprehensive tool for a wide range of experimental purposes."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Only for jupyter-notebooks; don't bother about this line elsewhere.\n",
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We'll try to plot the features from the Iris dataset."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "sl = df['sepal length (cm)']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEKCAYAAAAB0GKPAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XucXHV9//HXm01CuoIhkG1LEnLRBsqGQkLWIIGa8EuA\noBQo6o+k2EYuzY8gUutPqRQpFEt/Wn20VqRCKoiVFCxXI1YuIjcLAhuJEAKBgBDW0LIECOFmLnx+\nf5wzyexkdue72Zmd2ez7+Xicx8z5fr/nez7zndn57LnMOYoIzMzMKtml3gGYmdnA4IRhZmZJnDDM\nzCyJE4aZmSVxwjAzsyROGGZmlsQJw8zMkjhhmJlZEicMMzNLMqTeAVTTqFGjYsKECfUOw8xswFi2\nbNnLEdGS0nanShgTJkygvb293mGYmQ0Ykp5PbetdUmZmlsQJw8zMkjhhmJlZEicMMzNL4oRhZmZJ\nnDDMzCxJzRKGpH0k3SXpCUmPS/qLMm0k6RuSVkt6VNLBRXULJD2dTwtqFaeZmaWp5RbGZuD/RsT+\nwAeBT0lqLWlzDDApnxYC3wKQtCdwAXAIMB24QNLIGsa6U1iyBCZMgF12yR6XLKl3RLVT6bWmjMWc\nOSBtm+bM6X0fZ54JQ4Zkyw8Zks1Xsx5g5MiucY4s+UsYM6Zr/Zgx2/cxeXLXNpMnb9+mJynrqPRa\nKo13iv54X6vxd5TSR1/fk7r8vUdEv0zAD4AjS8ouB+YXza8C9gbmA5d31667adq0aTFYXX11RHNz\nBGybmpuz8p1NpdeaMhazZ3etL0yzZ6f3sWhR+T4WLapOfUTEHnuUb7PHHln96NHl60eP3tZHa2v5\nNq2taeOdso5Kr6XSeKfoj/e1Gn9HKX309T2p5t870B6p3+OpDfsyAROANcB7S8pvAQ4vmr8TaAM+\nB3yxqPx84HOV1jOYE8b48eU/gOPH1zuy6qv0WlPGolx9YUrto6mpfJumpurUp8RZqT61TU9Slq/0\nWvoaQ+p70tf3tRp/R9WIsxrrSNWbhFHzg96SdgNuAD4TEa+XVpdZJHooL9f/Qkntkto7Ozv7FuwA\ntmZN78oHskqvtRpjkdLHli3l2xTK+1o/kPTHa+mP97W/Pjt9Va+/95omDElDyZLFkoi4sUyTDmCf\novmxwNoeyrcTEYsjoi0i2lpakq6ftVMaN6535QNZpddajbFI6aOpqXybQnlf6weS/ngt/fG+9tdn\np6/q9fdey7OkBFwBPBER/9hNs6XAn+VnS30QWB8RLwK3AUdJGpkf7D4qL7NuXHwxNDd3LWtuzsp3\nNpVea8pYzJ5dvu9CeUofCxeW76NQ3td6gD32KN+mUD56dPn64vLW0lNNKpT31Fd35ZVeS6XxTtEf\n72s1/o5S+ujre1K3v/fUfVe9nYDDyXYjPQosz6cPA2cAZ+RtBFwKPAM8BrQVLX8qsDqfTklZ52A+\nhhGRHfAaPz5Cyh53xgPeBZVea8pYlB4gLT0Am9LHokXb9t83NXU9YF2N+ojtD3wXDngXlB6ULj4Y\nXVB6kDX14Gpv1lHptVQa7xT98b5W4+8opY++vifV+nunF8cwlLXfObS1tYUvb25mlk7SsohoS2nr\nX3qbmVkSJwwzM0vihGFmZkmcMMzMLIkThpmZJXHCMDOzJE4YZmaWxAnDzMySOGGYmVkSJwwzM0vi\nhGFmZkmcMMzMLIkThpmZJXHCMDOzJE4YZmaWZEitOpZ0JXAs8FJEHFCm/vPAyUVx7A+0RMQrkp4D\nNgBbgM2p12o3M7PaqeUWxlXA3O4qI+KrETElIqYA5wL3RMQrRU2OyOudLMzMGkDNEkZE3Au8UrFh\nZj5wTa1iMTOzvqv7MQxJzWRbIjcUFQdwu6Rlkrq5vbyZmfWnmh3D6IU/Av6rZHfUYRGxVtJvA3dI\nejLfYtlOnlAWAowbN6720ZqZDVJ138IA5lGyOyoi1uaPLwE3AdO7WzgiFkdEW0S0tbS01DRQM7PB\nrK4JQ9IIYCbwg6Ky90javfAcOApYUZ8IzcysoJan1V4DzAJGSeoALgCGAkTEZXmzPwZuj4g3ixb9\nHeAmSYX4/j0ibq1VnGZmlqZmCSMi5ie0uYrs9NvismeBg2oTlZmZ7ahGOIZhZmYDgBOGmZklccIw\nM7MkThhmZpbECcPMzJI4YZiZWRInDDMzS+KEYWZmSZwwzMwsiROGmZklccIwM7MkThhmZpbECcPM\nzJI4YZiZWRInDDMzS+KEYWZmSWqWMCRdKeklSWVvrypplqT1kpbn098U1c2VtErSaklfqFWMZmaW\nrpZbGFcBcyu0uS8ipuTTRQCSmoBLgWOAVmC+pNYaxmlmZglqljAi4l7glR1YdDqwOiKejYiNwLXA\n8VUNzszMeq3exzAOlfRLST+WNDkvGwO8UNSmIy8rS9JCSe2S2js7O2sZq5nZoFbPhPELYHxEHARc\nAtycl6tM2+iuk4hYHBFtEdHW0tJSgzDNzAzqmDAi4vWIeCN//p/AUEmjyLYo9ilqOhZYW4cQzcys\nSN0ShqTflaT8+fQ8lnXAw8AkSRMlDQPmAUvrFaeZmWWG1KpjSdcAs4BRkjqAC4ChABFxGfAxYJGk\nzcDbwLyICGCzpLOA24Am4MqIeLxWcZqZWRpl39E7h7a2tmhvb693GGZmA4akZRHRltK23mdJmZnZ\nAOGEYWZmSZwwzMwsiROGmZklccIwM7MkThhmZpbECcPMzJI4YZiZWRInDDMzS+KEYWZmSZwwzMws\niROGmZklccIwM7MkThhmZpbECcPMzJLULGFIulLSS5JWdFN/sqRH8+l+SQcV1T0n6TFJyyX5Bhdm\nZg2gllsYVwFze6j/FTAzIg4EvgQsLqk/IiKmpN7Yw8zMaqtmt2iNiHslTeih/v6i2Z8DY2sVi5mZ\n9V2jHMM4Dfhx0XwAt0taJmlhnWIyM7MiNdvCSCXpCLKEcXhR8WERsVbSbwN3SHoyIu7tZvmFwEKA\ncePG1TxeM7PBqq5bGJIOBL4NHB8R6wrlEbE2f3wJuAmY3l0fEbE4Itoioq2lpaXWIZuZDVp1SxiS\nxgE3An8aEU8Vlb9H0u6F58BRQNkzrczMrP/UbJeUpGuAWcAoSR3ABcBQgIi4DPgbYC/gXyQBbM7P\niPod4Ka8bAjw7xFxa63iNDOzNLU8S2p+hfrTgdPLlD8LHLT9EmZmVk+NcpaUmZk1OCcMMzNL4oRh\nZmZJnDDMzCyJE4aZmSVxwjAzsyQ9JgxJTZJ+0l/BmJlZ4+oxYUTEFuAtSSP6KR4zM2tQKT/cewd4\nTNIdwJuFwog4u2ZRmZlZw0lJGD/KJzMzG8QqJoyI+K6k3wLGRcSqfojJzMwaUMWzpCT9EbAcuDWf\nnyJpaa0DMzOzxpJyWu2FZPejeA0gIpYDE2sYk5mZNaCUhLE5ItaXlEUtgjEzs8aVctB7haQ/AZok\nTQLOBu6vbVhmZtZoUrYwPg1MBn4DXAOsBz6T0rmkKyW9JKnsHfOU+Yak1ZIelXRwUd0CSU/n04KU\n9ZmZWe2kJIzfjYjzIuID+b2zvxgR7yT2fxUwt4f6Y4BJ+bQQ+BaApD3J7tB3CNnxkwskjUxc56C1\nZAlMmAC77JI9LlnStf7MM2HIEJCyxzPP7H0fleqrEeeYMVmMhWnMmO37qNQmpY85c7q2mTOna33K\neE2e3LWPyZN7V5+yjmrE2dfPRqUYUtaR8tmpxufLaigiepyAe4FngGuBM4E/qLRMyfITgBXd1F0O\nzC+aXwXsDcwHLu+uXXfTtGnTYrC6+uqI5uYI2DY1N2flERGLFnWtK0yLFqX3Uam+GnGOHl0+ztGj\nt/VRqU1KH7Nnl28ze3b6eLW2lm/T2ppWn7KOasTZ189GpRiq9dmpxufLeg9oj9Tv86RGMAw4DDgP\nWAO8kryCnhPGLcDhRfN3Am3A54AvFpWfD3yu0roGc8IYP778H/X48Vl9U1P5+qam9D4q1VcjznJ1\nhamgUptq9JEyXn2NoxrrqMb7WqmPlPGsxmenGp8v673eJIyKB70lHQ78YT7tkX/J37cDGzNluy9T\nFj2Ul4tvIdnuLMaNG1elsAaeNWt6Lt+ypXx9cXmlPirVp6hGH/0hZbwaYR3VeF+rEUc1PjsD5bMx\nmKUcw7gHOAFYDMyKiDMj4poqrb8D2Kdofiywtofy7UTE4siOrbS1tLRUKayBp7tcWShvaipfX1xe\nqY9K9Smq0Ud/SBmvRlhHNd7XasRRjc/OQPlsDGYpCWMv4CLgUOBWST+R9KUqrX8p8Gf52VIfBNZH\nxIvAbcBRkkbmB7uPysusGxdfDM3NXcuam7NygIULyy9XXF6pj0r11Yhz9OjyyxWXV2qT0sfs2eXb\nFMpTxqu1tXybQnml+pR1VCPOvn42KsWQso6Uz041Pl9WYyn7rYD9gTOAJcCvgHsSl7sGeBHYRLbV\ncFrezxl5vYBLyQ6qPwa0FS17KrA6n05JWd9gPoYRkR0cHD8+QsoeSw8WLlq0bX91U1PXA6OpfVSq\nr0acpQetiw9Wp7ZJ6aP0YG7xQdyItPEqPbBdOKCdWp+yjmrE2dfPRqUYUtaR8tmpxufLeodeHMNQ\n1r57kp4hO3vpZ2THLh6MiI1Vy1hV1NbWFu3t7fUOw8xswJC0LCLaUtqm/NJ7UkS828eYzMxsgEs5\nhjFa0k35L7b/R9INksbWPDIzM2soKQnjO2QHp0cDY4Af5mVmZjaIpCSMloj4TkRszqergMF7/qqZ\n2SCVkjBelvQJSU359AlgXa0DMzOzxpKSME4F/jfw32SnyH4sLzMzs0Ek5Z7ea4Dj+iEWMzNrYN0m\nDEnf6GnBiDi7+uGYmVmj6mkL40Syq9OOBF7tn3DMzKxR9ZQwXgfuJjul9oh+icbMzBpWTwnjMuBW\n4H1A8fU2RHap8ffVMC4zM2sw3Z4lFRHfiIj9gSsj4n1F08SIcLIwMxtkKp5WGxGL+iMQMzNrbCm/\nwzAzM3PCMDOzNE4YZmaWpKYJQ9JcSaskrZb0hTL1/yRpeT49Jem1orotRXVLaxmnmZlVlnIDpR0i\nqYns9qtHkt2e9WFJSyNiZaFNRPxlUftPA1OLung7IqbUKj4zM+udWm5hTAdWR8Sz+S1drwWO76H9\nfLJ7gJuZWQOqZcIYA7xQNN+Rl21H0nhgIvDTouLhktol/VzSCd2tRNLCvF17Z2dnNeI2M7Myapkw\nVKYsumk7D7g+IrYUlY3Lb0z+J8DXJb2/3IIRsTgi2iKiraXF93UyM6uVWiaMDmCfovmxwNpu2s6j\nZHdURKzNH58lu6bV1O0XMzOz/lLLhPEwMEnSREnDyJLCdmc7SdqP7Iq4DxSVjZS0a/58FHAYsLJ0\nWTMz6z81O0sqIjZLOgu4DWgiuybV45IuAtojopA85gPXRkTx7qr9gcslvUuW1L5cfHaVmZn1P3X9\nnh7Y2traor29vXJDMzMDQNKy/HhxRf6lt5mZJXHCMDOzJE4YZmaWxAnDzMySOGGYmVkSJwwzM0vi\nhGFmZkmcMMzMLIkThpmZJXHCMDOzJE4YZmaWxAnDzMySOGGYmVkSJwwzM0vihGFmZklqmjAkzZW0\nStJqSV8oU/9JSZ2SlufT6UV1CyQ9nU8LahmnmZlVVrM77klqAi4FjiS7v/fDkpaWuXPe9yPirJJl\n9wQuANqAAJbly75aq3jNzKxntdzCmA6sjohnI2IjcC1wfOKyRwN3RMQreZK4A5hbozjNzCxBLRPG\nGOCFovmOvKzURyU9Kul6Sfv0clkzM+sntUwYKlNWegPxHwITIuJA4CfAd3uxbNZQWiipXVJ7Z2fn\nDgdrZmY9q2XC6AD2KZofC6wtbhAR6yLiN/nsvwLTUpct6mNxRLRFRFtLS0tVAjczs+3VMmE8DEyS\nNFHSMGAesLS4gaS9i2aPA57In98GHCVppKSRwFF5mZmZ1UnNzpKKiM2SziL7om8CroyIxyVdBLRH\nxFLgbEnHAZuBV4BP5su+IulLZEkH4KKIeKVWsZqZWWWKKHtoYEBqa2uL9vb2eodhZjZgSFoWEW0p\nbf1LbzMzS+KEYWZmSZwwzMwsiROGmZklccIwM7MkThhmZpbECcPMzJI4YZiZWRInDDMzS+KEYWZm\nSZwwzMwsiROGmZklccIwM7MkThhmZpbECcPMzJI4YZiZWZKaJgxJcyWtkrRa0hfK1H9W0kpJj0q6\nU9L4orotkpbn09LSZc3MrH/V7BatkpqAS4EjgQ7gYUlLI2JlUbNHgLaIeEvSIuAfgJPyurcjYkqt\n4jMzs96p5RbGdGB1RDwbERuBa4HjixtExF0R8VY++3NgbA3jMTOzPqhlwhgDvFA035GXdec04MdF\n88MltUv6uaQTultI0sK8XXtnZ2ffIjYzs27VbJcUoDJlUbah9AmgDZhZVDwuItZKeh/wU0mPRcQz\n23UYsRhYDNDW1la2fzMz67tabmF0APsUzY8F1pY2kjQHOA84LiJ+UyiPiLX547PA3cDUGsZqZmYV\n1DJhPAxMkjRR0jBgHtDlbCdJU4HLyZLFS0XlIyXtmj8fBRwGFB8sNzOzflazXVIRsVnSWcBtQBNw\nZUQ8LukioD0ilgJfBXYDrpMEsCYijgP2By6X9C5ZUvtyydlVZmbWzxSx8+z2b2tri/b29nqHYWY2\nYEhaFhFtKW39S28zM0vihGFmZkmcMMzMLIkThpmZJXHCMDOzJE4YZmaWxAnDzMyS1PJaUmZmAGza\ntImOjg7eeeedeocyaA0fPpyxY8cydOjQHe7DCcPMaq6jo4Pdd9+dCRMmkF/VwfpRRLBu3To6OjqY\nOHHiDvfjXVJmVnPvvPMOe+21l5NFnUhir7326vMWnhOGmfULJ4v6qsb4O2GY2aBw8cUXM3nyZA48\n8ECmTJnCgw8+WNX+7777bo499tjk8r66+eabWbly2zVZZ82aRa2vpedjGGa203vggQe45ZZb+MUv\nfsGuu+7Kyy+/zMaNG+sdVp/cfPPNHHvssbS2tvbbOr2FYWYNZ8kSmDABdtkle1yypG/9vfjii4wa\nNYpdd90VgFGjRjF69GgAli1bxsyZM5k2bRpHH300L774IpD9x/6Zz3yGGTNmcMABB/DQQw8B8NBD\nDzFjxgymTp3KjBkzWLVqVXIcb775Jqeeeiof+MAHmDp1Kj/4wQ8AuOqqqzjxxBOZO3cukyZN4pxz\nztm6zBVXXMG+++7LrFmz+PM//3POOuss7r//fpYuXcrnP/95pkyZwjPPZDcjve6665g+fTr77rsv\n9913X98GrZyI2GmmadOmhZk1npUrVya3vfrqiObmCNg2NTdn5Ttqw4YNcdBBB8WkSZNi0aJFcffd\nd0dExMaNG+PQQw+Nl156KSIirr322jjllFMiImLmzJlx+umnR0TEPffcE5MnT46IiPXr18emTZsi\nIuKOO+6IE088MSIi7rrrrvjIRz6y3bqLy88999z43ve+FxERr776akyaNCneeOON+M53vhMTJ06M\n1157Ld5+++0YN25crFmzJn7961/H+PHjY926dbFx48Y4/PDD41Of+lRERCxYsCCuu+66reuZOXNm\nfPazn42IiB/96Ecxe/bs7WIp9z6Q3Z8o6Tu2prukJM0F/pnsBkrfjogvl9TvCvwbMA1YB5wUEc/l\ndecCpwFbgLMj4rZaxmpmjeG88+Ctt7qWvfVWVn7yyTvW52677cayZcu47777uOuuuzjppJP48pe/\nTFtbGytWrODII48EYMuWLey9995bl5s/fz4AH/rQh3j99dd57bXX2LBhAwsWLODpp59GEps2bUqO\n4/bbb2fp0qV87WtfA7Kzx9asWQPA7NmzGTFiBACtra08//zzvPzyy8ycOZM999wTgI9//OM89dRT\n3fZ/4oknAjBt2jSee+655LhS1WyXlKQm4FLgGKAVmC+pdGfbacCrEfF7wD8BX8mXbSW7petkYC7w\nL3l/NVFp83fOHJC2TXPm9G55gMmTu/YxeXLX+jPPhCFDsrohQ7L5UmPGdO1jzJjerWPYsK71w4Zt\nv45KbSqNRcp4VHodKWNRSUof1d7tYdWRf38ml6dqampi1qxZ/O3f/i3f/OY3ueGGG4gIJk+ezPLl\ny1m+fDmPPfYYt99++9ZlSs8sksT555/PEUccwYoVK/jhD3/Yq1NVI4Ibbrhh6/rWrFnD/vvvD7B1\nd1kh1s2bNxO9vMFdoY/C8tVWy2MY04HVEfFsRGwErgWOL2lzPPDd/Pn1wGxl79DxwLUR8ZuI+BWw\nOu+v6pYsgYUL4fnns43f55/P5gtfHnPmwJ13dl3mzju3fVFWWh6yL+6VJTeYXbly2xf6mWfCt74F\nW7Zk81u2ZPPFX3JjxsDatV37WLt225dtpXUMGwal/wht2tQ1IVRqU2ksUsaj0utIGYtKUvpIed+s\nPsaN6115ilWrVvH0009vnV++fDnjx49nv/32o7OzkwceeADIfpH++OOPb233/e9/H4Cf/exnjBgx\nghEjRrB+/XrG5B/Yq666qldxHH300VxyySVbE8EjjzzSY/vp06dzzz338Oqrr7J582ZuuOGGrXW7\n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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Create a plt.figure object\n",
- "fig = plt.figure('Sepal length vs y')\n",
- "\n",
- "ax0 = fig.add_subplot(111) # This means there's only 1 plot in the whole figure. 211 would mean 2 plots\n",
- "# and the top plot is being added. 212 means 2 plots and bottom plot is being added.\n",
- "ax0.scatter(sl, y, c = 'b', marker='o', label='Sepal length')\n",
- "ax0.set_xlabel('sepal length (cm)')\n",
- "ax0.set_ylabel('flower')\n",
- "ax0.legend()\n",
- "\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\nEqyIiBQ3KTwHTDOzqWY2ArgQWJvewMyOSysuAl4uYjwiIpJH0a4+cvd2M7sc+BVQBvzE3V8ys78G\nmt19LXCFmS0C2oH3gL8sVjwiIpKfucen+Qe2hoYGb25uLnUYIiKDipm1uHtDvnZ6R7OIiESUFERE\nJKKkICIiESUFERGJKCmIiEhESUFERCJKCiIiElFSEBGRiJKCiIhElBRERCSipCAiIhElBRERiSgp\niIhIRElBREQiSgoiIhJRUhARkYiSgoiIRJQUREQkUrTPaBaRD5e2tja2bNnCwYMHSx3Kh1pFRQWT\nJk2ivLy8V/srKYhIv9iyZQuVlZXU1NRgZqUO50PJ3dm5cydbtmxh6tSpvepD00ci0i8OHjzIuHHj\nlBBKyMwYN25cn16tKSmISL9RQii9vj4HSgoiMmR8+9vfZsaMGdTW1lJXV8czzzzTr/2vW7eOhQsX\nFlzfVw8//DCbNm2Kyk1NTTQ3N/f7OOm0piAiQ8KGDRt45JFHeP755xk5ciQ7duygtbW11GH1ycMP\nP8zChQuZPn36YRtTrxREpCTuugtqamDYsPD1rrv61t8777xDVVUVI0eOBKCqqorjjz8egJaWFhob\nG6mvr+ecc87hnXfeAcJ/3ldeeSVz587lxBNP5NlnnwXg2WefZe7cuZx88snMnTuXV155peA49u3b\nxxe/+EVmzZrFySefzM9//nMA7rjjDi644ALOPfdcpk2bxjXXXBPtc9ttt/Gxj32MpqYm/uqv/orL\nL7+cp59+mrVr13L11VdTV1fH66+/DsD999/P7Nmz+djHPsb69ev7dtCycfdBtdXX17uIDDybNm0q\nuO2aNe6jR7tDahs9OtT31p49e3zmzJk+bdo0X7Jkia9bt87d3VtbW/20007zbdu2ubv7vffe61/4\nwhfc3b2xsdG//OUvu7v7E0884TNmzHB39927d3tbW5u7uz/66KN+wQUXuLv7448/7uedd16XsdPr\nr7vuOv/pT3/q7u7vv/++T5s2zffu3eu33367T5061Xft2uUHDhzw6upqf/PNN/3tt9/2KVOm+M6d\nO721tdXPOOMMv+yyy9zd/ZJLLvH7778/GqexsdG/9rWvubv7L37xC1+wYEHWY5HtuQCavYBzrKaP\nROSwu/562L8/s27//lB/8cW96/OII46gpaWF9evX8/jjj/PZz36W733vezQ0NPDiiy9y1llnAdDR\n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\nkoKIiET+P27ChXPgCZ+jAAAAAElFTkSuQmCC\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot petal width vs y with blue o's and petal length vs y with red x's\n",
- "fig = plt.figure('Petal width vs y,Petal length vs y')\n",
- "\n",
- "### CODE HERE ###\n",
- "ax0 = fig.add_subplot(111)\n",
- "pw=df['petal width (cm)']\n",
- "pl=df['petal length (cm)']\n",
- "ax0.scatter(pw, y, c = 'b', marker='o', label='Sepal length')\n",
- "ax0.scatter(pl,y,c='r',marker='x',label='Petal length')\n",
- "ax0.set_xlabel('length/width')\n",
- "ax0.set_ylabel('flower')\n",
- "ax0.legend()\n",
- "\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEKCAYAAAARnO4WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X2UXFWZ7/Hvkw50eE0kyQo2mRCjdjRgSEgLksxASxAU\nEQV1AYt7B43XKBlRxjsyV1jcQZ3Mi6ALx7nBFY2KY8ZBgiCXi4owNKCJwQSiQCCNZhKIDU0IJoEA\nMZ0894+qajqdqjq7us45VafO77NWr6R2nTp71yE8feqpZ+9t7o6IiLS+UY0egIiIpEMBX0QkJxTw\nRURyQgFfRCQnFPBFRHJCAV9EJCcU8EVEckIBX0QkJxTwRURyYnSjBzDUhAkTfOrUqY0ehohIZqxd\nu/Z5d58YcmxTBfypU6eyZs2aRg9DRCQzzGxz6LFK6YiI5IQCvohITiQW8M1supmtG/Kz08wuT6o/\nERGpLrEcvrtvAGYBmFkb8Afg1lrPs2fPHrZs2cKrr74a8wgl1JgxY5g8eTIHHXRQo4ciInVI60vb\n+cDv3T34y4WSLVu2cMQRRzB16lTMLIGhSTXuzrZt29iyZQtveMMbGj0cEalDWjn8C4EflHvCzBaa\n2RozW7N169YDnn/11VcZP368gn2DmBnjx4/XJyyRFpB4wDezg4FzgZvLPe/uS929y927Jk4sX0qq\nYN9Yuv4iB+pf3s+qqavoGdXDqqmr6F/e3+ghRUojpfMe4CF3b/6rISISoH95PxsWbmDfy/sA2L15\nNxsWbgBg0sWTGjm0qtJI6VxEhXROVixevJjjjjuOmTNnMmvWLFavXh3r+Xt6ejjnnHOC2+t12223\nsX79+sHH3d3dmvAmUoONV20cDPYl+17ex8arNjZoRGESvcM3s0OBdwGfSLKfJK1atYo77riDhx56\niPb2dp5//nn+9Kc/NXpYdbnttts455xzmDFjRqOHIpJJu5/aXVN7s0j0Dt/dX3b38e6+I8l+hoo7\nr/bMM88wYcIE2tvbAZgwYQIdHR0ArF27ltNOO405c+Zw1lln8cwzzwCFO+bLL7+cuXPncvzxx/Pg\ngw8C8OCDDzJ37lxmz57N3Llz2bBhQ/A4du3axYIFC3j729/O7Nmz+fGPfwzAd7/7Xc4//3ze/e53\n8+Y3v5krrrhi8DXLli2js7OT7u5uPv7xj/OpT32KlStXcvvtt/O5z32OWbNm8fvf/x6Am2++mZNO\nOonOzk4eeOCBuq6ZSKtrn9JeU3uzaKmZtqW82u7Nu8Ffy6vVE/TPPPNMnn76aTo7O1m0aBH33Xcf\nUJgfcNlll7FixQrWrl3LggULuOqqqwZft2vXLlauXMmSJUtYsGABAG95y1u4//77efjhh/niF7/I\nlVdeGTyOxYsXc/rpp/PrX/+ae++9l8997nPs2rULgHXr1nHTTTfxyCOPcNNNN/H000/T19fHl770\nJX71q1/x85//nCeeeAKAuXPncu6553Lttdeybt063vjGNwIwMDDAgw8+yPXXX88XvvCFEV8vkTyY\ntngaow7dP3yOOnQU0xZPa9CIwjTV4mn1qpZXG+kXKYcffjhr167lgQce4N577+WCCy7gn/7pn+jq\n6uLRRx/lXe96FwB79+7l9a9//eDrLrroIgBOPfVUdu7cyfbt23nxxRe55JJLePLJJzEz9uzZEzyO\nu+66i9tvv53rrrsOKJSrPvXUUwDMnz+fsWPHAjBjxgw2b97M888/z2mnncZRRx0FwIc//GF6e3sr\nnv/8888HYM6cOWzatCl4XCJ5NOniSTzznWfYfs/2wbYjTzmyqb+whRYL+Enl1dra2uju7qa7u5u3\nve1t3HjjjcyZM4fjjjuOVatWlX3N8FJGM+Pqq6/mne98J7feeiubNm2iu7s7eAzuzi233ML06dP3\na1+9evVguqk01oGBAdw9/A3C4DlKrxeRynoX9e4X7AG237Od3kW9dC7pbNCoorVUSieJvNqGDRt4\n8sknBx+vW7eOY489lunTp7N169bBgL9nzx4ee+yxweNuuukmAH7xi18wduxYxo4dy44dOzjmmGOA\nQu69FmeddRZf//rXBwP5ww8/XPX4k046ifvuu48//vGPDAwMcMsttww+d8QRR/Diiy/W1L+IvKZv\naV9N7c2ipQJ+Enm1l156iUsuuYQZM2Ywc+ZM1q9fzzXXXMPBBx/MihUr+Nu//VtOOOEEZs2axcqV\nKwdf97rXvY65c+fyyU9+kmXLlgFwxRVX8PnPf5558+axd+/emsZx9dVXs2fPHmbOnMnxxx/P1Vdf\nXfX4Y445hiuvvJKTTz6ZM844gxkzZgymfS688EKuvfZaZs+ePfilrYjUoNL/vrX9b506q/Wjf5K6\nurp8eD34448/zlvf+tbgc/Qv72fjVRvZ/dRu2qe0M23xtNTzat3d3Vx33XV0dXWl2u9wL730Eocf\n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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot sepal length vs petal length for each instance\n",
- "fig = plt.figure('Sepal length vs petal length')\n",
- "\n",
- "### CODE HERE ###\n",
- "ax0=fig.add_subplot(111)\n",
- "\n",
- "ax0.scatter(sl,pl,c='m',marker='o',label='Sepal length')\n",
- "ax0.set_xlabel(\"sepal length\")\n",
- "ax0.set_ylabel(\"petal length\")\n",
- "ax0.legend()\n",
- "\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 168,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot sepal length as a line graph for each instance\n",
- "# Hint: use numpy.arange() for x axis\n",
- "\n",
- "fig = plt.figure('Sepal length')\n",
- "\n",
- "### CODE HERE ###\n",
- "import numpy as np\n",
- "ax0=fig.add_subplot(111)\n",
- "ax0.set_ylabel(\"sepal length\")\n",
- "ax0.set_xlabel(\"instance\")\n",
- "ax0.plot(sl,color='green')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Using Scikit-Learn**\n",
- "\n",
- "Scikit-Learn offers a variety of classifiers for learning the data and creating a model for it. This task is a classification task and hence a regression method such as Linear Regression cannot be used for it. We'll use Logistic Regression to create a classifier for this data. "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Before using a model on the data, we will need some data to test the model on. For this, we'll keep some data aside called the 'test set'.\n",
- "\n",
- "Also, we can have some problems in learning the data if the data is not randomly shuffled and chosen first. (More on this later)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": 204,
- "metadata": {
- "collapsed": false
- },
- "outputs": [],
- "source": [
- "# Join target variable to dataframe\n",
- "### CODE HERE ###\n",
- "from sklearn.datasets import load_iris\n",
- "import pandas as pd\n",
- "data = load_iris()\n",
- "X = data['data']\n",
- "header=data['feature_names']\n",
- "df=pd.DataFrame(X,columns=header)\n",
- "header=data['target']\n",
- "df2=pd.DataFrame(header,columns=['target'])\n",
- "df['target']=df2\n",
- "# Randomly shuffle dataframe\n",
- "### CODE HERE ###"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 205,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
- " intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
- " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
- " verbose=0, warm_start=False)"
- ]
- },
- "execution_count": 205,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "from sklearn.linear_model import LogisticRegression\n",
- "from sklearn.model_selection import train_test_split\n",
- "\n",
- "# We divide df into training and testing sets such that the training set is 80% of df and test set is 20%\n",
- "train, test = train_test_split(df, test_size=0.2)\n",
- "\n",
- "y_train = train['target']\n",
- "y_test = test['target']\n",
- "X_train = train[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']]\n",
- "X_test = test[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']]\n",
- "\n",
- "# Create a classifier\n",
- "clf = LogisticRegression()\n",
- "# Train it on the training set\n",
- "clf.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 206,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "array([1, 2, 2, 2, 0, 2, 1, 0, 1, 2, 2, 0, 1, 1, 2, 2, 0, 2, 0, 2, 0, 0, 2,\n",
- " 0, 0, 2, 2, 0, 2, 1])"
- ]
- },
- "execution_count": 206,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Calculate the predictions on the test set\n",
- "pred = clf.predict(X_test)\n",
- "\n",
- "pred"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 208,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0.96666666666666667"
- ]
- },
- "execution_count": 208,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "from sklearn.metrics import accuracy_score\n",
- "\n",
- "# Find the accuracy on the test set\n",
- "accuracy_score(pred, y_test)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Since the accuracy is high, we can assume this is a good model we have created. However, there are a lot of factors that decide how relevant the accuracy is to the actual performance of the model. (Again, more on this later!)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "**Saving data and model**\n",
- "\n",
- "To save the data, we'll use the csv format, which is quite popular with data scientists since it is easy to read from and write to. \n",
- "\n",
- "To store the model, we'll use the pickle module in python to save it to disk.\n",
- "\n",
- "Both of these shall be in the same directory as this."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 212,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Assn-03.ipynb Compare.ipynb dataframe.csv model\r\n"
- ]
- }
- ],
- "source": [
- "ls"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 211,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "import pickle\n",
- "\n",
- "# Save dataframe to csv\n",
- "### CODE HERE ###\n",
- "df.to_csv('dataframe.csv')\n",
- "# Save model to model.pkl\n",
- "### CODE HERE ###\n",
- "pickle_out = open(\"model\",\"wb\")\n",
- "pickle.dump(clf, pickle_out)\n",
- "pickle_out.close()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "It is recommended you practice these functions to get a good idea of how to create a model for a dataset in Python. Hope you enjoyed it!"
- ]
- }
- ],
- "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.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
diff --git a/python-assn/assn-03/Rohan Prabhu_dataframe.csv b/python-assn/assn-03/Rohan Prabhu_dataframe.csv
deleted file mode 100644
index 819dfde..0000000
--- a/python-assn/assn-03/Rohan Prabhu_dataframe.csv
+++ /dev/null
@@ -1,151 +0,0 @@
-,sepal length (cm),sepal width (cm),petal length (cm),petal width (cm),target
-0,5.1,3.5,1.4,0.2,0
-1,4.9,3.0,1.4,0.2,0
-2,4.7,3.2,1.3,0.2,0
-3,4.6,3.1,1.5,0.2,0
-4,5.0,3.6,1.4,0.2,0
-5,5.4,3.9,1.7,0.4,0
-6,4.6,3.4,1.4,0.3,0
-7,5.0,3.4,1.5,0.2,0
-8,4.4,2.9,1.4,0.2,0
-9,4.9,3.1,1.5,0.1,0
-10,5.4,3.7,1.5,0.2,0
-11,4.8,3.4,1.6,0.2,0
-12,4.8,3.0,1.4,0.1,0
-13,4.3,3.0,1.1,0.1,0
-14,5.8,4.0,1.2,0.2,0
-15,5.7,4.4,1.5,0.4,0
-16,5.4,3.9,1.3,0.4,0
-17,5.1,3.5,1.4,0.3,0
-18,5.7,3.8,1.7,0.3,0
-19,5.1,3.8,1.5,0.3,0
-20,5.4,3.4,1.7,0.2,0
-21,5.1,3.7,1.5,0.4,0
-22,4.6,3.6,1.0,0.2,0
-23,5.1,3.3,1.7,0.5,0
-24,4.8,3.4,1.9,0.2,0
-25,5.0,3.0,1.6,0.2,0
-26,5.0,3.4,1.6,0.4,0
-27,5.2,3.5,1.5,0.2,0
-28,5.2,3.4,1.4,0.2,0
-29,4.7,3.2,1.6,0.2,0
-30,4.8,3.1,1.6,0.2,0
-31,5.4,3.4,1.5,0.4,0
-32,5.2,4.1,1.5,0.1,0
-33,5.5,4.2,1.4,0.2,0
-34,4.9,3.1,1.5,0.1,0
-35,5.0,3.2,1.2,0.2,0
-36,5.5,3.5,1.3,0.2,0
-37,4.9,3.1,1.5,0.1,0
-38,4.4,3.0,1.3,0.2,0
-39,5.1,3.4,1.5,0.2,0
-40,5.0,3.5,1.3,0.3,0
-41,4.5,2.3,1.3,0.3,0
-42,4.4,3.2,1.3,0.2,0
-43,5.0,3.5,1.6,0.6,0
-44,5.1,3.8,1.9,0.4,0
-45,4.8,3.0,1.4,0.3,0
-46,5.1,3.8,1.6,0.2,0
-47,4.6,3.2,1.4,0.2,0
-48,5.3,3.7,1.5,0.2,0
-49,5.0,3.3,1.4,0.2,0
-50,7.0,3.2,4.7,1.4,1
-51,6.4,3.2,4.5,1.5,1
-52,6.9,3.1,4.9,1.5,1
-53,5.5,2.3,4.0,1.3,1
-54,6.5,2.8,4.6,1.5,1
-55,5.7,2.8,4.5,1.3,1
-56,6.3,3.3,4.7,1.6,1
-57,4.9,2.4,3.3,1.0,1
-58,6.6,2.9,4.6,1.3,1
-59,5.2,2.7,3.9,1.4,1
-60,5.0,2.0,3.5,1.0,1
-61,5.9,3.0,4.2,1.5,1
-62,6.0,2.2,4.0,1.0,1
-63,6.1,2.9,4.7,1.4,1
-64,5.6,2.9,3.6,1.3,1
-65,6.7,3.1,4.4,1.4,1
-66,5.6,3.0,4.5,1.5,1
-67,5.8,2.7,4.1,1.0,1
-68,6.2,2.2,4.5,1.5,1
-69,5.6,2.5,3.9,1.1,1
-70,5.9,3.2,4.8,1.8,1
-71,6.1,2.8,4.0,1.3,1
-72,6.3,2.5,4.9,1.5,1
-73,6.1,2.8,4.7,1.2,1
-74,6.4,2.9,4.3,1.3,1
-75,6.6,3.0,4.4,1.4,1
-76,6.8,2.8,4.8,1.4,1
-77,6.7,3.0,5.0,1.7,1
-78,6.0,2.9,4.5,1.5,1
-79,5.7,2.6,3.5,1.0,1
-80,5.5,2.4,3.8,1.1,1
-81,5.5,2.4,3.7,1.0,1
-82,5.8,2.7,3.9,1.2,1
-83,6.0,2.7,5.1,1.6,1
-84,5.4,3.0,4.5,1.5,1
-85,6.0,3.4,4.5,1.6,1
-86,6.7,3.1,4.7,1.5,1
-87,6.3,2.3,4.4,1.3,1
-88,5.6,3.0,4.1,1.3,1
-89,5.5,2.5,4.0,1.3,1
-90,5.5,2.6,4.4,1.2,1
-91,6.1,3.0,4.6,1.4,1
-92,5.8,2.6,4.0,1.2,1
-93,5.0,2.3,3.3,1.0,1
-94,5.6,2.7,4.2,1.3,1
-95,5.7,3.0,4.2,1.2,1
-96,5.7,2.9,4.2,1.3,1
-97,6.2,2.9,4.3,1.3,1
-98,5.1,2.5,3.0,1.1,1
-99,5.7,2.8,4.1,1.3,1
-100,6.3,3.3,6.0,2.5,2
-101,5.8,2.7,5.1,1.9,2
-102,7.1,3.0,5.9,2.1,2
-103,6.3,2.9,5.6,1.8,2
-104,6.5,3.0,5.8,2.2,2
-105,7.6,3.0,6.6,2.1,2
-106,4.9,2.5,4.5,1.7,2
-107,7.3,2.9,6.3,1.8,2
-108,6.7,2.5,5.8,1.8,2
-109,7.2,3.6,6.1,2.5,2
-110,6.5,3.2,5.1,2.0,2
-111,6.4,2.7,5.3,1.9,2
-112,6.8,3.0,5.5,2.1,2
-113,5.7,2.5,5.0,2.0,2
-114,5.8,2.8,5.1,2.4,2
-115,6.4,3.2,5.3,2.3,2
-116,6.5,3.0,5.5,1.8,2
-117,7.7,3.8,6.7,2.2,2
-118,7.7,2.6,6.9,2.3,2
-119,6.0,2.2,5.0,1.5,2
-120,6.9,3.2,5.7,2.3,2
-121,5.6,2.8,4.9,2.0,2
-122,7.7,2.8,6.7,2.0,2
-123,6.3,2.7,4.9,1.8,2
-124,6.7,3.3,5.7,2.1,2
-125,7.2,3.2,6.0,1.8,2
-126,6.2,2.8,4.8,1.8,2
-127,6.1,3.0,4.9,1.8,2
-128,6.4,2.8,5.6,2.1,2
-129,7.2,3.0,5.8,1.6,2
-130,7.4,2.8,6.1,1.9,2
-131,7.9,3.8,6.4,2.0,2
-132,6.4,2.8,5.6,2.2,2
-133,6.3,2.8,5.1,1.5,2
-134,6.1,2.6,5.6,1.4,2
-135,7.7,3.0,6.1,2.3,2
-136,6.3,3.4,5.6,2.4,2
-137,6.4,3.1,5.5,1.8,2
-138,6.0,3.0,4.8,1.8,2
-139,6.9,3.1,5.4,2.1,2
-140,6.7,3.1,5.6,2.4,2
-141,6.9,3.1,5.1,2.3,2
-142,5.8,2.7,5.1,1.9,2
-143,6.8,3.2,5.9,2.3,2
-144,6.7,3.3,5.7,2.5,2
-145,6.7,3.0,5.2,2.3,2
-146,6.3,2.5,5.0,1.9,2
-147,6.5,3.0,5.2,2.0,2
-148,6.2,3.4,5.4,2.3,2
-149,5.9,3.0,5.1,1.8,2
diff --git a/python-assn/assn-03/Rohan Prabhu_model b/python-assn/assn-03/Rohan Prabhu_model
deleted file mode 100644
index 5c83fae..0000000
Binary files a/python-assn/assn-03/Rohan Prabhu_model and /dev/null differ
diff --git a/python-assn/assn-03/Sahil_Jain.ipynb b/python-assn/assn-03/Samyak Jain-Assn-03.ipynb
old mode 100644
new mode 100755
similarity index 56%
rename from python-assn/assn-03/Sahil_Jain.ipynb
rename to python-assn/assn-03/Samyak Jain-Assn-03.ipynb
index 8ef6ab7..4a2b9db
--- a/python-assn/assn-03/Sahil_Jain.ipynb
+++ b/python-assn/assn-03/Samyak Jain-Assn-03.ipynb
@@ -28,7 +28,7 @@
},
{
"cell_type": "code",
- "execution_count": 315,
+ "execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
@@ -39,7 +39,7 @@
},
{
"cell_type": "code",
- "execution_count": 316,
+ "execution_count": 2,
"metadata": {},
"outputs": [
{
@@ -197,7 +197,7 @@
" [5.9, 3. , 5.1, 1.8]])"
]
},
- "execution_count": 316,
+ "execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
@@ -211,7 +211,7 @@
},
{
"cell_type": "code",
- "execution_count": 317,
+ "execution_count": 3,
"metadata": {
"scrolled": true
},
@@ -228,7 +228,7 @@
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
]
},
- "execution_count": 317,
+ "execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
@@ -242,7 +242,7 @@
},
{
"cell_type": "code",
- "execution_count": 318,
+ "execution_count": 4,
"metadata": {},
"outputs": [
{
@@ -254,7 +254,7 @@
" 'petal width (cm)']"
]
},
- "execution_count": 318,
+ "execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
@@ -277,7 +277,7 @@
},
{
"cell_type": "code",
- "execution_count": 319,
+ "execution_count": 5,
"metadata": {},
"outputs": [
{
@@ -807,7 +807,7 @@
"[150 rows x 4 columns]"
]
},
- "execution_count": 319,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
@@ -831,7 +831,7 @@
},
{
"cell_type": "code",
- "execution_count": 320,
+ "execution_count": 6,
"metadata": {},
"outputs": [
{
@@ -950,19 +950,20 @@
"9 4.9 3.1 1.5 0.1"
]
},
- "execution_count": 320,
+ "execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Return the first 10 rows in df\n",
- "df[:10]"
+ "### CODE HERE ###\n",
+ "df.head(10)"
]
},
{
"cell_type": "code",
- "execution_count": 321,
+ "execution_count": 14,
"metadata": {},
"outputs": [
{
@@ -1081,19 +1082,20 @@
"149 5.9 3.0 5.1 1.8"
]
},
- "execution_count": 321,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Return the last 10 rows in df\n",
- "df[-10:]"
+ "### CODE HERE ###\n",
+ "df.tail(10)"
]
},
{
"cell_type": "code",
- "execution_count": 322,
+ "execution_count": 16,
"metadata": {},
"outputs": [
{
@@ -1102,13 +1104,14 @@
"(150, 4)"
]
},
- "execution_count": 322,
+ "execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get to know the shape of the data\n",
+ "### CODE HERE ###\n",
"df.shape"
]
},
@@ -1121,7 +1124,7 @@
},
{
"cell_type": "code",
- "execution_count": 323,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
@@ -1160,21 +1163,21 @@
" 150.000000 | \n",
" \n",
" \n",
- " | Mean | \n",
+ " mean | \n",
" 5.843333 | \n",
" 3.054000 | \n",
" 3.758667 | \n",
" 1.198667 | \n",
"
\n",
" \n",
- " | Std | \n",
+ " std | \n",
" 0.828066 | \n",
" 0.433594 | \n",
" 1.764420 | \n",
" 0.763161 | \n",
"
\n",
" \n",
- " | Min | \n",
+ " min | \n",
" 4.300000 | \n",
" 2.000000 | \n",
" 1.000000 | \n",
@@ -1202,7 +1205,7 @@
" 1.800000 | \n",
"
\n",
" \n",
- " | Max | \n",
+ " max | \n",
" 7.900000 | \n",
" 4.400000 | \n",
" 6.900000 | \n",
@@ -1215,35 +1218,34 @@
"text/plain": [
" sepal length (cm) sepal width (cm) petal length (cm) \\\n",
"count 150.000000 150.000000 150.000000 \n",
- "Mean 5.843333 3.054000 3.758667 \n",
- "Std 0.828066 0.433594 1.764420 \n",
- "Min 4.300000 2.000000 1.000000 \n",
+ "mean 5.843333 3.054000 3.758667 \n",
+ "std 0.828066 0.433594 1.764420 \n",
+ "min 4.300000 2.000000 1.000000 \n",
"25% 5.100000 2.800000 1.600000 \n",
"50% 5.800000 3.000000 4.350000 \n",
"75% 6.400000 3.300000 5.100000 \n",
- "Max 7.900000 4.400000 6.900000 \n",
+ "max 7.900000 4.400000 6.900000 \n",
"\n",
" petal width (cm) \n",
"count 150.000000 \n",
- "Mean 1.198667 \n",
- "Std 0.763161 \n",
- "Min 0.100000 \n",
+ "mean 1.198667 \n",
+ "std 0.763161 \n",
+ "min 0.100000 \n",
"25% 0.300000 \n",
"50% 1.300000 \n",
"75% 1.800000 \n",
- "Max 2.500000 "
+ "max 2.500000 "
]
},
- "execution_count": 323,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get a more detailed description of the dataset\n",
- "Z = [df.count(),df.mean(),df.std(),df.min(),df.quantile(0.25),df.quantile(0.50),df.quantile(0.75),df.max()]\n",
- "a = pd.DataFrame(Z, columns=headers,index=['count','Mean','Std','Min','25%','50%','75%','Max'])\n",
- "a"
+ "### CODE HERE ###\n",
+ "df.describe()"
]
},
{
@@ -1257,7 +1259,7 @@
},
{
"cell_type": "code",
- "execution_count": 324,
+ "execution_count": 21,
"metadata": {},
"outputs": [
{
@@ -1327,61 +1329,68 @@
"Name: sepal length (cm), Length: 150, dtype: float64"
]
},
- "execution_count": 324,
+ "execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Retrieve only sepal_length from df\n",
- "df['sepal length (cm)']"
+ "### CODE HERE ###\n",
+ "df[df.columns[0]]"
]
},
{
"cell_type": "code",
- "execution_count": 325,
- "metadata": {
- "scrolled": true
- },
+ "execution_count": 24,
+ "metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "sepal length (cm) 5.0\n",
- "sepal width (cm) 3.6\n",
- "petal length (cm) 1.4\n",
- "petal width (cm) 0.2\n",
- "Name: 4, dtype: float64\n"
- ]
+ "data": {
+ "text/plain": [
+ "sepal length (cm) 5.0\n",
+ "sepal width (cm) 3.6\n",
+ "petal length (cm) 1.4\n",
+ "petal width (cm) 0.2\n",
+ "Name: 4, dtype: float64"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
}
],
"source": [
"# Return 5th row of df\n",
- "print(df.loc[4])"
+ "### CODE HERE ###\n",
+ "df.iloc[4]"
]
},
{
"cell_type": "code",
- "execution_count": 326,
+ "execution_count": 28,
"metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1.4\n"
- ]
+ "data": {
+ "text/plain": [
+ "1.4"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
}
],
"source": [
"# Return petal length of 5th row of df\n",
- "print(df.loc[4]['petal length (cm)'])"
+ "### CODE HERE ###\n",
+ "df.iloc[4]['petal length (cm)']"
]
},
{
"cell_type": "code",
- "execution_count": 327,
+ "execution_count": 30,
"metadata": {},
"outputs": [
{
@@ -1796,7 +1805,7 @@
"146 6.3 2.5 5.0 1.9"
]
},
- "execution_count": 327,
+ "execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
@@ -1804,69 +1813,27 @@
"source": [
"# Return all instances in df where sepal width is less than 2.9 and store it in a different DataFrame, df1\n",
"### CODE HERE ###\n",
- "df1 = df[(df['sepal width (cm)'] < 2.9)]\n",
+ "\n",
+ "df1=df[df[df.columns[1]]<2.9]\n",
"df1"
]
},
{
"cell_type": "code",
- "execution_count": 328,
+ "execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | sepal length (cm) | \n",
- " 5.843333 | \n",
- "
\n",
- " \n",
- " | sepal width (cm) | \n",
- " 3.054000 | \n",
- "
\n",
- " \n",
- " | petal length (cm) | \n",
- " 3.758667 | \n",
- "
\n",
- " \n",
- " | petal width (cm) | \n",
- " 1.198667 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
"text/plain": [
- " 0\n",
- "sepal length (cm) 5.843333\n",
- "sepal width (cm) 3.054000\n",
- "petal length (cm) 3.758667\n",
- "petal width (cm) 1.198667"
+ "sepal length (cm) 5.843333\n",
+ "sepal width (cm) 3.054000\n",
+ "petal length (cm) 3.758667\n",
+ "petal width (cm) 1.198667\n",
+ "dtype: float64"
]
},
- "execution_count": 328,
+ "execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
@@ -1875,9 +1842,9 @@
"# Get mean of each column in df\n",
"# Hint: use numpy.mean\n",
"import numpy as np\n",
- "Z = [np.mean(df['sepal length (cm)']),np.mean(df['sepal width (cm)']),np.mean(df['petal length (cm)']),np.mean(df['petal width (cm)'])]\n",
- "a = pd.DataFrame(Z,index=['sepal length (cm)','sepal width (cm)','petal length (cm)','petal width (cm)'])\n",
- "a\n"
+ "df.apply(np.mean)\n",
+ "\n",
+ "### CODE HERE ###"
]
},
{
@@ -1900,7 +1867,7 @@
},
{
"cell_type": "code",
- "execution_count": 329,
+ "execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
@@ -1919,7 +1886,7 @@
},
{
"cell_type": "code",
- "execution_count": 330,
+ "execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
@@ -1928,14 +1895,14 @@
},
{
"cell_type": "code",
- "execution_count": 331,
+ "execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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mDp1Kj/4wQ8AuOqqqzjxxBOZO3cukyZN4pxzztm6zBVXXMG+++7LrFmz+PM//3POOuss7r//fpYuXcrnP/95pkyZwjPPZDcjve6665g+fTr77rsv9913X98GrZyI2GmmadOmhZk1npUrVya3vfrqiObmCNg2NTdn5Ttqw4YNcdBBB8WkSZNi0aJFcffdd0dExMaNG+PQQw+Nl156KSIirr322jjllFMiImLmzJlx+umnR0TEPffcE5MnT46IiPXr18emTZsiIuKOO+6IE088MSIi7rrrrvjIRz6y3bqLy88999z43ve+FxERr776akyaNCneeOON+M53vhMTJ06M1157Ld5+++0YN25crFmzJn7961/H+PHjY926dbFx48Y4/PDD41Of+lRERCxYsCCuu+66reuZOXNmfPazn42IiB/96Ecxe/bs7WIp9z6Q3Z8o6Tu2prukJM0F/pnsBkrfjogvl9TvCvwbMA1YB5wUEc/ldecCpwFbgLMj4rZaxmpmjeG88+Ctt7qWvfVWVn7yyTvW52677cayZcu47777uOuuuzjppJP48pe/TFtbGytWrODII48EYMuWLey9995bl5s/fz4AH/rQh3j99dd57bXX2LBhAwsWLODpp59GEps2bUqO4/bbb2fp0qV87WtfA7Kzx9asWQPA7NmzGTFiBACtra08//zzvPzyy8ycOZM999wTgI9//OM89dRT3fZ/4oknAjBt2jSee+655LhS1WyXlKQm4FLgGKAVmC+pdGfbacCrEfF7wD8BX8mXbSW7petkYC7wL3l/NVFp83fOHJC2TXPm9G55gMmTu/YxeXLX+jPPhCFDsrohQ7L5UmPGdO1jzJjerWPYsK71w4Ztv45KbSqNRcp4VHodKWNRSUof1d7tYdWRf38ml6dqampi1qxZ/O3f/i3f/OY3ueGGG4gIJk+ezPLly1m+fDmPPfYYt99++9ZlSs8sksT555/PEUccwYoVK/jhD3/Yq1NVI4Ibbrhh6/rWrFnD/vvvD7B1d1kh1s2bNxO9vMFdoY/C8tVWy2MY04HVEfFsRGwErgWOL2lzPPDd/Pn1wGxl79DxwLUR8ZuI+BWwOu+v6pYsgYUL4fnns43f55/P5gtfHnPmwJ13dl3mzju3fVFWWh6yL+6VJTeYXbly2xf6mWfCt74FW7Zk81u2ZPPFX3JjxsDatV37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\n",
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -1958,14 +1925,14 @@
},
{
"cell_type": "code",
- "execution_count": 332,
+ "execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
- "image/png": "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\n",
+ "image/png": "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\n",
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -1975,56 +1942,50 @@
"source": [
"# Plot petal width vs y with blue o's and petal length vs y with red x's\n",
"fig = plt.figure('Petal width vs y')\n",
- "s2 = df['petal width (cm)']\n",
- "s3 = df['petal length (cm)']\n",
- "ax0 = fig.add_subplot(111)\n",
- "ax0.scatter(s2, y, c = 'b', marker='o', label='Petal width')\n",
- "ax0.scatter(s3, y, c = 'r', marker='x', label='Petal length')\n",
- "ax0.set_xlabel('length/width (cm)')\n",
+ "s2=df[df.columns[1]]\n",
+ "s3=df[df.columns[0]]\n",
+ "ax0 = fig.add_subplot(111) # This means there's only 1 plot in the whole figure. 211 would mean 2 plots\n",
+ "# and the top plot is being added. 212 means 2 plots and bottom plot is being added.\n",
+ "ax0.scatter(s2, y, c = 'b', marker='o', label='Sepal width')\n",
+ "ax0.set_xlabel(df.columns[1])\n",
"ax0.set_ylabel('flower')\n",
"ax0.legend()\n",
- "\n",
- "plt.show()"
+ "ax0.scatter(s3,y,c='r',marker='x')\n",
+ "plt.show()\n",
+ "### CODE HERE ###"
]
},
{
"cell_type": "code",
- "execution_count": 333,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEKCAYAAAARnO4WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3X+YVPV59/H3zaqLPyECF4oUEeOSoiLIViMkuorRxFgTTXKpj2215Ak1Nra2T7VVH5+YH6RptH2S2mIuGpLYlqZWjIbHGuOPsmqUYACJv8FIQQm6riiIqMjC/fwxZ9bdYWbOd3bOOfPr87quvWDOnDnnniPee+ae+/v9mrsjIiLNb1itAxARkWwo4YuItAglfBGRFqGELyLSIpTwRURahBK+iEiLUMIXEWkRSvgiIi1CCV9EpEXsVesABho9erRPnDix1mGIiDSMlStXvubuY0L2rauEP3HiRFasWFHrMEREGoaZbQjdVyUdEZEWoYQvItIiUkv4ZjbZzFYP+HnTzK5I63wiIlJeajV8d18DTAMwszbgN8AdlR5n586dbNy4kXfffTfhCCXU8OHDGT9+PHvvvXetQxGRKmT1pe1s4AV3D/5yIW/jxo0ceOCBTJw4ETNLITQpx93ZvHkzGzdu5Igjjqh1OCJShaxq+BcAPyr2hJnNNbMVZrait7d3j+ffffddRo0apWRfI2bGqFGj9AlLpAmknvDNbB/gHOC2Ys+7+wJ373T3zjFjireSKtnXlq6/yJ56FvWwbOIyuod1s2ziMnoW9dQ6pFhZlHQ+Aaxy9/q/GiIiAXoW9bBm7hp2v70bgB0bdrBm7hoAxl40tpahlZVFSedCSpRzGsW8efM4+uijmTp1KtOmTWP58uWJHr+7u5uzzz47eHu17rzzTp555pn+x11dXRrwJlKBddeu60/2ebvf3s26a9fVKKIwqd7hm9l+wMeAP0rzPGlatmwZd911F6tWraK9vZ3XXnuN9957r9ZhVeXOO+/k7LPPZsqUKbUORaQh7XhxR0Xb60Wqd/ju/ra7j3L3rWmeZ6Ck62ovv/wyo0ePpr29HYDRo0czbtw4AFauXMkpp5zCjBkzOPPMM3n55ZeB3B3zFVdcwcyZMznmmGN47LHHAHjssceYOXMm06dPZ+bMmaxZsyY4ju3btzNnzhx+53d+h+nTp/OTn/wEgB/+8Iecd955fPzjH+eoo47iqquu6n/NwoUL6ejooKuriy984Qt86Utf4tFHH2XJkiVceeWVTJs2jRdeeAGA2267jRNOOIGOjg4efvjhqq6ZSLNrn9Be0fZ60VQjbfN1tR0bdoC/X1erJumfccYZvPTSS3R0dHDZZZfx4IMPArnxAZdffjmLFy9m5cqVzJkzh2uvvbb/ddu3b+fRRx9l/vz5zJkzB4APfehDPPTQQzz++ON89atf5ZprrgmOY968eZx22mn88pe/ZOnSpVx55ZVs374dgNWrV3Prrbfy5JNPcuutt/LSSy+xadMmvva1r/GLX/yC++67j+eeew6AmTNncs4553DDDTewevVqjjzySAD6+vp47LHH+Pa3v81XvvKVIV8vkVYwad4khu03OH0O228Yk+ZNqlFEYepq8rRqlaurDfWLlAMOOICVK1fy8MMPs3TpUs4//3y++c1v0tnZyVNPPcXHPvYxAHbt2sWhhx7a/7oLL7wQgJNPPpk333yTLVu2sG3bNi6++GKef/55zIydO3cGx3HvvfeyZMkSbrzxRiDXrvriiy8CMHv2bEaMGAHAlClT2LBhA6+99hqnnHIKBx98MACf+9znWLt2bcnjn3feeQDMmDGD9evXB8cl0orGXjSWl3/wMlse2NK/7aCTDqrrL2yhyRJ+WnW1trY2urq66Orq4thjj+WWW25hxowZHH300SxbtqzoawpbGc2M6667jlNPPZU77riD9evX09XVFRyDu3P77bczefLkQduXL1/eX27Kx9rX14e7h79B6D9G/vUiUtray9YOSvYAWx7YwtrL1tIxv6NGUcVrqpJOGnW1NWvW8Pzzz/c/Xr16NYcffjiTJ0+mt7e3P+Hv3LmTp59+un+/W2+9FYCf//znjBgxghEjRrB161YOO+wwIFd7r8SZZ57JTTfd1J/IH3/88bL7n3DCCTz44IO88cYb9PX1cfvtt/c/d+CBB7Jt27aKzi8i79u0YFNF2+tFUyX8NOpqb731FhdffDFTpkxh6tSpPPPMM1x//fXss88+LF68mL/8y7/kuOOOY9q0aTz66KP9r/vABz7AzJkzufTSS1m4cCEAV111FVdffTWzZs1i165dFcVx3XXXsXPnTqZOncoxxxzDddddV3b/ww47jGuuuYYTTzyR008/nSlTpvSXfS64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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"# Plot sepal length vs petal length for each instance\n",
"fig = plt.figure('Sepal length vs petal length')\n",
- "ax0 = fig.add_subplot(111)\n",
- "ax0.scatter(sl, s3, c = 'm', marker='o', label='Sepal length')\n",
- "ax0.set_xlabel('sepal length (cm)')\n",
- "ax0.set_ylabel('petal length (cm)')\n",
- "ax0.legend()\n",
"\n",
- "plt.show()"
+ "### CODE HERE ###"
]
},
{
"cell_type": "code",
- "execution_count": 334,
+ "execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsvXl4HNWZ7/85vaq1WLIlW/KGZcCYMWDLYBxwuOwhcEOAMCQh9yYxZAYPmRnmlzuZkGUm+5PJnUkySSZzEyAhwcwwGUJCgCSEEIYQ9sU2EjarAe+2ZFm29lav5/dH9ylVVVd1V29az+d59Ejqpep0t3Te+n7f97xHSCnRaDQajQbAN9kD0Gg0Gs3UQQcFjUaj0RjooKDRaDQaAx0UNBqNRmOgg4JGo9FoDHRQ0Gg0Go2BDgoajUajMdBBQaPRaDQGOihoNBqNxiAw2QMolpaWFtne3j7Zw9BoNJppxdatW49IKecXelxVg4IQ4v8Afw5IYDtwvZRyzHR/GLgTOAPoAz4opdyd75jt7e1s2bKlamPWaDSamYgQYo+Xx1XNPhJCLAb+BlgnpTwV8APX2h72Z8AxKeWJwLeBf6rWeDQajUZTmGrnFAJARAgRAGqBg7b7rwQ2Z3/+OXCREEJUeUwajUajcaFqQUFKeQD4JrAXOAQMSCkftj1sMbAv+/gkMAA0V2tMGo1Go8lP1XIKQoi5ZJTAcqAfuEcI8WEp5X+YH+bw1Jxe3kKITcAmgOOOOy7nCYlEgv379zM2NpZzn2biqKmpYcmSJQSDwckeikajKZFqJpovBnZJKXsBhBD3AhsAc1DYDywF9mctpkbgqP1AUsrbgNsA1q1blxM09u/fT0NDA+3t7Wj3aXKQUtLX18f+/ftZvnz5ZA9Ho9GUSDVzCnuBs4QQtdk8wUXAq7bHPABszP58DfCoLGHXn7GxMZqbm3VAmESEEDQ3N2u1ptFMc6qZU3iOTPJ4G5lyVB9wmxDiK0KIK7IPux1oFkK8Cfwt8JlSz6cDwuSjPwONZvpT1XUKUsovAl+03fwF0/1jwPurOQaNRqMplq0Ht5KSKdYvXj/ZQ5lwdJuLCvG1r32NU045hdWrV9PR0cFzzz1X0eM/9thjXH755Z5vL5f77ruPV155xfj9/PPP14sGNbOGTz78ST71+09N9jAmhWnX5mIq8swzz/DrX/+abdu2EQ6HOXLkCPF4fLKHVRb33Xcfl19+OatWrZrsoWg0E87hkcPUheomexiTglYKFeDQoUO0tLQQDocBaGlpYdGiRQBs3bqV8847jzPOOIN3v/vdHDp0CMhceX/iE59gw4YNnHrqqTz//PMAPP/882zYsIG1a9eyYcMGXn/9dc/jGBkZ4WMf+xhnnnkma9eu5f777wfgjjvu4Oqrr+bSSy9lxYoV3HzzzcZzbr/9dk466STOP/98brjhBv76r/+ap59+mgceeIBPfepTdHR08NZbbwFwzz33sH79ek466SSeeOKJ8t84jWaK0hftI56a3hd2pTLjlMInHvoEnd2dFT1mR1sH37n0O673X3LJJXzlK1/hpJNO4uKLL+aDH/wg5513HolEgptuuon777+f+fPnc/fdd/P3f//3/PjHPwYyk/jTTz/N448/zsc+9jF27NjBySefzOOPP04gEOCRRx7hc5/7HL/4xS88jfNrX/saF154IT/+8Y/p7+9n/fr1XHzxxQB0dnby4osvEg6HWblyJTfddBN+v5+vfvWrbNu2jYaGBi688ELWrFnDhg0buOKKK7j88su55pprjOMnk0mef/55HnzwQb785S/zyCOPlPGuajRTEyklR6NHmReZN9lDmRRmXFCYDOrr69m6dStPPPEEf/jDH/jgBz/I//2//5d169axY8cO3vWudwGQSqVYuHCh8bwPfehDAJx77rkMDg7S39/P0NAQGzduZOfOnQghSCQSnsfx8MMP88ADD/DNb34TyJTq7t27F4CLLrqIxsZGAFatWsWePXs4cuQI5513HvPmZf743//+9/PGG2+4Hv/qq68G4IwzzmD37t2ex6XRTCcGY4Mk00liydhkD2VSmHFBId8VfTXx+/2cf/75nH/++Zx22mls3ryZM844g1NOOYVnnnnG8Tn2Ek4hBJ///Oe54IIL+OUvf8nu3bs5//zzPY9BSskvfvELVq5cabn9ueeeM6wtNdZkMkmxS0LUMdTzNZqZSF+0D2DW2kc6p1ABXn/9dXbu3Gn83tnZybJly1i5ciW9vb1GUEgkErz88svG4+6++24AnnzySRobG2lsbGRgYIDFixcDmVxAMbz73e/me9/7njHZv/jii3kfv379ev74xz9y7NgxksmkxaZqaGhgaGioqPNrNDOBvlEdFDRl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\n",
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
"text/plain": [
- ""
+ ""
]
},
"metadata": {},
@@ -2034,16 +1995,10 @@
"source": [
"# Plot sepal length as a line graph for each instance\n",
"# Hint: use numpy.arange() for x axis\n",
- "number = np.arange(150)\n",
- "s1 = df['sepal length (cm)']\n",
- "fig = plt.figure('Sepal length')\n",
- "ax0 = fig.add_subplot(111)\n",
- "ax0.plot(number, s1, c = 'g', label='Sepal length')\n",
- "ax0.set_xlabel('instance')\n",
- "ax0.set_ylabel('sepal length (cm)')\n",
- "ax0.legend()\n",
- "\n",
+ "plt.plot(s2,np.arange(150))\n",
+ "plt.figure(figsize=(15,20))\n",
"plt.show()\n",
+ "\n",
"### CODE HERE ###"
]
},
@@ -2067,7 +2022,7 @@
},
{
"cell_type": "code",
- "execution_count": 335,
+ "execution_count": 71,
"metadata": {},
"outputs": [
{
@@ -2100,243 +2055,243 @@
" \n",
" \n",
" \n",
- " | 131 | \n",
- " 7.9 | \n",
- " 3.8 | \n",
- " 6.4 | \n",
- " 2.0 | \n",
+ " 62 | \n",
+ " 6.0 | \n",
+ " 2.2 | \n",
+ " 4.0 | \n",
+ " 1.0 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 9 | \n",
- " 4.9 | \n",
+ " 141 | \n",
+ " 6.9 | \n",
" 3.1 | \n",
- " 1.5 | \n",
- " 0.1 | \n",
- " 0 | \n",
+ " 5.1 | \n",
+ " 2.3 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 55 | \n",
- " 5.7 | \n",
- " 2.8 | \n",
- " 4.5 | \n",
- " 1.3 | \n",
+ " 115 | \n",
+ " 6.4 | \n",
+ " 3.2 | \n",
+ " 5.3 | \n",
+ " 2.3 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 128 | \n",
- " 6.4 | \n",
- " 2.8 | \n",
- " 5.6 | \n",
- " 2.1 | \n",
- " 2 | \n",
+ " 65 | \n",
+ " 6.7 | \n",
+ " 3.1 | \n",
+ " 4.4 | \n",
+ " 1.4 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 121 | \n",
- " 5.6 | \n",
- " 2.8 | \n",
- " 4.9 | \n",
- " 2.0 | \n",
- " 2 | \n",
+ " 6 | \n",
+ " 4.6 | \n",
+ " 3.4 | \n",
+ " 1.4 | \n",
+ " 0.3 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 114 | \n",
- " 5.8 | \n",
- " 2.8 | \n",
+ " 21 | \n",
" 5.1 | \n",
- " 2.4 | \n",
- " 2 | \n",
+ " 3.7 | \n",
+ " 1.5 | \n",
+ " 0.4 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 43 | \n",
- " 5.0 | \n",
- " 3.5 | \n",
- " 1.6 | \n",
- " 0.6 | \n",
+ " 149 | \n",
+ " 5.9 | \n",
+ " 3.0 | \n",
+ " 5.1 | \n",
+ " 1.8 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 103 | \n",
- " 6.3 | \n",
- " 2.9 | \n",
- " 5.6 | \n",
- " 1.8 | \n",
- " 2 | \n",
+ " 98 | \n",
+ " 5.1 | \n",
+ " 2.5 | \n",
+ " 3.0 | \n",
+ " 1.1 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 14 | \n",
- " 5.8 | \n",
- " 4.0 | \n",
- " 1.2 | \n",
+ " 42 | \n",
+ " 4.4 | \n",
+ " 3.2 | \n",
+ " 1.3 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 96 | \n",
- " 5.7 | \n",
- " 2.9 | \n",
- " 4.2 | \n",
- " 1.3 | \n",
- " 1 | \n",
+ " 68 | \n",
+ " 6.2 | \n",
+ " 2.2 | \n",
+ " 4.5 | \n",
+ " 1.5 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 67 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 4.1 | \n",
+ " 22 | \n",
+ " 4.6 | \n",
+ " 3.6 | \n",
" 1.0 | \n",
- " 1 | \n",
+ " 0.2 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 140 | \n",
- " 6.7 | \n",
- " 3.1 | \n",
- " 5.6 | \n",
- " 2.4 | \n",
- " 2 | \n",
+ " 36 | \n",
+ " 5.5 | \n",
+ " 3.5 | \n",
+ " 1.3 | \n",
+ " 0.2 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 85 | \n",
- " 6.0 | \n",
- " 3.4 | \n",
- " 4.5 | \n",
- " 1.6 | \n",
+ " 97 | \n",
+ " 6.2 | \n",
+ " 2.9 | \n",
+ " 4.3 | \n",
+ " 1.3 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 149 | \n",
- " 5.9 | \n",
- " 3.0 | \n",
- " 5.1 | \n",
- " 1.8 | \n",
- " 2 | \n",
+ " 16 | \n",
+ " 5.4 | \n",
+ " 3.9 | \n",
+ " 1.3 | \n",
+ " 0.4 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 59 | \n",
+ " 145 | \n",
+ " 6.7 | \n",
+ " 3.0 | \n",
" 5.2 | \n",
- " 2.7 | \n",
- " 3.9 | \n",
- " 1.4 | \n",
+ " 2.3 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 56 | \n",
- " 6.3 | \n",
- " 3.3 | \n",
- " 4.7 | \n",
+ " 46 | \n",
+ " 5.1 | \n",
+ " 3.8 | \n",
" 1.6 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " | 63 | \n",
- " 6.1 | \n",
- " 2.9 | \n",
- " 4.7 | \n",
- " 1.4 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " | 10 | \n",
- " 5.4 | \n",
- " 3.7 | \n",
- " 1.5 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 105 | \n",
- " 7.6 | \n",
+ " 77 | \n",
+ " 6.7 | \n",
" 3.0 | \n",
- " 6.6 | \n",
- " 2.1 | \n",
- " 2 | \n",
+ " 5.0 | \n",
+ " 1.7 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 29 | \n",
+ " 56 | \n",
+ " 6.3 | \n",
+ " 3.3 | \n",
" 4.7 | \n",
- " 3.2 | \n",
" 1.6 | \n",
- " 0.2 | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " | 143 | \n",
- " 6.8 | \n",
- " 3.2 | \n",
- " 5.9 | \n",
- " 2.3 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 45 | \n",
- " 4.8 | \n",
+ " 116 | \n",
+ " 6.5 | \n",
" 3.0 | \n",
- " 1.4 | \n",
- " 0.3 | \n",
+ " 5.5 | \n",
+ " 1.8 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 129 | \n",
+ " 79 | \n",
+ " 5.7 | \n",
+ " 2.6 | \n",
+ " 3.5 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 109 | \n",
" 7.2 | \n",
- " 3.0 | \n",
- " 5.8 | \n",
- " 1.6 | \n",
- " 2 | \n",
+ " 3.6 | \n",
+ " 6.1 | \n",
+ " 2.5 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 122 | \n",
- " 7.7 | \n",
- " 2.8 | \n",
- " 6.7 | \n",
- " 2.0 | \n",
+ " 107 | \n",
+ " 7.3 | \n",
+ " 2.9 | \n",
+ " 6.3 | \n",
+ " 1.8 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 68 | \n",
- " 6.2 | \n",
- " 2.2 | \n",
- " 4.5 | \n",
- " 1.5 | \n",
+ " 25 | \n",
+ " 5.0 | \n",
+ " 3.0 | \n",
+ " 1.6 | \n",
+ " 0.2 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 1 | \n",
- " 4.9 | \n",
- " 3.0 | \n",
- " 1.4 | \n",
+ " 3 | \n",
+ " 4.6 | \n",
+ " 3.1 | \n",
+ " 1.5 | \n",
" 0.2 | \n",
- " 0 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 95 | \n",
- " 5.7 | \n",
- " 3.0 | \n",
- " 4.2 | \n",
- " 1.2 | \n",
+ " 128 | \n",
+ " 6.4 | \n",
+ " 2.8 | \n",
+ " 5.6 | \n",
+ " 2.1 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 125 | \n",
- " 7.2 | \n",
- " 3.2 | \n",
- " 6.0 | \n",
- " 1.8 | \n",
+ " 90 | \n",
+ " 5.5 | \n",
+ " 2.6 | \n",
+ " 4.4 | \n",
+ " 1.2 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 18 | \n",
- " 5.7 | \n",
- " 3.8 | \n",
- " 1.7 | \n",
- " 0.3 | \n",
+ " 11 | \n",
+ " 4.8 | \n",
+ " 3.4 | \n",
+ " 1.6 | \n",
+ " 0.2 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 140 | \n",
+ " 6.7 | \n",
+ " 3.1 | \n",
+ " 5.6 | \n",
+ " 2.4 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 112 | \n",
- " 6.8 | \n",
- " 3.0 | \n",
- " 5.5 | \n",
- " 2.1 | \n",
+ " 146 | \n",
+ " 6.3 | \n",
+ " 2.5 | \n",
+ " 5.0 | \n",
+ " 1.9 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 43 | \n",
+ " 5.0 | \n",
+ " 3.5 | \n",
+ " 1.6 | \n",
+ " 0.6 | \n",
" 2 | \n",
"
\n",
" \n",
@@ -2348,243 +2303,243 @@
" | ... | \n",
"
\n",
" \n",
- " | 28 | \n",
- " 5.2 | \n",
- " 3.4 | \n",
- " 1.4 | \n",
- " 0.2 | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " | 116 | \n",
- " 6.5 | \n",
- " 3.0 | \n",
+ " 89 | \n",
" 5.5 | \n",
- " 1.8 | \n",
- " 2 | \n",
- "
\n",
- " \n",
- " | 71 | \n",
- " 6.1 | \n",
- " 2.8 | \n",
+ " 2.5 | \n",
" 4.0 | \n",
" 1.3 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 32 | \n",
- " 5.2 | \n",
- " 4.1 | \n",
+ " 61 | \n",
+ " 5.9 | \n",
+ " 3.0 | \n",
+ " 4.2 | \n",
" 1.5 | \n",
- " 0.1 | \n",
- " 0 | \n",
- "
\n",
- " \n",
- " | 79 | \n",
- " 5.7 | \n",
- " 2.6 | \n",
- " 3.5 | \n",
- " 1.0 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 0 | \n",
- " 5.1 | \n",
- " 3.5 | \n",
- " 1.4 | \n",
+ " 14 | \n",
+ " 5.8 | \n",
+ " 4.0 | \n",
+ " 1.2 | \n",
" 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 26 | \n",
+ " 49 | \n",
" 5.0 | \n",
- " 3.4 | \n",
- " 1.6 | \n",
- " 0.4 | \n",
+ " 3.3 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 76 | \n",
+ " 6.8 | \n",
+ " 2.8 | \n",
+ " 4.8 | \n",
+ " 1.4 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 102 | \n",
- " 7.1 | \n",
- " 3.0 | \n",
- " 5.9 | \n",
- " 2.1 | \n",
- " 2 | \n",
+ " 47 | \n",
+ " 4.6 | \n",
+ " 3.2 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 101 | \n",
- " 5.8 | \n",
- " 2.7 | \n",
- " 5.1 | \n",
- " 1.9 | \n",
- " 2 | \n",
+ " 120 | \n",
+ " 6.9 | \n",
+ " 3.2 | \n",
+ " 5.7 | \n",
+ " 2.3 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 106 | \n",
- " 4.9 | \n",
- " 2.5 | \n",
- " 4.5 | \n",
- " 1.7 | \n",
+ " 130 | \n",
+ " 7.4 | \n",
+ " 2.8 | \n",
+ " 6.1 | \n",
+ " 1.9 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 62 | \n",
+ " 85 | \n",
" 6.0 | \n",
- " 2.2 | \n",
- " 4.0 | \n",
- " 1.0 | \n",
- " 1 | \n",
+ " 3.4 | \n",
+ " 4.5 | \n",
+ " 1.6 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 8 | \n",
- " 4.4 | \n",
- " 2.9 | \n",
+ " 50 | \n",
+ " 7.0 | \n",
+ " 3.2 | \n",
+ " 4.7 | \n",
" 1.4 | \n",
- " 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 12 | \n",
- " 4.8 | \n",
+ " 84 | \n",
+ " 5.4 | \n",
" 3.0 | \n",
- " 1.4 | \n",
- " 0.1 | \n",
- " 0 | \n",
+ " 4.5 | \n",
+ " 1.5 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " | 90 | \n",
- " 5.5 | \n",
- " 2.6 | \n",
- " 4.4 | \n",
- " 1.2 | \n",
+ " 71 | \n",
+ " 6.1 | \n",
+ " 2.8 | \n",
+ " 4.0 | \n",
+ " 1.3 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 24 | \n",
- " 4.8 | \n",
- " 3.4 | \n",
- " 1.9 | \n",
- " 0.2 | \n",
- " 0 | \n",
+ " 13 | \n",
+ " 4.3 | \n",
+ " 3.0 | \n",
+ " 1.1 | \n",
+ " 0.1 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 48 | \n",
- " 5.3 | \n",
- " 3.7 | \n",
+ " 72 | \n",
+ " 6.3 | \n",
+ " 2.5 | \n",
+ " 4.9 | \n",
" 1.5 | \n",
- " 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 53 | \n",
- " 5.5 | \n",
- " 2.3 | \n",
- " 4.0 | \n",
- " 1.3 | \n",
+ " 95 | \n",
+ " 5.7 | \n",
+ " 3.0 | \n",
+ " 4.2 | \n",
+ " 1.2 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 51 | \n",
- " 6.4 | \n",
- " 3.2 | \n",
- " 4.5 | \n",
- " 1.5 | \n",
- " 1 | \n",
+ " 102 | \n",
+ " 7.1 | \n",
+ " 3.0 | \n",
+ " 5.9 | \n",
+ " 2.1 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 133 | \n",
- " 6.3 | \n",
+ " 126 | \n",
+ " 6.2 | \n",
" 2.8 | \n",
- " 5.1 | \n",
- " 1.5 | \n",
+ " 4.8 | \n",
+ " 1.8 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 108 | \n",
+ " 6.7 | \n",
+ " 2.5 | \n",
+ " 5.8 | \n",
+ " 1.8 | \n",
" 2 | \n",
"
\n",
" \n",
- " | 2 | \n",
- " 4.7 | \n",
- " 3.2 | \n",
- " 1.3 | \n",
- " 0.2 | \n",
+ " 31 | \n",
+ " 5.4 | \n",
+ " 3.4 | \n",
+ " 1.5 | \n",
+ " 0.4 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 25 | \n",
- " 5.0 | \n",
- " 3.0 | \n",
- " 1.6 | \n",
- " 0.2 | \n",
+ " 117 | \n",
+ " 7.7 | \n",
+ " 3.8 | \n",
+ " 6.7 | \n",
+ " 2.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 61 | \n",
- " 5.9 | \n",
- " 3.0 | \n",
- " 4.2 | \n",
- " 1.5 | \n",
- " 1 | \n",
+ " 111 | \n",
+ " 6.4 | \n",
+ " 2.7 | \n",
+ " 5.3 | \n",
+ " 1.9 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 27 | \n",
- " 5.2 | \n",
- " 3.5 | \n",
- " 1.5 | \n",
+ " 8 | \n",
+ " 4.4 | \n",
+ " 2.9 | \n",
+ " 1.4 | \n",
" 0.2 | \n",
- " 0 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 87 | \n",
- " 6.3 | \n",
- " 2.3 | \n",
- " 4.4 | \n",
- " 1.3 | \n",
+ " 9 | \n",
+ " 4.9 | \n",
+ " 3.1 | \n",
+ " 1.5 | \n",
+ " 0.1 | \n",
" 1 | \n",
"
\n",
" \n",
- " | 84 | \n",
- " 5.4 | \n",
+ " 112 | \n",
+ " 6.8 | \n",
" 3.0 | \n",
- " 4.5 | \n",
- " 1.5 | \n",
- " 1 | \n",
+ " 5.5 | \n",
+ " 2.1 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 77 | \n",
- " 6.7 | \n",
- " 3.0 | \n",
- " 5.0 | \n",
- " 1.7 | \n",
- " 1 | \n",
+ " 59 | \n",
+ " 5.2 | \n",
+ " 2.7 | \n",
+ " 3.9 | \n",
+ " 1.4 | \n",
+ " 0 | \n",
"
\n",
" \n",
- " | 47 | \n",
+ " 64 | \n",
+ " 5.6 | \n",
+ " 2.9 | \n",
+ " 3.6 | \n",
+ " 1.3 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 91 | \n",
+ " 6.1 | \n",
+ " 3.0 | \n",
" 4.6 | \n",
- " 3.2 | \n",
" 1.4 | \n",
- " 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 40 | \n",
- " 5.0 | \n",
+ " 27 | \n",
+ " 5.2 | \n",
" 3.5 | \n",
- " 1.3 | \n",
- " 0.3 | \n",
+ " 1.5 | \n",
+ " 0.2 | \n",
" 0 | \n",
"
\n",
" \n",
- " | 16 | \n",
- " 5.4 | \n",
- " 3.9 | \n",
- " 1.3 | \n",
- " 0.4 | \n",
- " 0 | \n",
+ " 28 | \n",
+ " 5.2 | \n",
+ " 3.4 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ " 2 | \n",
"
\n",
" \n",
- " | 97 | \n",
- " 6.2 | \n",
- " 2.9 | \n",
- " 4.3 | \n",
- " 1.3 | \n",
+ " 20 | \n",
+ " 5.4 | \n",
+ " 3.4 | \n",
+ " 1.7 | \n",
+ " 0.2 | \n",
" 1 | \n",
"
\n",
" \n",
@@ -2594,152 +2549,152 @@
],
"text/plain": [
" sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n",
- "131 7.9 3.8 6.4 2.0 \n",
- "9 4.9 3.1 1.5 0.1 \n",
- "55 5.7 2.8 4.5 1.3 \n",
+ "62 6.0 2.2 4.0 1.0 \n",
+ "141 6.9 3.1 5.1 2.3 \n",
+ "115 6.4 3.2 5.3 2.3 \n",
+ "65 6.7 3.1 4.4 1.4 \n",
+ "6 4.6 3.4 1.4 0.3 \n",
+ "21 5.1 3.7 1.5 0.4 \n",
+ "149 5.9 3.0 5.1 1.8 \n",
+ "98 5.1 2.5 3.0 1.1 \n",
+ "42 4.4 3.2 1.3 0.2 \n",
+ "68 6.2 2.2 4.5 1.5 \n",
+ "22 4.6 3.6 1.0 0.2 \n",
+ "36 5.5 3.5 1.3 0.2 \n",
+ "97 6.2 2.9 4.3 1.3 \n",
+ "16 5.4 3.9 1.3 0.4 \n",
+ "145 6.7 3.0 5.2 2.3 \n",
+ "46 5.1 3.8 1.6 0.2 \n",
+ "77 6.7 3.0 5.0 1.7 \n",
+ "56 6.3 3.3 4.7 1.6 \n",
+ "116 6.5 3.0 5.5 1.8 \n",
+ "79 5.7 2.6 3.5 1.0 \n",
+ "109 7.2 3.6 6.1 2.5 \n",
+ "107 7.3 2.9 6.3 1.8 \n",
+ "25 5.0 3.0 1.6 0.2 \n",
+ "3 4.6 3.1 1.5 0.2 \n",
"128 6.4 2.8 5.6 2.1 \n",
- "121 5.6 2.8 4.9 2.0 \n",
- "114 5.8 2.8 5.1 2.4 \n",
+ "90 5.5 2.6 4.4 1.2 \n",
+ "11 4.8 3.4 1.6 0.2 \n",
+ "140 6.7 3.1 5.6 2.4 \n",
+ "146 6.3 2.5 5.0 1.9 \n",
"43 5.0 3.5 1.6 0.6 \n",
- "103 6.3 2.9 5.6 1.8 \n",
+ ".. ... ... ... ... \n",
+ "89 5.5 2.5 4.0 1.3 \n",
+ "61 5.9 3.0 4.2 1.5 \n",
"14 5.8 4.0 1.2 0.2 \n",
- "96 5.7 2.9 4.2 1.3 \n",
- "67 5.8 2.7 4.1 1.0 \n",
- "140 6.7 3.1 5.6 2.4 \n",
+ "49 5.0 3.3 1.4 0.2 \n",
+ "76 6.8 2.8 4.8 1.4 \n",
+ "47 4.6 3.2 1.4 0.2 \n",
+ "120 6.9 3.2 5.7 2.3 \n",
+ "130 7.4 2.8 6.1 1.9 \n",
"85 6.0 3.4 4.5 1.6 \n",
- "149 5.9 3.0 5.1 1.8 \n",
- "59 5.2 2.7 3.9 1.4 \n",
- "56 6.3 3.3 4.7 1.6 \n",
- "63 6.1 2.9 4.7 1.4 \n",
- "10 5.4 3.7 1.5 0.2 \n",
- "105 7.6 3.0 6.6 2.1 \n",
- "29 4.7 3.2 1.6 0.2 \n",
- "143 6.8 3.2 5.9 2.3 \n",
- "45 4.8 3.0 1.4 0.3 \n",
- "129 7.2 3.0 5.8 1.6 \n",
- "122 7.7 2.8 6.7 2.0 \n",
- "68 6.2 2.2 4.5 1.5 \n",
- "1 4.9 3.0 1.4 0.2 \n",
- "95 5.7 3.0 4.2 1.2 \n",
- "125 7.2 3.2 6.0 1.8 \n",
- "18 5.7 3.8 1.7 0.3 \n",
- "112 6.8 3.0 5.5 2.1 \n",
- ".. ... ... ... ... \n",
- "28 5.2 3.4 1.4 0.2 \n",
- "116 6.5 3.0 5.5 1.8 \n",
+ "50 7.0 3.2 4.7 1.4 \n",
+ "84 5.4 3.0 4.5 1.5 \n",
"71 6.1 2.8 4.0 1.3 \n",
- "32 5.2 4.1 1.5 0.1 \n",
- "79 5.7 2.6 3.5 1.0 \n",
- "0 5.1 3.5 1.4 0.2 \n",
- "26 5.0 3.4 1.6 0.4 \n",
+ "13 4.3 3.0 1.1 0.1 \n",
+ "72 6.3 2.5 4.9 1.5 \n",
+ "95 5.7 3.0 4.2 1.2 \n",
"102 7.1 3.0 5.9 2.1 \n",
- "101 5.8 2.7 5.1 1.9 \n",
- "106 4.9 2.5 4.5 1.7 \n",
- "62 6.0 2.2 4.0 1.0 \n",
+ "126 6.2 2.8 4.8 1.8 \n",
+ "108 6.7 2.5 5.8 1.8 \n",
+ "31 5.4 3.4 1.5 0.4 \n",
+ "117 7.7 3.8 6.7 2.2 \n",
+ "111 6.4 2.7 5.3 1.9 \n",
"8 4.4 2.9 1.4 0.2 \n",
- "12 4.8 3.0 1.4 0.1 \n",
- "90 5.5 2.6 4.4 1.2 \n",
- "24 4.8 3.4 1.9 0.2 \n",
- "48 5.3 3.7 1.5 0.2 \n",
- "53 5.5 2.3 4.0 1.3 \n",
- "51 6.4 3.2 4.5 1.5 \n",
- "133 6.3 2.8 5.1 1.5 \n",
- "2 4.7 3.2 1.3 0.2 \n",
- "25 5.0 3.0 1.6 0.2 \n",
- "61 5.9 3.0 4.2 1.5 \n",
+ "9 4.9 3.1 1.5 0.1 \n",
+ "112 6.8 3.0 5.5 2.1 \n",
+ "59 5.2 2.7 3.9 1.4 \n",
+ "64 5.6 2.9 3.6 1.3 \n",
+ "91 6.1 3.0 4.6 1.4 \n",
"27 5.2 3.5 1.5 0.2 \n",
- "87 6.3 2.3 4.4 1.3 \n",
- "84 5.4 3.0 4.5 1.5 \n",
- "77 6.7 3.0 5.0 1.7 \n",
- "47 4.6 3.2 1.4 0.2 \n",
- "40 5.0 3.5 1.3 0.3 \n",
- "16 5.4 3.9 1.3 0.4 \n",
- "97 6.2 2.9 4.3 1.3 \n",
+ "28 5.2 3.4 1.4 0.2 \n",
+ "20 5.4 3.4 1.7 0.2 \n",
"\n",
" target \n",
- "131 2 \n",
- "9 0 \n",
- "55 1 \n",
- "128 2 \n",
- "121 2 \n",
- "114 2 \n",
- "43 0 \n",
- "103 2 \n",
+ "62 2 \n",
+ "141 1 \n",
+ "115 1 \n",
+ "65 0 \n",
+ "6 0 \n",
+ "21 1 \n",
+ "149 0 \n",
+ "98 0 \n",
+ "42 0 \n",
+ "68 2 \n",
+ "22 2 \n",
+ "36 1 \n",
+ "97 1 \n",
+ "16 0 \n",
+ "145 1 \n",
+ "46 0 \n",
+ "77 0 \n",
+ "56 2 \n",
+ "116 0 \n",
+ "79 1 \n",
+ "109 1 \n",
+ "107 2 \n",
+ "25 1 \n",
+ "3 1 \n",
+ "128 1 \n",
+ "90 2 \n",
+ "11 2 \n",
+ "140 0 \n",
+ "146 1 \n",
+ "43 2 \n",
+ ".. ... \n",
+ "89 1 \n",
+ "61 1 \n",
"14 0 \n",
- "96 1 \n",
- "67 1 \n",
- "140 2 \n",
- "85 1 \n",
- "149 2 \n",
- "59 1 \n",
- "56 1 \n",
- "63 1 \n",
- "10 0 \n",
- "105 2 \n",
- "29 0 \n",
- "143 2 \n",
- "45 0 \n",
- "129 2 \n",
- "122 2 \n",
- "68 1 \n",
- "1 0 \n",
+ "49 1 \n",
+ "76 0 \n",
+ "47 1 \n",
+ "120 0 \n",
+ "130 2 \n",
+ "85 0 \n",
+ "50 0 \n",
+ "84 1 \n",
+ "71 1 \n",
+ "13 2 \n",
+ "72 0 \n",
"95 1 \n",
- "125 2 \n",
- "18 0 \n",
+ "102 0 \n",
+ "126 1 \n",
+ "108 2 \n",
+ "31 0 \n",
+ "117 0 \n",
+ "111 2 \n",
+ "8 2 \n",
+ "9 1 \n",
"112 2 \n",
- ".. ... \n",
- "28 0 \n",
- "116 2 \n",
- "71 1 \n",
- "32 0 \n",
- "79 1 \n",
- "0 0 \n",
- "26 0 \n",
- "102 2 \n",
- "101 2 \n",
- "106 2 \n",
- "62 1 \n",
- "8 0 \n",
- "12 0 \n",
- "90 1 \n",
- "24 0 \n",
- "48 0 \n",
- "53 1 \n",
- "51 1 \n",
- "133 2 \n",
- "2 0 \n",
- "25 0 \n",
- "61 1 \n",
+ "59 0 \n",
+ "64 0 \n",
+ "91 0 \n",
"27 0 \n",
- "87 1 \n",
- "84 1 \n",
- "77 1 \n",
- "47 0 \n",
- "40 0 \n",
- "16 0 \n",
- "97 1 \n",
+ "28 2 \n",
+ "20 1 \n",
"\n",
"[150 rows x 5 columns]"
]
},
- "execution_count": 335,
+ "execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Join target variable to dataframe\n",
+ "### CODE HERE ###\n",
"df['target']=y\n",
"# Randomly shuffle dataframe\n",
- "import pandas as pd\n",
- "import numpy as np\n",
- "df = shuffle(df)\n",
+ "### CODE HERE ###\n",
+ "df=df.sample(frac=1)\n",
"df"
]
},
{
"cell_type": "code",
- "execution_count": 336,
+ "execution_count": 73,
"metadata": {},
"outputs": [
{
@@ -2751,7 +2706,7 @@
" verbose=0, warm_start=False)"
]
},
- "execution_count": 336,
+ "execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
@@ -2776,17 +2731,17 @@
},
{
"cell_type": "code",
- "execution_count": 337,
+ "execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "array([1, 0, 2, 2, 0, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 1, 0, 0, 2,\n",
- " 2, 2, 1, 0, 1, 1, 0, 2])"
+ "array([2, 1, 0, 0, 2, 1, 0, 2, 2, 0, 1, 0, 0, 1, 0, 2, 0, 2, 0, 0, 2, 0,\n",
+ " 1, 0, 0, 2, 1, 0, 0, 0])"
]
},
- "execution_count": 337,
+ "execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
@@ -2800,16 +2755,16 @@
},
{
"cell_type": "code",
- "execution_count": 338,
+ "execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "0.9666666666666667"
+ "0.2"
]
},
- "execution_count": 338,
+ "execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
@@ -2843,51 +2798,26 @@
},
{
"cell_type": "code",
- "execution_count": 345,
+ "execution_count": null,
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " Volume in drive C is Latitude\n",
- " Volume Serial Number is CAE2-B882\n",
- "\n",
- " Directory of C:\\Users\\Sahil JJ\\Desktop\\Python\\Machine\\Assignments\\QSTP-ML-master\\python-assn\\assn-03\n",
- "\n",
- "28-05-2018 18:32 .\n",
- "28-05-2018 18:32 ..\n",
- "27-05-2018 15:06 .ipynb_checkpoints\n",
- "28-05-2018 18:31 169,595 Assn-03.ipynb\n",
- "28-05-2018 18:24 3,419 dataframe\n",
- "28-05-2018 18:32 3,419 dataframe.csv\n",
- "27-05-2018 15:06 2,558 Iris.csv\n",
- "28-05-2018 18:32 924 model.pkl\n",
- " 5 File(s) 179,915 bytes\n",
- " 3 Dir(s) 49,560,604,672 bytes free\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"ls"
]
},
{
"cell_type": "code",
- "execution_count": 347,
+ "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import pickle\n",
"\n",
"# Save dataframe to csv\n",
- "df.to_csv('dataframe.csv')\n",
+ "### CODE HERE ###\n",
"\n",
"# Save model to model.pkl\n",
- "filename = 'model.pkl'\n",
- "outfile = open('model.pkl','wb')\n",
- "pickle.dump(clf,outfile)\n",
- "outfile.close()"
+ "### CODE HERE ###"
]
},
{
diff --git a/python-assn/assn-03/dataframe.csv b/python-assn/assn-03/dataframe.csv
deleted file mode 100644
index 1734607..0000000
--- a/python-assn/assn-03/dataframe.csv
+++ /dev/null
@@ -1,151 +0,0 @@
-,sepal length (cm),sepal width (cm),petal length (cm),petal width (cm),target
-131,7.9,3.8,6.4,2.0,2
-9,4.9,3.1,1.5,0.1,0
-55,5.7,2.8,4.5,1.3,1
-128,6.4,2.8,5.6,2.1,2
-121,5.6,2.8,4.9,2.0,2
-114,5.8,2.8,5.1,2.4,2
-43,5.0,3.5,1.6,0.6,0
-103,6.3,2.9,5.6,1.8,2
-14,5.8,4.0,1.2,0.2,0
-96,5.7,2.9,4.2,1.3,1
-67,5.8,2.7,4.1,1.0,1
-140,6.7,3.1,5.6,2.4,2
-85,6.0,3.4,4.5,1.6,1
-149,5.9,3.0,5.1,1.8,2
-59,5.2,2.7,3.9,1.4,1
-56,6.3,3.3,4.7,1.6,1
-63,6.1,2.9,4.7,1.4,1
-10,5.4,3.7,1.5,0.2,0
-105,7.6,3.0,6.6,2.1,2
-29,4.7,3.2,1.6,0.2,0
-143,6.8,3.2,5.9,2.3,2
-45,4.8,3.0,1.4,0.3,0
-129,7.2,3.0,5.8,1.6,2
-122,7.7,2.8,6.7,2.0,2
-68,6.2,2.2,4.5,1.5,1
-1,4.9,3.0,1.4,0.2,0
-95,5.7,3.0,4.2,1.2,1
-125,7.2,3.2,6.0,1.8,2
-18,5.7,3.8,1.7,0.3,0
-112,6.8,3.0,5.5,2.1,2
-78,6.0,2.9,4.5,1.5,1
-22,4.6,3.6,1.0,0.2,0
-107,7.3,2.9,6.3,1.8,2
-54,6.5,2.8,4.6,1.5,1
-64,5.6,2.9,3.6,1.3,1
-49,5.0,3.3,1.4,0.2,0
-35,5.0,3.2,1.2,0.2,0
-127,6.1,3.0,4.9,1.8,2
-34,4.9,3.1,1.5,0.1,0
-99,5.7,2.8,4.1,1.3,1
-76,6.8,2.8,4.8,1.4,1
-115,6.4,3.2,5.3,2.3,2
-31,5.4,3.4,1.5,0.4,0
-60,5.0,2.0,3.5,1.0,1
-81,5.5,2.4,3.7,1.0,1
-138,6.0,3.0,4.8,1.8,2
-7,5.0,3.4,1.5,0.2,0
-123,6.3,2.7,4.9,1.8,2
-20,5.4,3.4,1.7,0.2,0
-145,6.7,3.0,5.2,2.3,2
-110,6.5,3.2,5.1,2.0,2
-132,6.4,2.8,5.6,2.2,2
-70,5.9,3.2,4.8,1.8,1
-108,6.7,2.5,5.8,1.8,2
-124,6.7,3.3,5.7,2.1,2
-4,5.0,3.6,1.4,0.2,0
-109,7.2,3.6,6.1,2.5,2
-117,7.7,3.8,6.7,2.2,2
-58,6.6,2.9,4.6,1.3,1
-30,4.8,3.1,1.6,0.2,0
-86,6.7,3.1,4.7,1.5,1
-88,5.6,3.0,4.1,1.3,1
-104,6.5,3.0,5.8,2.2,2
-148,6.2,3.4,5.4,2.3,2
-38,4.4,3.0,1.3,0.2,0
-91,6.1,3.0,4.6,1.4,1
-137,6.4,3.1,5.5,1.8,2
-46,5.1,3.8,1.6,0.2,0
-119,6.0,2.2,5.0,1.5,2
-141,6.9,3.1,5.1,2.3,2
-75,6.6,3.0,4.4,1.4,1
-89,5.5,2.5,4.0,1.3,1
-19,5.1,3.8,1.5,0.3,0
-21,5.1,3.7,1.5,0.4,0
-5,5.4,3.9,1.7,0.4,0
-98,5.1,2.5,3.0,1.1,1
-93,5.0,2.3,3.3,1.0,1
-146,6.3,2.5,5.0,1.9,2
-139,6.9,3.1,5.4,2.1,2
-73,6.1,2.8,4.7,1.2,1
-52,6.9,3.1,4.9,1.5,1
-65,6.7,3.1,4.4,1.4,1
-42,4.4,3.2,1.3,0.2,0
-72,6.3,2.5,4.9,1.5,1
-135,7.7,3.0,6.1,2.3,2
-13,4.3,3.0,1.1,0.1,0
-92,5.8,2.6,4.0,1.2,1
-39,5.1,3.4,1.5,0.2,0
-66,5.6,3.0,4.5,1.5,1
-134,6.1,2.6,5.6,1.4,2
-142,5.8,2.7,5.1,1.9,2
-130,7.4,2.8,6.1,1.9,2
-94,5.6,2.7,4.2,1.3,1
-74,6.4,2.9,4.3,1.3,1
-57,4.9,2.4,3.3,1.0,1
-80,5.5,2.4,3.8,1.1,1
-126,6.2,2.8,4.8,1.8,2
-50,7.0,3.2,4.7,1.4,1
-113,5.7,2.5,5.0,2.0,2
-33,5.5,4.2,1.4,0.2,0
-37,4.9,3.1,1.5,0.1,0
-100,6.3,3.3,6.0,2.5,2
-44,5.1,3.8,1.9,0.4,0
-41,4.5,2.3,1.3,0.3,0
-136,6.3,3.4,5.6,2.4,2
-17,5.1,3.5,1.4,0.3,0
-82,5.8,2.7,3.9,1.2,1
-23,5.1,3.3,1.7,0.5,0
-15,5.7,4.4,1.5,0.4,0
-118,7.7,2.6,6.9,2.3,2
-6,4.6,3.4,1.4,0.3,0
-147,6.5,3.0,5.2,2.0,2
-120,6.9,3.2,5.7,2.3,2
-111,6.4,2.7,5.3,1.9,2
-83,6.0,2.7,5.1,1.6,1
-3,4.6,3.1,1.5,0.2,0
-69,5.6,2.5,3.9,1.1,1
-11,4.8,3.4,1.6,0.2,0
-144,6.7,3.3,5.7,2.5,2
-36,5.5,3.5,1.3,0.2,0
-28,5.2,3.4,1.4,0.2,0
-116,6.5,3.0,5.5,1.8,2
-71,6.1,2.8,4.0,1.3,1
-32,5.2,4.1,1.5,0.1,0
-79,5.7,2.6,3.5,1.0,1
-0,5.1,3.5,1.4,0.2,0
-26,5.0,3.4,1.6,0.4,0
-102,7.1,3.0,5.9,2.1,2
-101,5.8,2.7,5.1,1.9,2
-106,4.9,2.5,4.5,1.7,2
-62,6.0,2.2,4.0,1.0,1
-8,4.4,2.9,1.4,0.2,0
-12,4.8,3.0,1.4,0.1,0
-90,5.5,2.6,4.4,1.2,1
-24,4.8,3.4,1.9,0.2,0
-48,5.3,3.7,1.5,0.2,0
-53,5.5,2.3,4.0,1.3,1
-51,6.4,3.2,4.5,1.5,1
-133,6.3,2.8,5.1,1.5,2
-2,4.7,3.2,1.3,0.2,0
-25,5.0,3.0,1.6,0.2,0
-61,5.9,3.0,4.2,1.5,1
-27,5.2,3.5,1.5,0.2,0
-87,6.3,2.3,4.4,1.3,1
-84,5.4,3.0,4.5,1.5,1
-77,6.7,3.0,5.0,1.7,1
-47,4.6,3.2,1.4,0.2,0
-40,5.0,3.5,1.3,0.3,0
-16,5.4,3.9,1.3,0.4,0
-97,6.2,2.9,4.3,1.3,1
diff --git a/python-assn/assn-03/model.pkl b/python-assn/assn-03/model.pkl
deleted file mode 100644
index 92bac18..0000000
Binary files a/python-assn/assn-03/model.pkl and /dev/null differ