CISC 3440 Fall 2021 Lab 4 Description Overview: Prepare a jupyter notebook showing the end to end process for analyzing a dataset with ML algorithms. Dataset selection: You may go at your own speed...

1 answer below »
https://github.com/ageron/handson-ml2/blob/master/05_support_vector_machines.ipynb
https://github.com/ageron/handson-ml2/blob/master/06_decision_trees.ipynb
https://colab.research.google.com/drive/1M7X18ZPq5N6Xo6JctdY80jlSh-dNugFb?usp=sharing







CISC 3440 Fall 2021 Lab 4 Description Overview: Prepare a jupyter notebook showing the end to end process for analyzing a dataset with ML algorithms. Dataset selection: You may go at your own speed with either easy or challenging. · Easy[footnoteRef:0]: Run the code examples from the textbook using the IRIS dataset and Logistic Regression, Support Vector Machines, and Decision Trees algorithms. Please include citations to the source you are copying from. [0: See note below.] · Challenging Pick a dataset you have not used before. · Scikit Learn Datasets https://scikit-learn.org/stable/modules/classes.html#module-sklearn.datasets · TensorFlow catalog of data https://www.tensorflow.org/datasets/catalog Algorithms: The suggested theme is classifiers, since we worked on regression for the last lab. The choice of algorithm depends on the problem, so consider this after you’ve selected a dataset. Minimal Requirements[footnoteRef:1] in your submission: [1: One factor in determining grades is the suitability of the project completed. It is possible to complete this lab satisfactorily and receive a grade below ‘A’ level (90-100%), if the work shown is a simple application of elementary techniques.] Use a jupyter notebook (i.e., local version saved to GitHub or Google colab). Within the notebook, include the following elements: · Introduction paragraph to the dataset and overarching data analysis question, such as: · Where did you get the data? And how? What are features available with the data? · What is the question you want to answer through analysis? · What preparation of data did you do, if any? And how? · Use three different algorithms from Scikit-Learn · Paragraph briefly explaining algorithm and another paragraph on results of each model · Plot the data and results · Annotate the chart to help the reader understand what you’re showing · Comments explaining each line of code · A concluding paragraph that describes your ranking of results from good to worse · Final reflective paragraph(s) describing the experience and what you’ve learned. · Citations Due Date: Monday, October 18, 2021 before class Submit your final notebook URL to this form https://forms.gle/WdJhpQT3EtjjchMk9 A gallery of interesting Jupyter Notebooks
Answered 1 days AfterOct 16, 2021

Answer To: CISC 3440 Fall 2021 Lab 4 Description Overview: Prepare a jupyter notebook showing the end to end...

Sathishkumar answered on Oct 18 2021
102 Votes
solutions/code/Decision_Tree.ipynb
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "371c6b02",
"metadata": {},
"outputs": [],
"source": [
"#Decision Tree Classifier for Iris Dataset"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "72457dc4",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import load_iris\n",
"from sklearn import tree\n",
"iris = load_iris()\n",
"X, y = iris.data, iris.target\n",
"clf = tree.DecisionTreeClassifier()\n",
"clf = clf.fit(X, y)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ee3302ae",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"[Text(167.4, 199.32, 'X[3] <= 0.8\\ngini = 0.667\\nsamples = 150\\nvalue = [50, 50, 50]'),\n",
" Text(141.64615384615385, 163.07999999999998, 'gini = 0.0\\nsamples = 50\\nvalue = [50, 0, 0]'),\n",
" Text(193.15384615384616, 163.07999999999998, 'X[3] <= 1.75\\ngini = 0.5\\nsamples = 100\\nvalue = [0, 50, 50]'),\n",
" Text(103.01538461538462, 126.83999999999999, 'X[2] <= 4.95\\ngini = 0.168\\nsamples = 54\\nvalue = [0, 49, 5]'),\n",
" Text(51.50769230769231, 90.6, 'X[3] <= 1.65\\ngini = 0.041\\nsamples = 48\\nvalue = [0, 47, 1]'),\n",
" Text(25.753846153846155, 54.359999999999985, 'gini = 0.0\\nsamples = 47\\nvalue = [0, 47, 0]'),\n",
" Text(77.26153846153846, 54.359999999999985, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 0, 1]'),\n",
" Text(154.52307692307693, 90.6, 'X[3] <= 1.55\\ngini = 0.444\\nsamples = 6\\nvalue = [0, 2, 4]'),\n",
" Text(128.76923076923077, 54.359999999999985, 'gini = 0.0\\nsamples = 3\\nvalue = [0, 0, 3]'),\n",
" Text(180.27692307692308, 54.359999999999985, 'X[0] <= 6.95\\ngini = 0.444\\nsamples = 3\\nvalue = [0, 2, 1]'),\n",
" Text(154.52307692307693, 18.119999999999976, 'gini = 0.0\\nsamples = 2\\nvalue = [0, 2, 0]'),\n",
" Text(206.03076923076924, 18.119999999999976, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 0, 1]'),\n",
" Text(283.2923076923077, 126.83999999999999, 'X[2] <= 4.85\\ngini = 0.043\\nsamples = 46\\nvalue = [0, 1, 45]'),\n",
" Text(257.53846153846155, 90.6, 'X[1] <= 3.1\\ngini = 0.444\\nsamples = 3\\nvalue = [0, 1, 2]'),\n",
" Text(231.7846153846154, 54.359999999999985, 'gini = 0.0\\nsamples = 2\\nvalue = [0, 0, 2]'),\n",
" Text(283.2923076923077, 54.359999999999985, 'gini = 0.0\\nsamples = 1\\nvalue = [0, 1, 0]'),\n",
" Text(309.04615384615386, 90.6, 'gini = 0.0\\nsamples = 43\\nvalue = [0, 0, 43]')]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"tree.plot_tree(clf)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2e4c0bec",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 4,
"id": "ea394979",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"|--- petal width (cm) <= 0.80\n",
"| |--- class: 0\n",
"|--- petal width (cm) > 0.80\n",
"| |--- petal width (cm) <= 1.75\n",
"| | |--- class: 1\n",
"| |--- petal width (cm) > 1.75\n",
"| | |--- class: 2\n",
"\n"
]
}
],
"source": [
"from sklearn.datasets import load_iris\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.tree import export_text\n",
"iris = load_iris()\n",
"decision_tree = DecisionTreeClassifier(random_state=0, max_depth=2)\n",
"decision_tree = decision_tree.fit(iris.data, iris.target)\n",
"r = export_text(decision_tree, feature_names=iris['feature_names'])\n",
"print(r)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "972d396e",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
solutions/code/Logistic_Regression.ipynb
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "fc4ac432",
"metadata": {},
"outputs": [],
"source": [
"#Logistic Regression for Iris Dataset"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "da03addd",
"metadata": {},
"outputs": [],
"source": [
"# import necessary packages\n",
"\n",
"import numpy as np # linear algebra\n",
"import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn import datasets\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "35371856",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename']\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
":8: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n",
"Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
" y = (iris[\"target\"]==2).astype(np.int)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"iris = datasets.load_iris()\n",
"\n",
"print(list(iris.keys()))\n",
"\n",
"\n",
"\n",
"X = iris[\"data\"][:,3:] # petal width\n",
"y = (iris[\"target\"]==2).astype(np.int)\n",
"log_reg = LogisticRegression(penalty=\"l2\")\n",
"log_reg.fit(X,y)\n",
"\n",
"X_new = np.linspace(0,3,1000).reshape(-1,1)\n",
"y_proba = log_reg.predict_proba(X_new)\n",
"\n",
"plt.plot(X,y,\"b.\")\n",
"plt.plot(X_new,y_proba[:,1],\"g-\",label=\"Iris-Virginica\")\n",
"plt.plot(X_new,y_proba[:,0],\"b--\",label=\"Not Iris-Virginca\")\n",
"plt.xlabel(\"Petal width\", fontsize=14)\n",
"plt.ylabel(\"Probability\", fontsize=14)\n",
"plt.legend(loc=\"upper left\", fontsize=14)\n",
"plt.show()\n",
"\n",
"xx=log_reg.predict([[1.7],[1.5]])"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "bceae04e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAiAUlEQVR4nO3dfXRU9b3v8fc3CU/yEEACyGNYSjliNBZSuiKiUVHggNKjxy6V1nqlohZv661Fpaf1oVI5WnvXta1Vc8TS1ltKbfDWWnmwFAQ0CEmVYkE4oKgxFWKRKAKlwPf+MZM4gXkiM5OZbD6vtWbN7P3bD7/Zi/Vh5zd7f7e5OyIiElx52e6AiIhkloJeRCTgFPQiIgGnoBcRCTgFvYhIwBVkuwPR9OnTx4uLi7PdDRGRdqO2tvYDdy+K1paTQV9cXExNTU22uyEi0m6Y2dux2jR0IyIScAp6EZGAU9CLiAScgl5EJOAU9CIiAZeTV93Ec+TIEerq6vjkk0+y3RVpRzp06EDfvn3p0aNHtrsi0ubaXdB/8MEHmBkjRowgL09/kEhi7s7+/ft57733ABT2kpLGxmr27FlJz54VFBaWZ7s7SWl3Qb9nzx6Ki4sV8pI0M+Okk05i4MCB1NfXK+il1Robq9mw4SKOHDlIXl5HSkuXt4uwb3dpefjwYTp06JDtbkg71KVLF/75z39muxvSju3Zs5IjRw4Chzly5CB79qzMdpeS0u6CHkJnaCLHS/9uJFU9e1aQl9cRyCcvryM9e1Zku0tJaXdDNyIi2VJYWE5p6fLgjdGb2ZPAFGCXu5dEaZ8FTIvY3ulAkbvvNrMdwMfAYeCQu5elq+MiItlQWFjebgK+STJDN/OBibEa3f0H7n62u58NzAZedPfdEYtcEG5XyCdQUVHBLbfcku1uHJcdO3ZgZmktQmdm/Pa3v03b9kROdAmD3t1XAbsTLRd2NbAgpR4F1HXXXceUKVPiLrNo0SLmzp173Nv+4Q9/SGFhIfv27Tum7fDhwwwYMID/+I//OO7tJmPw4MH87W9/4+yzz87I9kUkdWn7MdbMTiJ05l8VMduBZWZWa2YzEqw/w8xqzKymoaEhXd1qFw4ePAhA79696d69+3Gvf+2113LgwAGefvrpY9oWL17M+++/z/XXX3/c2z1y5AiHDx+Ou0x+fj79+/enoCB3fu5pOp4iEpLOq24uBV46athmrLuPAiYBM83svFgru3ulu5e5e1lRUdTa+WnV2FjN22/PpbGxOuP7OlrT2f0DDzzAoEGDGDRoEHDs0M2iRYs466yz6NKlC7179+b8889n586dx2yvqKiIyy67jCeffPKYtnnz5lFRUcGpp55KY2MjM2bMoG/fvnTv3p3zzz+/xZDL/Pnz6datG88//zwlJSV07NiRzZs3s3HjRi666CJ69OhB9+7dKS0tZcWKFUD0oZs33niDyy67jMLCQrp160Z5eTkbN24EQv953HfffQwePJhOnTpx5pln8rvf/S7u8dq4cSPjx49vPg7XXXcdjY2NCY+niISk8zTsKo4atnH3+vD7LjN7BhgDrErjPlslF256ePHFFyksLGTJkiW4+zHt77//PldddRVz587liiuuYO/evaxduzbm9qZPn86kSZPYtm0bp512GgA7d+7kueeeY/78+bg7kydPprCwkOeee47evXvz85//nAsvvJAtW7ZwyimnAHDgwAHmzJnD448/TlFREaeccgrnnHMOpaWlrFu3joKCAjZu3Ejnzp2j9qO+vp5zzz2XsWPH8sILL9CzZ0/WrVvX/JfBww8/zA9+8AMee+wxysrKeOqpp7j88supra2NOvyzb98+Jk6cyOc+9znWrVvH7t27ueGGG7j++uupqvr0j8dEx1PkhObuCV9AMfB6nPZCQuP4XSPmdQW6R3x+GZiYzP5Gjx7tsWzatClmW7J27LjfV6zI9xUr8BUr8n3HjvtT3mYiX/nKV3zy5MnNn/v06eMHDhxoscz555/vM2fOdHf32tpaB3zHjh1Jbf/w4cM+ZMgQnz17dvO8Bx980Hv16uX79+/35cuXe9euXX3fvn0t1istLfUHHnjA3d1/9rOfOeA1NTUtlunevbvPnz8/6n7feustB3z9+vXu7v7tb3/bhwwZ4v/4xz+iLj9gwAC/9957j/ne06ZNa54G/Omnn3Z398rKSu/Ro4d/9NFHze0rVqxwwP/7v//b3WMfz2jS8e9HJBcBNR4jUxMO3ZjZAqAaGGFmdWY23cxuMrObIhb7N2CZu0dWGusHrDGzDcA64A/uvqSV/x+lVS7c9FBSUkKnTp1itpeWljJ+/HhKSkq44oorePTRR2n67eKdd96hW7duza/777+fvLw8rrvuOn7+8583nz3/7Gc/Y9q0aXTu3Jna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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"iris = datasets.load_iris()\n",
"\n",
"X = iris[\"data\"][:,(2,3)] # petal length, petal width\n",
"y = iris[\"target\"]\n",
"\n",
"softmax_reg = LogisticRegression(multi_class=\"multinomial\", solver=\"lbfgs\", C=5)\n",
"mdl=softmax_reg.fit(X,y)\n",
"print(mdl)\n",
"X_new = np.linspace(0,3,1000).reshape(-1,2)\n",
"\n",
"plt.plot(X[:, 0][y==1], X[:, 1][y==1], \"y.\", label=\"Iris-Versicolor\")\n",
"plt.plot(X[:, 0][y==0], X[:, 1][y==0], \"b.\", label=\"Iris-Setosa\")\n",
"\n",
"plt.legend(loc=\"upper left\", fontsize=14)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "af18768b",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
solutions/code/SVM.ipynb
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4b2a3b51",
"metadata": {},
"outputs": [],
"source": [
"#Importing Iris dataset from Scikit-Learn"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "631e90b9",
"metadata": {},
"outputs": [],
"source": [
"# Required Packages\n",
"from sklearn import datasets\t\t# To Get iris dataset\n",
"from sklearn import svm \t\t\t# To fit the svm classifier\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt # To visuvalizing the data"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "d79979f9",
"metadata": {},
"outputs": [],
"source": [
"# import iris data to model Svm classifier\n",
"iris_dataset = datasets.load_iris()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "59b42d2b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iris data set Description :: .. _iris_dataset:\n",
"\n",
"Iris plants dataset\n",
"--------------------\n",
"\n",
"**Data Set Characteristics:**\n",
"\n",
" :Number of Instances: 150 (50 in each of three classes)\n",
" :Number of Attributes: 4 numeric, predictive attributes and the class\n",
" :Attribute Information:\n",
" - sepal length in cm\n",
" - sepal width in cm\n",
" - petal length in cm\n",
" - petal width in cm\n",
" - class:\n",
" - Iris-Setosa\n",
" - Iris-Versicolour\n",
" - Iris-Virginica\n",
" \n",
" :Summary Statistics:\n",
"\n",
" ============== ==== ==== ======= ===== ====================\n",
" Min Max Mean SD Class Correlation\n",
" ============== ==== ==== ======= ===== ====================\n",
" sepal length: 4.3 7.9 5.84 0.83 0.7826\n",
" sepal width: 2.0 4.4 3.05 0.43 -0.4194\n",
" petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)\n",
" petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)\n",
" ============== ==== ==== ======= ===== ====================\n",
"\n",
" :Missing Attribute Values: None\n",
" :Class Distribution: 33.3% for each of 3 classes.\n",
...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here