diff --git a/4-Classification/1-Introduction/notebook.ipynb b/4-Classification/1-Introduction/notebook.ipynb index b6698193..fd862c35 100644 --- a/4-Classification/1-Introduction/notebook.ipynb +++ b/4-Classification/1-Introduction/notebook.ipynb @@ -6,6 +6,729 @@ "source": [ "# Delicious Asian and Indian Cuisines " ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "import numpy as np\n", + "from imblearn.over_sampling import SMOTE" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "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
065indian00000000...0000000000
166indian10000000...0000000000
267indian00000000...0000000000
368indian00000000...0000000000
469indian00000000...0000000010
\n", + "

5 rows × 385 columns

\n", + "
" + ], + "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 = pd.read_csv('../data/cuisines.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\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": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.cuisine.value_counts().plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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": [ + "thai_df = df[(df.cuisine == 'thai')]\n", + "japanese_df = df[(df.cuisine == \"japanese\")]\n", + "chinese_df = df[(df.cuisine == \"chinese\")]\n", + "indian_df = df[(df.cuisine == \"indian\")]\n", + "korean_df = df[(df.cuisine == \"korean\")]\n", + "print(f'thai df: {thai_df.shape}') \n", + "print(f'japanese df: {japanese_df.shape}')\n", + "print(f'chinese df: {chinese_df.shape}')\n", + "print(f'indian df: {indian_df.shape}')\n", + "print(f'korean df: {korean_df.shape}')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def create_ingredient_df(df):\n", + " ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value')\n", + " ingredient_df = ingredient_df[(ingredient_df.T != 0).any()]\n", + " ingredient_df = ingredient_df.sort_values(by='value', ascending=False,\n", + " inplace=False)\n", + " return ingredient_df" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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OOF6/urVqyUgIEC++eYbqVGjhgQHB8u6devS7Cd112dycrKMHj1aypQpY55TvHhxGTly5G161QAAwGYEtf/q16+frF+/XhYvXizLly+XtWvXytatW13LL1++LCNGjJDt27fLwoULJT4+3oSu1AYNGiSxsbGyZ88eqVy58nX3O3jwYLP+kCFDZPfu3TJ79mwpVKhQuutevHhREhMT3W4AAMB30fX532razJkzTUhq3LixeWz69OlStGhR1zrdunVzfR8ZGSkTJ06UWrVqydmzZyVXrlyuZcOHD5emTZtmeL86Zm3SpEnSpUsX81jp0qWlXr166a4/atQoiYmJyfTrBAAA3oWKmogcOHDAVMxq167tNpasXLlyrvs//fSTtGzZ0nRNavdngwYNzOOHDx9225Z2j2aUVt20SuYMhxmpviUkJLhuR44cyfC+AACA96GilgHnzp2TZs2amdunn34qBQsWNAFN71+6dMltXR3jllGhoaE31A4dw6Y3AADgH6io/bcrMygoSOLi4lyPacXqt99+M9//+uuvcvLkSTOW7MEHH5Ty5cu7TSTIrLJly5qwtnLlypveFgAA8D1U1ERMV6aOEXv99dclf/78cuedd0p0dLQEBgaamZza3ZkjRw55//33pWfPnrJz504zseBmhYSEyMCBA2XAgAFm+3Xr1pW//vpLdu3aJd27d78lrw0AAHgvKmr/NXbsWKlTp4489thj0qRJExOaKlSoYMKUdnXOmDFD5s2bJ/fcc4+prL333nu3ZL8627N///4ydOhQs7/27dvfkmodAADwfgEOLpN/1XFpxYoVkzFjxlhb3dLLc+ikh4iouRIYHObp5gAA4FPiY1tk6fu3DrMKDw+/5rp0ff7Xzz//bMai6cxPPXB6mQ3VqlUrTzcNAAD4KYJaCtqduXfvXjNeTD9dQC96W6BAAU83CwAA+Cm6Pr3YjZROAQCA971/M5kAAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACzFBW+9mPMSeHo9FgAA4B2c79sZuZQtQc2LnTx50nyNiIjwdFMAAMANOnPmjLnw7bUQ1LxY/vz5zdfDhw9f9wftT/9L0eB65MgRPq2B45EGxyMtjok7joc7jkfWHA+tpGlIK1q06HXXJah5scDA/xtiqCGNXyB3ejw4Jv8fx8MdxyMt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/TM/duxY871zFmNsbKz5e6GvfceOHWYGW6lSpRz/+7//69pG8+bNHdWqVXNs3rzZsW7dOkfZsmUdHTp0cPja8bh06ZLj8ccfd9x1112Obdu2uf1NuXjxonn+hg0bzGw+Xb5//37Hv/71L0fBggUdnTt3dvja8dBlr732mpkVrr8fK1ascFSvXt38/C9cuOCT50dGfmdUQkKCIywszPHBBx84UsvKc4Sg5sXef/9980aUI0cOc7mOTZs2OfyB/hKld5s+fbpZfvjwYfOmmz9/fhNmy5Qp43j99dfNL5kvat++vaNIkSLmPChWrJi5r2HESd98X375ZUe+fPnMH5k2bdqYNyFft2zZMnNe7N271+1xfzg/Vq1ale7viF52wXmJjiFDhjgKFSpkjkHjxo3THKeTJ0+aN95cuXI5wsPDHc8995x5M/O146Fh5Gp/U/R56qeffnLcd9995j+IISEhjgoVKjjefvttt+DiK8dD/8P78MMPm5Chl/bRS0688MILaYoAvnR+ZOR3Rn300UeO0NBQczmb1LLyHAnQf26uJgcAAICswBg1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAABA7PT/AHJLV9XzZsdmAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "thai_ingredient_df = create_ingredient_df(thai_df)\n", + "thai_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACxFUAMAALAUQQ0AAMBSBDUAAABLEdQAAAAsRVADAACwFEENAADAUgQ1AAAASxHUAAAALEVQAwAAsBRBDQAAwFIENQAAAEsR1AAAACyV3NMNwL0rOnyVBAaFeroZAPxY5Pj6nm4C4JOoqAEAAFiKoAYAAGApghoAAICl/CaojRgxQkqUKJHgPh06dJAmTZo8tDZVrVpVevfu7bqdJ08eeeeddx7a4wMAALt53WQCDVMXLlyQpUuXirdbsmSJpEiRwtPNAAAAlvK6oOZLMmTI4OkmAAAAX+j6/PDDDyVHjhwSExPjtr5x48bSsWNH8/0333wjpUqVkuDgYMmXL5+MHDlS/v33X9e+hw4dkqefftpsL1KkiKxZs0YCAgLcqmMnT56Uli1bSrp06UyQ0eNHRka6ui/nzZtnHkfvp8uGDRvMtoEDB8qjjz4qoaGh5rGHDh0qN27cuOV5fPDBBxIeHm7208eJioq67XPW5zpu3DjJmzevhISESPHixWXx4sWJfclk48aNUq5cOQkKCpLs2bPLoEGD3F6PuF2fAAAASQpqLVq0kHPnzsn69etd686fPy/fffedtG3bVjZv3izt2rWTV199VX755RcTiObOnStjxowx+968edOM/9KAtGPHDhP8hgwZ4vYYGqxq164tadKkMcfbunWrpE6dWurUqSPXr1+X/v37m3Clt0+dOmWWp556ytxX76OPp4/97rvvyqxZs2TKlCluxz969KgsWrRI/vOf/5h27969W1555ZXbPmcNafPnz5eZM2fKgQMHpE+fPvL888+bAHYnf/75p9SrV0/Kli0re/fulRkzZsjHH38sb775piTVtWvXJDo62m0BAAC+K9Fdn+nTp5e6devKwoULpXr16madVpcyZcokzzzzjNSqVctUjNq3b2+2aVVr9OjR8tprr8nw4cNl9erVcuzYMVMBy5Ytm9lHQ1zNmjVdj/HFF1+YKtZHH31kqmVqzpw5prqm99PH0MqWBhbnMZzeeOMNt0H5Guo+//xz8/hOV69eNcErZ86c5va0adOkfv36MmnSpFuOp48xduxYU/WrUKGC6zlt2bLFhNAqVaok+HpNnz7dVO7ee+8981wee+wx+euvv0zlb9iwYRIYePfzODQ4apUSAAD4h7sao6aV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# japanese_ingredients_df = create_ingredient_df(japanese_df)\n", + "# japanese_ingredients_df.head(10).plot().barh()\n", + "\n", + "japanese_ingredient_df = create_ingredient_df(japanese_df)\n", + "japanese_ingredient_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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OnWKT3R4AJy35OG8JQ/nLXk4b+5x3rSSpiEtR44c992WoObGfH3/b4ihhjR+IR+cnjPO24PjvCUP5y15OG/Jw3mz/nlLaoGFyQQAAAAWRVADAACwKIKaG/P395chQ4aYr0g6zlvycN6Sh/OWPJy35OG8ed5587ElZW4oAAAAnjgqagAAABZFUAMAALAoghoAAIBFEdQAAAAsiqDmxj788EPJkyePBAQEyDPPPCM//vijq5tkKUOHDhUfHx+npXDhwo71N27ckG7duknGjBklTZo08tJLL8mff/4p3mbTpk3SqFEjc4VsPUdLly51Wq/zjQYPHizZs2eXwMBAqVWrlvz2229O21y8eFHatGljLhSZPn166dixo1y9elW8+by1b9/+rtdf3bp1vfq8jRo1SsqXLy9p06aVLFmySJMmTeTIkSNO2yTl91I/jaVBgwYSFBRk9tO3b1+5c+eOePN5q169+l2vty5dunj1eZs2bZqUKFHCcRHbSpUqyYoVK9zutUZQc1Nffvml9OrVy0wn3r17t5QsWVLq1Kkj586dc3XTLOXpp5+Ws2fPOpYtW7Y41vXs2VO++eYb+eqrr2Tjxo1y5swZadasmXiba9eumdePBv+EjBkzRiZPnizTp0+XHTt2SOrUqc1rTf+Ts9OwceDAAVmzZo0sX77chJjOnTuLN583pcEs7uvviy++cFrvbedNf8/0jfGHH34wz/n27dtSu3Ztcy6T+nsZExNj3jhv3bol27Ztkzlz5sjs2bPNHxPefN5Up06dnF5v+rvrzeftqaeektGjR8tPP/0ku3btkho1akjjxo3N75xbvdb08hxwPxUqVLB169bNcTsmJsaWI0cO26hRo1zaLisZMmSIrWTJkgmuu3Tpki1VqlS2r776ynHfoUOH9FI1tu3bt9u8lT7/JUuWOG7HxsbasmXLZnv//fedzp2/v7/tiy++MLcPHjxoHrdz507HNitWrLD5+PjY/vjjD5s3njfVrl07W+PGje/5GM6bzXbu3DlzDjZu3Jjk38vvvvvO5uvra/vvf//r2GbatGm24OBg282bN23eeN5UtWrVbG+//fY9H8N5+z8ZMmSwzZw5061ea1TU3JCme/0LQbug4n7up97evn27S9tmNdpFp11T+fLlM9ULLWMrPX/6V2ncc6jdorly5eIcxnHixAn573//63Se9PPptKvdfp70q3bblStXzrGNbq+vSa3AebMNGzaY7pJChQpJ165d5cKFC451nDeR6Oho8zUkJCTJv5f6tXjx4pI1a1bHNlrh1Q/VtldKvO282c2bN08yZcokxYoVk4iICLl+/bpjnbeft5iYGJk/f76pQmoXqDu91vhQdjf0119/mRdd3BeP0tuHDx92WbusRsOElqn1TVK7ASIjI6VKlSryyy+/mPDh5+dn3ijjn0Ndh/9jPxcJvdbs6/SrhpG4UqZMad5EvPlcarendqPkzZtXjh07Jv/+97+lXr165j//FClSeP15i42NlfDwcKlcubIJFiopv5f6NaHXo32dN5431bp1a8mdO7f5w3Tfvn3Sv39/M45t8eLFXn3e9u/fb4KZDtXQcWhLliyRokWLyt69e93mtUZQg8fSN0U7HVCqwU3/I1uwYIEZFA88Tq+88orje/2rXF+D+fPnN1W2mjVrirfTMVf6R1PccaNI/nmLO7ZRX286+UdfZ/pHgr7uvFWhQoVMKNMq5MKFC6Vdu3ZmPJo7oevTDWlpW/8ijz87RW9ny5bNZe2yOv3LqWDBgnL06FFznrQL+dKlS07bcA6d2c9FYq81/Rp/EovOitIZjZzL/0+73/V3V19/3n7eunfvbiZPrF+/3gz4tkvK76V+Tej1aF/njectIfqHqYr7evPG8+bn5ydhYWFStmxZM3tWJwBNmjTJrV5rBDU3feHpi27dunVO5XC9rSVeJEwve6B/Xepfmnr+UqVK5XQOtZtAx7BxDv8/7bbT/5Dinicdn6FjqOznSb/qf3Y65sPu+++/N69J+5sFRE6fPm3GqOnrz1vPm8670LCh3U/6XPX1FVdSfi/1q3ZnxQ25OhNSL7+gXVreeN4SolUkFff15m3nLSH6+3Xz5k33eq09sWkLeKTmz59vZt7Nnj3bzB7r3LmzLX369E6zU7xd7969bRs2bLCdOHHCtnXrVlutWrVsmTJlMjOmVJcuXWy5cuWyff/997Zdu3bZKlWqZBZvc+XKFduePXvMov8ljB8/3nz/+++/m/WjR482r62vv/7atm/fPjOTMW/evLZ//vnHsY+6devaSpcubduxY4dty5YttgIFCthatWpl89bzpuv69OljZo/p62/t2rW2MmXKmPNy48YNrz1vXbt2taVLl878Xp49e9axXL9+3bHN/X4v79y5YytWrJitdu3atr1799pWrlxpy5w5sy0iIsLmreft6NGjtmHDhpnzpa83/V3Nly+frWrVql593gYMGGBmxuo50f+79LbOql69erVbvdYIam5sypQp5kXm5+dnLtfxww8/uLpJlvLyyy/bsmfPbs5Pzpw5zW39D81Og8abb75ppmsHBQXZmjZtav7z8zbr1683QSP+opeXsF+iY9CgQbasWbOaPw5q1qxpO3LkiNM+Lly4YAJGmjRpzNT1119/3YQVbz1v+gaq/7nrf+p6CYDcuXPbOnXqdNcfUt523hI6X7rMmjXrgX4vo6KibPXq1bMFBgaaP770j7Lbt2/bvPW8nTx50oSykJAQ8zsaFhZm69u3ry06Otqrz1uHDh3M756+B+jvov7fZQ9p7vRa89F/nlz9DgAAAEnFGDUAAACLIqgBAABYFEENAADAoghqAAAAFkVQAwAAsCiCGgAAgEUR1AAAACyKoAYAAGBRBDUAAACLIqgBAABYFEENAADAoghqAAAAYk3/D5kkxi+IogatAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "chinese_ingredients_df = create_ingredient_df(chinese_df)\n", + "chinese_ingredients_df.head(10).plot.barh()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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/69jx47WrFmzYDcDAAB4hOeDKWESAAAgebiuYHru3Lkb1xIAAAAka9cUTO+55x7r2bOnRUZGWo4cOaxBgwb25ZdfWvXq1S0iIsLy5s1r/fr1swsXLgS2WbJkidWuXduyZMli2bNntyZNmtiuXbtihFvtU9umSZPGChUqZKNGjXLLChcu7H42b97cVU799+Wjjz6yypUru22KFi1qw4YNi3Hcn376ye6++263vGzZsrZs2bIEP8/42iRHjx61xx9/3HLmzGmZMmWy++67z7755pvAcv1+7733WsaMGd3yKlWq2KZNm9yyw4cPW5s2bSx//vyWLl06K1++vL377ruXvc5PPvmke52zZs1quXPntqlTp9qpU6esU6dObr/Fixe3xYsXx9hu27Zt1qhRI8uQIYPbpl27dvbHH38k6DnPnz/ftSVt2rTuPNWrV88dz2/atGlWpkwZ93qULl3aXnvttRjb79u3z1q3bu3Oc7Zs2eyhhx6yqKiowPKLFy/aM888E3gf9O3b13w+X4LPCQAASPquuWI6c+ZMS506ta1Zs8aGDh1qDzzwgFWrVs2Fsddff93+/e9/2/PPPx9YX+FGgUTBbPny5RYeHu6C5qVLl9zySZMm2cKFC23u3Lm2c+dOmzVrViCAbty40f2cPn26HThwIHB/1apV1r59e+vVq5d9//339sYbb9iMGTNs5MiRbrn23aJFC9fODRs22JQpU+y5555L8HOMr03SqlUrO3jwoAuGmzdvdgG5bt26duTIEbe8bdu2dtttt7n2arnCeqpUqdyyM2fOuKD6ySefuCD5xBNPuAD53//+97LXWeFfjyukduvWzR33zjvvtC1btlj9+vXddqdPnw6EZQXkSpUquddaHwh+//13FxavRq+twnLnzp1tx44dtnLlSvf6+YOjnv/gwYPd66vlL7zwgg0aNMi1Uc6fP+8+pCgw69zovaFw3LBhw0BVfezYse4cvfXWW7Z69Wr3Wn344YdXbdvZs2ft+PHjMW4AACBpCvNdQ9lKlTwFAwUjGTBggL3//vsurKiiKaqkKQQeO3bMhdDYVMFTpfG7776zcuXK2VNPPWXbt2+3zz//PLCPGA0MC3MBJvokGVXzFAT79+8feOydd95xVbj9+/fbZ599Zo0bN7ZffvnF8uXL55YrqKmaGHtfVxJfmxSqtG8FU1WJ/VTB1PEV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okW2e/duN+FJs+U//fRTVxUtVaqUu6+Z+G+++ablzZvXhcd+/frF2N4fIFVlHTlypP34449uolbsbncF5+7du1vXrl1d4F6xYoUbspAjRw579tln3YQnHVdXAFDXvIK3hg506NDhBry6AAAglBFMbzGFsK+++somTJjgxpWq+1wBr1GjRm4WvsJa79697eDBg67KuHDhQneJp+g0FjQyMtL91LjThFB3vSZAKVhqEpX2+e6779rf/vY3t3zOnDlu1r667xVWJ02a5C775JcqVSq3frdu3VxlVBOynn/+eRc6/UqWLOmGCWjyliZtqWv/jjvucO2UESNGuMqrZucrJKtNlStXjjHZCwAAJF/Myg9B6oJXVVXjQxXskuOsPmblAwDiwqz80J2VT8U0hGiykcaDaixojRo1kl0oBQAASRuTn0KIxmNqDKgqpbqWaXSrVq2KcRmm2DcAAACvoys/ifjrr7/sf//7X5zLNXkpOXUFAAAA76ArP5nRRKOkEj4BAEDyRFc+AAAAPIFgCgAAAE8gmAIAAMATCKYAAADwBIIpAAAAPIFgCgAAAE8gmAIAAMATCKYAAADwBIIpAAAAPIFgCgAAAE8gmAIAAMATCKYAAADwBIIpAAAAPIFgCgAAAE8gmAIAAMATCKYAAADwBIIpAAAAPCFlsBsAJEa5IUstPCJdsJsBAEjiokY3DnYTkhUqpgAAAPAEgikAAAA8gWAKAAAATyCYAgAAwBMIpgAAAPAEgikAAAA8gWAaIi5dumRjxoyx4sWLW0REhBUsWNBGjhzplj333HNWsmRJS5cunRUtWtQGDRpk58+fd8uioqIsPDzcNm3aFGN/EyZMsEKFCrn9yrZt26xRo0aWIUMGy507t7Vr187++OOPwPr33HOPPfXUU9a3b1/Lli2b5cmTx4YOHRpjn2FhYTZt2jRr3ry5a0uJEiVs4cKFMda52nEAAEDyRTANEf3797fRo0e70Pn999/b7NmzXbCTjBkz2owZM9zjEydOtKlTp9r48ePdssKFC1u9evVs+vTpMfan+x07dnSh9ejRo3bfffdZpUqVXIBdsmSJ/f7779a6desY28ycOdPSp09vGzZscCF5+PDhtmzZshjrDBs2zG337bff2gMPPGBt27a1I0eOuGUJPU50Z8+etePHj8e4AQCApCnM5/P5gt0IxO/EiROWM2dOe+WVV+zxxx+/6vovv/yyzZkzJ1AlnTt3rnXt2tUOHDjgqq1btmyxqlWr2u7du11wff75523VqlW2dOnSwD5+/fVXK1CggO3cudNVY1UxvXjxolvPr3r16i5oKjD7K6YDBw60ESNGuPunTp1yldHFixdbw4YNE3Sc2FSVVdiNrUDkXC6wDwC46bjA/o2hwlLmzJnt2LFjlilTpjjXo2IaAnbs2OEqh3Xr1r3i8vfee89q1arlutcVBBUO9+7dG1jerFkzS5EihX344Yfuvqqr9957rwul8s0339iKFSvctv5b6dKl3bJdu3YF9lOhQoUYx82bN68dPHgwxmPR11F1VW8+/zoJPU7sSrHexP7bvn37rvHVAwAAoYKvJA0BadOmjXPZunXrXHe5qooNGjRwn0ZULR07dmxgndSpU1v79u1d932LFi3cMAB1+fudPHnSmjZtai+++OJl+1f49EuVKlWMZaqQ+seoJmSdhB4nOlV4dQMAAEkfwTQEaBKRwuny5csv68pfu3atm8Q0YMCAwGO//PLLZfvQduXKlbPXXnvNLly44AKqX+XKle399993FdSUKW/eW+JWHQcAAIQmuvJDQJo0adzMe82If/vtt1239/r16+3f//63C63qtleVVI9PmjQp0GUfXZkyZaxGjRpuP23atIlRhe3Ro4eboKTHN27c6PajcaCdOnVy40pvlFt1HAAAEJoIpiFCs/F79+5tgwcPdiHz4YcfdmM3H3zwQXv66aetZ8+edvvtt7sKqta9ki5duti5c+esc+fOMR7Ply+frVmzxoXD+vXrW/ny5S0yMtKyZMniZu3fKLfqOAAAIDQxKz8Z0Wz5efPmuUs5hfqsPmblAwBuBWbl3xjMykeAJh3pwva63NSTTz4Z7OYAAABcEcE0GVA3f5UqVdy1SGN34wMAAHgFXflIkl0BAADAO+jKBwAAQEghmAIAAMATCKYAAADwBIIpAAAAPIFgCgAAAE8gmAIAAMATCKYAAADwBIIpAAAAPIFgCgAAAE8gmAIAAMATCKYAAADwBIIpAAAAPIFgCgAAAE8gmAIAAMATCKYAAADwBIIpAAAAPIFgCgAAAE8gmAIAAMATUga7AUBilBuy1MIj0gW7GQCAZCpqdONgNyFJomIKAAAATyCYAgAAwBMIpgAAAPAEgimuaMaMGZYlS5bA/aFDh9rtt98euN+xY0dr1qxZkFoHAACSIiY/IVEmTpxoPp8v2M0AAABJCMEUiZI5c+ZgNwEAACQxdOWHuPnz51v58uUtbdq0lj17dqtXr56dOnXKLXvrrbfsb3/7m0VERFjevHmtZ8+ege3GjRvntkufPr0VKFDAunfvbidPnkzwcWN35Z89e9aeeuopy5Url6VJk8Zq165tGzduDCxfuXKlhYWF2fLly61q1aqWLl06u/POO23nzp037LUAAAChjWAawg4cOGBt2rSxzp07244dO1z4a9Gihetif/31161Hjx72xBNP2HfffWcLFy604sWLB7YNDw+3SZMm2fbt223mzJn2xRdfWN++fRPdFm37/vvvu31t2bLFHatBgwZ25MiRGOsNGDDAxo4da5s2bbKUKVO6tsdHgff48eMxbgAAIGmiKz/Eg+mFCxdcGC1UqJB7TFVQef755613797Wq1evwPrVqlUL/B4ZGRn4vXDhwm79rl272muvvXbN7VCFVkFYE6YaNWrkHps6daotW7bM/v3vf1ufPn0C644cOdLq1Knjfu/Xr581btzYzpw546qsVzJq1CgbNmzYNbcJAACEHiqmIaxixYpWt25dF0ZbtWrlwuCff/5pBw8etP3797tlcfn888/d8vz581vGjBmtXbt2dvjwYTt9+vQ1t2PXrl12/vx5q1WrVuCxVKlSWfXq1V0lN7oKFSoEftfwAlF749K/f387duxY4LZv375rbh8AAAgNBNMQliJFCleVXLx4sZUtW9YmT55spUqVst9//z3e7aKioqxJkyYuJKr7ffPmzfbqq6+6ZefOnbupbVZg9dOYU7l06VKc62t8bKZMmWLcAABA0kQwDXEKd6pUqrv766+/ttSpU7uwqu55TTS6EgVRhUGN9axRo4aVLFnSVVgTq1ixYu64a9asCTymCqomPykwAwAAJARjTEPYhg0bXPisX7++mw2v+4cOHbIyZcq4C+JrzKge17jPEydOuOD45JNPuolJCo6qsDZt2tQ9PmXKlES3QzP7u3Xr5saSZsuWzQoWLGhjxoxxwwK6dOlyQ58zAABIugimIUzd2l999ZVNmDDBzVbXBChVQf0TkDSpaPz48fbss89ajhw5rGXLloGxqbpc1IsvvujGcN59991uklH79u0T3ZbRo0e7KqzGqioE65JQS5cutaxZs96w5wsAAJK2MB9f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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "korean_ingredients_df = create_ingredient_df(korean_df)\n", + "korean_ingredients_df.head(10).plot.barh()\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "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", + "
" + ], + "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": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feature_df = df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis = 1)\n", + "labels_df = df.cuisine\n", + "feature_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "oversample = SMOTE()\n", + "transformed_feature_df, transformed_labels_df = oversample.fit_resample(feature_df, labels_df)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "New labels shape: cuisine\n", + "indian 799\n", + "thai 799\n", + "chinese 799\n", + "japanese 799\n", + "korean 799\n", + "Name: count, dtype: int64\n", + "Old label Counts: cuisine\n", + "korean 799\n", + "indian 598\n", + "chinese 442\n", + "japanese 320\n", + "thai 289\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "print(f'New labels shape: {transformed_labels_df.value_counts()}')\n", + "print(f'Old label Counts: {df.cuisine.value_counts()}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 3995 entries, 0 to 3994\n", + "Columns: 381 entries, cuisine to zucchini\n", + "dtypes: int64(380), object(1)\n", + "memory usage: 11.6+ MB\n" + ] + } + ], + "source": [ + "transformed_df = pd.concat([transformed_labels_df, transformed_feature_df], axis = 1, join = 'outer')\n", + "transformed_df.head()\n", + "transformed_df.info()\n", + "transformed_df.to_csv(\"../data/cleaned_cuisines.csv\")" + ] } ], "metadata": {