{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Hands on ML Chs 3-7. Classification","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt","metadata":{"execution":{"iopub.status.busy":"2022-08-03T18:52:31.737904Z","iopub.execute_input":"2022-08-03T18:52:31.738417Z","iopub.status.idle":"2022-08-03T18:52:31.764303Z","shell.execute_reply.started":"2022-08-03T18:52:31.738321Z","shell.execute_reply":"2022-08-03T18:52:31.763347Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# read in data and select features\n\ndf, test = pd.read_csv('../input/titanic/train.csv', index_col=0), pd.read_csv('../input/titanic/test.csv', index_col=0)\nX, y = df.drop(['Survived'], axis=1), df['Survived']\nnumerical_features = X.select_dtypes(include='number').columns.tolist()\ncategorical_features = X.select_dtypes(exclude='number').columns.tolist()\n\nprint(f'numerical features: {numerical_features}')\nprint(f'categorical features: {categorical_features}')","metadata":{"execution":{"iopub.status.busy":"2022-08-03T18:52:32.470581Z","iopub.execute_input":"2022-08-03T18:52:32.471336Z","iopub.status.idle":"2022-08-03T18:52:32.517949Z","shell.execute_reply.started":"2022-08-03T18:52:32.471296Z","shell.execute_reply":"2022-08-03T18:52:32.516843Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# split data into training and validation sets\n\nfrom sklearn.model_selection import train_test_split\n\ntrain, val, y_train, y_val = train_test_split(X, y, train_size=0.75, random_state=0, stratify=y)\n\n# good to have \nX_train_id = train.index\nX_val_id = val.index\ntest_id = test.index","metadata":{"execution":{"iopub.status.busy":"2022-08-03T18:53:14.783825Z","iopub.execute_input":"2022-08-03T18:53:14.784260Z","iopub.status.idle":"2022-08-03T18:53:15.371869Z","shell.execute_reply.started":"2022-08-03T18:53:14.784222Z","shell.execute_reply":"2022-08-03T18:53:15.371001Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Create preprocessing pipeline\n\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.preprocessing import OneHotEncoder\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.compose import ColumnTransformer\n\nnumeric_pipeline = Pipeline(steps=[\n    ('impute', SimpleImputer(strategy='median')),\n    ('scale', StandardScaler())\n])\n\ncategorical_pipeline = Pipeline(steps=[\n    ('impute', SimpleImputer(strategy='most_frequent')),\n    ('one-hot', OneHotEncoder(handle_unknown='ignore', sparse=False))\n])\n\npreprocessing_pipeline = ColumnTransformer(transformers=[\n    ('number', numeric_pipeline, numerical_features),\n    ('category', categorical_pipeline, categorical_features)\n])","metadata":{"execution":{"iopub.status.busy":"2022-08-03T18:57:29.613867Z","iopub.execute_input":"2022-08-03T18:57:29.614307Z","iopub.status.idle":"2022-08-03T18:57:29.622062Z","shell.execute_reply.started":"2022-08-03T18:57:29.614273Z","shell.execute_reply":"2022-08-03T18:57:29.620942Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = preprocessing_pipeline.fit_transform(train)\nX_val = preprocessing_pipeline.transform(val)\nX_test = preprocessing_pipeline.transform(test)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T18:59:52.235690Z","iopub.execute_input":"2022-08-03T18:59:52.236135Z","iopub.status.idle":"2022-08-03T18:59:52.299001Z","shell.execute_reply.started":"2022-08-03T18:59:52.236097Z","shell.execute_reply":"2022-08-03T18:59:52.297867Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Some Useful Functions","metadata":{}},{"cell_type":"code","source":"def strat_kfolds(clf, X, y, n_splits=3):\n    y = y.reset_index(drop=True)\n\n    from sklearn.model_selection import StratifiedKFold\n    from sklearn.base import clone\n\n    skfolds = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=0)\n    scores = []\n    print(f\"total size of training data: {len(X)}\")\n    for train_idx, test_idx in skfolds.split(X, y):\n        clone_clf = clone(clf)\n        X_train_folds = X[train_idx]\n        y_train_folds = y[train_idx]\n        print(f\"\\nsize of training fold: {len(X_train_folds)}\")\n        X_test_fold = X[test_idx]\n        print(f\"size of validation fold: {len(X_test_fold)}\")\n        y_test_fold = y[test_idx]\n\n        clone_clf.fit(X_train_folds, y_train_folds)\n        y_pred = clone_clf.predict(X_test_fold)\n        n_correct = sum(y_pred == y_test_fold)\n        accuracy = n_correct / len(y_pred)\n        print(f\"-- accuracy on fold: {np.round(accuracy, 2)} --\\n\")\n        scores.append(accuracy)\n\n    print(f\"\\nAveraged scores across all folds: {np.round(np.array(scores).mean(), 3)}\")\n    \n    return np.array(scores)\n\ndef create_confusion_matrix(y_true, y_pred, normalize=None):\n    from sklearn.metrics import confusion_matrix\n    matrix = confusion_matrix(y_true, y_pred, normalize=normalize)\n    fig = plt.figure(figsize=(8, 8))\n    ax = fig.add_subplot(111)\n    cax = ax.matshow(matrix, cmap='Oranges')\n    for (row, col), val in np.ndenumerate(matrix):\n        ax.text(col, row, '{:0.2f}'.format(val), ha='center', va='center')\n    fig.colorbar(cax)\n    plt.xlabel('Predicted')\n    plt.xticks([0, 1], labels=['Died', 'Survived'])\n    plt.ylabel('Actual')\n    plt.yticks([0, 1], labels=['Died', 'Survived'])\n    plt.title('Confusion Matrix')\n    plt.show()\n    \ndef plot_precision_vs_recall(y_true, y_pred):\n    from sklearn.metrics import precision_recall_curve\n    precisions, recalls, _ = precision_recall_curve(y_true, y_pred)\n    plt.plot(recalls, precisions, \"b-\", linewidth=2)\n    plt.xlabel(\"Recall\", fontsize=16)\n    plt.ylabel(\"Precision\", fontsize=16)\n    plt.axis([0, 1, 0, 1])\n    plt.title('Precisions vs Recalls')\n    plt.grid(True)\n    plt.show()\n    \ndef plot_roc_curve(y_true, y_pred):\n    from sklearn.metrics import roc_curve\n    false_positive_rate, true_positive_rate, _ = roc_curve(y_true, y_pred)\n    plt.plot(false_positive_rate, true_positive_rate, linewidth=2)\n    plt.plot([0, 1], [0, 1], 'g--') \n    plt.axis([0, 1, 0, 1])                                    \n    plt.xlabel('False Positive Rate (Fall-Out)', fontsize=16) \n    plt.ylabel('True Positive Rate (Recall)', fontsize=16)\n    plt.title('ROC Curve')\n    plt.grid(True)     \n    \n#TODO: Function for plotting decision boundaries","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:30:46.757485Z","iopub.execute_input":"2022-08-03T19:30:46.757879Z","iopub.status.idle":"2022-08-03T19:30:46.775261Z","shell.execute_reply.started":"2022-08-03T19:30:46.757830Z","shell.execute_reply":"2022-08-03T19:30:46.774242Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Training a Binary Classifier Example","metadata":{"execution":{"iopub.status.busy":"2022-08-03T01:23:00.494507Z","iopub.execute_input":"2022-08-03T01:23:00.495055Z","iopub.status.idle":"2022-08-03T01:23:01.070923Z","shell.execute_reply.started":"2022-08-03T01:23:00.495014Z","shell.execute_reply":"2022-08-03T01:23:01.069875Z"}}},{"cell_type":"code","source":"from sklearn.linear_model import SGDClassifier\nfrom sklearn.metrics import accuracy_score\n\n# first step is to instantiate the model\nsgd_clf = SGDClassifier(max_iter=1000, tol=1e-3, random_state=0)\n\n# next is to fit the model to the data. This is where the the model 'learns' the data by modifying the weights through backpropogation \nsgd_clf.fit(X_train, y_train)\n\n# Now that the model has learned the data, let's use it to predict the validation targets and see how they compare to the actual target data\ny_pred = sgd_clf.predict(X_val)\n\naccuracy = accuracy_score(y_val, y_pred)\nprint('accuracy: {:.2f}'.format(accuracy))","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:06:41.442023Z","iopub.execute_input":"2022-08-03T19:06:41.442742Z","iopub.status.idle":"2022-08-03T19:06:41.499441Z","shell.execute_reply.started":"2022-08-03T19:06:41.442705Z","shell.execute_reply":"2022-08-03T19:06:41.497744Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Methods of Validation","metadata":{}},{"cell_type":"code","source":"# validating your results using cross validation\n\nfrom sklearn.model_selection import cross_val_score\n\nscores = cross_val_score(sgd_clf, X_train, y_train, cv=5, scoring='accuracy')\n\n#printing off the different scores\n\nfor i, score in enumerate(scores):\n    print(f\"accuracy for run {i+1}: {np.round(score, 2)}\")\nprint(f'mean accuracy for all {i+1} runs: {np.round(scores.mean(), 2)}')","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:06:44.193864Z","iopub.execute_input":"2022-08-03T19:06:44.194268Z","iopub.status.idle":"2022-08-03T19:06:44.441370Z","shell.execute_reply.started":"2022-08-03T19:06:44.194236Z","shell.execute_reply":"2022-08-03T19:06:44.440248Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Stratified K folds\nstrat_kfolds(sgd_clf, X_train, y_train, n_splits=5)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:06:44.760221Z","iopub.execute_input":"2022-08-03T19:06:44.760631Z","iopub.status.idle":"2022-08-03T19:06:45.037503Z","shell.execute_reply.started":"2022-08-03T19:06:44.760596Z","shell.execute_reply":"2022-08-03T19:06:45.035954Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.ensemble import RandomForestClassifier\nrf = RandomForestClassifier(n_estimators=100)\nrf.fit(X_train, y_train)\nstrat_kfolds(rf, X_train, y_train, n_splits=5)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:08:08.762746Z","iopub.execute_input":"2022-08-03T19:08:08.763158Z","iopub.status.idle":"2022-08-03T19:08:11.018152Z","shell.execute_reply.started":"2022-08-03T19:08:08.763123Z","shell.execute_reply":"2022-08-03T19:08:11.016867Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![image.png](attachment:c23ca090-b61b-4418-a8a5-43777c16db5c.png)","metadata":{},"attachments":{"c23ca090-b61b-4418-a8a5-43777c16db5c.png":{"image/png":"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"}}},{"cell_type":"markdown","source":"# A brief review on classification metrics\n### Confusion Matrix, Precision & Recall","metadata":{}},{"cell_type":"code","source":"create_confusion_matrix(y_pred, y_val)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:10:08.994612Z","iopub.execute_input":"2022-08-03T19:10:08.995019Z","iopub.status.idle":"2022-08-03T19:10:09.326728Z","shell.execute_reply.started":"2022-08-03T19:10:08.994957Z","shell.execute_reply":"2022-08-03T19:10:09.325502Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_precision_vs_recall(y_pred, y_val)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:10:14.243933Z","iopub.execute_input":"2022-08-03T19:10:14.244353Z","iopub.status.idle":"2022-08-03T19:10:14.383076Z","shell.execute_reply.started":"2022-08-03T19:10:14.244319Z","shell.execute_reply":"2022-08-03T19:10:14.381940Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_roc_curve(y_pred, y_val)\nfrom sklearn.metrics import roc_auc_score\nroc_auc_score(y_pred, y_val)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:14:21.180870Z","iopub.execute_input":"2022-08-03T19:14:21.181318Z","iopub.status.idle":"2022-08-03T19:14:21.393096Z","shell.execute_reply.started":"2022-08-03T19:14:21.181281Z","shell.execute_reply":"2022-08-03T19:14:21.392324Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# The best classification assessment (IMO)\nfrom sklearn.metrics import classification_report\nprint(classification_report(y_val, y_pred))","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:14:07.213675Z","iopub.execute_input":"2022-08-03T19:14:07.214087Z","iopub.status.idle":"2022-08-03T19:14:07.226255Z","shell.execute_reply.started":"2022-08-03T19:14:07.214055Z","shell.execute_reply":"2022-08-03T19:14:07.225107Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![image.png](attachment:72deaab8-713f-4254-8020-8f8f8b3614f1.png)","metadata":{},"attachments":{"72deaab8-713f-4254-8020-8f8f8b3614f1.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAhYAAACbCAYAAAA+9tL8AAABQ2lDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8bAwcDMwA4klROTiwscAwJ8gEoYYDQq+HaNgRFEX9YFmRUg9uvvn8iF610vP9cyNlyQi6keBXClpBYnA+k/QJyaXFBUwsDAmAJkK5eXFIDYHUC2SBHQUUD2HBA7HcLeAGInQdhHwGpCgpyB7BtAtkByRiLQDMYXQLZOEpJ4OhIbai8IcHsEKEQZmeQpuBsRcC0ZoCS1ogREO+cXVBZlpmeUKDgCQylVwTMvWU9HwcjACGgnKMwhqj/fAIcloxgHQqwki4HBshIoyIUQi//PwLCzFujtFwgxJWBY83IxMOy1LkgsSoQ7gPEbS3GaMcRnjNzbGRhYp/3//zmcgYFdk4Hh7/X//39v////7zIGBuZbDAwHvgEA2w5fpgixCWIAAAA4ZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAAhagAwAEAAAAAQAAAJsAAAAAc0sOwAAAQABJREFUeAHtnQf81tMXx4+sEikVMqKMsnc22TNk/FEolQbZhQplbyE7RPYW2aMysktmZWSmUFJUJN//eZ/cx/f37Zm/Uc/z65zX6/k933G/9577Ofeee8655/n+FouUxMkRcAQcAUfAEXAEHIFKQKBGJdThVTgCjoAj4Ag4Ao6AI2AIuGHhA8ERcAQcAUfAEXAEKg0BNywqDUqvyBFwBBwBR8ARcAQWuGHx888/y2uvvSa33367/Pnnn/NJYM6cOfLZZ5/JE088IW+88cZ89xfEhb///lu++uqrCjVF6soPP/xgfaE+6Pvvv69Qnf5wegT++ecfGTZsmAwcOFAmTpw4XyHw//zzz+0TUoomTZo0X7lcF6ZMmSKvv/66jd0g01zPLEr3p0+fLu+++67cfffdMnny5JLp+vjx4+XWW2+Vd955p1J5/v333+Xjjz9OYTFt2jSZPXt2pbZR0coWtsxyzd2K9s+fXzgIFGxYjBs3TlZbbTX7bLHFFva97rrryrbbbitrr722nY8ePTpjbzAWTjrpJLn00ktlqaWWmq8cCumuu+6SY445RiZMmDDf/XwvHHjggSk+4ZdFPhfRt2OPPVbozymnnJKreNr7KI8LL7xQmjVrJm3btpXbbrtN9ttvP9l7773l+OOPT/tMMV/84osv5IYbbhAUQDESihqZvf/++7YwnHnmmWXYZKHbbLPNpE2bNoY/x//73//kwQcfLFMu3clff/0lAwYMkG+//dZuv/rqq9K1a1e57rrrZIkllpjvkfJide+998o222xj43WHHXaw+uervAQujBkzRs4991w5+eSTpWbNmiXAsZiu6dOnj/G7//77y6xZsyqFb8YIOqBHjx6y5557yr777iv77LOP/PTTTzb2kDN6accdd5R77rnH2sTA4ZzrRx99tBlpRx11lKy66qpy4oknZuSL8c8zHTt2lPfeey9juXQ3FpTM0s2N5Nzt3r17leqa5HxOh4dfqyQE+FVIIXTjjTdGhx9+ePTll19GH330UbTYYotFp59+ejR16lQ7X3HFFSMdMBmr5J4u3JFOnLRl5s6dGw0ePNjq/e6779KWyXVRF5lIDZ1IDRj76GITUW8u0oEX6USzttU4yFV8vvu//vpr1LJly0gNieiDDz6IOJ8xY0aknm6kC0ekSma+Z4r9wkUXXRTVrl07Kq8sqrp/vXr1ig4++OBo5syZNv5GjRpVpsk99tgjUiPTxifyePrppyM1aKPhw4eXKZfuRCNn1nddJOw2Y1eVfNStW7d0xaN0WGkELkrylHxYFzObD8wlNYSsL8kypXDO/AHr7bffPlJDtOhZfuutt6LGjRtHuujZXH3yyScrhW81RKM6depEGkGL1NGIfvnll+iEE06wsaORLtOParCannn44Ycj5A9xj/F6zjnnRL/99lsEnm+//baV22WXXdLieccdd9h4VoM50uhDxHgrhBaUzNLNjeTcVaO90nWNRqFScCTnc+qGH1Q6AlJojQifiYLiYFCrfRNpGNqqYVBrpCFrld988020+OKLR/fdd1/Gcscdd1y06aab5mUMpKtELXgzTjQUGfH5448/0hVLe23o0KHWp1yLQfJhFMiuu+4abbfddpF6JfPxfsEFF0SPPfZY8rGiP8dgfPPNN+frTzEwrmFmU0QvvPCCsYNi5hNIt7OiJZdcMlKPNFwyZd2iRQsbF6mLGQ6oSyNspuQpQns1atSInnrqqbRPpMPq7LPPjq666qq05eMXN9poo2iDDTYow3/8fikcM//r168fMdaLnZAtzkeXLl1sbKPPWGQrg5A3ehHn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3nlnWXXVVaVZs2bStm1b+eqrr/LmsSJ94ufjRxxxRKrtX375Je92F/WC/DT82muvzftnpW+99ZbsvffepiObNm0qXbp0kffff79CMMbH99ixY00nnHvuuRWqc2E9XJn8z5gxw7Do2LFjXt05/PDDrfyvv/5q5XmlwkEHHWTXTjjhhLzqqIxCcXmmq+/ll18WxlEmynetvfTSS61v8XU6U53lvV4hw+Ldd9+VPfbYQ5577jmpVauWLLPMMvLss88KHZw2bZrx9Nlnn8knn3xSXv4Wyed450HdunXtw2D/6KOPZPbs2alr/AwICt/VEaRJkyZZvyvy3pSAD98///yztGjRQp588smigatnz55y1llnyRtvvCGrrLKKTJkyRR555BHZYYcd8jIuKtqnUaNGyWOPPSYrrbSSHHPMMbLCCisUDTbFzggGYO/evfMyLKZPny6tWrUyOa+33npmXNx1111y3HHHVSh6EZ8jYawXO26Z+KtM/nktAjpzwoQJmZorcx2jhvI8h8F49NFHyzPPPGNr2oI01OLyLMOgntxzzz1y8MEHyxdffJG8lTrPNxKGM0J/cSyqigp6QVaSiV69epkyvPrqq+XYY4+12+3atZORI0fKK6+8YkDQ2XiHR4wYIW+++aZMnTpV1l9/fVNovJWQ82HDhsnbb78t9erVk0MPPVTWWWcdqzPbvSRP1eF85ZVXTi2AZ599tnm1PXr0kP/9739mTGDQtW7dWlZccUVbgFgsd9ppJ7NmJ06caBGkRo0a2WBkwh555JGpN6ixeN19990yefJks1oPO+wwAf909PzzzwtRkfr168tuu+0mG220kRXj5T8YkPBRp04dMyTXXXddu4cHztvaeEnQa6+9ZjLGIxg8eLDxSj277rqrlb3tttukdu3asvrqq5txyuLaoUMHqVmzpm2rMW7C9lomvu+77z756aefpGXLltafxx9/XL755htbnDfYYIMUTihy+jxu3DjjZbXVVpMPP/xQ9tlnH4sUwNCNN95ofB1//PH2XZV/Pv/8c2uPl2aB85ZbbmkT/cwzzzS5IXf6BkYoPDxc6N577zUj6ZRTTpFknzAOkpRJVrxF94477rCFEfmuueaaaccBfGJ8/PHHH7LjjjtadCW8OAfDhHn+22+/CZE0PHKIiBvPbLLJJvLqq69aRKRTp07moT/11FP223hwp89J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999/22M33HCDLUYorAVJ66+/vlxxxRXy3nvvLchmq0Vb/CviSZMmyeGHHy6dO3eWKIqsX0suuaSMGjVKevbsKRw7VQ8EfvzxRznkkEPkmGOOkaWXXto6xUJ18803y3nnnSf8e2qnhYMATlu/fv1kl112kR9++CHFxNy5c21+YgC6UZGCJf8DVWrlpjFjxkSXXnpp2ucHDhwYrbrqqpEKLu39qrr4xRdfRGeeeWa0zTbbRAcccECkHmD0/PPPR9dcc02ZJk8//fSIstALL7wQHXzwwdFOO+0U6SArU25hnqhRETVu3Dh68cUXo1mzZkXq9UTfffddVKtWrejll1+ONFIR7b333tHs2bPLxeZ9990XTZ06NfXsY489Fk2cODF1nutAFWa0xx57lLv9XPVX1/vMib/++is69NBDo5o1a0YXX3yxdZXryLxr166RKrbq2v1Frl/IWo2ISA3K6O2337b+c2233XaLvv3220idhEUOk2LpMNg/+OCDkRoPpv/RsxDXW7VqZfO0WHgtJT4qFLHA6yIMn45at24tunAtcGv8tNNOkxVXXFF0kRQ1Hmx7oG7dunLbbbel2NTBI3feeadFAOCfZ0488US5/vrrZcMNN0yVW5gHWMx4sy1btrSPLkC2/cHWA9sghOquvPJKUYPIvCBVVPLKK68IEQxCezfddJOo4WchVzXyZMKECfN1Z7311pOOHTvKr7/+Kg899JAMGzbMsIsXJDLCdbChjeeee06GDh1qRVZaaSXDl/qd8kcAD5WIBDLFY73wwgvlySeftLmiRqMstdRSKS/pnnvukR49esjJJ58sugjl34iXLBoEkDVRxl133dX0DPNIHR3p0KGDEH4nunvHHXfI8ccfL88++6zxTZnrrrtO1EmSLl26FE1fqhsjRA+Zh2eccYZtT3bv3t26GK6HyCGRROYq+jLIqLphUan9qYgVpItMtNdee81XxUUXXRTtuOOO0XbbbVfG89J9+UgnV7TppptGRx11VPTqq6+mntWFLdp+++2j/fff3yzIcOPqq6+269SlC2m4HD3zzDORhhYtMrHRRhtFTz31lN3TXAOrF+8PD59vXWgjNTYiPGxIF2DzFriHVapGhpXFS6RsMdCIESMiNSAi3Woow86XX34Z6cIU6eCOdAFKeUDwDT4tWrSwiM2+++4bqbEUnXLKKYafGgZl6uEE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PXt22se++OILwUAolCqz/2PGjBEMi7POOks4rkzK1f94W/wr4kmTJslhhx1mmEVRZLeXXHJJGTVqlPTo0UM4dqoeCPz444/SunVrOfroo6VmzZrWKYz6m266Sfr16yeLLbZY9ehoCfZi7ty5cvbZZ8uuu+4qGBmBMPCZn7/88osbFQGUQr5VqVWI3n333UgnR6TKMNLFL5o1a1aki1+kAkvVq8oyeuGFF+xcveXorrvuik477bTo2muvjX799ddUOT8oi8BXX30Vrb766pEaBJEu2JF62tH3338f1apVy6699tpr0d577233yj6Z/uyvv/4y+ZxyyinR0KFDyxSi7ptvvjl1jfNbbrkldZ7rAHk/8MAD0TnnnDNfUWS+7777RjNnzpzvXrYLld1/+Hj66aejZs2aRbqwl2m6KvtfpiE9UQMrQhaquCJdaKKLLrrIinB9woQJUbdu3crMn+Tzfl5aCCBr5pIalNHbb79tzHNtt912i7777juX9UIUJ3pLo8FR3bp1ozPOOCPFSa9evUyfISenwhGoUMRCFzbp2rWrrLfeehaex7pbeumlJXjRwcAZNGhQKsTbtm1bUSNDWrRoIbpIys8//xyK+XcMASxpIgBY0oTtwZXtD6IWfH/00UdyxRVXyCGHHGL3dALIyy+/bNgTNbjxxhuFcB4h11tvvVV0kTYv+K233pJll13Wti1izVmd1KGGgUVDjj/+eFl55ZXjReyYsOHjjz8ujz32mBC6HzhwoBBVwANr1aqVqAIVXRzLPEddyLxv374ybtw4+e233+TSSy+VLl26WB90US9TnpOq6D+RgpYtW8pee+01X8QGTKuq/8nO4aESkUCm559/vlx44YUyZMgQ81zxaLkXtqnuvvtuUSNcTjrpJPn222+TVfl5CSCAPNu3b29zuXv37jbO+vfvLx07dpRVV13V5ugdd9whalAKW2oQY1EdL9HFTo477rgS6GVpssg8a9q0qUVxWbfQmWxTTpw4UQ4++GBBZzz33HNy6qmnyoABA0xW9FQdMzn33HPlhBNOEHSqUwKBwm2R/5644IILLFKhk8A8ML6hY445poy3u8kmm0Qaeo504Yt0vyrSxc7K48FiMTrNj8CIESPMw3n//ffL3NQthUgXpujZZ5+NVGGlPKA///wzuvLKKyM12MzyJkKgSiw6+eSTo+222y7SSRM9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"}}},{"cell_type":"code","source":"# Linear SVM\nfrom sklearn.svm import SVC\nsvm_clf = SVC(kernel='linear', random_state = 0, C=100)\nsvm_clf.fit(X_train, y_train)\ny_pred = svm_clf.predict(X_val)\nprint(classification_report(y_val, y_pred))\nscores = cross_val_score(svm_clf, X_train, y_train, scoring='accuracy', cv=5)\nprint(np.round(scores.mean(), 2))","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:33:50.552656Z","iopub.execute_input":"2022-08-03T19:33:50.553068Z","iopub.status.idle":"2022-08-03T19:33:51.786454Z","shell.execute_reply.started":"2022-08-03T19:33:50.553036Z","shell.execute_reply":"2022-08-03T19:33:51.785390Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"create_confusion_matrix(y_val, y_pred)\nplot_precision_vs_recall(y_val, y_pred)\nplot_roc_curve(y_val, y_pred)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:33:52.949770Z","iopub.execute_input":"2022-08-03T19:33:52.950187Z","iopub.status.idle":"2022-08-03T19:33:53.876027Z","shell.execute_reply.started":"2022-08-03T19:33:52.950153Z","shell.execute_reply":"2022-08-03T19:33:53.874866Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# RBF SVM\nsvm_clf = SVC(kernel='rbf', random_state = 0)\nsvm_clf.fit(X_train, y_train)\ny_pred = svm_clf.predict(X_val)\nprint(classification_report(y_val, y_pred))\nscores = cross_val_score(svm_clf, X_train, y_train, scoring='accuracy', cv=5)\nprint(np.round(scores.mean(), 2))","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:34:22.766539Z","iopub.execute_input":"2022-08-03T19:34:22.766919Z","iopub.status.idle":"2022-08-03T19:34:24.143809Z","shell.execute_reply.started":"2022-08-03T19:34:22.766885Z","shell.execute_reply":"2022-08-03T19:34:24.142729Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"create_confusion_matrix(y_val, y_pred)\nplot_precision_vs_recall(y_val, y_pred)\nplot_roc_curve(y_val, y_pred)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:34:47.060250Z","iopub.execute_input":"2022-08-03T19:34:47.060696Z","iopub.status.idle":"2022-08-03T19:34:47.777541Z","shell.execute_reply.started":"2022-08-03T19:34:47.060658Z","shell.execute_reply":"2022-08-03T19:34:47.776278Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"svm_clf = SVC(kernel='poly', random_state = 0, degree=3)\nsvm_clf.fit(X_train, y_train)\ny_pred = svm_clf.predict(X_val)\nprint(classification_report(y_val, y_pred))\nscores = cross_val_score(svm_clf, X_train, y_train, scoring='accuracy', cv=5)\nprint(np.round(scores.mean(), 2))","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:34:57.281300Z","iopub.execute_input":"2022-08-03T19:34:57.282232Z","iopub.status.idle":"2022-08-03T19:34:58.415937Z","shell.execute_reply.started":"2022-08-03T19:34:57.282191Z","shell.execute_reply":"2022-08-03T19:34:58.415185Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"create_confusion_matrix(y_val, y_pred)\nplot_precision_vs_recall(y_val, y_pred)\nplot_roc_curve(y_val, y_pred)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:35:02.025663Z","iopub.execute_input":"2022-08-03T19:35:02.026101Z","iopub.status.idle":"2022-08-03T19:35:02.748673Z","shell.execute_reply.started":"2022-08-03T19:35:02.026064Z","shell.execute_reply":"2022-08-03T19:35:02.747508Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rf = RandomForestClassifier(n_estimators=1000)\nrf.fit(X_train, y_train)\ny_pred = rf.predict(X_val)\nprint(classification_report(y_val, y_pred))\nscores = cross_val_score(rf, X_train, y_train, scoring='accuracy', cv=5)\nprint(np.round(scores.mean(), 2))","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:35:11.677163Z","iopub.execute_input":"2022-08-03T19:35:11.677557Z","iopub.status.idle":"2022-08-03T19:35:32.617096Z","shell.execute_reply.started":"2022-08-03T19:35:11.677525Z","shell.execute_reply":"2022-08-03T19:35:32.616024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"create_confusion_matrix(y_val, y_pred)\nplot_precision_vs_recall(y_val, y_pred)\nplot_roc_curve(y_val, y_pred)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:35:32.618859Z","iopub.execute_input":"2022-08-03T19:35:32.619190Z","iopub.status.idle":"2022-08-03T19:35:33.337560Z","shell.execute_reply.started":"2022-08-03T19:35:32.619161Z","shell.execute_reply":"2022-08-03T19:35:33.336505Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.linear_model import LogisticRegression\nlr_clf = LogisticRegression(solver='lbfgs')\nlr_clf.fit(X_train, y_train)\ny_pred = lr_clf.predict(X_val)\nprint(classification_report(y_val, y_pred))\nscores = cross_val_score(lr_clf, X_train, y_train, scoring='accuracy', cv=5)\nprint(np.round(scores.mean(), 2))","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:35:56.386250Z","iopub.execute_input":"2022-08-03T19:35:56.386934Z","iopub.status.idle":"2022-08-03T19:35:56.847598Z","shell.execute_reply.started":"2022-08-03T19:35:56.386897Z","shell.execute_reply":"2022-08-03T19:35:56.846157Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"create_confusion_matrix(y_val, y_pred)\nplot_precision_vs_recall(y_val, y_pred)\nplot_roc_curve(y_val, y_pred)","metadata":{"execution":{"iopub.status.busy":"2022-08-03T19:35:57.176397Z","iopub.execute_input":"2022-08-03T19:35:57.176783Z","iopub.status.idle":"2022-08-03T19:35:57.885416Z","shell.execute_reply.started":"2022-08-03T19:35:57.176752Z","shell.execute_reply":"2022-08-03T19:35:57.884677Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}