{ "metadata": { "anaconda-cloud": {}, "kernelspec": { "name": "python", "display_name": "Pyolite", "language": "python" }, "language_info": { "codemirror_mode": { "name": "python", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat_minor": 4, "nbformat": 4, "cells": [ { "cell_type": "markdown", "source": "

\n \n \"Skills\n \n

\n\n# Decision Trees\n\nEstimated time needed: **15** minutes\n\n## Objectives\n\nAfter completing this lab you will be able to:\n\n* Develop a classification model using Decision Tree Algorithm\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "markdown", "source": "In this lab exercise, you will learn a popular machine learning algorithm, Decision Trees. You will use this classification algorithm to build a model from the historical data of patients, and their response to different medications. Then you will use the trained decision tree to predict the class of an unknown patient, or to find a proper drug for a new patient.\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "markdown", "source": "

Table of contents

\n\n
\n
    \n
  1. About the dataset
  2. \n
  3. Downloading the Data
  4. \n
  5. Pre-processing
  6. \n
  7. Setting up the Decision Tree
  8. \n
  9. Modeling
  10. \n
  11. Prediction
  12. \n
  13. Evaluation
  14. \n
  15. Visualization
  16. \n
\n
\n
\n
\n", "metadata": {} }, { "cell_type": "markdown", "source": "Import the Following Libraries:\n\n\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "markdown", "source": "if you uisng you own version comment out\n", "metadata": {} }, { "cell_type": "code", "source": "import piplite\nawait piplite.install(['pandas'])\nawait piplite.install(['matplotlib'])\nawait piplite.install(['numpy'])\nawait piplite.install(['scikit-learn'])\n\n", "metadata": { "trusted": true }, "execution_count": 1, "outputs": [] }, { "cell_type": "code", "source": "import numpy as np \nimport pandas as pd\nfrom sklearn.tree import DecisionTreeClassifier\nimport sklearn.tree as tree", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 2, "outputs": [] }, { "cell_type": "code", "source": "from pyodide.http import pyfetch\n\nasync def download(url, filename):\n response = await pyfetch(url)\n if response.status == 200:\n with open(filename, \"wb\") as f:\n f.write(await response.bytes())", "metadata": { "trusted": true }, "execution_count": 3, "outputs": [] }, { "cell_type": "markdown", "source": "
\n

About the dataset

\n Imagine that you are a medical researcher compiling data for a study. You have collected data about a set of patients, all of whom suffered from the same illness. During their course of treatment, each patient responded to one of 5 medications, Drug A, Drug B, Drug c, Drug x and y. \n
\n
\n Part of your job is to build a model to find out which drug might be appropriate for a future patient with the same illness. The features of this dataset are Age, Sex, Blood Pressure, and the Cholesterol of the patients, and the target is the drug that each patient responded to.\n
\n
\n It is a sample of multiclass classifier, and you can use the training part of the dataset \n to build a decision tree, and then use it to predict the class of an unknown patient, or to prescribe a drug to a new patient.\n
\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "markdown", "source": "
\n

Downloading the Data

\n To download the data, we will use !wget to download it from IBM Object Storage.\n
\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "path= 'https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%203/data/drug200.csv'\nawait download(path,\"drug200.csv\")\npath=\"drug200.csv\"", "metadata": { "trusted": true }, "execution_count": 4, "outputs": [] }, { "cell_type": "markdown", "source": "**Did you know?** When it comes to Machine Learning, you will likely be working with large datasets. As a business, where can you host your data? IBM is offering a unique opportunity for businesses, with 10 Tb of IBM Cloud Object Storage: [Sign up now for free](http://cocl.us/ML0101EN-IBM-Offer-CC)\n", "metadata": {} }, { "cell_type": "markdown", "source": "Now, read the data using pandas dataframe:\n", "metadata": {} }, { "cell_type": "code", "source": "my_data = pd.read_csv(\"drug200.csv\", delimiter=\",\")\nmy_data[0:5]", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 5, "outputs": [ { "execution_count": 5, "output_type": "execute_result", "data": { "text/plain": " Age Sex BP Cholesterol Na_to_K Drug\n0 23 F HIGH HIGH 25.355 drugY\n1 47 M LOW HIGH 13.093 drugC\n2 47 M LOW HIGH 10.114 drugC\n3 28 F NORMAL HIGH 7.798 drugX\n4 61 F LOW HIGH 18.043 drugY", "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
AgeSexBPCholesterolNa_to_KDrug
023FHIGHHIGH25.355drugY
147MLOWHIGH13.093drugC
247MLOWHIGH10.114drugC
328FNORMALHIGH7.798drugX
461FLOWHIGH18.043drugY
\n
" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": "
\n

Practice

\n What is the size of data? \n
\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "# write your code here\n\nmy_data.shape\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 6, "outputs": [ { "execution_count": 6, "output_type": "execute_result", "data": { "text/plain": "(200, 6)" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": "
Click here for the solution\n\n```python\nmy_data.shape\n\n```\n\n
\n", "metadata": {} }, { "cell_type": "markdown", "source": "
\n

Pre-processing

\n
\n", "metadata": {} }, { "cell_type": "markdown", "source": "Using my_data as the Drug.csv data read by pandas, declare the following variables:
\n\n\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "markdown", "source": "Remove the column containing the target name since it doesn't contain numeric values.\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "X = my_data[['Age', 'Sex', 'BP', 'Cholesterol', 'Na_to_K']].values\nX[0:5]\n", "metadata": { "trusted": true }, "execution_count": 7, "outputs": [ { "execution_count": 7, "output_type": "execute_result", "data": { "text/plain": "array([[23, 'F', 'HIGH', 'HIGH', 25.355],\n [47, 'M', 'LOW', 'HIGH', 13.093],\n [47, 'M', 'LOW', 'HIGH', 10.114],\n [28, 'F', 'NORMAL', 'HIGH', 7.798],\n [61, 'F', 'LOW', 'HIGH', 18.043]], dtype=object)" }, "metadata": {} } ] }, { "cell_type": "code", "source": "type(X)", "metadata": { "trusted": true }, "execution_count": 8, "outputs": [ { "execution_count": 8, "output_type": "execute_result", "data": { "text/plain": "numpy.ndarray" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": "As you may figure out, some features in this dataset are categorical, such as **Sex** or **BP**. Unfortunately, Sklearn Decision Trees does not handle categorical variables. We can still convert these features to numerical values using **pandas.get_dummies()**\nto convert the categorical variable into dummy/indicator variables.\n", "metadata": {} }, { "cell_type": "code", "source": "from sklearn import preprocessing\nle_sex = preprocessing.LabelEncoder()\nle_sex.fit(['F','M'])\nX[:,1] = le_sex.transform(X[:,1]) \n\n\nle_BP = preprocessing.LabelEncoder()\nle_BP.fit([ 'LOW', 'NORMAL', 'HIGH'])\nX[:,2] = le_BP.transform(X[:,2])\n\n\nle_Chol = preprocessing.LabelEncoder()\nle_Chol.fit([ 'NORMAL', 'HIGH'])\nX[:,3] = le_Chol.transform(X[:,3]) \n\nX[0:5]\n", "metadata": { "trusted": true }, "execution_count": 9, "outputs": [ { "execution_count": 9, "output_type": "execute_result", "data": { "text/plain": "array([[23, 0, 0, 0, 25.355],\n [47, 1, 1, 0, 13.093],\n [47, 1, 1, 0, 10.114],\n [28, 0, 2, 0, 7.798],\n [61, 0, 1, 0, 18.043]], dtype=object)" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": "Now we can fill the target variable.\n", "metadata": {} }, { "cell_type": "code", "source": "y = my_data[\"Drug\"]\ny[0:5]", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 10, "outputs": [ { "execution_count": 10, "output_type": "execute_result", "data": { "text/plain": "0 drugY\n1 drugC\n2 drugC\n3 drugX\n4 drugY\nName: Drug, dtype: object" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": "
\n\n
\n

Setting up the Decision Tree

\n We will be using train/test split on our decision tree. Let's import train_test_split from sklearn.cross_validation.\n
\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "from sklearn.model_selection import train_test_split", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 11, "outputs": [] }, { "cell_type": "markdown", "source": "Now train_test_split will return 4 different parameters. We will name them:
\nX_trainset, X_testset, y_trainset, y_testset

\nThe train_test_split will need the parameters:
\nX, y, test_size=0.3, and random_state=3.

\nThe X and y are the arrays required before the split, the test_size represents the ratio of the testing dataset, and the random_state ensures that we obtain the same splits.\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "X_trainset, X_testset, y_trainset, y_testset = train_test_split(X, y, test_size=0.3, random_state=3)", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 12, "outputs": [] }, { "cell_type": "markdown", "source": "

Practice

\nPrint the shape of X_trainset and y_trainset. Ensure that the dimensions match.\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "# your code\nprint('Shape of X training set {}'.format(X_trainset.shape),'&',' Size of Y training set {}'.format(y_trainset.shape))\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 13, "outputs": [ { "name": "stdout", "text": "Shape of X training set (140, 5) & Size of Y training set (140,)\n", "output_type": "stream" } ] }, { "cell_type": "markdown", "source": "
Click here for the solution\n\n```python\nprint('Shape of X training set {}'.format(X_trainset.shape),'&',' Size of Y training set {}'.format(y_trainset.shape))\n\n```\n\n
\n", "metadata": {} }, { "cell_type": "markdown", "source": "Print the shape of X_testset and y_testset. Ensure that the dimensions match.\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "# your code\nprint('Shape of X training set {}'.format(X_testset.shape),'&',' Size of Y training set {}'.format(y_testset.shape))\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 14, "outputs": [ { "name": "stdout", "text": "Shape of X training set (60, 5) & Size of Y training set (60,)\n", "output_type": "stream" } ] }, { "cell_type": "markdown", "source": "
Click here for the solution\n\n```python\nprint('Shape of X training set {}'.format(X_testset.shape),'&',' Size of Y training set {}'.format(y_testset.shape))\n\n```\n\n
\n", "metadata": {} }, { "cell_type": "markdown", "source": "
\n\n
\n

Modeling

\n We will first create an instance of the DecisionTreeClassifier called drugTree.
\n Inside of the classifier, specify criterion=\"entropy\" so we can see the information gain of each node.\n
\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "drugTree = DecisionTreeClassifier(criterion=\"entropy\", max_depth = 4)\ndrugTree # it shows the default parameters", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 15, "outputs": [ { "execution_count": 15, "output_type": "execute_result", "data": { "text/plain": "DecisionTreeClassifier(criterion='entropy', max_depth=4)" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": "Next, we will fit the data with the training feature matrix X_trainset and training response vector y_trainset \n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "drugTree.fit(X_trainset,y_trainset)", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 16, "outputs": [ { "execution_count": 16, "output_type": "execute_result", "data": { "text/plain": "DecisionTreeClassifier(criterion='entropy', max_depth=4)" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": "
\n\n
\n

Prediction

\n Let's make some predictions on the testing dataset and store it into a variable called predTree.\n
\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "predTree = drugTree.predict(X_testset)", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 17, "outputs": [] }, { "cell_type": "markdown", "source": "You can print out predTree and y_testset if you want to visually compare the predictions to the actual values.\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "print (predTree [0:5])\nprint (y_testset [0:5])\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "scrolled": true, "trusted": true }, "execution_count": 18, "outputs": [ { "name": "stdout", "text": "['drugY' 'drugX' 'drugX' 'drugX' 'drugX']\n40 drugY\n51 drugX\n139 drugX\n197 drugX\n170 drugX\nName: Drug, dtype: object\n", "output_type": "stream" } ] }, { "cell_type": "markdown", "source": "
\n\n
\n

Evaluation

\n Next, let's import metrics from sklearn and check the accuracy of our model.\n
\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "code", "source": "from sklearn import metrics\nimport matplotlib.pyplot as plt\nprint(\"DecisionTrees's Accuracy: \", metrics.accuracy_score(y_testset, predTree))", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 19, "outputs": [ { "name": "stdout", "text": "DecisionTrees's Accuracy: 0.9833333333333333\n", "output_type": "stream" } ] }, { "cell_type": "markdown", "source": "**Accuracy classification score** computes subset accuracy: the set of labels predicted for a sample must exactly match the corresponding set of labels in y_true.\n\nIn multilabel classification, the function returns the subset accuracy. If the entire set of predicted labels for a sample strictly matches with the true set of labels, then the subset accuracy is 1.0; otherwise it is 0.0.\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "markdown", "source": "
\n\n
\n

Visualization

\n\nLet's visualize the tree\n\n
\n", "metadata": {} }, { "cell_type": "code", "source": "# Notice: You might need to uncomment and install the pydotplus and graphviz libraries if you have not installed these before\n#!conda install -c conda-forge pydotplus -y\n#!conda install -c conda-forge python-graphviz -y", "metadata": { "trusted": true }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": "tree.plot_tree(drugTree)\nplt.show()", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false }, "trusted": true }, "execution_count": 20, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACADElEQVR4nO3deVzNaf8/8FclRhMVNbJMlrFkuWmK9uW0jTR2hqZEtzFmDEYjxDA3kcnIOpilGVM3WcY2qGxRJxWFyFgyhjtjbBHJXp26fn/0c77OVCqqc07n9Xw8ejz4nOv6fN6dq+v07vO5Fi0hhAARERERaQxtZQdARERERHWLCSARERGRhmECSERERKRhmAASERERaRgmgEREREQahgkgERERkYZhAkhERESkYZgAEhEREWkYJoBEREREGoYJIBEREZGGYQJIREREpGGYABIRERFpGCaARERERBqGCSARERGRhmECSERERKRhmAASERERaRgmgEREREQahgkgERERkYZhAkhERESkYZgAEhEREWkYJoBEREREGoYJIBEREZGGYQJIREREpGGYABIRERFpGCaARERERBqGCSARERGRhmECSERERKRhmAASERERaRgmgEREREQahgkgERERkYZhAkhERESkYZgAEhEREWkYJoBEREREGoYJIBEREZGGYQJIREREpGGYABIRERFpGCaARERERBqGCSARERGRhmECSERERKRhmAASERERaRgmgEREREQahgkgERERkYZhAkhERESkYZgAEhEREWkYJoBEREREGoYJIBEREZGGYQJIREREpGGYABIRERFpGCaARERERBqGCSARERGRhmECSERERKRhmAASERERaRgmgEREREQahgkgERERkYZhAkhERESkYZgAEhEREWkYJoBEREREGoYJIBEREZGGYQJIREREpGGYABIRERFpGCaARERERBqGCSARERGRhmECSERERKRhmAASERERaRgmgEREREQahgkgERERkYZhAkhERESkYZgAEhEREWkYJoBEREREGqaBsgMgIlJVV69eRW5urrLDoDpibGwMMzMzZYdBVCeYABIRlePq1avo2rUrnjx5ouxQqI7o6ekhKyuLSSBpBCaARETlyM3NxZMnTxAdHY2uXbsqOxyqZVlZWRg1ahRyc3OZAJJGYAJIRPQSXbt2haWlpbLDICKq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" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": "

Want to learn more?

\n\nIBM SPSS Modeler is a comprehensive analytics platform that has many machine learning algorithms. It has been designed to bring predictive intelligence to decisions made by individuals, by groups, by systems – by your enterprise as a whole. A free trial is available through this course, available here: SPSS Modeler\n\nAlso, you can use Watson Studio to run these notebooks faster with bigger datasets. Watson Studio is IBM's leading cloud solution for data scientists, built by data scientists. With Jupyter notebooks, RStudio, Apache Spark and popular libraries pre-packaged in the cloud, Watson Studio enables data scientists to collaborate on their projects without having to install anything. Join the fast-growing community of Watson Studio users today with a free account at Watson Studio\n", "metadata": { "button": false, "new_sheet": false, "run_control": { "read_only": false } } }, { "cell_type": "markdown", "source": "### Thank you for completing this lab!\n\n## Author\n\nSaeed Aghabozorgi\n\n### Other Contributors\n\nJoseph Santarcangelo\n\n## Change Log\n\n| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n| ----------------- | ------- | ---------- | ------------------------------------ |\n| 2020-11-20 | 2.2 | Lakshmi | Changed import statement of StringIO |\n| 2020-11-03 | 2.1 | Lakshmi | Changed URL of the csv |\n| 2020-08-27 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n| | | | |\n| | | | |\n\n##

© IBM Corporation 2020. All rights reserved.

\n", "metadata": {} } ] }