Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Anomaly Detection"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib as mpl\n",
"\n",
"from scipy.stats import multivariate_normal\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"from sklearn.metrics import precision_recall_fscore_support\n",
"from sklearn.metrics import accuracy_score\n",
"from sklearn.metrics import confusion_matrix\n",
"from sklearn.metrics import f1_score\n",
"from sklearn.metrics.pairwise import euclidean_distances\n",
"\n",
"from sklearn.cluster import KMeans\n",
"\n",
"import matplotlib.gridspec as gridspec\n",
"\n",
"from tqdm.notebook import tqdm\n",
"import ipywidgets as widgets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exercise 2 - Clustering-Based Anomaly Detection\n",
"\n",
"Clustering-Based approaches detect outliers by examining the relationship between records and clusters\n",
"\n",
"There exists three general approaches\n",
"1. Records not belonging to any cluster are outliers\n",
"1. **Records with a large distance to their closest cluster center are outliers**\n",
"1. All records in a small and sparse cluster are considered outliers"
]
},
{
"attachments": {
"anomaly_detection_clustering.jpg": {
"image/jpeg": "/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAEeA5oDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvOfjB+0JJ8LfHvh7wxp3gnxd431zxHp9/qkNtocmnRfZ7azks4pnke9u7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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"In this exercise **you should implement the second approach**."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Prepare the dataset\n",
"We will prepare the creditcard dataset the same way as in the previous exercise."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"X_train: (170589, 18)\n",
"X_test: (57109, 18)\n",
"X_val: (57109, 18)\n",
"Number of anomalies y_test: 231\n",
"Number of anomalies y_val: 261\n"
]
}
],
"source": [
"df = pd.read_csv('creditcard.csv')\n",
"features_to_drop = ['Time', 'V8', 'V13', 'V15', 'V20', 'V22', 'V23', 'V24', 'V25', 'V26', 'V27', 'V28']\n",
"df.drop(columns=features_to_drop, inplace=True)\n",
"\n",
"genuine = df[df.Class == 0]\n",
"anomalies = df[df.Class == 1]\n",
"\n",
"genuine_X = genuine.drop(columns=[\"Class\"]).values\n",
"genuine_y = genuine.Class.values\n",
"\n",
"anomalies_X = anomalies.drop(columns=[\"Class\"]).values\n",
"anomalies_y = anomalies.Class.values\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(genuine_X, genuine_y, test_size=0.4, random_state=42)\n",
"\n",
"X_test = np.concatenate([X_test, anomalies_X])\n",
"y_test = np.concatenate([y_test, anomalies_y])\n",
"\n",
"X_test, X_val, y_test, y_val = train_test_split(X_test, y_test, test_size=0.5, random_state=42)\n",
"\n",
"print(\"X_train:\", X_train.shape)\n",
"print(\"X_test:\", X_test.shape)\n",
"print(\"X_val:\", X_val.shape)\n",
"print(\"Number of anomalies y_test:\", y_test.sum())\n",
"print(\"Number of anomalies y_val:\", y_val.sum())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Scale the data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"scaler = StandardScaler()\n",
"X_train = scaler.fit_transform(X_train)\n",
"X_val = scaler.transform(X_val)\n",
"X_test = scaler.transform(X_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Generating cluster centers\n",
"To implement our anomaly detection algorithm we need to get the cluster centers. We will use the [KMeans](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html) model with 50 clusters. As the seed value set `random_state=42`.\n",
"\n",
"> Calculate the cluster centers from the training data"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# kmeans = ...\n",
"# cluster_centers = ..."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Click on the dots to display the solution*"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"jupyter": {
"source_hidden": true
},
"tags": []
},
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
"kmeans = KMeans(n_clusters=50, random_state=42)\n",
"kmeans.fit(X_train)\n",
"\n",
"cluster_centers = kmeans.cluster_centers_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Implement the prediction function\n",
"> Now that you have calculate the cluster centers you should implement the predict function to decide wether a point is an outlier or not. \n",
"1. For each point calculate the distance to the nearest cluster center (use the euclidean distance as the distance function)\n",
"1. Mark all points as anomalies if their distance is larger than the given threshold"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def predict(X: np.ndarray, cluster_centers: np.ndarray, threshold: float) -> np.ndarray:\n",
" # calculate the distance to the nearest cluster center\n",
" # Mark points as anomalies if their distance is larger than the threshold\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Click on the dots to display the solution*"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"jupyter": {
"source_hidden": true
},
"tags": []
},
"outputs": [],
"source": [
"def predict(X: np.ndarray, cluster_centers: np.ndarray, threshold: float) -> np.ndarray:\n",
" distances = euclidean_distances(X, cluster_centers).min(axis=1)\n",
" y_pred = distances > threshold\n",
" return np.array(y_pred, dtype=int)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If your code is correct you should be able to run the following cell:"
]
},
{
"cell_type": "code",
"execution_count": 8,
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
"source": [
"threshold = 10\n",
"y_pred = predict(cluster_centers + threshold + 1, cluster_centers, threshold)\n",
"np.testing.assert_equal(np.ones((len(cluster_centers))), y_pred)\n",
"\n",
"y_pred = predict(cluster_centers, cluster_centers, threshold)\n",
"np.testing.assert_equal(np.zeros((len(cluster_centers))), y_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tune `threshold` hyperparameter\n",
"As you have noticed our model contains is using a `threshold` hyperparameter. Let's tune it using our validation set."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Manually tune the threshold\n",
"You can play around with the slider to get the best threshold"
]
},
{
"cell_type": "code",
"execution_count": 9,
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6c370d0b78bd4f708c36f50b2eb13d45",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(FloatSlider(value=1.0, description='thresh', max=20.0), Output()), _dom_classes=('widget…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
"source": [
"@widgets.interact(thresh =(0,20,0.1))\n",
"def f(thresh=1):\n",
" y_pred = predict(X_val, cluster_centers, thresh)\n",
" precision, recall, f1, _ = precision_recall_fscore_support(y_val, y_pred, average=\"binary\")\n",
" \n",
" print(\"Detected number of outliers:\", y_pred.sum())\n",
" print(\"Actual number of outliers:\", y_val.sum())\n",
" print(\"------\")\n",
" print(\"Precision:\", precision)\n",
" print(\"Recall\", recall)\n",
" print(\"F1\", f1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Tune the paramter by using a grid search"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"application/json": {
"ascii": false,
"bar_format": null,
"colour": null,
"elapsed": 0.017639636993408203,
"initial": 0,
"n": 0,
"ncols": null,
"nrows": null,
"postfix": null,
"prefix": "",
"rate": null,
"total": 200,
"unit": "it",
"unit_divisor": 1000,
"unit_scale": false
},
"application/vnd.jupyter.widget-view+json": {
"model_id": "580ed1844b14436e986884a363e5521c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/200 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Best threshold 10.050251256281408 with f1 score 0.7047970479704798\n"
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
]
}
],
"source": [
"f1_scores = []\n",
"precision_scores = []\n",
"recall_scores = []\n",
"thresholds = np.linspace(0, 20, 200)\n",
"for thresh in tqdm(thresholds):\n",
" y_pred = predict(X_val, cluster_centers, thresh)\n",
" precision, recall, f1, _ = precision_recall_fscore_support(y_val, y_pred, average=\"binary\")\n",
" f1_scores.append(f1)\n",
" precision_scores.append(precision)\n",
" recall_scores.append(recall)\n",
" \n",
"best_thresh = thresholds[np.argmax(f1_scores)]\n",
"best_f1 = np.max(f1_scores)\n",
"print(\"Best threshold {} with f1 score {}\".format(best_thresh, best_f1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Visualize the relationship between the metrics and the threshold"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7feda4d05fa0>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
"text/plain": [
"<Figure size 720x576 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10,8))\n",
"ax.plot(thresholds, f1_scores, label=\"f1\")\n",
"ax.plot(thresholds, precision_scores, label=\"precision\")\n",
"ax.plot(thresholds, recall_scores, label=\"recall\")\n",
"ax.plot(best_thresh, best_f1, marker=\"o\")\n",
"ax.set_xlabel(\"Threshold\")\n",
"ax.set_ylabel(\"Score\")\n",
"ax.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Evaluate on the test set\n",
"Now that we have tuned our `threshold` hyperparameter we can calculate the metrics on the test set."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Detected number of outliers: 250\n",
"Actual number of outliers: 231\n",
"------\n",
"Precision: 0.68\n",
"F1 0.7068607068607069\n"
]
}
],
"source": [
"y_pred = predict(X_test, cluster_centers, best_thresh)\n",
"precision, recall, f1, _ = precision_recall_fscore_support(y_test, y_pred, average=\"binary\")\n",
"\n",
"print(\"Detected number of outliers:\", y_pred.sum())\n",
"print(\"Actual number of outliers:\", y_test.sum())\n",
"print(\"------\")\n",
"print(\"Precision:\", precision)\n",
"print(\"Recall\", recall)\n",
"print(\"F1\", f1)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"def plot_confusion_matrix(cm):\n",
" fig, (ax1) = plt.subplots(ncols=1, figsize=(5,5))\n",
" sns.heatmap(cm, \n",
" xticklabels=['Genuine', 'Fraud'],\n",
" yticklabels=['Genuine', 'Fraud'],\n",
" annot=True,ax=ax1,\n",
" linewidths=.2,linecolor=\"Darkblue\", cmap=\"Blues\")\n",
" plt.title('Confusion Matrix', fontsize=14)\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAUAAAAFACAYAAADNkKWqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAAsTAAALEwEAmpwYAAAkaElEQVR4nO3debxVdb3/8debKTFFwAFINBy4KZojKqU/L06IWqKlZlmOV+4tLTXRMFNzSitKs5xISZyumqmgoYgglgMqKjmXqGggg1dGFWT6/P5Y3wN7H86wz+bsczhnvZ8+1oO9v+u71/ruc+TNZ63v2msrIjAzy6M2zT0AM7Pm4gA0s9xyAJpZbjkAzSy3HIBmllsOQDPLLQdgCyDp55JmSwpJJzbC9nqlbfVthOGtsyT1T+9zk+Yei62bHIBlktRN0u8kvS3pM0kzJD0s6dBG3s+OwEXA/wA9gLsbYbP/Ttua0gjbqlVBAC2UtH61ddundQ0KKEm3SHqoxO5Pk73PjxowbMuRds09gJZIUi/gKWARcB7wD7J/TA4AbgC2bMTdbZv+fCAa6ar1iFgBzGqMbZVoPnA0MLKg7RTgfRr3Z7WKpPYRsZSmfZ/W0kSElwYuwBhgBrBBDes6FzzeErifLCgXAfcBPQvW/xx4FTgWeDv1eQDYpGB9FC6p/RbgoWr7/TnwasHzLwPjgYXAx2QhvV9a1yttr29B/32BZ4ElwGzgKqBDwfqJwHXAL4D/A+YAw4A2dfyc+qf9XAI8UdDePu3j4rS+6v22BW4G3gUWA28B51bto6afR9pH1fv5NjAhvfb0gv1Xbf9m4DWgY8H+/l79Z+klP4sPgRtIUldgIHBtRHxcfX1EzE/92gCjgG7Afmn5AvCAJBW8pBfwLeBIYACwK3B5WjcMODU97pGWUt0JzAT2BHYhC48ltbynzYGHgZfS/k8hC5MrqnU9DlgOfJUsYM5MY6/P7cCekrZJz79GFsoTq/VrQ/YPyzHA9sD5wE+Bk9L6YcA9wGOs/nk8XfD6K8hCug/ZPyTV/YgsfIel5+cDvYGTS3gP1gr5ELjhtgUEvFFPvwOAnYBtImIagKTvAFPTusdSv3bAiRGxIPUZTvoLHxEfS5qfHjf0UO6LwLCIeDM9n1pH3x8AHwA/iIiVwBuShgI3SrogIj5N/V6PiAvT439JOjW9l/+tZyxzgdFkQXM+WcD+iaw6WyUilgEXFjRNk7QbWRjfnH4ei4HPCn8eBf+e/D4i7i1o37ZgW0TEJ5KOA56S9BHZ6YvDI2JOPeO3VsoVYMOp/i5AVsF8UBV+ABHxDlnQ9Cno915V+CUfAJut7SCB3wI3SZog6XxJ29Uz1kkp/Ko8CXRg9TlIgJerva4hY70ZOF7SFsBBZIfxa5D0P5ImS/pQ0sfAWZR+nnByfR0i4nmyCvsCYHhEPFzitq0VcgA23Ftklcv2a7GNwspnWQ3r6vu9rGTNIG5ftJGIn7P6UPCrwMuSyjnUW9uxVnmMbNy3AhMiYnr1DpK+BVxNFo4Hkx26X0cWxKX4pL4O6fTDPsAKYJtqpyMsZxyADRQRc4GxwOmSNqi+XlLn9PAN4Atpxrhq3dZk5wFfX8thfMia5wN3qWGsb0XENRFxGFkF9l+1bO8NoF86b1llH2Ap2eTMWkvV5S1kExM319JtH+DZiPhDRLwYEVOBbar1WUo2eVGuHwO7kU369AN+uBbbshbOAVie08gqsMmSjpb0JUnbSfo+qw8TH0uP75DUN110fAfwItlM5dqYAOwq6WRJ20o6F9i7aqWkjpKuTdfh9ZK0F1m41Ba815EF83Xp+rzDgCuBPxSc/2sMlwGbks2G1+RfwG6SDpHUW9IFwH9W6zMN2DH9zDeR1H6NrdRC0s5kh7+nRsTTZOc+fylph4a+EWsdHIBlSOfydgPGAb8kC7oJwOHA4NQngEFk1drjaZkFHJHWrc3+x5JdQnI58ALZTPJ1BV1WAF3IKq5/kl2K8wxZ9VPT9mYAh5DNAE8BRpBNbPx0bcZZw36WRcT/VTvXWOhGslneO4Hnyd7Xb6r1+SNZxTqZ7Ge7NyWQtB7ZP0B3RsR9aTx3AvcCd0r6XMPejbUGWsu/i2ZmLZYrQDPLLQegmeWWA9DMcssBaGa55QA0s9yq+GeBpWGeZjZrBhFDyvqUS8ddTy/r7+zil/7Q4j5V0yQ3Q1hvl2lNsRtrZEum9AJg8bIhzTsQa7CO7YfV36k2ys+Boe8GY2bFcvTxaAegmRVzBWhmueUK0MxyyxWgmeWWK0Azyy1XgGaWWzmqAPMT9WZm1bgCNLNiPgQ2s9zK0SGwA9DMirkCNLPccgVoZrnlCtDMcssBaGa51caHwGaWV64AzSy3PAliZrnlCtDMcssVoJnllitAM8stV4BmlluuAM0st1wBmllu5agCzM87NTOrxhWgmRXzIbCZ5ZYPgc0st9SmvKWUTUvTJL0iaYqkyamtq6Rxkt5Kf3ZJ7ZJ0jaSpkl6WtFvBdk5I/d+SdEJB++5p+1PTa+ssZx2AZlZMKm8p3X4RsUtE9E3PhwLjI6I3MD49BzgE6J2WwcD12fDUFbgI2AvYE7ioKjRTn1MLXjewroE4AM2sWAUrwFoMAkamxyOBIwrab43MJKCzpB7AwcC4iJgbEfOAccDAtK5TREyKiABuLdhWjRyAZlasshVgAI9KekHS4NTWLSJmpsezgG7p8ebAvwteOz211dU+vYb2WnkSxMyKlVnNpUAbXNA0PCKGV+u2T0TMkLQZME7Sm4UrIyIkRVkDKIMD0MyKlXkZTAq76oFXvc+M9OccSfeTncObLalHRMxMh7FzUvcZwBYFL++Z2mYA/au1T0ztPWvoXysfAptZEUllLSVs9/OSNqx6DAwAXgVGA1UzuScAo9Lj0cDxaTa4H7AgHSqPBQZI6pImPwYAY9O6hZL6pdnf4wu2VSNXgGZWpJQwK1M34P60/XbAnRHxiKTngXsknQK8BxyT+o8BDgWmAp8CJwFExFxJlwLPp36XRMTc9PgHwC1AR+DhtNTKAWhmxSqUfxHxDrBzDe0fAQfU0B7AabVsawQwoob2ycCOpY7JAWhmRSpYAa5zHIBmVsQBaGa55QA0s9xyAJpZfuUn/3wdoJnllytAMyviQ2Azyy0HoJnllgPQzHLLAWhm+ZWf/Ct9FljSPpJOSo83lbRV5YZlZs2lUneDWReVVAFKugjoC3wJ+BPQHrgd2LtyQzOz5tBSw6wcpR4CHwnsCrwIEBEfVN3Xy8xaFwfgmpYW3qo63czQzFqj/ORfyQF4j6Qbyb6V6VTgZOCPlRuWmTUXV4DVRMQwSQcBC8nOA14YEeMqOjIzaxYOwBqkwHPombVyeQrAki6DkfQNSW9JWiBpoaRFkhZWenBm1vR8GcyafgV8PSLeqORgzGwd0DKzrCylBuBsh59ZPrTUaq4cpQbgZEl3Aw8An1U1RsR9lRiUmTUfB+CaOpF9L+eAgrYAHIBm1mKVehnMSZUeiJmtG1wBJpLOjYhfSfo9WcVXJCJ+VLGRmVnzyE/+1VsBVk18TK70QJrKm3+9mEWffMaKlStZvmIl+xz3q6L1Zx1/AN86dA8A2rVtw3ZbdWeL/Ycyb+GnZe+zQ/t23Hzp99h1+y2Zu+ATvvuTEbw/c+6q9Vt078KLf/kZl98whqtvG1/2fqxut428hfv+8mck0bv3f3DJ5Vfw4Ydz+MmQH7Ng/ny232EHfnHFr2jfoUNzD7VZuQJMIuLB9OfIphlO0xg4+Hd8NP+TGtdddet4rro1C6FD992RHx63X8nht2WPrvzxku9x8Km/K2o/8YivMG/RYnYcdDFHH7w7l58xiO8N/dOq9b88+xs8+tRrZb4bK8Xs2bO5845buX/0GNZbbz3O+fEZPDLmrzz59yf47vEncsihh3HpxRdy/333csyx32nu4TarPAVgqRdCPy5pQvWl0oNrbscM7Ms9j7yw6vmxh+7B328bwqS7hvL784+lTZvS/kf5Wv+duOPBZwG477GX6L/nl1at+3r/nZg24yNef3tW4w7e1rBixQo+W7KE5cuXs3jJEjbZdFOee3YSBw04GIDDBx3JhPGuwPN0IXSpN0QdApyTlguAKbTQw+KI4MHrTuepO87l5G/UfjvDjuu156Cvbs8D46cA8KWtunHUgN3Y76Tf0u/YK1mxciXHpkPl+nxhs42YPmseACtWrGThx4vZuPPn+XzHDpx90kFcfuOYtX5fVrdu3bpxwoknc/CB+3Fg/33YcIMN6LPDDmy4YSfatWuX+nRnzpzZzTzS5penACx1FviFak1PSXquAuOpuANOuooPPlzApl024KEbTuef02bx1Itvr9HvsH2/zDNT3ll1+Lvfnl9itz5b8uTt5wLQ8XPt+XDuxwDc/ZtT+eLmG9OhfVu26N6VSXcNBeDaOydy2+hJtY7lZ/9zGL+/fQKfLF7a2G/Tqlm4YAGPTxjPmEfHs+GGG3LOj8/gqSf/3tzDWje1zCwrS6l3hO5a8LQNsDuwUR39BwODs2ffBLqXPcDG9sGHCwD4cN7HjJ7wMnvs0KvGADz64N35c8HhryRuf/BZLvz96DX6fuvs7M5gtZ0D/GDOAnp278KMOfNp27YNnTboyEfzP2GPHb/IkQfuwuVnHsFGG3Zk5cpgydJl3HD33xrzLRswadLTbN6zJ127Zv8rH3DgAKa89CKLFi1k+fLltGvXjtmzZ7HZZt2aeaTNr6VWc+Uo9RD4BbJD3heAZ4CzgVNq6xwRwyOib0T0hX5rP8pGsv56Hdhg/c+tenzgV7bjtbc/WKNfpw3WY5/dt+XBiS+vanv8uX9y5IG7sGmXDQDo0ml9tuzRpaT9/vWJVzju63sB8I0Dd+WJ5/8FwIGnXM12h13EdoddxB/umMivb37U4Vch3Xt8gZf/8Q8WL15MRPDspGfYeptt2WPPvRj36FgARo+6n/3237+ZR9r8fAhcTUS0ii9A2mzjDbn7t6cC0K5tW+5+eDLjnn6D/zpqHwBuuvdJAA7fb2fGT3qTT5esPjR9851ZXHztQzx4/em0kVi2fAVnXXkP78+cV+9+b3ngaUZcdjyvjrqIeQs/KZoBtqax0047c9CAgzn26CNp27Yd222/PUcd/S323bc/5w45i2uvuZrttt+eI795dHMPtdm10CwriyLWuL655o7SV4FeFIRmRNxa/+uGxXq7TCtzeNaclkzpBcDiZUOadyDWYB3bDyNiSFlR1vucR0oLhWre+vXAFhedpZ4DvA3Yhmz2d0VqDqDeADSzliVPFWCpN0PoC/SJUstFM2uxWur5vHKUGoCvkk3lzqzgWMxsHZCj/Cs5ADcBXk/X/hXeD/DwiozKzJpNqZ9wag1KDcCfV3IQZrbuyFMFWNJ1gBHxBDANaJ8ePw+8WMFxmVkrJKmtpJckPZSebyXpWUlTJd0tqUNq/1x6PjWt71WwjfNS+z8lHVzQPjC1TZU0tJTxlHozhFOBe4EbU9PmZLfHN7NWpsIXQp/B6tvsAfwSuCoitgXmsfoDFqcA81L7VakfkvoAxwI7AAOB61KotgWuBQ4B+gDfTn3rVOonQU4D9ib7YnQi4i1gsxJfa2YtiFTeUv921RM4DLgpPRewP1lxBTASOCI9HpSek9YfkPoPAu6KiM8i4l1gKrBnWqZGxDsRsRS4K/WtU6kB+FnaaNUbaUcNd4g2s5av3ApQ0mBJkwuWwdU2fTVwLrAyPd8YmB8Ry9Pz6WRHl6Q//w2Q1i9I/Ve1V3tNbe11KnUS5AlJPwU6SjoI+AHwYImvNbMWpNzrACNiODC8lm1+DZgTES9I6l/24BpZqQE4lOyY/BWyu7z8NSJuqtiozKzZVGgWeG/gcEmHAuuRfdPk74DOktqlKq8nMCP1nwFsAUxPR5wbAR8VtFcpfE1t7bWq8xBY0iBJp0XEyoj4I/BFsk+F/FTSUfVt3MxankpMgkTEeRHRMyJ6kU1iTIiI44DHgaosOQEYlR6PTs9J6yekT6KNBo5Ns8RbAb2B58iuTOmdZpU7pH2see+6auqrAM9NG6rSgexegBsAf2L1yUszayWa+DrAnwB3SboMeAm4ObXfDNwmaSowl5RDEfGapHuA14HlwGkRsSIbt04HxgJtgRERUe8X7dQXgB0iovDE4pMRMReYK+nzpb5DM2s5Kv1Z4IiYCExMj98hm8Gt3mcJUOO9ySLicuDyGtrHAA36fon6ArDojp8RcXrB000bsiMzaxn8SZDVnk0XQReR9N9kx91m1sr4jtCrnQU8IOk7rP7o2+7A51h9waKZtSItNMvKUt8Xo88Bvippf7KPnkB2CUyr/05gs7xqqdVcOUr9TpAJgEPPLAdylH8lXwhtZjnhCtDMcitH+ecANLNirgDNLLdylH8l3w7LzKzVcQVoZkV8CGxmueUANLPcylH+OQDNrJgrQDPLrRzlnwPQzIq5AjSz3MpR/jkAzaxYmxwloAPQzIrkKP8cgGZWzOcAzSy32uQn/xyAZlbMFaCZ5VaO8s8BaGbFRH4S0AFoZkV8DtDMcitP5wB9Q1Qzyy1XgGZWJEcFoAPQzIr5o3Bmlls5yj8HoJkVy9MkiAPQzIrkKP8cgGZWzOcAzSy38hN/DkAzq8bnAM0st/xRODPLLVeAZpZbOco/B6CZFctTBeibIZhZkTYqb6mPpPUkPSfpH5Jek3Rxat9K0rOSpkq6W1KH1P659HxqWt+rYFvnpfZ/Sjq4oH1gapsqaWi977WMn4+ZtWKSylpK8Bmwf0TsDOwCDJTUD/glcFVEbAvMA05J/U8B5qX2q1I/JPUBjgV2AAYC10lqK6ktcC1wCNAH+HbqWysHoJkVUZlLfSLzcXraPi0B7A/cm9pHAkekx4PSc9L6A5Ql7SDgroj4LCLeBaYCe6ZlakS8ExFLgbtS31o5AM2sSBuprEXSYEmTC5bB1bedKrUpwBxgHPA2MD8ilqcu04HN0+PNgX8DpPULgI0L26u9prb2WnkSxMwaRUQMB4bX02cFsIukzsD9wHZNMLRaOQDNrEhTTAJHxHxJjwNfATpLapeqvJ7AjNRtBrAFMF1SO2Aj4KOC9iqFr6mtvUY+BDazIpWaBJG0aar8kNQROAh4A3gcOCp1OwEYlR6PTs9J6ydERKT2Y9Ms8VZAb+A54Hmgd5pV7kA2UTK6rjG5AjSzIhWsAHsAI9NsbRvgnoh4SNLrwF2SLgNeAm5O/W8GbpM0FZhLFmhExGuS7gFeB5YDp6VDaySdDowF2gIjIuK1ugbkADSzIpW6HVZEvAzsWkP7O2QzuNXblwBH17Kty4HLa2gfA4wpdUwOQDMrkqMPgjRNAC6Z0qspdmMV0rH9sOYegjWhPH0UzhWgmRXJ08xokwTg4mVDmmI31siqKj///lqetanaXQGaWW75hqhmllsOQDPLLR8Cm1luuQI0s9zKUQHoADSzYv5idDPLLV8HaGa5laMCMFdhb2ZWxBWgmRXxOUAzy60c5Z8D0MyK+TpAM8stHwKbWW7lKP8cgGZWzIfAZpZbIj8J6AA0syKuAM0stxyAZpZbvh+gmeWWK0Azy60cFYAOQDMr5guhzSy3fAhsZrmVowLQAWhmxdrk6EJo3xDVzHLLFaCZFfEhsJnllidBzCy3fBmMmeVWjvLPAWhmxVwBmllu5Sj/HIBmVixP18Y5AM2sSJ5uh5WnsDezEqjMpd7tSltIelzS65Jek3RGau8qaZykt9KfXVK7JF0jaaqklyXtVrCtE1L/tySdUNC+u6RX0muuUT1p7gA0syJtpLKWEiwHzo6IPkA/4DRJfYChwPiI6A2MT88BDgF6p2UwcD1kgQlcBOwF7AlcVBWaqc+pBa8bWOd7LfFnYmY5UakKMCJmRsSL6fEi4A1gc2AQMDJ1GwkckR4PAm6NzCSgs6QewMHAuIiYGxHzgHHAwLSuU0RMiogAbi3YVo18DtDMijTFKUBJvYBdgWeBbhExM62aBXRLjzcH/l3wsumpra726TW018oVoJkVkVTuMljS5IJlcC3b3wD4C3BmRCwsXJcqt2iCtwm4AjSzasqtiiJiODC8rj6S2pOF3x0RcV9qni2pR0TMTIexc1L7DGCLgpf3TG0zgP7V2iem9p419K+VK0AzK1JuBVjCdgXcDLwREb8tWDUaqJrJPQEYVdB+fJoN7gcsSIfKY4EBkrqkyY8BwNi0bqGkfmlfxxdsq0auAM2sSAVPAe4NfA94RdKU1PZT4ErgHkmnAO8Bx6R1Y4BDganAp8BJABExV9KlwPOp3yURMTc9/gFwC9AReDgttXIAmlmRSl0IHRFPUnu+HlBD/wBOq2VbI4ARNbRPBnYsdUw+BDaz3HIFaGZF8lQVOQDNrEiePgvsADSzIvmJPwegmVWTowLQAWhmxfL0vcAOQDMr4grQzHJLrgDNLK9cAZpZbvkcoJnllivAJN16ulYFH0A2s1bCAbjaC2Q3JxSwJTAvPe4MvA9sVcnBmVnTy9MkSJ0f+4uIrSJia+Ax4OsRsUlEbAx8DXi0KQZoZk2rjcpbWqJSP/fcLyLGVD2JiIeBr1ZmSGbWnFTmfy1RqZMgH0j6GXB7en4c8EFlhmRmzSlP5wBLrQC/DWwK3J+WzVKbmbUyrgCrSbO9Z1R4LGZmTaqkAJT0ODV8VV1E7N/oI1qHLVy4kIsv/BlTp/4LSVx86S+YPXsW11/7B959523uuOvP7LDjl5t7mK3WhT87j789MZGuXTfmvlEPrbH+lhE3MeahBwFYvmIF777zNhP//gwbde5c9j6XLl3K+eedyxuvvcZGnTvzq99cxeab9+SZp5/id1f9hmXLltG+fXvOOvsc9ur3lbL3sy5pqRMa5Sj1EHgIcE5aLgCmAJMrNKZ11q+uuJy99/l/jHroEf78l1FstfU2bLvtf3DV737P7n33aO7htXqDjvgG1994U63rTzz5v7jnvlHcc98ofnTmj9m97x4lh9+MGdM55cTvrdF+/1/+TKdOnXjokXF89/gTufq3wwDo3KUL11x7PX954EEu/cWVnH/euWW9p3WRD4GriYgXqjU9Jem5CoxnnbVo0SJeeOF5Lv3FlQC079CB9h060KlTp2YeWX7s3ncPZsyYXlLfR8b8lUMO/dqq5w89OIo7b7+N5cuWseNOO3P+BRfRtm3berfz+IQJfP+00wE4aMDBXHn5JUQE22/fZ1WfbbftzWdLPmPp0qV06NChge9q3eNJkGokdS1YNpF0MLBRhce2TpkxfTpdunTlwvPP45hvHsHPLzyfTz/9tLmHZTVYvHgxTz35dw48aAAA77z9NmMffpiRt/8v99w3irZt2qw6VK7PnDmz6d69BwDt2rVjgw03ZP78eUV9Hnt0LNv36dMqwg+yTzqUs7REpV4GU/iJkOXAu8AplRrUumjFiuW8+cbrDD3/AnbaaWd+ecVljLhpOKf/6MzmHppV88TEx9ll191WHf4+O+kZ3nj9VY771lEALPlsCV033hiAM390Gh9Mn86yZcuYOXMmx3xjEADf+d7xHHHkN+vd19Spb3H1VcO4Yfga39DYYrXJUQlY6iFwgz7yJmkwMDh7Vv//RC1Bt27d6datOzvttDMABw0YyIibhjfzqKwmjzz8Vw459LBVz4Pg64OO5Iyzzl6j79XXXAtk5wAvPP88br7ltqL1m23WjVmzZtKte3eWL1/Ox4sW0blzFwBmz5rFWT86nct+8Uu22HLLCr6jppWf+GvAN+BJ2lHSMZKOr1pq6xsRwyOib0T0hX6NM9Jmtsmmm9Kte3emvfsOkFUVW2+zTTOPyqpbtGgRLzz/PP33X/0923vt9RUee3QsH330EQAL5s/ngw9mlLS9/vvtz+hR9wMw7tGx7LlXPySxcOFCTv/+YM4462x23W33xn8jzSlHx8ClXgZzEdAf6AOMAQ4BngRurdjI1kFDf3oB5/1kCMuWLaNnzy245LIrGP/YOK78xaXMmzuX03/w33zpS9tzwx9vbu6htko/GfJjJj//HPPnz+Og/ffl+6f9kOXLlwNwzLey6/InPDaOr+y9N+uvv/6q122z7bac9qMz+f6pJ7MyVtKuXXt++rML+cIXNq93n0d+8yjOH3oOXxt4EJ022ohfDbsKgLvuvJ33//0+w6+/luHXZ1Xk9X8cwcbp0Lola6kzuuVQxBqX963ZSXoF2Bl4KSJ2ltQNuD0iDqr/tcNi8bIhaz9Sa3Id22eXfPj31/J0bD+MiCFlJdlz7yyoPxRqsOfWG7W45Cx1EmRxRKyUtFxSJ2AOsEUFx2VmzaTFpdhaKDUAJ0vqDPyRbEb4Y+CZSg3KzJpRjhKw3gCUJOCKiJgP3CDpEaBTRLxc6cGZWdPL0znAegMwIkLSGODL6fm0Sg/KzJpPji4DLPkymBcl+cOuZjmQo6tgSj4HuBfwXUnTgE/I3m9ExE6VGpiZNZOWmmZlqO9b4baMiPeBg5toPGbWzHwOcLUHgN0i4j1Jf4mI1vG5NjMz6g/Awn8Ktq7kQMxs3ZCnSZD6AjBqeWxmrVSO8q/eANxZ0kKyn0nH9BhWT4L4bqBmrU2OErDOAIyI+m+Za2atSp4mQUq+HZaZ5YNU3lL/djVC0hxJrxa0dZU0TtJb6c8uqV2SrpE0VdLLknYreM0Jqf9bkk4oaN9d0ivpNdekT7HVyQFoZkUqeCH0LcDAam1DgfER0RsYn55Ddsu93mkZDFwPWWACF5Fdm7wncFFVaKY+pxa8rvq+1uAANLNiFUrAiPgbMLda8yBgZHo8EjiioP3WyEwCOkvqQXZN8riImBsR84BxwMC0rlNETIrsHn+3FmyrVqV+EsTMcqKJzwF2i4iZ6fEsoFt6vDnw74J+01NbXe3Ta2ivkytAMytS7jlASYMlTS5YBjdkv6lya9LL7VwBmlmRcuu/iBgONPSbwmZL6hERM9Nh7JzUPoPimy73TG0zyL6eo7B9YmrvWUP/OrkCNLNiTXs7mNFA1UzuCcCogvbj02xwP2BBOlQeCwyQ1CVNfgwAxqZ1CyX1S7O/xxdsq1auAM2sSKXOAUr6X7LqbRNJ08lmc68E7pF0CvAecEzqPgY4FJgKfAqcBBARcyVdCjyf+l0SEVUTKz8gm2nuCDycljo5AM2sSKU+CxwR365l1QHVG9L5wNNq2c4IYI1voo+IycCODRmTA9DMiuTncyAOQDOrLkcJ6AA0syL+LLCZWQ64AjSzIr4hqpnlVo7yzwFoZtXkKAEdgGZWJE+TIA5AMyvic4Bmlls5yj8HoJlVk6MEdACaWRGfAzSz3PI5QDPLrRzlnwPQzIq5AjSzHMtPAjoAzayIK0Azy60c5Z8D0MyKuQI0s9zK03WAviGqmeWWK0AzK5afAtABaGbFcpR/DkAzK+ZJEDPLrTxNgjgAzaxYfvLPAWhmxXKUfw5AMyvmc4Bmlls+B2hmuZWnCtCfBDGz3HIFaGZF8lQBOgDNrIjPAZpZbrkCNLPcylH+OQDNrJocJaAD0MyK+BygmeVWns4B+jpAM8stV4BmViRHBaAD0MyqyVECOgDNrIgnQRpZx/bDmmI3ViH+/eVLniZBFBHNPYYWTdLgiBje3OOw8vj3l2+eBV57g5t7ALZW/PvLMQegmeWWA9DMcssBuPZ8/qhl8+8vxzwJYma55QrQzHIrlwEoqZukOyW9I+kFSc9IOrKR93G4pKGNuU2rm6QVkqYULL0qsI9pkjZp7O1a88jdJ0EkCXgAGBkR30ltXwQOb8z9RMRoYHRjbtPqtTgidqlpRfq9KyJWNu2QbF2Wxwpwf2BpRNxQ1RAR70XE7yW1lfRrSc9LelnSfwNI6i9poqR7Jb0p6Y70F6qoIpDUV9LE9PhESX9Ij2+RdI2kp1PVeVTVviWdU7C/i5vux9D6Seol6Z+SbgVeBbaQdL2kyZJeK/x51/F73FjSo6n/TeTqk7KtXx4DcAfgxVrWnQIsiIg9gD2AUyVtldbtCpwJ9AG2BvZu4H57APsAXwOuBJA0AOgN7AnsAuwuad8GbtdW61hw+Ht/ausNXBcRO0TEe8D5EdEX2An4T0k71bPNi4AnI2IH4H5gy4qN3ppc7g6Bq5N0LVkwLQXeA3YqqNA2IvsLtBR4LiKmp9dMAXoBTzZgVw+kw6/XJXVLbQPS8lJ6vkHa39/KfT85V3QInM4BvhcRkwr6HCNpMNn/+z3I/kF7uY5t7gt8AyAi/ippXmMP2ppPHgPwNeCbVU8i4rR06DMZeB/4YUSMLXyBpP7AZwVNK1j9s1vO6kp6vTr2W/h6Ffx5RUTc2LC3YA3wSdWDVM0PAfaIiHmSbmH176zU36O1Ink8BJ4ArCfp+wVt66c/xwLfl9QeQNJ/SPp8PdubBuyeHn+zjn41GQucLGmDtL/NJW3WwG1Y6TqRBeKCVIUfUrBuGjX/Hv8GVE2WHQJ0qfwwrankLgAju/L7CLLzP+9Keg4YCfwEuAl4HXhR0qvAjdRfJV8M/E7SZLLKsCFjeRS4E3hG0ivAvcCGDdmGlS4i/kF2uuFNsp/7UwWra/s9XgzsK+k1skPh95touNYE/EkQM8ut3FWAZmZVHIBmllsOQDPLLQegmeWWA9DMcssBaGa55QA0s9xyAJpZbv1/DeLpUuG7W90AAAAASUVORK5CYII=\n",
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
"text/plain": [
"<Figure size 360x360 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cm = confusion_matrix(y_test, y_pred)\n",
"plot_confusion_matrix(cm)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Check your results on ILIAS\n",
"On ILIAS you will find a online quiz where you can check your results.\n",
"\n",
"> Submit the value of your tuned `threshold` for which you received a f1-score of minimum **70%** on the validation set."
]
}
],
"metadata": {
"jupytext": {
"text_representation": {
"extension": ".py",
"format_name": "percent",
"format_version": "1.2",
"jupytext_version": "0.8.6"
}
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.12"
"nbformat_minor": 4