From 0cac7793b3097003cc5132b113c58627c5793349 Mon Sep 17 00:00:00 2001 From: manimeun <m.heu1995@gmail.com> Date: Wed, 3 Nov 2021 18:36:23 +0100 Subject: [PATCH] Add Assignment02.ipynb --- Assignment02_nb.ipynb | 465 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 465 insertions(+) create mode 100644 Assignment02_nb.ipynb diff --git a/Assignment02_nb.ipynb b/Assignment02_nb.ipynb new file mode 100644 index 0000000..52ba08e --- /dev/null +++ b/Assignment02_nb.ipynb @@ -0,0 +1,465 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ML4DS - Notebook for Assignment 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Author: Manuel Heurich\n", + "Credit: Maximilian Idahl" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook is part of the 2nd assignment. We will train a Decision Tree classifier using the sklearn library on the Iris dataset.\n", + "\n", + "Your task is to complete the missing code, where marked with a **TODO**. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import graphviz\n", + "\n", + "from sklearn import datasets, tree\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import classification_report\n", + "from os import system\n", + "from IPython.display import Image\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# For further info https://archive.ics.uci.edu/ml/datasets/iris\n", + "iris = datasets.load_iris()\n", + "X = iris.data \n", + "y = iris.target" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exploratory data analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Quick look into the data structure" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(150, 4)\n", + "(150,)\n" + ] + } + ], + "source": [ + "print(X.shape)\n", + "print(y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[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" + ] + } + ], + "source": [ + "print(X[:5,:])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th>a</th>\n", + " <th>b</th>\n", + " <th>c</th>\n", + " <th>d</th>\n", + " <th>target</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>0</th>\n", + " <td>5.1</td>\n", + " <td>3.5</td>\n", + " <td>1.4</td>\n", + " <td>0.2</td>\n", + " <td>0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>1</th>\n", + " <td>4.9</td>\n", + " <td>3.0</td>\n", + " <td>1.4</td>\n", + " <td>0.2</td>\n", + " <td>0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2</th>\n", + " <td>4.7</td>\n", + " <td>3.2</td>\n", + " <td>1.3</td>\n", + " <td>0.2</td>\n", + " <td>0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>3</th>\n", + " <td>4.6</td>\n", + " <td>3.1</td>\n", + " <td>1.5</td>\n", + " <td>0.2</td>\n", + " <td>0</td>\n", + " </tr>\n", + " <tr>\n", + " <th>4</th>\n", + " <td>5.0</td>\n", + " <td>3.6</td>\n", + " <td>1.4</td>\n", + " <td>0.2</td>\n", + " <td>0</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " a b c d target\n", + "0 5.1 3.5 1.4 0.2 0\n", + "1 4.9 3.0 1.4 0.2 0\n", + "2 4.7 3.2 1.3 0.2 0\n", + "3 4.6 3.1 1.5 0.2 0\n", + "4 5.0 3.6 1.4 0.2 0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Using pandas\n", + "data = pd.concat([pd.DataFrame(X),pd.DataFrame(y)], axis=1)\n", + "data.columns=['a','b','c','d','target']\n", + "data.head(5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Exemplary plots" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Sepal width')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 576x432 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(8,6))\n", + "sns.scatterplot(x=X[:,0], y=X[:,1], hue=y)\n", + "plt.xlabel('Sepal length')\n", + "plt.ylabel('Sepal width')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.legend.Legend at 0x139cc7f10>" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Univariate hist_plot 'sepal_length'\n", + "class0_index = [i for i, j in enumerate(y) if j==0]\n", + "class1_index = [i for i, j in enumerate(y) if j==1]\n", + "class2_index = [i for i, j in enumerate(y) if j==2]\n", + "\n", + "sns.histplot(data=X, x=X[:,0], hue=y, element='step')\n", + "plt.xlabel('Sepal length')\n", + "plt.legend(('class1', 'class2','class3'))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Barplot over 'sepal-width'" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Boxplot of all features" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Classification using decision trees " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Data preparation" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(120, 4)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Split data\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", + "X_train.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Train DT classifier using sklearn + Visualization + Evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Train a DT classifier \n", + "clf = None" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize clf: Export to .png image file\n", + "\n", + "# tree.export_graphviz(clf, out_file='tree.dot') \n", + "# system(\"dot -Tpng tree.dot -o tree1.png\")\n", + "# Image(\"tree1.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Evaluation of the classifier's performance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Train a second DT classifier using the Entropy instead of the Gini-Index (default)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Train the second classifier\n", + "clf2 = None" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize clf #2\n", + "\n", + "# tree.export_graphviz(clf2, out_file='tree2.dot') \n", + "# system(\"dot -Tpng tree2.dot -o tree2.png\")\n", + "# Image(\"tree2.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Evaluation of the classifier's performance" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file -- GitLab