{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e81de0eb",
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "from tensorflow import keras\n",
    "import matplotlib.pylab as plt\n",
    "from sklearn import neighbors\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "001a8243",
   "metadata": {},
   "source": [
    "### Load fasion-mnist from tensorflow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "40abd0f9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The shape of training data： (60000, 28, 28)\n",
      "The shape of test data：： (10000, 28, 28)\n"
     ]
    }
   ],
   "source": [
    "(x_train, y_train), (x_test, y_test)=tf.keras.datasets.fashion_mnist.load_data()\n",
    "print('The shape of training data：', x_train.shape)\n",
    "print('The shape of test data：：', x_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52e1f067",
   "metadata": {},
   "source": [
    "### Show an example in fasion-mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "021840df",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(x_train[0])\n",
    "plt.colorbar()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "a081f550",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Labels of data [9 0 0 ... 3 0 5]\n",
      "First sample: Ankle boot\n"
     ]
    }
   ],
   "source": [
    "class_names=['T-shirt','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']\n",
    "print(\"Labels of data\", y_train)\n",
    "print(\"First sample:\", class_names[y_train[0]])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "187cddb3",
   "metadata": {},
   "source": [
    "### Data Reshape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "d96366b5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 0 0 ... 0 0 0]\n",
      " [0 0 0 ... 0 0 0]\n",
      " [0 0 0 ... 0 0 0]\n",
      " ...\n",
      " [0 0 0 ... 0 0 0]\n",
      " [0 0 0 ... 0 0 0]\n",
      " [0 0 0 ... 0 0 0]]\n"
     ]
    }
   ],
   "source": [
    "#Reshape the data in order to meet the model.fit() function\n",
    "x_train = x_train.reshape(-1,28*28)\n",
    "print(x_train)\n",
    "x_test = x_test.reshape(-1,28*28)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4b9bb94",
   "metadata": {},
   "source": [
    "## KNN"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "de52567d",
   "metadata": {},
   "source": [
    "### Buiding the first model and make a prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "07648a72",
   "metadata": {},
   "outputs": [],
   "source": [
    "K = 3\n",
    "model = neighbors.KNeighborsClassifier(n_neighbors=K)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "4980e85c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(n_neighbors=3)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c7746006",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Use the training model to predict the test data.\n",
    "y_pred2=model.predict(x_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "070df552",
   "metadata": {},
   "source": [
    "### Show the prediction analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "ae57001f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8541\n"
     ]
    }
   ],
   "source": [
    "#Calculate the accuracy of prediction\n",
    "acc = sum(y_pred2 == y_test) / len(y_test)\n",
    "print(acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "f33023fe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[853   1  16  15   3   0 106   1   5   0]\n",
      " [  9 971   2  11   4   0   2   0   1   0]\n",
      " [ 27   2 812   8  78   0  73   0   0   0]\n",
      " [ 48   7  22 855  30   0  36   0   2   0]\n",
      " [  5   3 141  24 743   0  82   0   2   0]\n",
      " [  1   0   0   1   0 835   3  90   0  70]\n",
      " [177   3 132  21  63   0 595   0   9   0]\n",
      " [  0   0   0   0   0   3   0 952   0  45]\n",
      " [  7   1  10   3   3   1  16   6 952   1]\n",
      " [  0   0   0   0   0   2   0  24   1 973]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn import metrics\n",
    "print(metrics.confusion_matrix(y_test, y_pred2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "3c928b67",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0      0.757     0.853     0.802      1000\n",
      "           1      0.983     0.971     0.977      1000\n",
      "           2      0.715     0.812     0.761      1000\n",
      "           3      0.912     0.855     0.882      1000\n",
      "           4      0.804     0.743     0.772      1000\n",
      "           5      0.993     0.835     0.907      1000\n",
      "           6      0.652     0.595     0.622      1000\n",
      "           7      0.887     0.952     0.918      1000\n",
      "           8      0.979     0.952     0.966      1000\n",
      "           9      0.893     0.973     0.932      1000\n",
      "\n",
      "    accuracy                          0.854     10000\n",
      "   macro avg      0.858     0.854     0.854     10000\n",
      "weighted avg      0.858     0.854     0.854     10000\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Print the precision and recall, among other metrics\n",
    "print(metrics.classification_report(y_test, y_pred2, digits=3))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f9eaaef4",
   "metadata": {},
   "source": [
    "#### Try different K and Weights"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "41284696",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.8497, 0.846, 0.8541, 0.8577, 0.8554, 0.8544, 0.854, 0.8534, 0.8519, 0.8515, 0.8495, 0.8471, 0.8468, 0.8458, 0.8462, 0.8451, 0.8441, 0.8434, 0.8427, 0.8415, 0.8407, 0.8408, 0.8394, 0.8401, 0.8375, 0.8391, 0.8382, 0.8375, 0.8373, 0.8357]\n",
      "The best acc =  0.8577 , when K =  4\n",
      "The lowest acc =  0.8357 , when K =  30\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.8497, 0.8497, 0.8561, 0.8597, 0.8577, 0.8575, 0.8541, 0.8554, 0.853, 0.8538, 0.8508, 0.8494, 0.846, 0.8489, 0.8465, 0.8466, 0.8436, 0.8445, 0.8427, 0.8433, 0.8422, 0.843, 0.8405, 0.8412, 0.839, 0.8398, 0.8394, 0.8397, 0.8387, 0.8368]\n",
      "The best acc =  0.8597 , when K =  4\n",
      "The lowest acc =  0.8357 , when K =  30\n"
     ]
    }
   ],
   "source": [
    "f = open(\"out_log1.txt\",\"a+\")\n",
    "maxAcc = 0\n",
    "maxK = 0\n",
    "minAcc = 1\n",
    "minK = 0\n",
    "for weights in [\"uniform\", \"distance\"]:\n",
    "    scores = []\n",
    "    for x in range (1,31):\n",
    "        model = neighbors.KNeighborsClassifier(n_neighbors=x,weights=weights)\n",
    "        model.fit(x_train, y_train)\n",
    "        y_pred=model.predict(x_test)\n",
    "        acc = metrics.accuracy_score(y_pred,y_test)\n",
    "        scores.append(acc)        \n",
    "        if(acc > maxAcc):\n",
    "            maxAcc = acc\n",
    "            maxK = x\n",
    "        if(acc < minAcc):\n",
    "            minAcc = acc\n",
    "            minK = x\n",
    "        print(\"When K = \", x, \":\", file = f)\n",
    "        print(metrics.classification_report(y_test, y_pred, digits=3), file=f)\n",
    "        print(metrics.confusion_matrix(y_test, y_pred),file=f)\n",
    "    print(\"\\n\", flush=True,file=f)\n",
    "    plt.plot(range(30), scores)\n",
    "    plt.title(\"Acc of using \"+weights)\n",
    "    plt.show()\n",
    "    print(scores)    \n",
    "    print(\"The best acc = \", maxAcc, \", when K = \", maxK)\n",
    "    print(\"The lowest acc = \", minAcc, \", when K = \", minK)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0f6515cd",
   "metadata": {},
   "source": [
    "## Decision Tree "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "c32d16d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e525f95e",
   "metadata": {},
   "source": [
    "### Build a model and make prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "b33bcca5",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Build a decision tree \n",
    "dtcf = DecisionTreeClassifier(criterion='entropy', \n",
    "                              splitter='best', \n",
    "                              random_state=1\n",
    "                             )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "8b40ec43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.799"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dtcf.fit(x_train, y_train)\n",
    "score = dtcf.score(x_test, y_test)\n",
    "score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "cf1866f5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "29"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dtcf.get_depth()  #Depth without tune"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93f54d20",
   "metadata": {},
   "source": [
    "### Search for better parameters by using loops"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "af06f16f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.1997, 0.3431, 0.5127, 0.6686, 0.7048, 0.7341, 0.7651, 0.782, 0.8019, 0.8107, 0.8149, 0.8107, 0.8133, 0.8122, 0.8078, 0.8055, 0.8079, 0.8047, 0.8043, 0.8007, 0.8036, 0.7999, 0.8019, 0.8008, 0.8014, 0.8003, 0.8017, 0.8017, 0.799, 0.799]\n",
      "The maxAcc is : 0.8149 when maxDepth =  11\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.1992, 0.3543, 0.4988, 0.6446, 0.6938, 0.72, 0.7558, 0.7817, 0.7986, 0.801, 0.806, 0.8049, 0.8105, 0.8074, 0.8081, 0.805, 0.8024, 0.8016, 0.7983, 0.7982, 0.8001, 0.7991, 0.7964, 0.7989, 0.7961, 0.7963, 0.7943, 0.7967, 0.7945, 0.7941]\n",
      "The maxAcc is : 0.8105 when maxDepth =  13\n"
     ]
    }
   ],
   "source": [
    "for x in [\"entropy\",\"gini\"]:\n",
    "    scores = []\n",
    "    maxAcc = 0\n",
    "    best_maxDepth = 0;\n",
    "    for i in range(1,31) :\n",
    "        ##### Model training\n",
    "        dtcf = DecisionTreeClassifier(criterion=x, \n",
    "                                  splitter='best', \n",
    "                                  random_state=1,\n",
    "                                  max_depth=i\n",
    "                                     )\n",
    "        # criterion can chose gini or entropy \n",
    "        dtcf.fit(x_train, y_train)\n",
    "        score = dtcf.score(x_test, y_test)\n",
    "        if(score > maxAcc):\n",
    "            maxAcc = score\n",
    "            best_maxDepth = i\n",
    "        scores.append(score)\n",
    "    plt.plot(range(30), scores)\n",
    "    plt.title(\"Acc of using \"+x)\n",
    "    plt.show()\n",
    "    print(scores)\n",
    "    print(\"The maxAcc is :\", maxAcc, \"when maxDepth = \", best_maxDepth)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "92946b14",
   "metadata": {},
   "source": [
    "### Use gridSearch to find the best parameter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "7d47e956",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "parameters = {\n",
    "    'random_state' : [1],\n",
    "    \"criterion\" : ['gini', 'entropy'],\n",
    "    'max_depth' : range(1, 10),\n",
    "    'splitter' : ['random', 'best'],\n",
    "    'min_samples_split' : range(5, 30, 5), \n",
    "    'min_samples_leaf' : range(1, 5)\n",
    "}\n",
    "dtc = DecisionTreeClassifier()\n",
    "GS = GridSearchCV(dtc, param_grid=parameters, cv=10)\n",
    "GS = GS.fit(x_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "d13ba7c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'criterion': 'gini',\n",
       " 'max_depth': 9,\n",
       " 'min_samples_leaf': 4,\n",
       " 'min_samples_split': 5,\n",
       " 'random_state': 1,\n",
       " 'splitter': 'best'}"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "GS.best_params_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "fc96a1b8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8038666666666666"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "GS.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0309ad2c",
   "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
}
