You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/4-Classification/1-Introduction/solution/data-prep-visual.ipynb

1521 lines
102 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"\r\n",
"import pandas as pd\r\n",
"import matplotlib.pyplot as plt\r\n",
"import matplotlib as mpl\r\n",
"import numpy as np\r\n",
"from imblearn.over_sampling import SMOTE"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('.data/asian_indian_recipes.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"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>Unnamed: 0</th>\n",
" <th>cuisine</th>\n",
" <th>almond</th>\n",
" <th>angelica</th>\n",
" <th>anise</th>\n",
" <th>anise_seed</th>\n",
" <th>apple</th>\n",
" <th>apple_brandy</th>\n",
" <th>apricot</th>\n",
" <th>armagnac</th>\n",
" <th>...</th>\n",
" <th>whiskey</th>\n",
" <th>white_bread</th>\n",
" <th>white_wine</th>\n",
" <th>whole_grain_wheat_flour</th>\n",
" <th>wine</th>\n",
" <th>wood</th>\n",
" <th>yam</th>\n",
" <th>yeast</th>\n",
" <th>yogurt</th>\n",
" <th>zucchini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>65</td>\n",
" <td>indian</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>66</td>\n",
" <td>indian</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>67</td>\n",
" <td>indian</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>68</td>\n",
" <td>indian</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>69</td>\n",
" <td>indian</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 385 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 cuisine almond angelica anise anise_seed apple \\\n",
"0 65 indian 0 0 0 0 0 \n",
"1 66 indian 1 0 0 0 0 \n",
"2 67 indian 0 0 0 0 0 \n",
"3 68 indian 0 0 0 0 0 \n",
"4 69 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 385 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 2448 entries, 0 to 2447\n",
"Columns: 385 entries, Unnamed: 0 to zucchini\n",
"dtypes: int64(384), object(1)\n",
"memory usage: 7.2+ MB\n"
]
}
],
"source": [
"df.info()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"korean 799\n",
"indian 598\n",
"chinese 442\n",
"japanese 320\n",
"thai 289\n",
"Name: cuisine, dtype: int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.cuisine.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"#df.keys().values"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAD4CAYAAAAtrdtxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAR0ElEQVR4nO3de5CddX3H8fenAYIRSERSuqKyYCMWQQEDFeMFlXop1EvLdKS1QscaW2sVnVHjSL10qhMvtVSpTuOlOmqpBVEpdIrUVqx4gQ0EEm5SNQp4AazGOzrw7R/nSTmGTcj+ds+eJ+z7NbNznv09v+c5n7PZzWef5znnbKoKSZJa/Mq4A0iSdl2WiCSpmSUiSWpmiUiSmlkikqRmu407wHzab7/9anJyctwxJGmXsn79+tuqavl06xZUiUxOTjI1NTXuGJK0S0ny9e2t83SWJKmZJSJJamaJSJKaWSKSpGaWiCSpmSUiSWpmiUiSmlkikqRmlogkqdmCesX6xpu3MLnmgnHH0BzZvPaEcUeQFjyPRCRJzSwRSVIzS0SS1MwSkSQ1s0QkSc0sEUlSM0tEktSsFyWSZFmSF3XLxyU5f4bb/1WS40eTTpK0Pb0oEWAZ8KLWjavqtVX1H3MXR5K0M/pSImuBhyTZALwV2CvJOUmuS/KRJAFI8toklyXZlGTd0PgHkpw0vviStDD1pUTWAF+pqiOAVwBHAqcBhwIHA6u6eWdW1dFVdRhwH+DEe9pxktVJppJM3fGTLaPILkkLVl9KZFuXVtVNVXUnsAGY7MafmORLSTYCTwIefk87qqp1VbWyqlYuWrJ0ZIElaSHq6xsw3j60fAewW5I9gXcBK6vqxiSvB/YcRzhJ0kBfjkR+COx9D3O2FsZtSfYCvAYiSWPWiyORqvpukkuSbAJ+CnxnmjnfT/IeYCOwGbhsflNKkrbVixIBqKo/2M74i4eWTwdOn2bOqaNLJknanr6czpIk7YIsEUlSM0tEktTMEpEkNbNEJEnNevPsrPlw+AFLmVp7wrhjSNK9hkcikqRmlogkqZklIklqZolIkppZIpKkZpaIJKmZJSJJamaJSJKaWSKSpGaWiCSpmSUiSWpmiUiSmlkikqRmlogkqZklIklqZolIkppZIpKkZpaIJKmZJSJJamaJSJKaWSKSpGa7jTvAfNp48xYm11ww7hgak81rTxh3BOlexyMRSVIzS0SS1MwSkSQ1s0QkSc0sEUlSM0tEktRsp0okyedHHUSStOvZqRKpqseMOogkadezs0ciP0qyV5JPJ7k8ycYkz+zWTSa5LskHk1yV5JwkS7p1r01yWZJNSdYlSTf+mSRvTnJpki8neVw3vijJW7ttrkrywm58Islnk2zo9rV1/lOSfKHLdHaSvUbxRZIkTW8m10R+Bjy7qo4Cngj8zdZSAA4B1lXVI4AfAC/qxs+sqqOr6jDgPsCJQ/vbraqOAU4DXteNPR/YUlVHA0cDL0hyEPAHwIVVdQTwSGBDkv2A04Hju0xTwMtn8HgkSbM0k7c9CfCmJI8H7gQOAPbv1t1YVZd0yx8GXgK8DXhiklcCS4B9gauBf+3mndvdrgcmu+WnAI9IclL3+VJgBXAZ8P4kuwOfqKoNSZ4AHApc0nXZHsAX7hY6WQ2sBli0z/IZPFxJ0j2ZSYn8IbAceFRV/SLJZmDPbl1tM7eS7Am8C1hZVTcmef3QfIDbu9s7hnIE+IuqunDbO+/K6wTgQ0neCnwPuKiqTt5R6KpaB6wDWDyxYtuckqRZmMnprKXALV2BPBE4cGjdg5Mc2y2fDHyOuwrjtu5axUncswuBP+uOOEjy0CT3TXJgd9/vAd4HHAV8EViV5Ne7uUuSPHQGj0eSNEs7eyRSwEeAf00yBWwArhtafy1wSpJ/AG4A3l1VP0nyHmAjsJnBKal78l4Gp7Yu76633Ao8CzgOeEWSXwA/Ap5XVbcmORU4K8nibvvTgS/v5GOSJM1SqnZ8hifJ/YHLq+rA7ayfBM7vLp732uKJFTVxyhnjjqEx8a3gpTZJ1lfVyunW7fB0VpIHMLhY/bZRBJMk7dp2eDqrqr4J7PA6Q1VtBnp/FCJJmnu+d5YkqZklIklqZolIkprN5MWGu7zDD1jKlM/QkaQ545GIJKmZJSJJamaJSJKaWSKSpGaWiCSpmSUiSWpmiUiSmlkikqRmlogkqZklIklqZolIkppZIpKkZpaIJKmZJSJJamaJSJKaWSKSpGaWiCSpmSUiSWpmiUiSmlkikqRmlogkqdlu4w4wnzbevIXJNReMO4bUbPPaE8YdQfolHolIkppZIpKkZpaIJKmZJSJJamaJSJKaWSKSpGaWiCSp2ZyWSJIPJDlpmvEHJDlnLu9LkjR+8/Jiw6r6JnC3cpEk7dpmdSSS5HlJrkpyZZIPdcOPT/L5JF/delSSZDLJpm751CTnJvn3JDckecvQ/p6S5AtJLk9ydpK9uvG1Sa7p7utt3djyJB9Lcln3sWo2j0WSNHPNRyJJHg68BlhVVbcl2Rd4OzABPBZ4GHAeMN1prCOAI4HbgeuTvBP4KXA6cHxV/TjJq4CXJzkTeDbwsKqqJMu6ffwd8LdV9bkkDwYuBH5jmpyrgdUAi/ZZ3vpwJUnTmM3prCcB51TVbQBV9b9JAD5RVXcC1yTZfzvbfrqqtgAkuQY4EFgGHApc0u1nD+ALwA+AnwHvTXIBcH63j+OBQ7u5APsk2buqfjh8R1W1DlgHsHhiRc3i8UqStjGbEgkw3X/Kt28zZzrDc+7ocgS4qKpOvtsdJccATwaeA7yYQYH9CnBsVf105tElSXNhNtdEPg38fpL7A3Sns2bji8CqJL/e7W9Jkod210WWVtW/AacxOBUG8CkGhUI3/wgkSfOq+Uikqq5O8kbg4iR3AFfMJkhV3ZrkVOCsJIu74dOBHwKfTLIng6OVl3XrXgL8fZKrGDyOzwJ/OpsMkqSZSdXCuUyweGJFTZxyxrhjSM38eyIahyTrq2rldOt8xbokqZklIklqZolIkppZIpKkZpaIJKnZvLwBY18cfsBSpnx2iyTNGY9EJEnNLBFJUjNLRJLUzBKRJDWzRCRJzSwRSVIzS0SS1MwSkSQ1s0QkSc0sEUlSM0tEktTMEpEkNbNEJEnNLBFJUjNLRJLUzBKRJDWzRCRJzSwRSVIzS0SS1MwSkSQ1s0QkSc12G3eA+bTx5i1Mrrlg3DEkzdDmtSeMO4K2wyMRSVIzS0SS1MwSkSQ1s0QkSc0sEUlSM0tEktRsZCWS5PMznH9ckvO75WckWTOaZJKkuTKy14lU1WNmse15wHlzGEeSNAKjPBL5UXd7XJLPJDknyXVJPpIk3bqndWOfA353aNtTk5zZLf9Oki8luSLJfyTZvxt/fZL3d/v+apKXjOqxSJKmN1/XRI4ETgMOBQ4GViXZE3gP8DvA44Bf2862nwMeXVVHAv8MvHJo3cOApwLHAK9LsvtI0kuSpjVfb3tyaVXdBJBkAzAJ/Aj4WlXd0I1/GFg9zbYPBD6aZALYA/ja0LoLqup24PYktwD7AzcNb5xk9db9Ltpn+Rw+JEnSfB2J3D60fAd3lVftxLbvBM6sqsOBFwJ77sR+/19VrauqlVW1ctGSpTNLLUnaoXE+xfc64KAkD+k+P3k785YCN3fLp4w8lSRpp42tRKrqZwxOM13QXVj/+namvh44O8l/A7fNUzxJ0k5I1c6cUbp3WDyxoiZOOWPcMSTNkG8FP15J1lfVyunW+Yp1SVIzS0SS1MwSkSQ1s0QkSc0sEUlSs/l6xXovHH7AUqZ8lockzRmPRCRJzSwRSVIzS0SS1MwSkSQ1s0QkSc0sEUlSM0tEktTMEpEkNbNEJEnNLBFJUjNLRJLUzBKRJDWzRCRJzSwRSVIzS0SS1MwSkSQ1s0QkSc0sEUlSM0tEktTMEpEkNbNEJEnNdht3gPm08eYtTK65YNwxJGlebV57wsj27ZGIJKmZJSJJamaJSJKaWSKSpGaWiCSpmSUiSWpmiUiSms1piSSZTLJpLvcpSeqvXhyJJFlQL3qUpHuLkZVIkoOTXJHk6CRfTHJVko8nuV+3/jNJ3pTkYuClSR6V5OIk65NcmGSim/eCJJcluTLJx5Is6cY/kOQdST6f5KtJThrVY5EkTW8kJZLkEOBjwB8D7wNeVVWPADYCrxuauqyqngC8A3gncFJVPQp4P/DGbs65VXV0VT0SuBZ4/tD2E8BjgROBtdvJsjrJVJKpO36yZc4eoyRpNO+dtRz4JPB7wE0MiuLibt0HgbOH5n60uz0EOAy4KAnAIuBb3brDkvw1sAzYC7hwaPtPVNWdwDVJ9p8uTFWtA9YBLJ5YUbN6ZJKkXzKKEtkC3Ais4q6S2J4fd7cBrq6qY6eZ8wHgWVV1ZZJTgeOG1t0+tJyWsJKkdqM4nfVz4FnA84ATgO8leVy37o+Ai6fZ5npgeZJjAZLsnuTh3bq9gW8l2R34wxHklSQ1Gsmzoqrqx0lOBC4CzgXe2l0Q/yqD6yTbzv95d2H8HUmWdrnOAK4G/hL4EvB1BtdU9h5FZknSzKVq4VwmWDyxoiZOOWPcMSRpXs3274kkWV9VK6db14vXiUiSdk2WiCSpmSUiSWpmiUiSmlkikqRmC+qNDw8/YClTs3yWgiTpLh6JSJKaWSKSpGaWiCSpmSUiSWpmiUiSmlkikqRmlogkqZklIklqZolIkppZIpKkZgvqj1Il+SGDP8XbV/sBt407xA6Yb3bMNzvmm53Z5DuwqpZPt2JBvXcWcP32/jpXHySZMl87882O+WZnoebzdJYkqZklIklqttBKZN24A9wD882O+WbHfLOzIPMtqAvrkqS5tdCORCRJc8gSkSQ1WzAlkuRpSa5P8j9J1owpw/uT3JJk09DYvkkuSnJDd3u/oXWv7vJen+SpI872oCT/leTaJFcneWnP8u2Z5NIkV3b53tCnfEP3uSjJFUnO71u+JJuTbEyyIclUD/MtS3JOkuu678Nj+5IvySHd123rxw+SnNaXfN39vaz72diU5KzuZ2b0+arqXv8BLAK+AhwM7AFcCRw6hhyPB44CNg2NvQVY0y2vAd7cLR/a5VwMHNTlXzTCbBPAUd3y3sCXuwx9yRdgr255d+BLwKP7km8o58uBfwLO79O/b3efm4H9thnrU74PAn/SLe8BLOtTvqGci4BvAwf2JR9wAPA14D7d5/8CnDof+Ub+Be/DB3AscOHQ568GXj2mLJP8colcD0x0yxMMXhB5t4zAhcCx85jzk8Bv9TEfsAS4HPjNPuUDHgh8GngSd5VIn/Jt5u4l0ot8wD7df4LpY75tMj0FuKRP+RiUyI3AvgxeRH5+l3Pk+RbK6aytX+CtburG+mD/qvoWQHf7q9342DInmQSOZPDbfm/ydaeKNgC3ABdVVa/yAWcArwTuHBrrU74CPpVkfZLVPct3MHAr8I/d6cD3Jrlvj/INew5wVrfci3xVdTPwNuAbwLeALVX1qfnIt1BKJNOM9f25zWPJnGQv4GPAaVX1gx1NnWZspPmq6o6qOoLBb/zHJDlsB9PnNV+SE4Fbqmr9zm4yzdio/31XVdVRwNOBP0/y+B3Mne98uzE41fvuqjoS+DGD0y/bM66fjz2AZwBn39PUacZG+f13P+CZDE5NPQC4b5Ln7miTacaa8i2UErkJeNDQ5w8EvjmmLNv6TpIJgO72lm583jMn2Z1BgXykqs7tW76tqur7wGeAp/Uo3yrgGUk2A/8MPCnJh3uUj6r6Znd7C/Bx4Jge5bsJuKk7ugQ4h0Gp9CXfVk8HLq+q73Sf9yXf8cDXqurWqvoFcC7wmPnIt1BK5DJgRZKDut8kngOcN+ZMW50HnNItn8LgWsTW8eckWZzkIGAFcOmoQiQJ8D7g2qp6ew/zLU+yrFu+D4Mfmuv6kq+qXl1VD6yqSQbfX/9ZVc/tS74k902y99ZlBufLN/UlX1V9G7gxySHd0JOBa/qSb8jJ3HUqa2uOPuT7BvDoJEu6n+UnA9fOS775uBDVhw/gtxk84+grwGvGlOEsBucrf8HgN4HnA/dncDH2hu5236H5r+nyXg88fcTZHsvgcPYqYEP38ds9yvcI4Iou3ybgtd14L/Jtk/U47rqw3ot8DK45XNl9XL31Z6Av+br7OwKY6v6NPwHcr2f5lgDfBZYOjfUp3xsY/GK1CfgQg2dejTyfb3siSWq2UE5nSZJGwBKRJDWzRCRJzSwRSVIzS0SS1MwSkSQ1s0QkSc3+DwlMP+/hPKDCAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#display classes in bar graph\r\n",
"df.cuisine.value_counts().plot.barh()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"thai df: (289, 385)\n",
"japanese df: (320, 385)\n",
"chinese df: (442, 385)\n",
"indian df: (598, 385)\n",
"korean df: (799, 385)\n"
]
}
],
"source": [
"# ingrediant counts by class count\r\n",
"# filter to thai food, display ingredients graph\r\n",
"\r\n",
"thai_df = df[(df.cuisine == \"thai\")]\r\n",
"japanese_df = df[(df.cuisine == \"japanese\")]\r\n",
"chinese_df = df[(df.cuisine == \"chinese\")]\r\n",
"indian_df = df[(df.cuisine == \"indian\")]\r\n",
"korean_df = df[(df.cuisine == \"korean\")]\r\n",
"\r\n",
"print(f'thai df: {thai_df.shape}')\r\n",
"print(f'japanese df: {japanese_df.shape}')\r\n",
"print(f'chinese df: {chinese_df.shape}')\r\n",
"print(f'indian df: {indian_df.shape}')\r\n",
"print(f'korean df: {korean_df.shape}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What are the top ingredients by class"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def create_ingredient_df(df):\r\n",
" #transpose df, drop cuisine and unnamed rows, sum the row to get total for ingredient and add value header to new df\r\n",
" ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value')\r\n",
" # drop ingredients that have a 0 sum\r\n",
" ingredient_df = ingredient_df[(ingredient_df.T != 0).any()]\r\n",
" # sort df\r\n",
" ingredient_df = ingredient_df.sort_values(by='value', ascending=False, inplace=False)\r\n",
" return ingredient_df\r\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"thai_ingredient_df = create_ingredient_df(thai_df)\r\n",
"thai_ingredient_df.head(10).plot.barh()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"japanese_ingredient_df = create_ingredient_df(japanese_df)\r\n",
"japanese_ingredient_df.head(10).plot.barh()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"chinese_ingredient_df = create_ingredient_df(chinese_df)\r\n",
"chinese_ingredient_df.head(10).plot.barh()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"indian_ingredient_df = create_ingredient_df(indian_df)\r\n",
"indian_ingredient_df.head(10).plot.barh()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"korean_ingredient_df = create_ingredient_df(korean_df)\r\n",
"korean_ingredient_df.head(10).plot.barh()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# TODO add categorical labels to food items - calculated columns to improve accuracy"
]
},
{
"cell_type": "code",
"execution_count": 17,
"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>almond</th>\n",
" <th>angelica</th>\n",
" <th>anise</th>\n",
" <th>anise_seed</th>\n",
" <th>apple</th>\n",
" <th>apple_brandy</th>\n",
" <th>apricot</th>\n",
" <th>armagnac</th>\n",
" <th>artemisia</th>\n",
" <th>artichoke</th>\n",
" <th>...</th>\n",
" <th>whiskey</th>\n",
" <th>white_bread</th>\n",
" <th>white_wine</th>\n",
" <th>whole_grain_wheat_flour</th>\n",
" <th>wine</th>\n",
" <th>wood</th>\n",
" <th>yam</th>\n",
" <th>yeast</th>\n",
" <th>yogurt</th>\n",
" <th>zucchini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 380 columns</p>\n",
"</div>"
],
"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]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# set x and y features\r\n",
"# dropping common ingredients to improve accuracy\r\n",
"#feature_df= df.drop(['cuisine','Unnamed: 0'], axis=1)\r\n",
"feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1)\r\n",
"labels_df = df.cuisine #.unique()\r\n",
"feature_df.head()\r\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"# balance data with SMOTE oversamplling to the highest class. Read more here: https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html\r\n",
"oversample = SMOTE()\r\n",
"transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"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>almond</th>\n",
" <th>angelica</th>\n",
" <th>anise</th>\n",
" <th>anise_seed</th>\n",
" <th>apple</th>\n",
" <th>apple_brandy</th>\n",
" <th>apricot</th>\n",
" <th>armagnac</th>\n",
" <th>artemisia</th>\n",
" <th>artichoke</th>\n",
" <th>...</th>\n",
" <th>whiskey</th>\n",
" <th>white_bread</th>\n",
" <th>white_wine</th>\n",
" <th>whole_grain_wheat_flour</th>\n",
" <th>wine</th>\n",
" <th>wood</th>\n",
" <th>yam</th>\n",
" <th>yeast</th>\n",
" <th>yogurt</th>\n",
" <th>zucchini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 380 columns</p>\n",
"</div>"
],
"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]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"transformed_feature_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"new label count: chinese 799\n",
"korean 799\n",
"indian 799\n",
"thai 799\n",
"japanese 799\n",
"Name: cuisine, dtype: int64\n",
"old label count: korean 799\n",
"indian 598\n",
"chinese 442\n",
"japanese 320\n",
"thai 289\n",
"Name: cuisine, dtype: int64\n"
]
}
],
"source": [
"print(f'new label count: {transformed_label_df.value_counts()}')\r\n",
"print(f'old label count: {df.cuisine.value_counts()}')"
]
},
{
"cell_type": "code",
"execution_count": 42,
"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>cuisine</th>\n",
" <th>almond</th>\n",
" <th>angelica</th>\n",
" <th>anise</th>\n",
" <th>anise_seed</th>\n",
" <th>apple</th>\n",
" <th>apple_brandy</th>\n",
" <th>apricot</th>\n",
" <th>armagnac</th>\n",
" <th>artemisia</th>\n",
" <th>...</th>\n",
" <th>whiskey</th>\n",
" <th>white_bread</th>\n",
" <th>white_wine</th>\n",
" <th>whole_grain_wheat_flour</th>\n",
" <th>wine</th>\n",
" <th>wood</th>\n",
" <th>yam</th>\n",
" <th>yeast</th>\n",
" <th>yogurt</th>\n",
" <th>zucchini</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>indian</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>indian</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>indian</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>indian</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>indian</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 381 columns</p>\n",
"</div>"
],
"text/plain": [
" cuisine almond angelica anise anise_seed apple apple_brandy apricot \\\n",
"0 indian 0 0 0 0 0 0 0 \n",
"1 indian 1 0 0 0 0 0 0 \n",
"2 indian 0 0 0 0 0 0 0 \n",
"3 indian 0 0 0 0 0 0 0 \n",
"4 indian 0 0 0 0 0 0 0 \n",
"\n",
" armagnac artemisia ... whiskey white_bread white_wine \\\n",
"0 0 0 ... 0 0 0 \n",
"1 0 0 ... 0 0 0 \n",
"2 0 0 ... 0 0 0 \n",
"3 0 0 ... 0 0 0 \n",
"4 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 381 columns]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# export transformed data to new csv for classification\r\n",
"transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer')\r\n",
"transformed_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"transformed_feature_df.to_csv(\".data/features_dataset.csv\")\r\n",
"transformed_label_df.to_csv(\".data/labels_dataset.csv\")\r\n",
"transformed_df.to_csv(\".data/processed.csv\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Build classification model"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LogisticRegression\r\n",
"from sklearn.model_selection import train_test_split, cross_val_score\r\n",
"from sklearn.metrics import accuracy_score,precision_score,confusion_matrix,classification_report, precision_recall_curve\r\n",
"from sklearn.svm import SVC"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(transformed_feature_df, transformed_label_df, test_size=0.3)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy is 0.7973311092577148\n"
]
}
],
"source": [
"lr = LogisticRegression(multi_class='ovr',solver='lbfgs')\r\n",
"model = lr.fit(X_train, y_train)\r\n",
"\r\n",
"accuracy = model.score(X_test, y_test)\r\n",
"print (\"Accuracy is {}\".format(accuracy))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ingredients: Index(['bean', 'carrot', 'cayenne', 'pea', 'sake', 'scallion', 'sesame_oil',\n",
" 'shrimp', 'starch', 'vegetable_oil', 'vinegar'],\n",
" dtype='object')\n",
"cusine: chinese\n"
]
}
],
"source": [
"# test an item\r\n",
"print(f'ingredients: {X_test.iloc[20][X_test.iloc[20]!=0].keys()}')\r\n",
"print(f'cusine: {y_test.iloc[20]}')"
]
},
{
"cell_type": "code",
"execution_count": 27,
"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>0</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>chinese</th>\n",
" <td>0.848156</td>\n",
" </tr>\n",
" <tr>\n",
" <th>japanese</th>\n",
" <td>0.110072</td>\n",
" </tr>\n",
" <tr>\n",
" <th>korean</th>\n",
" <td>0.033688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>thai</th>\n",
" <td>0.005013</td>\n",
" </tr>\n",
" <tr>\n",
" <th>indian</th>\n",
" <td>0.003072</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0\n",
"chinese 0.848156\n",
"japanese 0.110072\n",
"korean 0.033688\n",
"thai 0.005013\n",
"indian 0.003072"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#rehsape to 2d array and transpose\r\n",
"test= X_test.iloc[20].values.reshape(-1, 1).T\r\n",
"# predict with score\r\n",
"proba = model.predict_proba(test)\r\n",
"classes = model.classes_\r\n",
"# create df with classes and scores\r\n",
"resultdf = pd.DataFrame(data=proba, columns=classes)\r\n",
"\r\n",
"# create df to show results\r\n",
"topPrediction = resultdf.T.sort_values(by=[0], ascending = [False])\r\n",
"topPrediction.head()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"y_pred = model.predict(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" chinese 0.78 0.75 0.76 243\n",
" indian 0.91 0.92 0.91 233\n",
" japanese 0.67 0.77 0.71 244\n",
" korean 0.84 0.78 0.81 241\n",
" thai 0.82 0.77 0.80 238\n",
"\n",
" accuracy 0.80 1199\n",
" macro avg 0.80 0.80 0.80 1199\n",
"weighted avg 0.80 0.80 0.80 1199\n",
"\n"
]
}
],
"source": [
"print(classification_report(y_test,y_pred))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Try different classifiers"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"\r\n",
"C = 10\r\n",
"# Create different classifiers.\r\n",
"classifiers = {\r\n",
" 'L1 logistic': LogisticRegression(C=C, penalty='l1',\r\n",
" solver='saga',\r\n",
" multi_class='multinomial',\r\n",
" max_iter=10000),\r\n",
" 'L2 logistic (Multinomial)': LogisticRegression(C=C, penalty='l2',\r\n",
" solver='saga',\r\n",
" multi_class='multinomial',\r\n",
" max_iter=10000),\r\n",
" 'L2 logistic (OvR)': LogisticRegression(C=C, penalty='l2',\r\n",
" solver='saga',\r\n",
" multi_class='ovr',\r\n",
" max_iter=10000),\r\n",
" 'Linear SVC': SVC(kernel='linear', C=C, probability=True,\r\n",
" random_state=0)\r\n",
"}\r\n"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy (train) for L1 logistic: 80.7% \n",
"Accuracy (train) for L2 logistic (Multinomial): 80.9% \n",
"Accuracy (train) for L2 logistic (OvR): 80.7% \n",
"Accuracy (train) for Linear SVC: 79.9% \n"
]
}
],
"source": [
"n_classifiers = len(classifiers)\r\n",
"\r\n",
"for index, (name, classifier) in enumerate(classifiers.items()):\r\n",
" classifier.fit(X_train, y_train)\r\n",
"\r\n",
" y_pred = classifier.predict(X_test)\r\n",
" accuracy = accuracy_score(y_test, y_pred)\r\n",
" print(\"Accuracy (train) for %s: %0.1f%% \" % (name, accuracy * 100))\r\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"interpreter": {
"hash": "dd61f40108e2a19f4ef0d3ebbc6b6eea57ab3c4bc13b15fe6f390d3d86442534"
},
"kernelspec": {
"display_name": "Python 3.8.5 64-bit ('onnxwine': conda)",
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}