{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Chapter 2: A first Example - Classifying Flowers"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The purpose of this notebook is to look at a first example of a typical data science application, namely **statistical learning**, which is often referred to by its more well-known name **machine learning**. To do so, we look at a very popular example involving the classification of flowers. Albeit simplistic and almost boring in its kind, the example is a rather good one to look at from a beginner's point of view as it does not involve too many decision variables. That makes understanding technicalities and visualizing the data set a lot easier."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What is Machine Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's at first review a couple of generic definitions to get started.\n",
"\n",
"Machine learning is the process of **extracting knowledge from data** in an automated fashion.\n",
"\n",
"Typical use cases regard making predictions on new and unseen data or simply understanding a given dataset better by finding patterns.\n",
"\n",
"Central to machine learning is the idea of **automating** the **decision making** from data **without** the user specifying **explicit rules** how these decisions should be made.\n",
"\n",
"That is in direct opposition to what we learned in the \"Expressing Logic\" section in Chapter 0, where we learned how to implement decision criterions \"by hand\" with the `if` statement."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Example Applications"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Types of Machine Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Concete machine learning algorithms are commonly classified into three broad categories that may overlap as well:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- **Supervised** (focus of the example in this notebook): Each entry in the dataset comes with a **label**. Examples are a list of emails where spam mail is already marked as such or a sample of handwritten digits. The goal is to use the historic data to make predictions.\n",
"\n",
"- **Unsupervised**: There is no desired output associated with a data entry. In a sense, one can think of unsupervised learning as a means of discovering labels from the data itself. A popular example is the clustering of customer data.\n",
"\n",
"- **Reinforcement**: Conceptually, this can be seen as \"learning by doing\". Some kind of **reward function** tells how good a predicted outcome is. A rather recent and extremely popular example for his approach is the Alpha Go machine."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Types of Supervised Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Algorithms from the supervised learning category are often broken down further into classification and regression:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- In **classification** tasks, the labels are *discrete*, such as \"spam\" or \"no spam\" for emails. Often, labels are nominal (e.g., colors of something), or ordinal (e.g., T-shirt sizes in S, M, or L).\n",
"- In **regression**, the labels are *continuous*. For example, given a person's age, education, and position, infer his/her salary."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example: Iris Flower Classification"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the example, we are given measurments regarding the size of various parts of the so-called Iris flower kind. A concrete flower always belongs to one of three distinct special Iris classes. This example application is about classifying a given flower into one of the three classes by only looking at the measurements."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Importing the Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `sklearn` library provides several sample datasets, among which is also the Iris dataset.\n",
"\n",
"In a tabular visualization, the dataset could be portrayed somewhat like this:\n",
"\n",
"\n",
"\n",
"However, the data object imported from `sklearn` is organized slightly different. In particular, the so-called **features** are separated from the **labels**."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import load_iris"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"iris = load_iris()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using Python's `dir()` function we can inspect the data object, i.e. find out what **attributes** it has."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['DESCR',\n",
" 'data',\n",
" 'feature_names',\n",
" 'filename',\n",
" 'frame',\n",
" 'target',\n",
" 'target_names']"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dir(iris)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`iris.data` provides us with a `numpy.ndarray`, where the first dimension equals the number of observed flowers (i.e., the **instances**) and the second dimension lists the various features of a flower."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"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.2],\n",
" [5. , 3.2, 1.2, 0.2],\n",
" [5.5, 3.5, 1.3, 0.2],\n",
" [4.9, 3.6, 1.4, 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": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To find out what the four features are, we can list them:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['sepal length (cm)',\n",
" 'sepal width (cm)',\n",
" 'petal length (cm)',\n",
" 'petal width (cm)']"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.feature_names"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly, we can also print the flowers' labels (a.k.a. targets):"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"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,\n",
" 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, 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,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.target"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The three flower classes are encoded with integers. Let's show the corresponding names:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['setosa', 'versicolor', 'virginica'], dtype='"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"feature_index = 2\n",
"colors = ['blue', 'red', 'green']\n",
"\n",
"for label, color in zip(range(len(iris.target_names)), colors):\n",
" plt.hist(\n",
" iris.data[iris.target==label, feature_index], \n",
" label=iris.target_names[label],\n",
" color=color,\n",
" )\n",
"\n",
"plt.xlabel(iris.feature_names[feature_index])\n",
"plt.legend(loc='upper right')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Also, we can draw scatter plots of two features."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"