{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Iris Classification" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "# dataset\n", "from sklearn import datasets\n", "# plot\n", "import seaborn as sns\n", "sns.set_style(\"darkgrid\")\n", "import matplotlib.pyplot as plt\n", "# data manipulation\n", "import pandas as pd\n", "import numpy as np\n", "# To display image in the jupyter notebook cell\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question\n", "\n", "In the last section, we learn about perceptron. How to use it to classify data? To answer this question, let's look at an example first: there is a data set which consists of two species of Iris. Our questions are: \n", "\n", "- How to classify those two species? \n", "- When given a new Iris, how to predict which Iris category it belongs to?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Set\n", "\n", "The data set we will use is modified from the Iris dataset which can be found on the [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets/Iris/). It consists of 50 samples from each of **two species** of Iris (Iris setosa, Iris virginica). **Two features** were measured from each sample: the length of the sepals and petals, in centimeters." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's get a close look at the dataset." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal length (cm)petal length (cm)target_class
05.11.41
14.91.41
24.71.31
34.61.51
45.01.41
\n", "
" ], "text/plain": [ " sepal length (cm) petal length (cm) target_class\n", "0 5.1 1.4 1\n", "1 4.9 1.4 1\n", "2 4.7 1.3 1\n", "3 4.6 1.5 1\n", "4 5.0 1.4 1" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# read csv file\n", "iris_dataset = pd.read_csv(\"iris_data.csv\")\n", "# show the first 5 lines\n", "iris_dataset.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The columns in this dataset are:\n", "- sepal length in cm\n", "- petal length in cm\n", "- Species\n", " - target_class 1: setosa\n", " - target_class -1: versicolor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![](./img/iris.png)\n", "\n", "*Image source* [1](https://en.wikipedia.org/wiki/Iris_flower_data_set#/media/File:Iris_versicolor_3.jpg) [2](http://www.twofrog.com/images/iris38a.jpg)\n" ] }, { "cell_type": "markdown", "metadata": { "toc-hr-collapsed": false }, "source": [ "## Classification" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following graph showing the measured sepal length and sepal length of Iris." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.lmplot(\"sepal length (cm)\", \"petal length (cm)\", data=iris_dataset,fit_reg=False,hue=\"target_class\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I believe you can classify those two species category immediately with your eye. Do you remember our question: identify which category a new Iris belongs to?\n", "Suppose the new Iris' sepal length is 5.5 cm and petal length is 3.2. We draw this new Iris point to the plot." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "new_iris_dataset = iris_dataset.append([{\"sepal length (cm)\":5.5, \"petal length (cm)\":3.2,\"target_class\":\"unknown\"}])\n", "sns.lmplot(\"sepal length (cm)\", \"petal length (cm)\", data=new_iris_dataset,fit_reg=False,hue=\"target_class\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The unknown dot is the new Iris. Obviously, it belongs to versicolor specie (target_clss=-1)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear Classifier" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This task is easy for us. We can classify them by our eyes. However, the computer doesn't have eyes. How can they split those two groups?\n", "\n", "You may have noticed that this is a two-dimensional plane, and if want to separate the two classes, we can put a line between them. It looks like the following plot." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(4,8,18)\n", "a = 0.1\n", "b = 2\n", "y = a * x + b\n", "\n", "sns.lmplot(\"sepal length (cm)\", \"petal length (cm)\", data=iris_dataset,fit_reg=False,hue=\"target_class\")\n", "plt.plot(x, y, '-r')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All the points above the line are setosa category(-1), and all the points below the line are versicolor category(1). When a new Iris comes, a computer can predict which category it falls into by deciding whether it is above or below the line. \n", "\n", "Therefore, **if we can teach the computer to find such a kind of line, we can solve our problem!** Let's do it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A line in a two-dimensional plane can be represented as follows:\n", "\n", "$$ax + by + c = 0 $$\n", "\n", "Let:\n", "\n", "$$w_0 = c$$\n", "$$w_1 = a$$\n", "$$w_2 = b$$\n", "\n", "\n", "Then it becomes:\n", "\n", "$$w_1x + w_2y + w_0 = 0$$\n", "\n", "Therefore, in mathematics form, all points above the line are:\n", "\n", "$$w_1*x + w_2*y + w_0 > 0$$\n", "\n", "And all points below and on the line are:\n", "\n", "$$w_1*x + w_2*y + w_0 \\leq 0$$\n", "\n", "\n", "Actually, this is exactly **how a perceptron looks like when n = 2**:\n", "\n", "\n", "$$\n", "y=\\left\\{\n", "\\begin{array}{rcl}\n", "0 & & {w_0 + w_1x_1 + w_2x_2 + ... + w_nx_n > 0}\\\\\n", "1 & & {w_0 + w_1x_1 + w_2x_2 + ... + w_nx_n\\leq 0}\\\\\n", "\\end{array} \\right.\n", "$$\n", "\n", "let n = 2:\n", "\n", "$$\n", "y=\\left\\{\n", "\\begin{array}{rcl}\n", "0 & & {w_0 + w_1x_1 + w_2x_2 > 0}\\\\\n", "1 & & {w_0 + w_1x_1 + w_2x_2 \\leq 0}\\\\\n", "\\end{array} \\right.\n", "$$\n", "\n", "\n", "Because $f(x,y)$ is a linear function, we call it **a linear classifier**. To find a appropriate linear classifier of Iris, we need to find suitable $w_0,w_1$, and $w_3$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Implement a perceptron" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To implement a perceptron, we manually choose suitable $w_0,w_1$, and $w_3$ parameters for it.\n", "\n", "Let,\n", "$$\n", "w_0 = 2\n", "w_1 = 0.1\n", "w_2 = -1\n", "$$\n", "\n", "Then the line is:\n", "$$2 + 0.1x_1 - x_2 = 0$$\n", "\n", "The perceptron act like this:\n", "\n", "$$\n", "y=\\left\\{\n", "\\begin{array}{rcl}\n", "0 & & {2 + 0.1x_1 - x_2 > 0}\\\\\n", "1 & & {2 + 0.1x_1 - x_2 \\leq 0}\\\\\n", "\\end{array} \\right.\n", "$$" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x_1 = np.linspace(4,8,18)\n", "\n", "w_0 = 2\n", "w_1 = 0.1\n", "w_2 = -1\n", "x_2 = a * x_1 + b\n", "\n", "sns.lmplot(\"sepal length (cm)\", \"petal length (cm)\", data=iris_dataset,fit_reg=False,hue=\"target_class\")\n", "plt.plot(x_1, x_2, '-r')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we define a function perceptron which takes $x_1,x_2$ as inputs." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "def perceptron(x1,x2):\n", " w0 = 2\n", " w1 = 0.1\n", " w2 = -1\n", " \n", " value = w0 + w1*x1 + w2*x2\n", " \n", " if value > 0:\n", " return -1\n", " else:\n", " return 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let use it to predict the new Iris data with 5.1 sepal length and 1.4 petal length." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-1" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "perceptron(5.1,1.4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The output is right. We build a perceptron!\n", "\n", "In this section, we learn about how to use the perceptron to classify Iris data set and implement a simple perceptron.\n", "\n", "So far, our perceptron is not smart at all, because we manually choose the parameters of the linear classifier. Later in the course, one of the key things to understand is how to teach them automatically learn the appropriate parameters from the data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reference\n", "- [Iris data set](https://archive.ics.uci.edu/ml/datasets/Iris/)\n", "- [perceptron introduction](https://medium.com/jameslearningnote/資料分析-機器學習-第3-2講-線性分類-感知器-perceptron-介紹-84d8b809f866)" ] } ], "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.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }