From f90ac5ae9db9f1f6224bbd4f9317e4703a351aab Mon Sep 17 00:00:00 2001 From: Jen Looper Date: Fri, 11 Jun 2021 08:57:42 -0400 Subject: [PATCH] edits for applied lesson --- 3-Web-App/README.md | 2 +- .../4-Applied/solution/index.html | 28 ++ .../4-Applied/solution/model-kn.onnx | Bin 0 -> 4255854 bytes .../4-Applied/solution/notebook.ipynb | 56 +++ .../4-Applied/solution/recipe-detector.ipynb | 328 ++++++++++++++++++ 5-Clustering/2-K-Means/README.md | 3 +- 6 files changed, 415 insertions(+), 2 deletions(-) create mode 100644 4-Classification/4-Applied/solution/index.html create mode 100644 4-Classification/4-Applied/solution/model-kn.onnx create mode 100644 4-Classification/4-Applied/solution/recipe-detector.ipynb diff --git a/3-Web-App/README.md b/3-Web-App/README.md index bfbe5899..a8de4606 100644 --- a/3-Web-App/README.md +++ b/3-Web-App/README.md @@ -4,7 +4,7 @@ In this section of the curriculum, you will be introduced to an applied ML topic ## Lessons -1. [Build a Web App](3-Web-App/README.md) +1. [Build a Web App](1-Web-App/README.md) ## Credits diff --git a/4-Classification/4-Applied/solution/index.html b/4-Classification/4-Applied/solution/index.html new file mode 100644 index 00000000..56992014 --- /dev/null +++ b/4-Classification/4-Applied/solution/index.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/4-Classification/4-Applied/solution/model-kn.onnx b/4-Classification/4-Applied/solution/model-kn.onnx new file mode 100644 index 0000000000000000000000000000000000000000..4ce8e6b9d0c86735d2da040b3dea2922e94bf558 GIT binary patch literal 4255854 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�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 literal 0 HcmV?d00001 diff --git a/4-Classification/4-Applied/solution/notebook.ipynb b/4-Classification/4-Applied/solution/notebook.ipynb index e69de29b..3eaba762 100644 --- a/4-Classification/4-Applied/solution/notebook.ipynb +++ b/4-Classification/4-Applied/solution/notebook.ipynb @@ -0,0 +1,56 @@ +{ + "metadata": { + "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 + }, + "orig_nbformat": 2 + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "source": [ + "## Build a web app" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pip install skl2onnx" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pip install onnxruntime" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import pandas as pd " + ] + } + ] +} \ No newline at end of file diff --git a/4-Classification/4-Applied/solution/recipe-detector.ipynb b/4-Classification/4-Applied/solution/recipe-detector.ipynb new file mode 100644 index 00000000..a8bbe19a --- /dev/null +++ b/4-Classification/4-Applied/solution/recipe-detector.ipynb @@ -0,0 +1,328 @@ +{ + "metadata": { + "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.0" + }, + "orig_nbformat": 2, + "kernelspec": { + "name": "python37364bit8d3b438fb5fc4430a93ac2cb74d693a7", + "display_name": "Python 3.7.0 64-bit ('3.7')" + }, + "metadata": { + "interpreter": { + "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2, + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting skl2onnx\n", + " Using cached skl2onnx-1.8.0-py2.py3-none-any.whl (230 kB)\n", + "Requirement already satisfied: six in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from skl2onnx) (1.12.0)\n", + "Requirement already satisfied: scipy>=1.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.4.1)\n", + "Requirement already satisfied: protobuf in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (3.8.0)\n", + "Requirement already satisfied: scikit-learn>=0.19 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (0.24.2)\n", + "Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from skl2onnx) (1.19.2)\n", + "Collecting onnx>=1.2.1\n", + " Downloading onnx-1.9.0-cp37-cp37m-macosx_10_12_x86_64.whl (12.0 MB)\n", + "\u001b[K |████████████████████████████████| 12.0 MB 6.6 MB/s \n", + "\u001b[?25hCollecting onnxconverter-common<1.9,>=1.6.1\n", + " Downloading onnxconverter_common-1.8.1-py2.py3-none-any.whl (77 kB)\n", + "\u001b[K |████████████████████████████████| 77 kB 8.2 MB/s \n", + "\u001b[?25hRequirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from protobuf->skl2onnx) (45.1.0)\n", + "Requirement already satisfied: joblib>=0.11 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.19->skl2onnx) (0.16.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from scikit-learn>=0.19->skl2onnx) (2.1.0)\n", + "Collecting typing-extensions>=3.6.2.1\n", + " Downloading typing_extensions-3.10.0.0-py3-none-any.whl (26 kB)\n", + "Installing collected packages: typing-extensions, onnx, onnxconverter-common, skl2onnx\n", + "Successfully installed onnx-1.9.0 onnxconverter-common-1.8.1 skl2onnx-1.8.0 typing-extensions-3.10.0.0\n", + "\u001b[33mWARNING: You are using pip version 20.2.3; however, version 21.1.2 is available.\n", + "You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 -m pip install --upgrade pip' command.\u001b[0m\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install skl2onnx" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting onnxruntime\n", + " Downloading onnxruntime-1.8.0-cp37-cp37m-macosx_10_12_x86_64.whl (5.0 MB)\n", + "\u001b[K |████████████████████████████████| 5.0 MB 3.1 MB/s \n", + "\u001b[?25hRequirement already satisfied: numpy>=1.16.6 in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from onnxruntime) (1.19.2)\n", + "Requirement already satisfied: protobuf in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from onnxruntime) (3.8.0)\n", + "Collecting flatbuffers\n", + " Downloading flatbuffers-2.0-py2.py3-none-any.whl (26 kB)\n", + "Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages (from protobuf->onnxruntime) (45.1.0)\n", + "Requirement already satisfied: six>=1.9 in /Users/jenlooper/Library/Python/3.7/lib/python/site-packages (from protobuf->onnxruntime) (1.12.0)\n", + "Installing collected packages: flatbuffers, onnxruntime\n", + "Successfully installed flatbuffers-2.0 onnxruntime-1.8.0\n", + "\u001b[33mWARNING: You are using pip version 20.2.3; however, version 21.1.2 is available.\n", + "You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 -m pip install --upgrade pip' command.\u001b[0m\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install onnxruntime" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import pandas as pd \n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n", + "0 0 indian 0 0 0 0 0 \n", + "1 1 indian 1 0 0 0 0 \n", + "2 2 indian 0 0 0 0 0 \n", + "3 3 indian 0 0 0 0 0 \n", + "4 4 indian 0 0 0 0 0 \n", + "\n", + " apple_brandy apricot armagnac ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 382 columns]" + ], + "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 \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 \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
Unnamed: 0cuisinealmondangelicaaniseanise_seedappleapple_brandyapricotarmagnac...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00indian00000000...0000000000
11indian10000000...0000000000
22indian00000000...0000000000
33indian00000000...0000000000
44indian00000000...0000000010
\n

5 rows × 382 columns

\n
" + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "data = pd.read_csv('../../data/cleaned_cuisine.csv')\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " almond angelica anise anise_seed apple apple_brandy apricot \\\n", + "0 0 0 0 0 0 0 0 \n", + "1 1 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 0 0 \n", + "\n", + " armagnac artemisia artichoke ... whiskey white_bread white_wine \\\n", + "0 0 0 0 ... 0 0 0 \n", + "1 0 0 0 ... 0 0 0 \n", + "2 0 0 0 ... 0 0 0 \n", + "3 0 0 0 ... 0 0 0 \n", + "4 0 0 0 ... 0 0 0 \n", + "\n", + " whole_grain_wheat_flour wine wood yam yeast yogurt zucchini \n", + "0 0 0 0 0 0 0 0 \n", + "1 0 0 0 0 0 0 0 \n", + "2 0 0 0 0 0 0 0 \n", + "3 0 0 0 0 0 0 0 \n", + "4 0 0 0 0 0 1 0 \n", + "\n", + "[5 rows x 380 columns]" + ], + "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 \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 \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
almondangelicaaniseanise_seedappleapple_brandyapricotarmagnacartemisiaartichoke...whiskeywhite_breadwhite_winewhole_grain_wheat_flourwinewoodyamyeastyogurtzucchini
00000000000...0000000000
11000000000...0000000000
20000000000...0000000000
30000000000...0000000000
40000000000...0000000010
\n

5 rows × 380 columns

\n
" + }, + "metadata": {}, + "execution_count": 10 + } + ], + "source": [ + "X = data.iloc[:,2:]\n", + "X.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " cuisine\n", + "0 indian\n", + "1 indian\n", + "2 indian\n", + "3 indian\n", + "4 indian" + ], + "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
cuisine
0indian
1indian
2indian
3indian
4indian
\n
" + }, + "metadata": {}, + "execution_count": 11 + } + ], + "source": [ + "y = data[['cuisine']]\n", + "y.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.naive_bayes import BernoulliNB,GaussianNB\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.svm import SVC\n", + "from sklearn.model_selection import cross_val_score\n", + "from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "KNeighborsClassifier()" + ] + }, + "metadata": {}, + "execution_count": 14 + } + ], + "source": [ + "# 5 types of model fitting\n", + "model_gaussian = GaussianNB()\n", + "model_gaussian.fit(X_train,y_train.values.ravel())\n", + "model_rfst = RandomForestClassifier()\n", + "model_rfst.fit(X_train,y_train.values.ravel())\n", + "model_nba = BernoulliNB(binarize = .5)\n", + "model_nba.fit(X_train,y_train.values.ravel())\n", + "model_dt = DecisionTreeClassifier()\n", + "model_dt.fit(X_train,y_train.values.ravel())\n", + "model_kn = KNeighborsClassifier()\n", + "model_kn.fit(X_train,y_train.values.ravel())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "y_pred = model_kn.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " precision recall f1-score support\n\n chinese 0.59 0.74 0.66 239\n indian 0.83 0.80 0.82 237\n japanese 0.68 0.77 0.72 252\n korean 0.93 0.65 0.76 220\n thai 0.77 0.71 0.74 251\n\n accuracy 0.73 1199\n macro avg 0.76 0.73 0.74 1199\nweighted avg 0.76 0.73 0.74 1199\n\n" + ] + } + ], + "source": [ + "print(classification_report(y_test,y_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from skl2onnx import convert_sklearn\n", + "from skl2onnx.common.data_types import FloatTensorType\n", + "\n", + "initial_type = [('float_input', FloatTensorType([None, 4]))]\n", + "options = {id(model_kn): {'nocl': True, 'zipmap': False}}\n", + "onx = convert_sklearn(model_kn, initial_types=initial_type,options=options)\n", + "with open(\"./model-kn.onnx\", \"wb\") as f:\n", + " f.write(onx.SerializeToString())\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ] +} \ No newline at end of file diff --git a/5-Clustering/2-K-Means/README.md b/5-Clustering/2-K-Means/README.md index e6fb5764..8e83dac8 100644 --- a/5-Clustering/2-K-Means/README.md +++ b/5-Clustering/2-K-Means/README.md @@ -146,7 +146,6 @@ for i in range(1, 11): > 🎓 Inertia: K-Means algorithms attempt to choose centroids to minimize 'inertia', "a measure of how internally coherent clusters are."[source](https://scikit-learn.org/stable/modules/clustering.html). The value is appended to the wcss variable on each iteration. > 🎓 k-means++: In [Scikit-Learn](https://scikit-learn.org/stable/modules/clustering.html#k-means) you can use the 'k-means++' optimization, which "initializes the centroids to be (generally) distant from each other, leading to probably better results than random initialization. - ### Elbow method Previously, you surmised that, because you have targeted 3 song genres, you should choose 3 clusters. But is that the case? Use the 'elbow method' to make sure. @@ -159,6 +158,7 @@ plt.xlabel('Number of clusters') plt.ylabel('WCSS') plt.show() ``` + Use the `wcss` variable that you built in the previous step to create a chart showing where the 'bend' in the elbow is, which indicates the optimum number of clusters. Maybe it **is** 3! ![elbow method](images/elbow.png) @@ -176,6 +176,7 @@ plt.xlabel('popularity') plt.ylabel('danceability') plt.show() ``` + Check the model's accuracy: ```python