diff --git a/notebooks/source/algorithm_comparison_classification.ipynb b/notebooks/source/algorithm_comparison_classification.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..54fd1b63a41cf871a676fc604517118c73ddd929 --- /dev/null +++ b/notebooks/source/algorithm_comparison_classification.ipynb @@ -0,0 +1,283 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 220, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.naive_bayes import GaussianNB\n", + "from sklearn.cluster import KMeans\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.svm import SVC\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.impute import SimpleImputer" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "source": [ + "data = pd.read_csv(\"../data/Titanic/titanic.csv\")\n", + "\n", + "data.head()\n" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "execution_count": 221, + "outputs": [ + { + "data": { + "text/plain": " PassengerId Survived Pclass \\\n0 1 0 3 \n1 2 1 1 \n2 3 1 3 \n3 4 1 1 \n4 5 0 3 \n\n Name Sex Age SibSp \\\n0 Braund, Mr. Owen Harris male 22.0 1 \n1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n2 Heikkinen, Miss. Laina female 26.0 0 \n3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n4 Allen, Mr. William Henry male 35.0 0 \n\n Parch Ticket Fare Cabin Embarked \n0 0 A/5 21171 7.2500 NaN S \n1 0 PC 17599 71.2833 C85 C \n2 0 STON/O2. 3101282 7.9250 NaN S \n3 0 113803 53.1000 C123 S \n4 0 373450 8.0500 NaN S ", + "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>PassengerId</th>\n <th>Survived</th>\n <th>Pclass</th>\n <th>Name</th>\n <th>Sex</th>\n <th>Age</th>\n <th>SibSp</th>\n <th>Parch</th>\n <th>Ticket</th>\n <th>Fare</th>\n <th>Cabin</th>\n <th>Embarked</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1</td>\n <td>0</td>\n <td>3</td>\n <td>Braund, Mr. Owen Harris</td>\n <td>male</td>\n <td>22.0</td>\n <td>1</td>\n <td>0</td>\n <td>A/5 21171</td>\n <td>7.2500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2</td>\n <td>1</td>\n <td>1</td>\n <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n <td>female</td>\n <td>38.0</td>\n <td>1</td>\n <td>0</td>\n <td>PC 17599</td>\n <td>71.2833</td>\n <td>C85</td>\n <td>C</td>\n </tr>\n <tr>\n <th>2</th>\n <td>3</td>\n <td>1</td>\n <td>3</td>\n <td>Heikkinen, Miss. Laina</td>\n <td>female</td>\n <td>26.0</td>\n <td>0</td>\n <td>0</td>\n <td>STON/O2. 3101282</td>\n <td>7.9250</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4</td>\n <td>1</td>\n <td>1</td>\n <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n <td>female</td>\n <td>35.0</td>\n <td>1</td>\n <td>0</td>\n <td>113803</td>\n <td>53.1000</td>\n <td>C123</td>\n <td>S</td>\n </tr>\n <tr>\n <th>4</th>\n <td>5</td>\n <td>0</td>\n <td>3</td>\n <td>Allen, Mr. William Henry</td>\n <td>male</td>\n <td>35.0</td>\n <td>0</td>\n <td>0</td>\n <td>373450</td>\n <td>8.0500</td>\n <td>NaN</td>\n <td>S</td>\n </tr>\n </tbody>\n</table>\n</div>" + }, + "execution_count": 221, + "metadata": {}, + "output_type": "execute_result" + } + ] + }, + { + "cell_type": "code", + "execution_count": 222, + "outputs": [], + "source": [ + "data[\"Sex\"] = data[\"Sex\"].map({\"male\":0, \"female\":1})\n", + "\n", + "features = [\"Pclass\", \"Sex\", \"Age\", \"SibSp\", \"Parch\"]\n", + "target = [\"Survived\"]" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "source": [ + "data.isnull().sum()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "execution_count": 223, + "outputs": [ + { + "data": { + "text/plain": "PassengerId 0\nSurvived 0\nPclass 0\nName 0\nSex 0\nAge 177\nSibSp 0\nParch 0\nTicket 0\nFare 0\nCabin 687\nEmbarked 2\ndtype: int64" + }, + "execution_count": 223, + "metadata": {}, + "output_type": "execute_result" + } + ] + }, + { + "cell_type": "code", + "execution_count": 224, + "outputs": [], + "source": [ + "imp = SimpleImputer(strategy=\"mean\")\n", + "\n", + "data[\"Age\"] = imp.fit_transform(data[[\"Age\"]])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(data[features], data[target], test_size=0.5, random_state=42)\n", + "\n", + "y_train = np.array(y_train).ravel()\n", + "y_test = np.array(y_test).ravel()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "execution_count": 225, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 226, + "outputs": [], + "source": [ + "nearest_neighbors = KNeighborsClassifier()\n", + "decision_tree = DecisionTreeClassifier()\n", + "random_forest = RandomForestClassifier()\n", + "naive_bayes = GaussianNB()\n", + "k_means = KMeans(n_clusters=3, init='k-means++')\n", + "logistic_reg = LogisticRegression()\n", + "support_vector = SVC()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 227, + "outputs": [ + { + "data": { + "text/plain": "SVC()" + }, + "execution_count": 227, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nearest_neighbors.fit(X_train, y_train)\n", + "decision_tree.fit(X_train, y_train)\n", + "random_forest.fit(X_train, y_train)\n", + "naive_bayes.fit(X_train, y_train)\n", + "k_means.fit(X_train, y_train)\n", + "logistic_reg.fit(X_train, y_train)\n", + "support_vector.fit(X_train, y_train)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 228, + "outputs": [], + "source": [ + "nearest_neighbors_pred = nearest_neighbors.predict(X_test)\n", + "decision_tree_pred = decision_tree.predict(X_test)\n", + "random_forest_pred = random_forest.predict(X_test)\n", + "naive_bayes_pred = naive_bayes.predict(X_test)\n", + "k_means_pred = k_means.predict(X_test)\n", + "logistic_reg_pred = logistic_reg.predict(X_test)\n", + "support_vector_pred = support_vector.predict(X_test)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 229, + "outputs": [], + "source": [ + "nearest_neighbors_acc = accuracy_score(y_test, nearest_neighbors_pred)\n", + "decision_tree_acc = accuracy_score(y_test, decision_tree_pred)\n", + "random_forest_acc = accuracy_score(y_test, random_forest_pred)\n", + "naive_bayes_acc = accuracy_score(y_test, naive_bayes_pred)\n", + "k_means_acc = accuracy_score(y_test, k_means_pred)\n", + "logistic_reg_acc = accuracy_score(y_test, logistic_reg_pred)\n", + "support_vector_acc = accuracy_score(y_test, support_vector_pred)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 230, + "outputs": [ + { + "data": { + "text/plain": "<Figure size 432x288 with 1 Axes>", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAEtCAYAAADa/h2tAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABBaklEQVR4nO2debiVVfXHP18uogiI800RhRRTDMebaGpe1BQ10X6a4pRYSppYpqY4kTlkWWTllGba4EBkZqQkmkrmGFgm4ZBkqOCQc6KYAuv3x9rH+3I8lwsX3vfc97I+z3Oe8w77vGe979lnr73XWnttmRlBEARBkAdd6i1AEARB0HkJJRMEQRDkRiiZIAiCIDdCyQRBEAS5EUomCIIgyI1QMkEQBEFuhJIJgpIh6VBJt9dbjqKQNEfSR+stR9A+FPNkgjyRNBnYAviImf2vzuJ0aCT1A/4NrGBm8+osThAsE2IkE+RGajR3AgwYVvB3dy3y+4qis95XLZane+3MhJIJ8uTzwIPAz4Ajsick9ZV0k6SXJb0q6ZLMuaMlPS7pLUmPSdo6HTdJG2XK/UzSeWm7WdIsSadKehG4RtJqkm5J3/F62l4v8/nVJV0j6fl0/uZ0/B+S9smUW0HSK5K2qr7BzPeeIuk/kl6QtJ+kvST9U9Jrkk7PlO8iabSkf6X7Hi9p9XT6nvT+RjIRbS9phKT7JF0k6VXg7HTs3sw1N5N0R/qul7LfVyVrd0ljJT0j6U1J90rqns4NkzRd0huSJkvaNPO5mZK+LulRSW9L+qmkRkl/SL/RHyWtlsr2S7/TyPRcX5B0cuZa20p6IH3PC5IukdQtc94kHSfpKeCp6t89PdfH0vfOrrr20ZJmpOcwQdK6Vdc9RtJT6bsvlaRazylYxphZvOKVywuYAXwZ2AZ4H2hMxxuAvwMXAT2AlYAd07nPAbOBTwACNgI2SOcM2Chz/Z8B56XtZmAe8B1gRaA7sAawP7Ay0Av4NXBz5vO3Ar8CVgNWAHZOx08BfpUpty8wrZV7rHzvmHSNo4GXgevTd24GzAX6p/JfxRXveknOK4Ab0rl+6R67Zq4/Il3/eKBruq8RwL3pfC/gBeCk9Bx7AYNbkfVSYDLQJ/0Gn0wybAy8DXw63cMp6bfrlj43M8ncmD77H+CvwFbpO+8CvlF1Dzek33ZQeh67pfPbANule+kHPA6ckJHRgDuA1YHu1b97uted0vZqwNZpexfgFWDrdE8XA/dUXfcWYFVg/STT0Hr/R5aHV90FiFfnfAE74oplzbT/BPC1tL19+pN3rfG5ScBXW7lmW0rmPWClRci0JfB62l4HWACsVqPcusBbwCpp/0bglFau2YwrkYa03yvJOThT5mFgv7T9OLBr5tw66TlVGt1aSubZqu8cQYuSORj422L8Hl2SnFvUOHcWML6q7GygOe3PBA7NnP8NcHlm/3iS8s7cwyaZ8xcCP21FrhOA31b9xru09rsDzwJfqvw2mTI/BS7M7PdMz7Vf5ho7Zs6PB0bX+3+yPLzCXBbkxRHA7Wb2Stq/nhaTWV/gGavt3O4L/Kud3/mymb1b2ZG0sqQrknnov7g5alVJDel7XjOz16svYmbPA/cB+0taFdgTuG4R3/uqmc1P23PT+0uZ83PxRg9gA+C3yWTzBq505uOjhNZ4bhHnFvd5rYmPOmqVXRd4prJjZgvSd/bJlKm+n9bur0JW5mfSdyBp42S2fDH9Jt9KsrX22Wr2B/YCnpH0J0nbt3IPc4BXq+7hxcz2OzVkDnIglEywzEl2/gOBnVNj8iLwNWALSVvgjcj6qu3YfQ7YsJVLv4Obvip8pOp8dajkScDH8FHFKsCnKiKm71k9KZFa/Bw4DDffPWBms1spt6Q8B+xpZqtmXiul67cW6rmoENDngMUJ730FeJfaz/Z5XPkBkHwVffHRTHvpm9leP30HwOX4qHZA+k1Ox3+PLK3er5lNMbN9gbWBm/ERCXz4Hnrg5tJl9bsF7SSUTJAH++G984G4iWpLYFPgz3gwwF9w2/q3JfWQtJKkHdJnrwJOlrSNnI0kVRqPR4BDJDVIGgrs3IYcvfBe9hvJuf6NygkzewH4A3CZPEBgBUmfynz2Zty+/1XgF0v+CFrlx8D5lXuStJakfdO5l3ET3pLMCbkFWEfSCZJWlNRL0uDqQml0cjXwfUnrpme4vaQV8YZ6b0m7SloBV87/A+5v913CWWkkuRlwJO77Av9N/gvMkbQJcOziXlBSN/kcod5m9n66zoJ0+gbgSElbpnv6FvCQmc1cinsIlgGhZII8OAK4xsyeNbMXKy/gEuBQvOe6D+7UfxaYBRwEYGa/Bs7HzWtv4Y19Jfrqq+lzb6Tr3NyGHD/AHeWv4I7r26rOH47b7Z/AndknVE6Y2Vzc99AfuGmx77xtfghMAG6X9FaSa3D6znfwe78vmdO2a+tiZvYW7rDfBzcHPQUMaaX4ycA0YArwGh4k0cXMnsRHbRfjz2ofYB8ze6+9Nwn8CQ8euBP4nplVJo+eDByC/7Y/oUX5LC6HAzOTqe0YvB5gZn/EfUu/wTswGwLDl0L+YBkRkzGDoBUkjQE2NrPD6i1LWVBMKA2qiMlOQVCDZF77It5zDoKgnYS5LAiqkHQ07lD/g5nd01b5IAhaJ8xlQRAEQW7ESCYIgiDIjVAyQRAEQW6E4z/Dmmuuaf369au3GLz99tv06NGj3mIsNmWTF0LmoiibzGWTFzqGzA8//PArZrZWrXOhZDL069ePqVOn1lsMJk+eTHNzc73FWGzKJi+EzEVRNpnLJi90DJklPdPauTCXBUEQBLkRSiYIgiDIjVAyQRAEQW6EkgmCIAhyI5RMEARBkBuhZIIgCILcCCUTBEEQ5EbMkwlKRb/Rty6T65w0aB4jlsG1Zn5772UgTRB0XmIkEwRBEORGaZWMpKGSnpQ0Q9LoGufXl3S3pL9JelTSXvWQMwiCYHmmlEpGUgNwKbAnvo78wZIGVhU7ExhvZlvhy7BeVqyUQRAEQSmVDLAtMMPMnk7rkI8D9q0qY8Aqabs38HyB8gVBEASU1/HfB1+5sMIsYHBVmbOB2yUdD/QAditGtCAIgqBCKVfGlHQAMNTMjkr7hwODzWxUpsyJ+P2NlbQ98FPg42a2oOpaI4GRAI2NjduMGzeuqNtolTlz5tCzZ896i7HYFCnvtNlvLpPrNHaHl+Yu/XUG9em99BdZTMpWL6B8MpdNXugYMg8ZMuRhM2uqda6sI5nZQN/M/nrpWJYvAkMBzOwBSSsBawL/yRYysyuBKwGampqs3imzoWOk7l4SipR3WYQdg4cwj5229NV/5qHNSy/MYlK2egHFybzsQtvnM/bet5f6OkWGtnf0elFWn8wUYICk/pK64Y79CVVlngV2BZC0KbAS8HKhUgZBECznlFLJmNk8YBQwCXgcjyKbLukcScNSsZOAoyX9HbgBGGFltA0GQRCUmLKayzCzicDEqmNjMtuPATsUKVNHmo0eM9GDIOgIlFbJBEtPR1KKEIoxCDojoWSCIGdCmQfLM6X0yQRBEATlIJRMEARBkBuhZIIgCILcCCUTBEEQ5EYomSAIgiA3QskEQRAEuRFKJgiCIMiNUDJBEARBboSSCYIgCHIjlEwQBEGQG6FkgiAIgtwIJRMEQRDkRmmVjKShkp6UNEPS6BrnL5L0SHr9U9IbdRAzCIJguaaUWZglNQCXAp8GZgFTJE1Ia8gAYGZfy5Q/HtiqcEGDIAiWc8o6ktkWmGFmT5vZe8A4YN9FlD8YXx0zCIIgKBCVcUViSQcAQ83sqLR/ODDYzEbVKLsB8CCwnpnNr3F+JDASoLGxcZtx48a1W65ps99s92ezNHaHl+Yu3TUG9endZpmOJC+EzG1RpMzLijlz5tCzZ8/cvyeecf7PeFEMGTLkYTNrqnWulOayJWQ4cGMtBQNgZlcCVwI0NTVZc3Nzu79oWSwoBb441dhpS/fTzDy0uc0yHUleCJnbokiZlxWTJ09maf5Ti0s84+K+b0kpq7lsNtA3s79eOlaL4YSpLAiCoC6UVclMAQZI6i+pG65IJlQXkrQJsBrwQMHyBUEQBJRUyZjZPGAUMAl4HBhvZtMlnSNpWKbocGCcldHxFARB0AkorU/GzCYCE6uOjanaP7tImYIgCIKFKeVIJgiCICgHoWSCIAiC3AglEwRBEORGKJkgCIIgN0LJBEEQBLkRSiYIgiDIjVAyQRAEQW6EkgmCIAhyI5RMEARBkBuhZIIgCILcCCUTBEEQ5EYomSAIgiA3QskEQRAEuVFaJSNpqKQnJc2QNLqVMgdKekzSdEnXFy1jEATB8k4pU/1LagAuBT4NzAKmSJpgZo9lygwATgN2MLPXJa1dH2mDIAiWX8o6ktkWmGFmT5vZe8A4YN+qMkcDl5rZ6wBm9p+CZQyCIFjuKauS6QM8l9mflY5l2RjYWNJ9kh6UNLQw6YIgCAIAVMaViSUdAAw1s6PS/uHAYDMblSlzC/A+cCCwHnAPMMjM3qi61khgJEBjY+M248aNa7dc02a/2e7PZmnsDi/NXbprDOrTu80yHUleCJnbokiZlxVz5syhZ8+euX9PGZ9xGWVujSFDhjxsZk21zpXSJwPMBvpm9tdLx7LMAh4ys/eBf0v6JzAAmJItZGZXAlcCNDU1WXNzc7uFGjH61nZ/NstJg+YxdtrS/TQzD21us0xHkhdC5rYoUuZlxeTJk1ma/9TiUsZnXEaZ20NZzWVTgAGS+kvqBgwHJlSVuRloBpC0Jm4+e7pAGYMgCJZ7SqlkzGweMAqYBDwOjDez6ZLOkTQsFZsEvCrpMeBu4Otm9mp9JA6CIFg+Kau5DDObCEysOjYms23AiekVBEEQ1IFSjmSCIAiCchBKJgiCIMiNUDJBEARBboSSCYIgCHIjlEwQBEGQG6FkgiAIgtwIJRMEQRDkRiiZIAiCIDdCyQRBEAS5EUomCIIgyI1QMkEQBEFuhJIJgiAIciOUTBAEQZAboWSCIAiC3CitkpE0VNKTkmZIGl3j/AhJL0t6JL2OqoecQRAEyzOlXE9GUgNwKfBpfJnlKZImmNljVUV/ZWajChcwCIIgAMo7ktkWmGFmT5vZe8A4YN86yxQEQRBUUVYl0wd4LrM/Kx2rZn9Jj0q6UVLfYkQLgiAIKshXKS4Xkg4AhprZUWn/cGBw1jQmaQ1gjpn9T9KXgIPMbJca1xoJjARobGzcZty4ce2Wa9rsN9v92SyN3eGluUt3jUF9erdZpiPJCyFzWxQp87Jizpw59OzZM/fvKeMzLqPMrTFkyJCHzayp1rmyKpntgbPNbI+0fxqAmV3QSvkG4DUzW+RTbGpqsqlTp7Zbrn6jb233Z7OcNGgeY6ctnbts5rf3brNMR5IXQua2KFLmZcXkyZNpbm7O/XvK+IzLKHNrSGpVyZTVXDYFGCCpv6RuwHBgQraApHUyu8OAxwuULwiCIKCk0WVmNk/SKGAS0ABcbWbTJZ0DTDWzCcBXJA0D5gGvASPqJnAQlIxl2csesZTXKnLkFSx7SqlkAMxsIjCx6tiYzPZpwGlFyxUEQRC0UFZzWRAEQVACQskEQRAEuRFKJgiCIMiNUDJBEARBboSSCYIgCHIjlEwQBEGQG6FkgiAIgtwIJRMEQRDkRiiZIAiCIDdCyQRBEAS5EUomCIIgyI1QMkEQBEFuhJIJgiAIciOUTBAEQZAbpVUykoZKelLSDEmjF1Fuf0kmqeaqbUEQBEF+lFLJpOWULwX2BAYCB0saWKNcL+CrwEPFShgEQRBASZUMsC0ww8yeNrP3gHHAvjXKnQt8B3i3SOGCIAgCR2ZWbxmWGEkHAEPN7Ki0fzgw2MxGZcpsDZxhZvtLmgycbGZTa1xrJDASoLGxcZtx48a1W65ps99s92ezNHaHl+Yu3TUG9endZpmOJC+EzG2xvMpcNnmh88rcGkOGDHnYzGq6JEq7/PKikNQF+D4woq2yZnYlcCVAU1OTNTc3t/t7l3Yt8wonDZrH2GlL99PMPLS5zTIdSV4ImdtieZW5bPJC55W5PZTVXDYb6JvZXy8dq9AL+DgwWdJMYDtgQjj/gyAIiqWsSmYKMEBSf0ndgOHAhMpJM3vTzNY0s35m1g94EBhWy1wWBEEQ5EcplYyZzQNGAZOAx4HxZjZd0jmShtVXuiAIgqBCaX0yZjYRmFh1bEwrZZuLkCkIgiBYmFKOZIIgCIJyEEomCIIgyI1QMkEQBEFuhJIJgiAIciOUTBAEQZAboWSCIAiC3AglEwRBEORGKJkgCIIgN0LJBEEQBLkRSiYIgiDIjVAyQRAEQW6EkgmCIAhyI5RMEARBkBulVTKShkp6UtIMSaNrnD9G0jRJj0i6V9LAesgZBEGwPFNKJSOpAbgU2BMYCBxcQ4lcb2aDzGxL4EJ8OeYgCIKgQEqpZIBtgRlm9rSZvQeMA/bNFjCz/2Z2ewBWoHxBEAQB5V20rA/wXGZ/FjC4upCk44ATgW7ALsWIFgRBEFSQWfk6+JIOAIaa2VFp/3BgsJmNaqX8IcAeZnZEjXMjgZEAjY2N24wbN67dck2b/Wa7P5ulsTu8NHfprjGoT+82y3QkeSFkbovlVeayyQudV+bWGDJkyMNm1lTrXFmVzPbA2Wa2R9o/DcDMLmilfBfgdTNb5FNsamqyqVOntluufqNvbfdns5w0aB5jpy3dIHPmt/dus0xHkhdC5rZYXmUum7zQeWVuDUmtKpmy+mSmAAMk9ZfUDRgOTMgWkDQgs7s38FSB8gVBEASU1CdjZvMkjQImAQ3A1WY2XdI5wFQzmwCMkrQb8D7wOvAhU1kQBEGQL6VUMgBmNhGYWHVsTGb7q4ULFQRBECxEWc1lQRAEQQkIJRMEQRDkRiiZIAiCIDdCyQRBEAS5EUomCIIgyI1QMkEQBEFuhJIJgiAIciOUTBAEQZAboWSCIAiC3AglEwRBEORGKJkgCIIgN0LJBEEQBLkRSiYIgiDIjVAyQRAEQW6UVslIGirpSUkzJI2ucf5ESY9JelTSnZI2qIecQRAEyzOlVDKSGoBLgT2BgcDBkgZWFfsb0GRmmwM3AhcWK2UQBEFQSiUDbAvMMLOnzew9YBywb7aAmd1tZu+k3QeB9QqWMQiCYLlHZlZvGZYYSQcAQ83sqLR/ODDYzEa1Uv4S4EUzO6/GuZHASIDGxsZtxo0b1265ps1+s92fzdLYHV6au3TXGNSnd5tlOpK8EDK3xfIqc9nkhc4rc2sMGTLkYTNrqnWutMsvLy6SDgOagJ1rnTezK4ErAZqamqy5ubnd3zVi9K3t/myWkwbNY+y0pftpZh7a3GaZjiQvhMxtsbzKXDZ5ofPK3B7KqmRmA30z++ulYwshaTfgDGBnM/tfQbIFQRAEibL6ZKYAAyT1l9QNGA5MyBaQtBVwBTDMzP5TBxmDIAiWe0qpZMxsHjAKmAQ8Dow3s+mSzpE0LBX7LtAT+LWkRyRNaOVyQRAEQU6U1VyGmU0EJlYdG5PZ3q1woYIgCIKFKOVIJgiCICgHoWSCIAiC3AglEwRBEORGKJkgCIIgN0LJBEEQBLkRSiYIgiDIjVAyQRAEQW6EkgmCIAhyI5RMEARBkBuhZIIgCILcCCUTBEEQ5EYomSAIgiA3QskEQRAEuVFaJSNpqKQnJc2QNLrG+U9J+qukeWm55iAIgqBgSqlkJDUAlwJ7AgOBgyUNrCr2LDACuL5Y6YIgCIIKZV1PZltghpk9DSBpHLAv8FilgJnNTOcW1EPAIAiCoKQjGaAP8Fxmf1Y6FgRBEHQgZGb1lmGJST6WoWZ2VNo/HBhsZqNqlP0ZcIuZ3djKtUYCIwEaGxu3GTduXLvlmjb7zXZ/Nktjd3hp7tJdY1Cf3m2W6UjyQsjcFsurzGWTFzqvzK0xZMiQh82sqda5sprLZgN9M/vrpWNLjJldCVwJ0NTUZM3Nze0WasToW9v92SwnDZrH2GlL99PMPLS5zTIdSV4ImdtieZW5bPJC55W5PZTVXDYFGCCpv6RuwHBgQp1lCoIgCKoopZIxs3nAKGAS8Dgw3symSzpH0jAASZ+QNAv4HHCFpOn1kzgIgmD5pKzmMsxsIjCx6tiYzPYU3IwWBEEQ1IlSjmSCIAiCchBKJgiCIMiNUDJBEARBboSSCYIgCHIjlEwQBEGQG6FkgiAIgtwIJRMEQRDkRiiZIAiCIDdCyQRBEAS5EUomCIIgyI1QMkEQBEFuhJIJgiAIciOUTBAEQZAboWSCIAiC3CitkpE0VNKTkmZIGl3j/IqSfpXOPySpXx3EDIIgWK4ppZKR1ABcCuwJDAQOljSwqtgXgdfNbCPgIuA7xUoZBEEQlFLJANsCM8zsaTN7DxgH7FtVZl/g52n7RmBXSSpQxiAIguWesiqZPsBzmf1Z6VjNMmm55jeBNQqRLgiCIABAZlZvGZYYSQcAQ83sqLR/ODDYzEZlyvwjlZmV9v+VyrxSda2RwMi0+zHgyQJuoS3WBF5ps1THoWzyQshcFGWTuWzyQseQeQMzW6vWia5FS7KMmA30zeyvl47VKjNLUlegN/Bq9YXM7ErgypzkbBeSpppZU73lWFzKJi+EzEVRNpnLJi90fJnLai6bAgyQ1F9SN2A4MKGqzATgiLR9AHCXlXHYFgRBUGJKOZIxs3mSRgGTgAbgajObLukcYKqZTQB+CvxS0gzgNVwRBUEQBAVSSiUDYGYTgYlVx8Zktt8FPle0XMuIDmW+WwzKJi+EzEVRNpnLJi90cJlL6fgPgiAIykFZfTJBEARBCQglE3RKJK1UbxmCIAglUxdSWpzSUEJ51wAOkbRi2u9XX4kWj7I95wqSStOOlC3rh5wu1cfqJU97KE3l6AxUKoeZzZfUS9Lq9ZZpcTCz+fBBUtI1O2olzzTSb+FzpyZL+jOwaf2kWjwkKfOcP1JveRaHSgNoZgvqLcvikGQtlRPanAWSNpC0v6QVy3YPoWQKoNITqVQOSScCfwc+lSaKdmgkbSvpj8BRwBnAt+ss0kJkGrv56dACYEtgfeCnZvaHugm3mJiZSdpF0v3A6DKMDjIN4ABJP5G0e71lWhRJ1u6Sxko6XtIA6PgjMUln4/P+moFvS/p0XQVaQjr0w+0MpB7qgrS9uqTPAbsAnzSzm1NetQ5DKyabnYAxwAhgA2C7juTzyDR2G0uaBOwBfA04E9i5I468qp+zpM2BbwHfNLMTOurooIbp5mDgVuAfwJ/rIlQrVP/ukrYDrgJ6AOsAN4Mrn8KFq4GkLjVk3gjoaWZbAA8A++DZS0pDKJmcST3UPpJuwBu9AcD9wOckfUHS2TWWKagbGZPNzpIaUmO4J3AYcBfwqJntnOYh1Y0ajfRQvLd3M3CbmT0D3At0Az6fyqxQsJitknnOa6ZD/fB60TuZRcZI2rSjKMiMqXdB5lgDMBQ4ErgYWE3SVtny9SAzsrXMscH4ch/zzewYMzsdmC/pK+l8Xf1hFbNjai82ScoFfC7jzpJux/+Dh5nZjZJ61k/aJSOUzDKmRuO3B/A94BkzOxH4A7AK3qj0ws06B0pauVhJF5Kxa2b7UEkP4A3zJcAg4HfAQWa2rZmdncodLWn9Osj6gV+r6tTHgHOBPwIbS9oVeAH4LXC4pJOAb0lau0h5K9QYAQyXNA0YI+kSPHvFPGAYsC6wPXAyUBd5q8mYeneSdIOk/dJvMAX4BXA9cA5wr6ShqbEsVNFk6kZlZLu+pBMlbWJmD+F1YX6mAR8FnCZphRr1qQh5V5O0cZJ5gaRVJF2W5Py1pL3xxJfP4Z27vczsQUmbAbuVwdQOJZ7x31HJ9FDXMrOX8aSca9GyNMEjZva3SnlJvYDVzeydIuVMpoMdzGxsStOzIe4w3xzYG+iPNx6zgR8AX5X0JbzhHoUvnfD7AuVVajwqjd3OeKN2FzAZeBgYjSvH6cCBwHfxNYU2AHYExpjZf4qSOUvVCGAQ8BlgL2BV3D93rZmdkinzF3zk+1axktZG0qrAcbgy/xdwmKR1zeyS1Mt+zcxekTQdf9a3FemgTg3yisBNaf9o4HjgQeCT8vRS5+Gz4zeX9JyZ3ZOOXwwcU5SsSb4V8N9/NvDPNNI6CnjXzDaVdBhwKnAQ3gEZJukgYCPgcODCjmZqbxUzi9cyfOH+i/uB3wA/A4RX4G8DH0tluuMN+T34KGHjAuVbE7gCeAg3dXTHG7Pf4JX+L8DY9P6FzOe2xxvxW4DDC36mXTLbAj6Nj1i2AQ4F3sZHh6sDK6RyBwGX1LkuVDJqCLcafBcfpRwAnIKbbx4Cjsx8ZhDuN3gU+Fyd5G6ocWwfPKDiE2n/QOCH+HIa4CPzU3EFv1vB8nYFtsDzGPZIx8ZmZFsdHxFsAhwM/AjYOp1bBVijHnU57X8M2A1oxBdXvCpz7vfACWl7GHA+cA3Qpx71ot33XG8ByvyqUWFWSY3fgXivahJwdmpYfoCvW1NpeIYCu2c+qwLkPQV4Fu85b5yOTQauzfw5b8d7oZXPrIAnF+1WlJyLkP8bwOm4bXonXHk/BJyZKbMhHqTwKDCi3jJXyf/b9Cy3Af6Hm8Mq9eGjScH0x0eKXTuAvJ/FRyUrp/07ge+l7bXwTsc5qd6fCVxXVAOIK+6GqmNHAd9O2/cBzZlzY/DOVXd8tDMMV/xd0vkuOcu7cg15G4CjU5uxUmo3vg9sl85vDTwFDKyWMcneIep1W6/wySwBFZuvpH0k9Ta3o3aRtGqyua8FvAzcYWb/w4e1XwAMd0Jvn16Y2W1mdnu6XoOlmpOT3A2SzgCa8Ab6PuDj6fRUvKfXI93DxcA6krZJw/MpeA/wA3t3XnJm5K32X2wh6SKgr5l9CxiI9/L6Awea2XkpuGJF4BP4aG0PM/tZUTJX5M7UEUnaTtKZSS7w6KsVzexh/LmuDKwraS98CfFmM/u3mV1ibsKsizNa0maSJuJ1d3/c3wI+UtldUn9zU/DDeJj4lnjjfqiZVa/rlAvmzJe0tjwjO7hpek1J/YEb8J5/hReAx8xsLnCimU0wd7QvSNfLLcJM0jD8f4Wk3pK+K2k/XDlfj5sfR+KBK/OA7SX1MrO/4h2T1bMyZoME8pJ5mVJvLVe2F25DfxQ3d+0L/Bv4FT5S6YE32hvS0kO9Ds8GvXZ6714nuXtlto/Fe3X98GWqJwM7Zc6fgJsb7gB2LVjOrpnthvR+AN6gnZb21wXeoGU09nF8BPYZ6tS7Y+Fe5lrpvQ9uhvwBrhCPA65M5zbGA0J+m57z7lXXK+Q+qG0a+yyuvMFNfPNIpjvc7PurtL0CsGk9nnHaPwV4HFcmXVK9OA24IJ3/Ez4yuBAPsd6nyGecqb9r4L7DY4Bf437CyzPPcTc8IKgPPhfmF8Bn6lGPc3kO9RagDC/S0DyjOI7Glxn4CT46WB14AvcVnAqMB7bDzSJ3AxvV+x6S3BXTQA/c7n9c2j857a9dJ7lWB7bJ7K8BXA1cChydjp2Nm2bWTfsn4r3ViUkBjegAz7cn7qe4F1fUFR/cCXgv9f+SQlkl85mPVNe1AuVVZvtIvOPUNdX3DfER79eBL6bGvCeeSeHvRdbpJE9W1pWAjwA31yi3dfpfDsFHCnvhirJvwXWhWiHuj5t2R6f9HsAjwLC0fz5wWdoeDqxWjzqRy7OotwAd+YWPWj6R2e+Z2b4et6WulvaHAn9NyuikdP5+4Iiqa+bde1qkbTmjaPbBe1Rb4z3Sh3AneqEVOj2rJ4CD0/6aeK/vXNy0+E98JLMVHlJ9YOazK+M9vw/1xguQ+0upYfgY3oteK/3mJ+H+lRuBn2fKn4ArxL+mhry6ESrkHlKje2ilLuAO87vTs/0p3tnoBewMXJd5zvMyDWSvImStIfvWeC//gKRQZqf9H+EBNL9O5b6Sfos1q+t+kfUb2Az3d34l7Y/DI9xWSvuHAX9J21vho5tVipKvsOdQbwE68is1uk+m7ZPxHtzX8Rm3TakxHEDLCOc+oCltr1aHBjtrstkF90/0Svu1zCLfBS5If74dKDBqBQ/FfBA3J300c3xDXPlVnM1DgGn4pMpRqUHZpI51Yo/UKP8at7Nfk+6lOx4q3T8pk5vx0UtltNiQzr8IDKiT7H3wSLxZpBFUaug+n7ZvTrKviZuCr8VNPJfjSqip6LqceT8SN0UfQjI5pzp7CN4Z6YdHtm2Wfo/ta10vR3lVtb8d7nf7Mi1BNbviwUADM+X+CnytXvW5iFc4/quozBZOu+OBh+WpSnriqUo2AUaZ2VTcznsWsIOk/YH5eDQIwBtmZkU6b80DEVaXVJkPcDzue8Eyk80y9/cbPApuDTO7zwpy2ibewJXb+Wb2tKStJY3AzQj9ga5pktzd+JycT+NKfVbaLxxJm+AjrOlm9jkzOx4fwbxpZnPNswwcB0w0s/2AJ4FDJa1tZvPT+d+kzxQl8wdZDtLveyUezntuOvwR4IuSHgHuMZ/w9woewn4jbrp53MwqdT5veT+UWSCxNq60bwIGStoJn3N2Pd4J2RYPuplrZjPM7IHsh2tcb1nJu1Bewgxb4kvBX2Zmb6d5XnfiTv5D0vw4cDPaldXX61TUW8t1pBeZ3j6wTnrfAe/9DU77Q/He9G54xf877vgfT5Xztkh50/5WuD/gorS/Mt5YHFqrfB2fc6V3enx6blcBfwO+nI7fhDeCa+AjmF8B/TqA3KvgPdMx+KjgO3jU0gXA/6Uy95H8S3jv/0bgU2n/IDxQZIOC5N0bnwR8TNpfCQ8D3wc3jzal+vwnYLPM584FtkrbhYRS8+GRwH64CewMYHCS9WncD/fzJPMVuKm3MiIeWISsrci/B+433DXtH4nnolu1qtxH8cChzauO5zrSquer82nNJSTbczAPiVxF0heBxyXtZWb34RFAI1Oxe/DeyN7AO3hDcrWZHWgpJLkoua0lu8C2Sf6/4T6MNST1MM8icAEehVO5v8JzStXonVmS5+K0vS4evntZOn8SnsDwcrwBeQF4rh6yZzGz/yZ5NsDNHCvgPeingaNT6OxNwBmSZgNz8FxT96RLPIo33s8UJPKb+LPdT9JIXGFXMlRfBJxjZrcBjwFnSjpZ0p9wP80rAFbArHJl8oxJWkHSvvj/7XR8pHUm8DyeVPZgMzsCV5avmtn7+GTW/c3ssbxHApLWkHRtCu+vhCRfi5vTpwBjJe2Jj65Wx0fgSOorz6b8PPBZM3s0e13rIEk6c6HeWq6eL7yBOCuzvzswA68wvwempeP98UiQ7dP+Drg9vqnqennbfTdk4SisJtw/8Gfcabs/3lO6m4V7pn8Evl+nZ1zzmdAS3rkHnkVgfdxvURnlrICPzD5ahJxVsmlRcuO+uvG0+DV64wqxEua7EQvb3Yty6vehJeNBxU94BT4i+ALuDN8C+DFusrsT2D+V2xsPZNivTvWkAQ+P3geP0DwU97dMJ2VEwE27jXh4/eOkyKy26toylnNnXFHfl+RpwKMGhQeDPA88m8oeiE8PuA7vmB5fj2db71fdBajrzXsvrwfQO+0fC3wjc/5vlYqBO/zvzZwrNAokVegRZEIxcXPNsWl7b9x014gP279bkRGfvFho3D0Lmx43SvL8Xytlr8J9W3WZQ1QlSzZ4YrWqcxXFuBEeTn162l8DH+FWO5tbVVbLUN6KMumNj0i2rpK1Lz7S2gCflzMJ+H06tw9uTiv0uVc/E3z2/W/wUXc33CT5Mq4gK3V4VbwjMhxXkqsWKO/Wme3euLn8fuBb6diKeLj9uLT/F9zXSHrue5PmTi2Pr7oLUPgNf9iPsTPe06/0pL6eObcf8Dpui++B24PXzfyxi0gFUy3vjrRMlPsrsG3m3HlJwayOD9cLnUiZZKjOM7YBPlHyO3h00AG0RAd1Te+bJXkH17FeVDd8Y/DR6zdp8WlkJ4rujTtsx+P+jdPrJPd66X1P4K7s/WSe7/eAX+Kjw31SPa+kCToK990VMQpYSOmSOkx4GPoCPGEr+Ij8x8CeaX93XDk2UWOybs4yX51kOwhXgI248vtkqh+VlC9X0uK3vSJ9Zq2qa30w1255ei03PplMFMh8Sd2SjbQL7sN4Hp+NPx44SFKf9LHpwLv4aOZtc3vw85ZqTOU9T5mtxe+yRTo8BM8q2wvv/Z2a+chzeBbX13B7du7RQNVYS+qLo/DG9wTgBjM7Fe/t7UJKaWOeOqWLmU3H7e6P1rxoAdjCWZKPxxveHfHG4szk48r6J6bgaUzex01M30qfLcxvJGldvI6Cj64qaYoqaUfmybOBn4z7YXY3s98D55rZewBmdpWZvWMF+ATMWSBpveSfuEu+ZMBkfMb7Eano3bhSuVDSTbgD/Wozm1r5DbTwSqjLnIxvZyIwF68Lp+O+qpXwztMv8RE4uALaT9KNqczeZvZytj6YRxjm2mZ0RNTZ71nSFmb298z+EXjqibvwYe7ReK/0GLyXfTbubHwX98Xciw/RtzWzOZU/cI7yboD30J5O+014WozZuBlhfXwG9mN41NVD+PB9Cm6rvs7MfpKXfDXkXSinmXytjv/Dkz1egz/fRjPbJYXT/hAP7b3OPDV8XdaITyGlFZmFRwqeZWaj5Gt63J7u4yO4CfWBGtfoYWZvp+0upHa0sJvw770KH9H2Be42s9sz9/MDfJGuw1Iwyxn4TP3Cnnf175uc+t/BAw/2xs1guyR5n8ADI/6Vyq6DR+I9WKC8qv4NJf0Bf8aVTM734/PgbsD9XSeSfEf4SOf05VGZtEq9h1J5vGhRnjviDvxKVtMt8eHvqrhTeQE+VF8bNylUcmNtg/es18Gz/f6gILm74pltKyaQdfHGbreqcofiUW398PDOC3BH5BeKkDMjR0P1Nm5f/wspoAJ3MD8A7Jv298DnO+xYp7rRA+hf43g3PD3NmrgDfD7JXJPO74Ary1rXrFv4KT7ieh9fd+bzpImeeGjyeVW/0ZEFyrVQKpjM8RPwkVSlvk+iJXXQhfjckkXWtaLkxZOZgk/2fCzVjW/inaSKP2YU8LeOVCc62qvuAuRQWdaoNAZ47240MDbt74k7bH+SGr7hmc9tn45V1stYFbet/oWqKJYcZG5gYVv1DviM4Z64CWkkPiI4E58IWvlDfpOW2cSFVWqq5k4kuX5CS6TSN9Jzrsw1OpKFgyZ2qVPd6In7ICpRgl8EPp2218IjBgfinY5ZqU50x0OqJ1PgjPclvK/heIfpG3jU1Xh83ZQNW2vsC5Ttk/ioZXjaPwuf1FzJRHFketaV/+xtuHO9XolOt6i0F2k/m+i2ssxBMy3zoroBg6rKLnd+l0U+03oLsIwrSBM+cXISqbeKj0p+jg/Jt8D9FidnPjOIllQw22eOr0ty+OYsczbx38fT++WkHEf4cgHX4/mYjiFlH8ZzUI2kwMig1BCfR0vPcyV8DtHPcJ/Wbbi5cW3clLBXauS64pPn6pJZtuoZd8FNjtvg5rDJpLBdfI5LJcXKUXherHvT89+w3vV7UfdXaahTo3ccbqqcSEELcuGdu+1piQZrwKcC3In7ER/AgymGp7pR+c9tjIf3jqrDc8t27Lqm/9jNtKQC+iBQIdXpJ8kE2sRr8V6dzieTJpOth5tk5uCmpEPwkcHRuB/jMXxuRl+8UbzWzL5bD3kBJA3A7edzcMWxAf4HHW9mt2TK9cIbj1OAf1sdfjz5srZb4s/1LdxsN9LM5kpaDQ+X3RhXOpviq1M+KWkV88mMRcvbYAun1OmJmzg2IY1k8Ibv73hjt7/5ZL9K+Y9ai3+sLv6jxUHSJ4Efmtkn6vDdJ+Ph9f/GG+ujzGy2pK/hWafXx+v3j8yXaz4X93d2wef2PIBbCwam6y30m+Ug74d+xxREcQ2wwMz2rDrXYB4wdAFu6dgtHf+Q/yb4MJ0muiyTI+x8PBrkUnyoPgY3k7yE91yPw0c7o/He6peLVDDVuczka6efDdxiZgeZ2Zvms4GnAc2SBkrqJelqfC7GfWb2dJ0UTA+8t7wqHlY6H/d7rQFgZq/jEW/74SOcBtxfQD0UTPre+ZJWTrPZP46vSHkTyYdhPuP9NFzRHA0gqWvm8x1ewQCY2f3A+5I2h2Ki3FKU5njcD7c7HjgzCzhJUjfcn3ktnoRz76RgVjCzs3Bz75/TZycBkyr/jTwVTLp+JQJyP0kXSjrMzJ7H155ZLXX6shFmlYXNTsM7JpXrhIJZDEqpZFLqifWqDlcqwu14SPKe+JyAR/GZuFvgs567JaXyJTPb28zuk1PIs7CWkOTV06GuuAP/1nR8pXT8l7ijcSf8d7oTX1jsoiLkrG6kUk/5H7iPYi382a6INyJXZIquhGdKeAE3OzxdhLwZObdPo63K/uF4Kpj18BHtGWb2Tzwq75OSNk2yHoNHD71hNVKpdGQFk2Gn1EHJvQFMvfj38DD5J4DXzVeDvRl4Pp2bBsw0s0PM7KkUKflrSX2SnDfho4fzgJvyUi6pk7F61bGT8PD/vwKnpv0X8ECh46DlN688y3TPzxTVVnQWyvqw1sMnayHpCEkbmS2U8fhr6bWOeZbWL+GmqE/hw3TM7NX0+QZz8gxLVmZ7V0kPAhekBnB1PKqpb5Lr3VSZX8RNDT3xuS/XmdmcvGTMyqpMLqkMu+KrOp6BRwj9Fc82cBawQNJPJU3B69STdTQlbAVsJc/q3ID7KHbFAxN2A4ZJ2hU3p76MR+phnvdtpJl9tQ4yLxPyHgG0wvfxujs0haifAAyW9AncqvCepOskXYcrlNusJdv3u8AEM9vBzP6co4zb4HNckHRoGmVtgi8ZPQ7vfH4UH6XfBmwoaWj1RSr1uSQdjg5DaZSMfP30yoTKfwN9JL2Kh/C+lY7PV8vkvlvw6CvM7B4zG44v13tv9ro59p7Wla9N3z1zbAd8rsvBeCM3Fp+H8Q7wWUnNya9xlaTPJ8UyNvUQc6eiGMwnzG0m6XRJu6TTr+G+GMzsMTyAYmdJ25jZPvhcna+lXuvrRSkY+cS+s1IvGfx3fxUPlRYesr4LPuK6AA9S+FIy3z2ELylQMfe9n65Zmv9FUVQ/k9Sp65pGfVfhaZf+hi918TgejfUVfJR7Nm7qHWxmlc6hkmn4ZwXI+xfgAEnP4f7O1YD/Ar0lrWRmU/DOSLOZPYwHqfSpvmbQPkrxZ1LLDOYFkj4qaSAeFbQingbmpYwdvdK4nQbsk3pUlUr9QrVPJAdZGySdj6eqOQf3TZyRTq+AjwD2x8NNv2+eofcSPDHn19N9zTCzX+QpZy1Sw7GCpGPxCLe1gZ9K2g43lb0oXzcH3MHfExguqZuZ/b1agRfEznhn4gpJe+MK5g68kdgjKbutgVPN7Le4OW+wpBFm9jszG10Z1VaInurCpP9OxY+xuaTKqHteev8Nbpa+3cy+bGZj8EXPBuCpYp4ysyvM7J2M3yW3TkiVvB/FfbPT8XV/vmVmL+Gj2I3wUQ5J/tfS9o/M7Kd5ybfcYR0gxG1xXviksx/ivaTK5MoLgUk1ylYy0Q4qWMY98ACD83FneHe8gv8Xj63/DF7Zf0IKLcXNZZUcTutQ4NK2fDhf14p4dNuTtORhOgs3iQzCs8rOxNcb+TseUdStA9SNW/HJqCfjI8RNcIV9Lq7Yr8Z71MfhNvcDyCQ4rX4O8fqgLq6f2e+Dd5juBjanZU5IJcR3G9yBPzjz/+tRdc0ilz7+CB56fi8tE1SvA76ZOT8a93X+GvcrbVEveTvzq+4CtFJBPvSnx1NR/Li6EuDOusrkuso8k+qZu4VUlvQHW5DZr6zlfSIeprkqbs45Eh+eb4E7pU+owzPOzh3ZAe/VCQ9CuAXv+YOv934TLQuf7YDb3besdz3JyN+EO+274gr+KjxU/Xt4iPIquI/udyw8FyoakdrPc2U88jK7rMT3cB/Goj73Y9wE3K3qeN6ZqGstLX4xcGHVse3xYITK//KjeIfkwHo/88786nDzZLIOY3nI6RwzmynpVNzh/y+8x90TNzPtjJue3sRzCp1q9XGAAiDp17jMR2Zs1kh6Fk8A+AY+AtgYdzR+zzw4oQjZepnZW5n99fDZ2H1w895aZnaspMPw0OQfmS8EdXiSfaQVHC22uEi6GZhlnntsa7yx2xz3ExxsZi9nyi6Uby1w5MtE/yezPwjoY2a3SboGzzf3R0krWsZPqJZ5JL3wx5p7gEr1d6ftRnPT+cp4kME3zOyJ5Hd5N5W5CFc284DLzey6WtcKlh0dRslUVZY+uALpiTv1f4Lb2vcH/oP7XTYEXjOzsyTtBbxjns21rqRQyX/jq/hNV0qiKOkXwANmdnkqt7F5KG0RMjXg/qEh+Kjkj2b2iKQj8UbhZ5IuxEdYR+E+jTPxqLZz0jX2MrOJRcjbHjLPfScze1TS2vi8ly5mdm6mXIee71IvJK2Jz2f5Ix6J2Q9PsTPUzIZJ+g0+OfhXmc+sb2bPZvZlZpb3M05RbNcCF5vZvclneA4+deFN3HJwJ3CFmd2Q+dzq+NIdX8LzjT2Ul4xBhnoPpVjYbFMZxn6VljU87sDt6GtXfe7HwIk1rld3+zpe4e+vOvZ76mBiwv1EL+Kjvd3xSaoX476KHnhj8ifc3/UFvOcv3H90HbBJvZ/nEtzr2cD0estRphcta8404BOXn8UtAlvg4f4/Bz6L9/7vxRVRPzzlzmmV/2zBMncDLsMnV1eWvNgZTwX1Cj6xdnfc6rEDPlK/prq9oM553ZaXV92jy6zya/to5B/JVLMCPtfhXuAZ4HAz+4+k1SQdImk6PvnyQxEg1gF6qebRNX1SSPI6kibhPax/V0w1BfIGrqC/aT5R9VZ8JNhgnqb+48CD5vNDpuAhnt8wT2dzkpk9UbC87cbMzgaeq4QkV6jDM+/wZKK8KhNPu+LO8DeAq8yXx3geH/l+EV+g6/v4kuW/wJcYvsCSGaoAedevbJtP9FwD97VtgIfT98V9bj8Gbkx1/XJ8HtTNeDTZDzPXq4TrdwxTTmemaK0GH1odryveO5qJm5jA5zPcQ1opLx2r9Fqagc2z16u3pm7lPg/CFeGDeC6nesoyHl/0CdzXcitp+Vp81PhzPGjhB3g0Wa5Zp+NV17owuGr/EHxuy2H4yHZXvFFeN51fG1cu38t8prDIPLzDeQqe7DP7vz82ybkSHnr8O9Jy2fjUjMoqmw3AmpnPdcj2ojO/Ch3JJFutmc93WUPSyuY9qYqJZsNU9A68F/VJSZsmp+PpqbJMNre5S7VnpncIzG3XI/EJXlfVWZxjgP0lXYJPRlwLuCkFU1yOhyxfDPzPzM41swl1k3QZkPdcqLIiXxBvx+QYR9J+uN/qQDO71nxkOx03mX0hfWwFPNoQeQ69Lmb2X/nk6A/mo+SF+QTZSt6+H1fmveHRmm/h7cbluDJ5IwUL3QLsJZ8IvcDS4njZoKKgOOri+Jc0Bu9BTQKeNrMfype83QmPBJovaQjeq9oCd9KNKVzQToQ8U+55+NIAJmkwbm68A/gunntqbj1lDPKhEuWYJizPx/974/F5Q93wpJbv4xGPP8d9LufhAQCzgPPMbFZBsmajS6tX1Tw7yXYfPrL5FTDEzN6X9Cs8+elA4OdmdnER8gZtk6uSUY0laVPveV184twofLb2Rngl/wHwkJldlinfvdL4RYjh0iHpGTyg4g9pf0N8TsPj9ZUsyIPq/0sawVSSmo7DAz5G44pmGu4wvwMPXNkNTyM01jLpdvIcuUhaBfismf087fc2szflmZvfl7Qi8Ak8IOXzeNTpyWY2IY1ee+NRppVw5Ygk7ADkpmSyP7Ck/nhKh9eSU3YBnuuqO25TbTCzPSUdiE/028cyqT5qKatgyZE0HPiFmXWrtyxBcUjaCs8j1mBmn5en3zkWn/f0fKbcEbh598iqz+feWFe+Q750wAK8I/pby2Qdz4RIH4pn0jgWX+zssqprRWe0A9G17SKLT+oprWdm/0wVZhV8pv7WwL8k3Wpm10naF1dwB8hzC82Q1Gxm4yU9Y5FLKhfMbJyktVOvb0Eo7c5N+v9VGu1ngF0kDTazW+WJT08ATpHUjCuhdfClprMNeq5+l4pCSO1FbzyKbQy+ztPVtT6T2pDb8MiyKTXOh4LpQCwzx39SMF8CzsqEjB6Nr+A4GHgPX8xobTydw4tpAtju+LB9MwCLCVK5YmY/Sn/qUDCdiFaCHfoBL5jZXngut5/g+dzAl0D+eHKkvw3cbGbbmy9+RqV+5F1Pkv+1a+p43o7PxbkaN4uRTGSVshVfjczsVTP7jHkG5aADs9RKRtLGAGb2Dh6u+w6eyh7cHNZN0h14eOQB5mkrHkjn/4I7+/c3s0uXVpYgWF6xlmwZB0raQb5mytqkxhrv5P0CWEvSgWY2FZ90OcDMpljK+p13ZF4lyqvq8KX4ZMnjzLOSnwzslqwb2fQ1laU+rPpY0HFZqh9I0reA6ZJOkbSamT2AD193l6/w2A130J1rZp8zs6clfRZ4xMxOBj5jZocmX41qVL4gCKqo9T+R1F/S/XhevJG4QpkKPC/pSPMJjG/j89GOTc7086wqb17epibzJTtMvmTA9unwGXiHtDJB9B08LPl0SXvLFz1buZbZLkzpHZ92KZlMJb8VmIuHGf8kVZo/4+nuD8dn374JrCtpQ0nfxdObDIQPFr/Kzp8JE04QLAJ5UtMt03bWp/px4O5kGjsBz/F3Fh49dm4K+vglPvHyNXyV2Mo1C+vcSeou6Xo8fP48SRfgbcj5eFJTAMzs+3hbchRwR1I8QQlZIiUj6WB5BtaKQ/A+fNbti3hI5Cm4H2Yqbgabi1fyLXGFsxKwo5n9NXvd6I0EwWKzB76mC2nuS0VBDMbnuYDPb7kE7/xNw0c2m+LrwXwHX/Z4euWCeXXuWjFlNeFBJ5/ApzDMBc40s/OAdeQTRCt828w+azmtnhkUQ5tKplKJk+/lBFxRZD87Bk+g9zAeUtiIV+rNcBvrnWY2GjjIzI43szl5232DoLNivmLjU5JOSodWSO8X4/n+Nk/zWrrhOb3mm2fPPh9fe2kSnkTytTxHMNmoNEm7yJdfAE8NtWm6l8fxlWAbkw/pPDL5CC2Ww+4ULPLHS0PzyvKkw4AnzOzNbBkzm4nPvP2hmb2IK5hL8fDCwfKklsr4XbpEiGEQLBXHA2fI10l5L1kXXsL9GFeneSRj8VFC5T++FrAV8BUz+6qZvZeneTpZOzaWdC2u4H4o6UTcL3RH8s2Cr0jZH19F8xpglxrXCktHiVnkZExJX8Rn/K4q6QbgZ2Y2KXO+G7Ct+ZoOfwfGmNnv0rkNzOyZnOUPguUSSTcCb1lm4mSyEByCm82eqkSMFSRPdXaBj+N58u4ys1PkaaJ2xi0hU/FMH8fhS2GvhpvO3siY4sM/20lY5EgmDc1nSDodT5X9SOWcpIOBR/GFsMDXUD8/MwR/LpUL01gQLHtGAv+ntKyBpB/g80ymmNlZmZDkXE1Nlf97JoR6kKQeeIDB06T5b/j0hsfwCeC34ss574uvUDnCzF4vam5OUCyLM+P/GHw+C8ArkqaY576aDQw3s0cAzOwySXdmKsqC9B6msSBYxiTz8w/wNYr+hc/o/0LFelAZDeRlaspcvzJBckfcTP4ffLRyOL5EwGmSdjazP0l6CdjQPBfhNVp4NdzIM9ZJabOXkyZtXYYrlRnANyU9jEe59JWn/670Zp6MuS5BUAxm9g3gLuBUM9vPzJ6pNWExp+/+IFOypGPwAKAzzOzTwD/wpbzn4TP4r5L0STxw6AVJ3ZKSml+ZHxcKpvOyuEPps/AMp3eZ2bbA1/Awyc3M7K1shY6hbhAUR1Iut2eCavLMM9Yluy1pFLAyPu9mHTzDM3iY9MfwCLdx+Po05wDjzezL2aCDmB/X+VmsBJlm9rqki/D4/E3NUz/ck6tkQRAsFhnlktd8l5XM7N0qBbYKngl5DTP7pqRtgfUlrWpmMyW9B2xnZvdLugJfJ+qGdL2u1rLsc9DJWWynYBqaPyNf0fIDk1iYx4KgvuTod9lV0l3Armmm/oaSvpNOvwlcBDTL1yX6Ha50RktqAjahJVDoQeCdFCxEKJjli7qsjBkEQcdFnndwLD5H7jLczPWuPNP6THxUcmfaPwHoa2bHSjoDD1P+L3Ctmd2crtcFH/G8XPjNBHVnideTqY6HD4Kg09EH6Gdm28FCYcrvSDoT96/cmfafAIZL2hVfu2YNYGpWwaSRViiY5ZQljqEPBRMEnZ53ge6SmiXtDnxZ0jcl7WFmVwJzJZ2Qyq6N50Hb1MyewkOYt5XUF2K2fhDmsiAIqkiZPEbgKfhfw8OktwDewn0vD+Ez9jfB86EdbWbPps/2xYPGZhUvedARCSUTBEFNJG2CT/JcKUWYHoWPWE6SL5W8oaWM6smkFvNdgg+xxD6ZIAiWD8zsibQ5N71/Cs87hnmi3IqCqfhpo8cafIhIoR0EQU0kdZWvuDlK0kPAAuCG6nLhpw0WRYxkgiCoifmiaL2AzfHUNZOhJW9ZXYULSkP4ZIIgWCzC7xK0hxjJBEHQJnmnrgk6LzGSCYIgCHIjHP9BEARBboSSCYIgCHIjlEwQBEGQG6FkgiAIgtwIJRMEQRDkRiiZIAiCIDf+H4waQfkRuXc8AAAAAElFTkSuQmCC\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "x_axis = [\"K-Nearest Neighbors\",\"Decision Tree\", \"Random Forest\", \"Naive Bayes\", \"K-Means\",\"Logistic Regression\",\"Support Vector Machine\"]\n", + "heights = [nearest_neighbors_acc,decision_tree_acc,random_forest_acc,naive_bayes_acc,k_means_acc,logistic_reg_acc,support_vector_acc]\n", + "fig, ax = plt.subplots()\n", + "plt.title(\"Accuracy metric comparison\")\n", + "plt.grid()\n", + "plt.bar(x=x_axis,height=heights)\n", + "\n", + "fig.autofmt_xdate()\n", + "\n", + "plt.show()" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "This comparison shows that for this dataset using Random Forest gives us the best result. A comparison like this is however not necessarily ideal since different algorithms excel at different problems." + ], + "metadata": { + "collapsed": false + } + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file