diff --git a/homemade/anomaly_detection/gaussian_anomaly_detection.py b/homemade/anomaly_detection/gaussian_anomaly_detection.py index da25ec4..fa6aaf3 100644 --- a/homemade/anomaly_detection/gaussian_anomaly_detection.py +++ b/homemade/anomaly_detection/gaussian_anomaly_detection.py @@ -1,7 +1,7 @@ """Anomaly Detection Module""" -import numpy as np import math +import numpy as np class GaussianAnomalyDetection: @@ -11,7 +11,7 @@ def __init__(self, data): """GaussianAnomalyDetection constructor""" # Estimate Gaussian distribution. - (self.mu, self.sigma_squared) = GaussianAnomalyDetection.estimate_gaussian(data) + (self.mu_param, self.sigma_squared) = GaussianAnomalyDetection.estimate_gaussian(data) # Save training data. self.data = data @@ -19,7 +19,7 @@ def __init__(self, data): def multivariate_gaussian(self, data): """Computes the probability density function of the multivariate gaussian distribution""" - mu = self.mu + mu_param = self.mu_param sigma_squared = self.sigma_squared # Get number of training sets and features. @@ -32,9 +32,9 @@ def multivariate_gaussian(self, data): for example_index in range(num_examples): for feature_index in range(num_features): # Calculate the power of e. - e_power_dividend = (data[example_index, feature_index] - mu[feature_index]) ** 2 - e_power_divider = 2 * sigma_squared[feature_index] - e_power = -1 * e_power_dividend / e_power_divider + power_dividend = (data[example_index, feature_index] - mu_param[feature_index]) ** 2 + power_divider = 2 * sigma_squared[feature_index] + e_power = -1 * power_dividend / power_divider # Calculate the prefix multiplier. probability_prefix = 1 / math.sqrt(2 * math.pi * sigma_squared[feature_index]) @@ -51,14 +51,14 @@ def estimate_gaussian(data): """This function estimates the parameters of a Gaussian distribution using the data in X.""" # Get number of features and number of examples. - (num_examples, num_features) = data.shape + num_examples = data.shape[0] # Estimate Gaussian parameters mu and sigma_squared for every feature. - mu = (1 / num_examples) * np.sum(data, axis=0) - sigma_squared = (1 / num_examples) * np.sum((data - mu) ** 2, axis=0) + mu_param = (1 / num_examples) * np.sum(data, axis=0) + sigma_squared = (1 / num_examples) * np.sum((data - mu_param) ** 2, axis=0) # Return Gaussian parameters. - return mu, sigma_squared + return mu_param, sigma_squared @staticmethod def select_threshold(labels, probabilities): @@ -104,15 +104,15 @@ def select_threshold(labels, probabilities): recall = true_positives / (true_positives + false_negatives) # F1. - f1 = 2 * precision * recall / (precision + recall) + f1_score = 2 * precision * recall / (precision + recall) # Save history data. precision_history.append(precision) recall_history.append(recall) - f1_history.append(f1) + f1_history.append(f1_score) - if f1 > best_f1: + if f1_score > best_f1: best_epsilon = epsilon - best_f1 = f1 + best_f1 = f1_score return best_epsilon, best_f1, precision_history, recall_history, f1_history diff --git a/homemade/k_means/k_means.py b/homemade/k_means/k_means.py index 3f12bd3..4933568 100644 --- a/homemade/k_means/k_means.py +++ b/homemade/k_means/k_means.py @@ -29,7 +29,7 @@ def train(self, max_iterations): closest_centroids_ids = np.empty((num_examples, 1)) # Run K-Means. - for iteration_index in range(max_iterations): + for _ in range(max_iterations): # Find the closest centroids for training examples. closest_centroids_ids = KMeans.centroids_find_closest(self.data, centroids) @@ -108,8 +108,8 @@ def centroids_compute(data, closest_centroids_ids, num_clusters): :param num_clusters: number of clusters. """ - # Get number of training examples and features. - (num_examples, num_features) = data.shape + # Get number of features. + num_features = data.shape[1] # We need to return the following variables correctly. centroids = np.zeros((num_clusters, num_features)) diff --git a/homemade/neural_network/multilayer_perceptron.py b/homemade/neural_network/multilayer_perceptron.py index b845f5a..269f4db 100644 --- a/homemade/neural_network/multilayer_perceptron.py +++ b/homemade/neural_network/multilayer_perceptron.py @@ -89,7 +89,7 @@ def gradient_descent( # Initialize cost history list. cost_history = [] - for iteration_index in range(max_iteration): + for _ in range(max_iteration): # Get current cost. cost = MultilayerPerceptron.cost_function( data, diff --git a/homemade/utils/features/add_polynomials.py b/homemade/utils/features/add_polynomials.py index e72bf93..8ef986d 100644 --- a/homemade/utils/features/add_polynomials.py +++ b/homemade/utils/features/add_polynomials.py @@ -1,22 +1,24 @@ +"""Add polynomial features to the features set""" + import numpy as np -def add_polynomials(x1, x2, polynomial_degree): +def add_polynomials(dataset_1, dataset_2, polynomial_degree): """Extends data set with polynomial features of certain degree. Returns a new feature array with more features, comprising of x1, x2, x1^2, x2^2, x1*x2, x1*x2^2, etc. - :param x1: first data set. - :param x2: second data set. + :param dataset_1: first data set. + :param dataset_2: second data set. :param polynomial_degree: the max power of new features. """ - polynomials = np.empty((x1.shape[0], 0)) + polynomials = np.empty((dataset_1.shape[0], 0)) for i in range(1, polynomial_degree + 1): for j in range(i + 1): - polynomial_feature = (x1 ** (i - j)) * (x2 ** j) + polynomial_feature = (dataset_1 ** (i - j)) * (dataset_2 ** j) polynomials = np.concatenate((polynomials, polynomial_feature), axis=1) return polynomials diff --git a/homemade/utils/features/add_sinusoids.py b/homemade/utils/features/add_sinusoids.py index b80167c..4d085bf 100644 --- a/homemade/utils/features/add_sinusoids.py +++ b/homemade/utils/features/add_sinusoids.py @@ -1,20 +1,22 @@ +"""Add sinusoid features to the features set""" + import numpy as np -def add_sinusoids(x, sinusoid_degree): +def add_sinusoids(dataset, sinusoid_degree): """Extends data set with sinusoid features. Returns a new feature array with more features, comprising of sin(x). - :param x: data set. + :param dataset: data set. :param sinusoid_degree: multiplier for sinusoid parameter multiplications """ - sinusoids = np.empty((x.shape[0], 0)) + sinusoids = np.empty((dataset.shape[0], 0)) for degree in range(1, sinusoid_degree): - sinusoid_features = np.sin(degree * x) + sinusoid_features = np.sin(degree * dataset) sinusoids = np.concatenate((sinusoids, sinusoid_features), axis=1) return sinusoids diff --git a/homemade/utils/features/normalize.py b/homemade/utils/features/normalize.py index 9068d68..865e95f 100644 --- a/homemade/utils/features/normalize.py +++ b/homemade/utils/features/normalize.py @@ -1,3 +1,5 @@ +"""Normalize features""" + import numpy as np diff --git a/homemade/utils/features/prepare_for_training.py b/homemade/utils/features/prepare_for_training.py index ead47bf..a354186 100644 --- a/homemade/utils/features/prepare_for_training.py +++ b/homemade/utils/features/prepare_for_training.py @@ -1,5 +1,7 @@ -import numpy as np +"""Prepares the dataset for training""" + import math +import numpy as np from .normalize import normalize from .add_sinusoids import add_sinusoids from .add_polynomials import add_polynomials @@ -9,7 +11,7 @@ def prepare_for_training(data, polynomial_degree=0, sinusoid_degree=0, normalize """Prepares data set for training on prediction""" # Calculate the number of examples. - (num_examples, num_features) = data.shape + num_examples = data.shape[0] # Prevent original data from being modified. data_processed = np.copy(data) @@ -34,7 +36,10 @@ def prepare_for_training(data, polynomial_degree=0, sinusoid_degree=0, normalize middle_feature_index = math.floor(current_features_num / 2) # Split features on halves. - (first_half, second_half) = np.split(data_processed, [middle_feature_index], axis=1) + features_split = np.split(data_processed, [middle_feature_index], axis=1) + first_half = features_split[0] + second_half = features_split[1] + # Generate polynomials. data_processed = add_polynomials(first_half, second_half, polynomial_degree) diff --git a/homemade/utils/hypothesis/sigmoid.py b/homemade/utils/hypothesis/sigmoid.py index 668424c..51d17c9 100644 --- a/homemade/utils/hypothesis/sigmoid.py +++ b/homemade/utils/hypothesis/sigmoid.py @@ -1,6 +1,9 @@ +"""Sigmoid function""" + import numpy as np -def sigmoid(z): +def sigmoid(matrix): """Applies sigmoid function to NumPy matrix""" - return 1 / (1 + np.exp(-z)) + + return 1 / (1 + np.exp(-matrix)) diff --git a/homemade/utils/hypothesis/sigmoid_gradient.py b/homemade/utils/hypothesis/sigmoid_gradient.py index 2920a57..cbcba30 100644 --- a/homemade/utils/hypothesis/sigmoid_gradient.py +++ b/homemade/utils/hypothesis/sigmoid_gradient.py @@ -1,7 +1,9 @@ +"""Sigmoid gradient function""" + from .sigmoid import sigmoid -def sigmoid_gradient(z): +def sigmoid_gradient(matrix): """Computes the gradient of the sigmoid function evaluated at z.""" - return sigmoid(z) * (1 - sigmoid(z)) + return sigmoid(matrix) * (1 - sigmoid(matrix)) diff --git a/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb b/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb index 4eee841..7bc4282 100644 --- a/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb +++ b/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb @@ -272,12 +272,18 @@ "name": "stdout", "output_type": "stream", "text": [ - "mu\n", - "[14.11222578 14.99771051]\n", - "\n", - "\n", - "sigma^2\n", - "[1.83263141 1.70974533]\n" + "mu\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'GaussianAnomalyDetection' object has no attribute 'mu'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m# Let's see Gaussian estimation parameters.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'mu'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgaussian_anomaly\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmu\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'\\n'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'GaussianAnomalyDetection' object has no attribute 'mu'" ] } ], @@ -287,7 +293,7 @@ "\n", "# Let's see Gaussian estimation parameters.\n", "print('mu')\n", - "print(gaussian_anomaly.mu)\n", + "print(gaussian_anomaly.mu_param)\n", "\n", "print('\\n')\n", "\n", @@ -306,22 +312,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzt3XecXHW5+PHPM21ne9/NZpNNIwFCCyH0DkZA8QICKqCAothB8d4rP70KeMVyVdArV4qCglJEg4AoakA6CCQxkISQTrYk23uZ/vz+OGfDJGZLyuzs7jzv12teO6c/ZyY5z3zP93u+X1FVjDHGZC5PugMwxhiTXpYIjDEmw1kiMMaYDGeJwBhjMpwlAmOMyXCWCIwxJsNZIjBmPxORXhGZneJjnCYi9ak8hskclggynIicJCIvi0iXiLSLyEsicnS64xqKiJwgIn8XkR435j+KyPw0xvOsiHwyeZ6q5qnq5nTFBCAiKiJ9blJqEJFbRMSbzpjM+GWJIIOJSAHwBPBToASoBm4CwnuxL99+ju1f9icixwN/Ax4DpgKzgDeAl1LxC3x/n1MaHKGqecCZwKXAp/Z0B5PgMzCjoar2ytAXsAjoHGGdTwBrgQ7gr8CMpGUKfB7YAGwBbgd+uMv2jwHXue+nAkuAFnf9a5LWuxH4PfAboBv45G5ieQH42W7mPwnc574/DagHvga0Au8AlyWtmwX8EKgFmoA7gOxdtv0q0Aj8GijGSZYt7mfwBDDNXf9mIA6EgF7gtqTP5QD3fSFwn7v9VuC/AI+77ErgRTeeDvczOScp1o+7n30PsBn4dNKy04D6Yb63HTG4079Liu96YJO737eAC5LWuxJ4CbgVaAO+DcwB/u5OtwL3A0VJ27wD/AfwJtAH3A1Uut9LD/AUUOyuG3S/4zagE3gdqEz3/4VMf6U9AHul8cuHAvc/5L3AOYP/WZOWnwdsBA4GfO5F7OWk5QosxSlNZAOnAHWAuMuLgQGcBOABlgPfBALAbPfidpa77o1AFDjfXTd7l1hy3Ivu6bs5j48D2933pwEx4Baci/6p7sXpQHf5rcDjbsz5wB+B7+6y7ffdbbOBUuBC9/j57gX10aRjP8suSYudE8F9OMkwH5gJrAeucpdd6Z7zpwAv8FlgW9Ln9373IizuefQDC5NiHVUiAObjJLbB416c9J182P18qpJiigFfdL/zbOAAYLH7mZQDzwM/TjrWO8A/cC7+1UAzsAI4EufC/3fgBnfdT7ufeY57zkcBBen+v5Dpr7QHYK80/wNwLvK/wvklHHMvkpXusicHLx7utMe9GM1wpxU4I2m54PzSPsWd/hTwd/f9sUDtLsf+f8Av3fc3As8PE+c093gH7WbZ2UDUfX+aex65ScsfBr7hxtcHzEladjywJWnbCBAcJo4FQEfS9LMMkQjcC10EmJ+07NPAs+77K4GNScty3G2nDHHsR4Frk2IdKRF045Q0NuH8svcMse5K4LykmGqH2q+7zvnAP5Om32HnUtcS4Pak6S/iJk+cEubLwOHp/rdvr3dfdv8vw6nqWpz//IjIQTjF9h8DlwAzgJ+IyI+SNhGcX31b3em6pH2piDzkbvs8zn3p37iLZwBTRaQzaV9enNs9g+oYWgeQAKqAt3dZVoVzy2LHuqralzS9FecXcDnOxXa5iCSfT3IlaouqhnYsFMnBKUWcjVPCAcgXEa+qxoeJF6AM8PPuZzUYS3XSdOPgG1Xtd+PKc499DnADMA8nCecAq0Y4ZrKFqrpx15kicjlwHU4JZfB4ZUmr1O2yfiXwE+BknJKNB+f7SNaU9H5gN9N57vtfA9OBh0SkCOffx9dVNTrqszL7nVUWmx1U9W2c0sGh7qw6nPvSRUmvbFV9OXmzXXbzIHCRiMzAKQUsSdrXll32la+q7xtmX8mx9QGv4NzW2NWHgKeTpotFJDdpugbnlksrzkXpkKQYCtWpUB0qhq8ABwLHqmoBzu0vcBLIsDG7x4viJMHkWBqG2cbZuUgWzmf3Q5wSWhHw56Tj7hX3e/k58AWg1N3v6l32u+s5fcedd5j7GXx0b+NQ1aiq3qSq84ETgHOBy/dmX2b/sUSQwUTkIBH5iohMc6en4/ya/4e7yh3A/xORQ9zlhSKyuwvxDqr6T5wL4C+Av6rqYAngNaBHRL4qItki4hWRQ/ewqer1wBUico2I5ItIsYh8G+f2zk27rHuTiARE5GSci83vVDWBcxG8VUQq3HOqFpGzhjlmPk7y6BSREpxf6MmacOo7/oVbYngYuNmNdwbOL/Hf7G79XQRw7sm3ADG3dPDeUWw3klyci3oLgIh8nHcT/1DycSrDu0SkGqdieK+IyOkicpjblLUbJ1Em9nZ/Zv+wRJDZenB+tb8qIn04CWA1zq9gVPUPOBWnD4lIt7vsnFHs9wHgPe5f3H3FcS7IC3Baxwwmi8LRBquqLwJnAR8EtuPcZjkSOElVNySt2ohz62IbTguXz7ilHXBaBG0E/uGe01M4v/iH8mOcCtNWnM/nL7ss/wlOCahDRP53N9t/EadeYjNOC6EHgHtGca49wDU4iaQD5zbb4yNtN4r9vgX8CKd01QQchtNKaDg3AQuBLuBPwCP7EMIUnNZh3Tgtop7DuV1k0miwdYIxk4KInAb8RlWnpTsWYyYKKxEYY0yGs0RgjDEZzm4NGWNMhrMSgTHGZLgJ8UBZWVmZzpw5M91hGGPMhLJ8+fJWVS0fab0JkQhmzpzJsmXL0h2GMcZMKCKydeS17NaQMcZkPEsExhiT4SwRGGNMhrNEYIwxGc4SgTHGZDhLBMYYk+EsERhjTIazRGCMMRnOEoExxmQ4SwTGGJPhLBEYY0yGs0RgjDEZzhKBMcZkOEsExhiT4SwRGGNMhrNEYIwxGc4SgTHGZDhLBMYYk+EsERhjTIazRGCMMRnOEoExxmQ4SwTGGJPhLBEYY0yGs0RgjDEZLmWJQESCIvKaiLwhImtE5CZ3/iwReVVENorIb0UkkKoYjDHGjCyVJYIwcIaqHgEsAM4WkeOA7wO3quoBQAdwVQpjMMYYM4KUJQJ19LqTfvelwBnA79359wLnpyoGY4wxI0tpHYGIeEVkJdAMLAU2AZ2qGnNXqQeqh9j2ahFZJiLLWlpaUhmmMcZktJQmAlWNq+oCYBpwDHDQHmx7l6ouUtVF5eXlKYvRGGMy3Zi0GlLVTuAZ4HigSER87qJpQMNYxGCMMWb3UtlqqFxEitz32cBiYC1OQrjIXe0K4LFUxWCMMWZkvpFX2WtVwL0i4sVJOA+r6hMi8hbwkIh8G/gncHcKYzDGGDOClCUCVX0TOHI38zfj1BcYY4wZB+zJYmOMyXCWCIwxJsNZIjDGmAxnicAYYzKcJQJjjMlwlgiMMSbDWSIwxpgMZ4nAGGMynCUCY4zJcJYIjDEmw1kiMMaYDGeJwBhjMpwlAmOMyXCWCIwxJsNZIjDGmAxnicAYYzKcJQJjjMlwlgiMMSbDWSIwxpgMZ4nAGGMynCUCY4zJcJYIjDEmw6UsEYjIdBF5RkTeEpE1InKtO/9GEWkQkZXu632pisEYY8zIfCncdwz4iqquEJF8YLmILHWX3aqqP0zhsY0xxoxSyhKBqm4Htrvve0RkLVCdquMZY4zZO2NSRyAiM4EjgVfdWV8QkTdF5B4RKR5im6tFZJmILGtpaRmLMI0xJiOJqqb2ACJ5wHPAzar6iIhUAq2AAv8NVKnqJ4bbx6JFi3TZsmUpjXN/WlnbwZIVDdS19zO9JIcLF1azoGa3+c4YY1JGRJar6qKR1ktpiUBE/MAS4H5VfQRAVZtUNa6qCeDnwDGpjGGsrazt4Jal62nvi1BZGKS9L8ItS9ezsrYj3aEZY8xupbLVkAB3A2tV9Zak+VVJq10ArE5VDOmwZEUD+UE/Bdl+PCIUZPvJD/pZsqIh3aEZY8xupbLV0InAx4BVIrLSnfc14BIRWYBza+gd4NMpjGHM1bX3U1kY3GleXtBHXXt/miIyxpjhDZsIRCQInAucDEwFBnB+wf9JVdcMt62qvgjIbhb9ee9CnRiml+TQ3hehINu/Y15vKMb0kpw0RmWMMUMb8taQiNwEvAQcj9Pa507gYZznA74nIktF5PAxiXICuXBhNT2hKN0DURKqdA9E6QlFuXChtZw1xoxPw5UIXlPVG4ZYdouIVAA1KYhpQltQU8x1i+ft1GroUyfPslZDxphxa8hEoKp/2nWeiHiAPFXtVtVmoDmVwU1UC2qK7cJvjJkwRmw1JCIPiEiBiOTi1A+8JSL/kfrQjDHGjIXRNB+dr6rdwPnAk8AsnNZAxhhjJoHRJAK/+2DY+cDjqhrFafppjDFmEhhNIrgTp71/LvC8iMwAulMZlDHGmLEzXPPR40VEVPV/VbVaVd+nTsdEtcDpYxeiMcaYVBquRHA5zhgCD4nIlSIyBUAdsbEJzxhjTKoN13z0swAichBwDvArESkEngH+ArykqvExidIYY0zKjFhHoKpvq+qtqno2cAbwInAx744tYIwxZgIbVadzIrIQOAmntdBLqvrFlEZljDFmzIzmgbJvAvcCpUAZ8EsR+a9UB2aMMWZsjKZEcBlwhKqGAETke8BK4NupDMwYY8zYGM1zBNuA5A72swAbZcUYYyaJIUsEIvJTnDqBLmCNiCx1pxcDr41NeMYYY1JtuFtDg6PFLwf+kDT/2ZRFY4wxZswN9xzBvWMZiDHGmPQYTauhc0XknyLSLiLdItIjItbXkDHGTBKjaTX0Y+CDwCq3ryFjjDGTyGhaDdUBqy0JGGPM5DSaEsF/An8WkeeA8OBMVb0lZVEZY4wZM6NJBDcDvTjPEgRSG44xxpixNppEMFVVD93THYvIdOA+oBLn+YO7VPUnIlIC/BaYiTPgzYdUtWNP92+MMWb/GE0dwZ9F5L17se8Y8BVVnQ8cB3xeROYD1wNPq+pc4Gl32hhjTJqMJhF8FviLiAzsSfNRVd2uqivc9z3AWqAaOA+nEzvcv+fvXejGGGP2hxFvDalq/r4eRERmAkfijGFQqarb3UWNOLeOdrfN1cDVADU1NfsagjHGmCEMN2bxzOE2FMe0kQ4gInnAEuBLqrpTScJtkrrbZqmqepeqLlLVReXl5SMdxhhjzF4arkTwAxHxAI/h9DfUgtNy6ACcwevPBG4A6ofagYj4cZLA/ar6iDu7SUSqVHW7iFQBzft+GsYYY/bWcH0NXexW7l4GfAKoAvpx7vX/Gbh5cIyC3RERAe4G1u7yzMHjwBXA99y/j+3rSRhjjNl7w9YRqOpbwNf3ct8nAh8DVonISnfe13ASwMMichWwFfjQXu7fGGPMfjCqMYv3hqq+CMgQi89M1XGNMcbsmdE0HzXGGDOJWSIwxpgMN5rxCJ4ezTxjjDET03BjFgeBHKBMRIp5935/Ac4TwsaYEays7WDJigbq2vuZXpLDhQurWVBTnO6wjNnJcJXFnwa+BEwFViTN7wZuS2VQxuyJ8XqxXVnbwS1L15Mf9FNZGKS9L8ItS9dz3eJ54yI+YwYNeWtIVX+iqrOAf1fVWUmvI1TVEoEZFwYvtu19kZ0utitr09+h7ZIVDeQH/RRk+/GIUJDtJz/oZ8mKhnSHZsxORtN8tEtELt91pqrel4J4jNkjyRdbYMffJSsa0v6ru669n8rC4E7z8oI+6tr70xSRMbs3mkRwdNL7IM4zACtwxhowJuUi4SjrV9Wzevk7bKtto6u9j672Xjrb+mhudrqv8vi8eHxexO9FfF7q87O5e0Md0+eUM312BTVzKsjND45wpP1rekkO7X2RHckJoDcUY3pJzpjGYcxIRtP76BeTp0WkCHgoZRGZjBePJ1i7spZlL6xjzbJ3WLeqnmgkBkBpRQFFpXkUluRSPaOM/qZe2vujJKJx/ECeTyAWR7v6efTXLxGLxgEQEQ5eUMPxZ87nmNMOYvrscpxeUFLnwoXV3LJ0PeCUBHpDMXpCUT518qyUHteYPSV7Oia925HcalU9MDUh/atFixbpsmXLxupwJg0ikRgrX9nIK0+/xavPrKWjtReP18PcQ6ZyyFGzOGzRTOYfOYOC4twd26ys7eDGx9dQ3zlA0O9FgIFInGkl2dz4gUM4bGoBjfUd1G1u5sVXNvHK39fSv82pO8gvyeXoE+fygcuO56AjUtfN+XityDaZQUSWq+qiEdcbKRGIyB95t6toL3Aw8LCqjtnIYpYIJq+ujj4euuMZ/rpkGQN9YbJzAhx9yoEc/575ZM+ZwhNvt1LX3k9Vrp8DAwkYCNHW3kdbey9vbGoh1BtCUeIICfHg8XrIyQnwnoU1zJ1Tydw5lfR4fdz23Gbyg34CA2Fa326gZ3MTUtdCqDfMYUfP4qKrTuHoUw5MeSnBmLG0PxPBqUmTMWCrqg7Z9XQqWCKYfAb6wvzh3hf5/T0vEBqIUHLETOKzpzB7wQwuPqaGREL5/u9XkGjtZKCpnZ7mLnD/rRYWZFNakseWnggh8RBX8GgCH+BJKMTj5MaiDAxEnIOJkFWYS/msKZQfMJXswly2tvbR2tFH4dYmIis2EenqZ+bcSi7+1Kmc9v4j8HjsoXsz8e23RODubApwDE7J4HVVbdz3EEfPEsHk8uoza7ntW4/R2tjF/BPmsv3AGoqrS8gL+ujqCdG4ro7eTduI9g4AkFtWSPG0MqQ4n7yiAB84vJKnVtWzdHU9koiBKgnxoAh+n5fsQIDy4nwuPXoWVQE/tz6yknB7FwPNnQBEc7LpLyokUlbEiQdX4Reh9Y13yF1bS+OWFo484QD+838+TFFpXjo/JmP22f4sEXwS+Cbwd5yni08FvqWq9+yPQEfDEsHkEAlHueM7T/Dkw68xc24lX7jxfB6q7aW9L0IgFmX7mq00r6snHo2RKMjlgCNmkVWWR0d3Fy0tLXR2de20vwQe4h4v4DwQI5oAVTwkdqwjHi9xbxYRTxZ4c8nqGiDY0UlgIISK0F1aQk9lOf4sHwumF3F5kZc7v/sE+YU5fPWHH+Gwo61i10xc+zMRrANOUNU2d7oUeNkqi82eaKxv5+Zr72fjW9u46KpTuPyaxfgDPi6/82VC67bStK4OEMpmTaHs4Gn8s64RX7iLUMgpFag/i3BWkLhfwKvEPTHEE0UkilNQ9YB6UPcvMT8S9eANK/5YGG88jABRXw6hQBEa81HY2kZeRydxn4+OKZX0FReSm+WlLBwm9/nVaFc/Z115Mtf8+1kZfavIKrwnrtEmgtE8R9AG9CRN97jzjBmV+i0tfPmS29GEcsP/fYzjzpgPQF19O41PLyPcF2LKwTOYevhM2nu6+Ofbq4nFYsQCuQzklqLZSsLXg3icEoGqgPpIeL2oL4giiIIkFFSRhCKBHiQL4rkQSwRJxIrx9UF2uJv8/m3EPQG6p5TSU1pCybbtlNU3kNfRQcuM6dT5/HhOPIyaNVv46y+fZ9vGJr57++V4vZmXDKybjMwwmkSwEXhVRB7D+el1HvCmiFwHsMswlMbsJByK8p0vP4BHhFse/hzVM8sA2PxOC1/5+sP4BYpPPZL8sjzWbFhPa2srgexcCqdNoyXSTkLbQCCRCBIP+tGsOAQiEOjfadijfynXRvzQl4On34MnEcUb6EADHnoiJXj7vWSHO8jv307YX0Dj7BnkdXZT3LCdKRs30zp7BolgkOajD6K4KI9VL6zjtpse5ZqbLsi4VkXj+clts/+MJhFscl+DBscYzt//4ZjJ5o7v/JEt6xr51p1X7kgC6zc18e9ffxifz8P//eAynl5Xxx2PPU88kcBbVEkoL0ZH5B1QL3EKiOfF0fxu8CYg4seHB5/68ftj+IJhJ1HEvGjcSyLuIZEQol6IFnWRKHaW0ZuLt1fxZbWifj894VIC/WGywx144yF6C6cSCc6kYkstFRvfoWXODBL5ubBgNqF4nL/87nUKS3K58ktnpfcDHWPWTUZmGM2TxTeNRSBm8nnq0RX85Xev8+GrT+PoU5wqpa11bXz5/z2EP+Bn9uKj+OIDL9GwdRO+YA6eokq6pR6NR4knCtDiGIl85y6kJ5RDfkkvgcpWxOP8/k9EvXhCAYgLUU8CyYri8UXx+J2nieNhPwOtxQyEAmhBD/FCiLcV4uuP4M9uJB7IprenityBJgp7a+nJraZpzkwqNm+lYuMWeubPQ3MDhBfM4YKDK/jtnc8ypbqEsy8+evcnPAlZNxmZYcREICLzgH8HZiavr6pnpC4sM9EN9IW5+4dPMn/hDD72xfcAkEgoP/jJX0go5BxzCG3hCNtqNxP359IeqCBAA0KcaLQKrW6CQBg6SggGlLxZWwFhoGEK+d4opfmdVJQ3kT/N6WtIFcKhIKGBHAYGcmhsL6XL6yGvupmcqI/+hin0RwTKOom1lxLvKMIfaCGR56HbW0N+XwO5A4105c2g6YBZVK3fRHbdNkL5c1g0o5jPX3oGWzc08eAdf2fxB4/KmPoC6yYjM4zm1tDvgDuAXwDx1IZjJotHfvUinW293PB/H8Prc5p4Pv7kSla91cCBpx2OtziXN1euQMVDX3YF/mATSIRYtAqd2gT+CNI4lYKaRrLK2ol35TI90Ef1Ea/h88eIxz20tZTT31xCLO4lig8JRAlmD1BY1EFVdT2d7SWs23AQ4bwB8mbWE+gooKupCC1pQz3FRNvKCWS1oMEAfYlK8vvqyQm10J9dSXd5GUVNzZQmonzm1Dl4vR7Ov+JEvvOlB3j9+XUcd/rBaf6Ex8aCmmKuWzxvp1ZDnzp5ltUPTDKjSQQxVb095ZGYSWFlbQcPvbCJN+98luJDpxMqdqqS2tp7ufOe51h05ExaS4vp3V7HQH8f0YJpaKATr6+fSKQCndoMgQi+zlKKDt2A+GLotjIWzltDMHuAundm07ytimOmreHcA16nOO/dZwsGIlm09xTT1lvMsrcOpnjGNo499mVamip5c8PBZM+ppTgQpWNrJVrc4XRN0VGEz99BNBggHC0iGOkk4s+nu7yUvLZ2Yhvr+PFTZUwvyeH8w6sorSzgiQdeyZhEAE4ysAv/5DZk+VZESkSkBPijiHxORKoG57nzhyUi94hIs4isTpp3o4g0iMhK9/W+/XQeZhwYbGq4fe02NBoje9HcHYPE/OP1zfQPRPjcJ0+npjSXuvptxPx5RPw5eP1dxGN5aJYHgiForCavqgUF2pcfwQFV9Xi9cV54+izeXnkkHzziKd674HlqW6u575mL+fnfLmPJK+/nH+uOoq2nmLlTNnPuIc/xwt/O4s0Viygta2HetK10rToYX+4AwQDQUQJFncQSRSTiWXh9nfQHy0iIl6xIF+rx0FNWwkBrF6VBD+19EX7yzCYOOmEuq17fwp521mjMeDZciWA5Tqu8wfZy/5G0TIHZI+z7VzhDWu46bsGtqvrDPYjRTBCDTQ37u/oAKJ1RRl9cWbKigdLtzWRn+5k1o4zF4Rh/+msEzS0irgN4JUEilg9F3RD34AkH8Rd30b91GgVZA1RM2c6aN45EQwG+/G93MrWkkV8/exGvrNt9pe3cqs1c+4G7OP+Yv/LQixeQlRXiwENWs2XjPKLdeQQrWxh482Aoboe8XhJ9uXj97SBKzJuNLxZydpSbDUC4q5+CSucXcW1MiIRjdLX3WRcUZtIYbqjKWao6e5dhKgdfIyUBVPV5oH2/RmvGtbr2fvKCPsKt3fiLcvAGfDuaGm7c3MwBsyrweARvPAxAmADq6UcVEvFsyOuFvjyyytsQgVBzOXPnryISDrB14wF87pxfUl7Yys+evHLIJACwYftsnll1Iqcc8g8Oql7PhrWHEo34mTV3HaGmcvz5fXgDMYgEIK+HRDwHEfB4Q0R92Xg1iiSizJlRCkB/Zy/gVJZ2+5zfTk3b0j8UpjH7y2haDX1wN7O7gFWq2rwXx/yCO/TlMuArqrrb/1EicjVwNUBNTer6izf7z2BTw3h/BF92FuA0NQz6PWys7yAWzOK9tz5HT3sLAOrxIhIDPCAC3hhEA3iL+tC4h3goSEFhF91dRah6qCpuoralmnUNB4wYy8oth3Lm4S8yb+pm3m6YR29PAfn53cT6nGaPvuwQ8UjAeThNnf8GIjESHue9X+ME3XOIhaM7zqWyLI8uoL83vD8/OmPSajRt4K7CaTF0mfv6OfBV4CUR+dgeHu92YA6wANgO/GioFVX1LlVdpKqLysvL9/AwZqysrO3gG4+u5sp7XqOlJ0RDRz8U5hBu66GrP0JDRz+N3SE0J5twVx89oRitIeduo8QiJBLZiCScPoMGciC3l0hbMeJNECjpYOumAyiraCa3oJs/vv5eZk+p5dNn/Rq/LzJkTD5vlEtOfoSO3gKWvnEqhcVtFJe2UV87k6zyNjTuIdJRADl90JeLx+v0Z+T35BDUMCDMqy5ja4PzGyWrIIfugSg9oSgLip3kUD6lMLUfrDFjaDSJwAccrKoXquqFwHycOoJjcRLCqKlqk6rGVTWBk1CO2dOAzfgxWDnc3hehsjCI1+MBAV9JHolIjPx4nCmFQaqLcohkZyGhMNleIebJQhG88ZBzSwjwePqhLw+CISLduSQifoKVLWzZNI9oxM+8g9ew9I3TePCF8zmk5m2uPffnlBe07hSP3xulorCFi094nKklzdz//IWEYgEOX/g64VAWtVtmE6xoJdxaggZD4FGkLx+PZwBVD5GoD19sgNz8fA6ZXkyROsNj9nn9lOQGuG7xPIJu6aC8qmhsP2xjUmg0zUenq2pT0nSzO69dnK4fR01EqlR1uzt5AbB6uPXN+Lb7fmhy8M8spx04PUd4qCdBZWGAcHY2fiDa0ALZecS8WQSiPQwkSkgkAnj9ncR7p0A5UNlIqKmMnOnb0aiPzRvnceD8NRx13Au8/sZRdPfn84kzH+SmS35AKBqgsaOC4rxOCnN6d8T24tqj6fYEOPOcP5Kb18uK144je+4WPP4YoZZSqGiEuBcd8CHBXkRzCSQiSHSAymmV9IZi5PT2Ec/yc9/nT8bnPgvx2Ko6SisLyAr6/+XzMGaiGk0ieFZEnsB5sAzgQndeLtA51EYi8iBwGlAmIvXADcBpIrIAp0TxDvDpvQ/dpNtQ/dA05udy4OHTuP9nT1PzubPpDMXInlJCtD4ez/w5AAAVtElEQVQPNteTdfBcBoLl5PfVkTvQQr+3En+wHr+njWjTFKhspLcnH62tJmd6A80DWbDuIObM3si0GVtpba7gV8v+jSmBLkpzuijO7aK+rYrO/gJ6I9mE8ZJT1cZRx71MZ0cxr756AuHiXrIKeujZPJ1IQTt44lA/jUDWdlCBSBk5/dvIysqitLKatsZ2WjZt57IPHbcjCbRs7+S1Z9/mwk+cko6P25iUGU0i+DzOxf9Ed/o+YIk6DalPH2ojVb1kN7Pv3uMIzbg1VD80NaW5XHTd2Vx/5S84uraJuqIiKvODbJ5TQ+Cfayms30bvnBmEYiVkh9uJhPOISSX+YCO+fj+x5kqoaKKvp4DIm/MpOHATbYVhmlcvpCKrj8qqbdQctAGA5v5stsfLCZb34/c1M/jYU29PPsuXH0O3X8masR1v3EP3ujmEc7pAFOpq8EsbInGydBYlnn66Y2Gmzp5PRWEOrNpAX36QSy8+dse5Pfnwa6jC+z9yLMZMJqPpdE6B37svY3YYrh+aI2qKOeqkuTz74Ct85scf5YXWEAPRGA3NlWTXN5LT1Ul7cQXxtj5y+xvpo4qYpwRfoB36c4k1l0N5C9GcXtq3VJFX2kOwqoV2gabWaUj9bIoD/ZTkd4NCS1s5oWiASNRPOOEhHIzhm9ZCVtxDf30V/T3ZaGE7JDx4tlXg8zQjnij+RDUF0QF62ho5/4RD+ebHFvOb3/6D599q4HOfPJ28XKdy+J31jTx+/yscfeqBVFbbU7ZmchnNCGU9vNvdewDwA32qWpDi2HawEcrGr5W1Hdzx3CberHe6ejh8WiGfOXUOC2qKad7WyTUX30ZxaR63/vZzBLMDLN/Sxn9993H661soPXQWmwJBtKMWbyJCKFBIJN+HN9AOCFEK0MIw5Dsdy/miWQSDMXzBCL7cfjy+obu+ivbkEOrJIRQRNMutyurJw9cleAmBBvDGyigL99Pb3cn7jjmIr116Jr9+4BUe+N2rLD59Ptdf9z58Xg9NDR185dI7APjRA5+xRGAmjP02Qpmq7hh3QJxROc4Djtu38Mxk0h+Jc2RN8Y5SQfIIVv/xPx/iG5/6FXd+5wmu/e8P4vV6qDnxEN565k3aVm9h2rzpbCycgb+/mexwF4EOP325lUhOFwFvJ9rlId5VTDwvQSyvj95EHPq90JuPN+HD5wEQEs5wxSSAhCTAFweJQSIbWvPxhhJ4tQ/wIPEKtM9LXqSVUCLG1y89k3OPPZhbblvKX55azXnvX8CXPrsYj0fobOvla5+4m3A4yg/uu9qSgJmURlNHsIN7m+hREbkBuD41IZmJZKQRrI46cR4fvvo0HrrzGQY8Hl4pK6FzIE507gyyvB5619cxs7qMtqopBDxlhFprye9pJBzKI5xdgWQN4PX14utT4j0B1JdDwidoQIn7Y8QD7pjFCS/EPZAQSHiQsBdPSPESRqTHKdPGi/D2Z5Eb7SYeHqC6opibP3EO0e4In/3yb9i0pYUrLz2BKy87ERGhdlMz3772ftqau/nOPVcxc96U9H3QxqTQnj5Z7AEWAaGURWQmlNGMYPXRL5xJV0cfTz78KpHKIvT0I8jJCxKbN5Oozw/1jeQ2dRApL6G7oIqAv5dAqJNgtJe4+IkECohlCwSieOP9+BIK7vNkzp1NQSSBUx54l6ofSeRR5Muh1OujpaWJeKyTGVUlXHbGiRx7wHR+fu/z/P25t6koz+fmb1zAScfPBeCZJ1byvzf8gaygn5vuuIL5R85I4adoTHqNpkTwgaT3MZxmn+elJBoz4YxmBCuvz8s1N13AkoZesv/xNv7H/0HsxEPwz6hAZ1cTLS/mGE+IFcs2M3V7C9HiQmJTpzGgESTcQzDcjYSVhHiIeoMkPF7UL6hPwJtAcQa0F3UaBOUH/HjCceL9IRKxbqJ00wgcPmcaV5+9iKyY8PSza7njR0+RUOXKS0/gkouOJRj0EwlHufO7T/Dn377GIUfN5PoffYSySnuK2Exuo6kj+PhYBGImpj0ZwSo6ZypaWkDw+VX4l66gv7qM7sNm4S/J58ffOJejvv4E2S1t+La3EujoIhDMIlSYT2/OFAqLfPT3dOFNhPFHI0gkzlDDyCcA9frwBHLw5xVz+KwpXH38bF5/bTO3fP9JWtp6yc72c/opB3HFpSdQVVmIqrLipQ384gd/Zsu6Ri666hSuuPa9+Pze1H14xowTo7k1NA34Ke8+R/ACcK2q1qcyMDMx7MkIVodPK+SVSJym04+keH09hevqqNrWSmh2Fc+tOJCcgmyaKMdTVkZWazvZHV3kNrWSB3j9PrIK8ogGcxnw+gh5vCT8gnqc58G8CpoQRJXynAAMhEl09hMMd7Ll7e185dHX8Xo9HLtoFp/75OmccOwBBIN+YtE4zzyxkt/f8zyb126nbEohN/7sco7NoIFnjBlN89GlwAPAr91ZHwUuU9XFKY5tB2s+OjmsrO3gqntfZyCaQFXxR2IUv11LzsYGAHzVpWwrLqBnSimJ3Cznlk80TkkkxOIpQTZtaKSpcciH2f+Fx+dl1sxyFsyvZt4BlRx39GyKCp1bVm3N3bzwl1X84Vcv0ry9k+lzKrjw4ydz+gcWEAjsURsKY8at/dZ8FChX1V8mTf9KRL6096GZTLWgppgZpbl0D0Tpi8TJK85h1iHHkhuOUPfyOkIbtlNRt5mKNzczUJTHwJRiZHoZ8dJCfAdX87XLTuZnT69n9ZY2YqEw8f4wWZpAAJ/fS07Qz4ePncFB04qYVl3C1ClFeDzODaR4LM6aFVt56Kk1LHthPQ3vOB3WHXrUTD77jX/jmFMPxOPJjAHpjdnVaBJBm4h8FHjQnb4EaEtdSGYyO2Rq4b9ULnd7PRx8njPQzN9e3kRBYztZtc0E365D3q5DvR6WP1/EWzVl5FUVc2RRDpHibJpjCaZU5BOKKdMKgpx7SAUHlucRGoiwfUsLy556i7rNzdRuauGd9dvp7Q4RyPJxxLFzeN+Hj+HI4w9g1oFV6foojBk3RpMIPoFTR3ArTmvslwGrQDZ7ZaTK5afWNtFbnEf24bOI9oVhezulPX2E6lrpf3UD/aokj4ZU6/5tBlbs5nj5hdlMn1PBSWcdxqKT5nHUSfMI5gRSeYrGTDjDJgIR8QIfVNV/G6N4zCQ3UuXyl98zl1uf2kBPKEpBXhaVC2fh8wqecIw5xdnEuvqJ9YWI9YaJ9A7Q1d7HeQumEsjyEwj48Gf5yAr6qawupmZOBYUluTgPxBtjhjKayuLXVDWtA8hYZXFmWVnbsVOiuHBhNUtWNPzrLaWBKCW5Af77/EPTGK0x49f+rCx+SURuA34L9A3OVNXdlcSN2WcLaop32/x0tM8rGGP2zGgSwQL377eS5ilwxv4Px5jd25PnFYwxe2Y0TxYPOfiMMWNpqJKCMWbfjObJ4iycEcpmJq+vqt8aahtjjDETx2huDT0GdAHLgXBqwzHGGDPWRpMIpqnq2SmPxBhjTFqMJhG8LCKHqeqqlEdjjNlt81mrGzGpNGTnKiKyWkTeBE4CVojIOhF5U0RWufONMfvZytoOblm6nva+CJWFQdr7ItyydD0razvSHZqZxIYrEVTzbtNRY8wYGGnoT2NSYbhEsEVVt+7tjkXkHuBcoFlVD3XnleA8mDYTZ6SzD6mq/dQxxjWaoT+N2d+GSwQVInLdUAtV9ZYR9v0r4DbgvqR51wNPq+r3ROR6d/qro4zVmElvNEN/GrO/DdcBuxfIA/KHeA1LVZ8H2neZfR5wr/v+XuD8PYzXmEntwoXV9ISidA9ESajSPRClJxTlwoXV6Q7NTGLDlQi2p+ChsUpV3e6+bwQqh1pRRK4GrgaoqanZz2EYMz5ZVxomHYZLBCntu1dVVUSG7PpUVe8C7gKn99FUxmLGn0xuQmldaZixNtytoTNTcLwmEakCcP82j7C+yUDWhNKYsTVkIlDVXe/v7w+PA1e476/A6b7CmJ0kN6H0iFCQ7Sc/6GfJioZ0h2bMpJSy0bpF5EHgFeBAEakXkauA7wGLRWQD8B532pid1LX3kxfc+a6lNaE0JnVG08XEXlHVS4ZYlIpbTmYSsSaUxoytlJUIjNlb1oTSmLFlicCMO4NNKEtyAzR1hSjJDXDd4nnWksaYFEnZrSFj9oU1oTRm7FiJwBhjMpwlAmOMyXCWCIwxJsNZIjDGmAxnicAYYzKcJQJjjMlwlgiMMSbDWSIwxpgMZ4nAGGMynCUCY4zJcJYIjDEmw1kiMMaYDGeJwBhjMpwlAmOMyXCWCIwxJsNZIjDGmAxnicAYYzKcJQJjjMlwlgiMMSbDpWXMYhF5B+gB4kBMVRelIw5jjDHpHbz+dFVtTePxjTHGYLeGjDEm46UrESjwNxFZLiJX724FEblaRJaJyLKWlpYxDs8YYzJHuhLBSaq6EDgH+LyInLLrCqp6l6ouUtVF5eXlYx+hMcZkiLQkAlVtcP82A38AjklHHMYYY9JQWSwiuYBHVXvc9+8FvjXWcRiTSVbWdrBkRQN17f1ML8nhwoXVLKgpTndYZpxIR4mgEnhRRN4AXgP+pKp/SUMcxmSElbUd3LJ0Pe19ESoLg7T3Rbhl6XpW1nakOzQzTox5iUBVNwNHjPVxjclUS1Y0kB/0U5DtB9jxd8mKBisVGMCajxoz6dW195MX3Pk3X17QR117f5oiMuONJQJjJrnpJTn0hmI7zesNxZhekpOmiMx4Y4nAmEnuwoXV9ISidA9ESajSPRClJxTlwoXV6Q7NjBOWCIyZ5BbUFHPd4nmU5AZo6gpRkhvgusXzrH7A7JDOvoaMMWNkQU2xXfjNkKxEYIwxGc4SgTHGZDhLBMYYk+EsERhjTIazRGCMMRnOEoExxmQ4SwTGGJPhLBEYY0yGs0RgjDEZzhKBMcZkOEsExhiT4SwRGGNMhrNEYIwxGc4SgTHGZDhLBMYYk+EsERhjTIazRGCMMRnOEoExxmS4tCQCETlbRNaJyEYRuT4dMRhjjHGMeSIQES/wf8A5wHzgEhGZP9ZxGGOMcaSjRHAMsFFVN6tqBHgIOC8NcRhjjAF8aThmNVCXNF0PHLvrSiJyNXC1OxkWkdVjEFuqlAGt6Q5iH9k5pN9Ejx8m/jlMtPhnjGaldCSCUVHVu4C7AERkmaouSnNIe22ixw92DuPBRI8fJv45TPT4h5KOW0MNwPSk6WnuPGOMMWmQjkTwOjBXRGaJSAD4CPB4GuIwxhhDGm4NqWpMRL4A/BXwAveo6poRNrsr9ZGl1ESPH+wcxoOJHj9M/HOY6PHvlqhqumMwxhiTRvZksTHGZDhLBMYYk+HGdSKYDF1RiMg7IrJKRFaKyLJ0xzMaInKPiDQnP7shIiUislRENrh/i9MZ43CGiP9GEWlwv4eVIvK+dMY4HBGZLiLPiMhbIrJGRK5150+k72Coc5hI30NQRF4TkTfcc7jJnT9LRF51r0u/dRu9TGjjto7A7YpiPbAY56Gz14FLVPWttAa2h0TkHWCRqk6Yh1BE5BSgF7hPVQ915/0P0K6q33OTcrGqfjWdcQ5liPhvBHpV9YfpjG00RKQKqFLVFSKSDywHzgeuZOJ8B0Odw4eYON+DALmq2isifuBF4FrgOuARVX1IRO4A3lDV29MZ674azyUC64oiTVT1eaB9l9nnAfe67+/F+U89Lg0R/4ShqttVdYX7vgdYi/NE/kT6DoY6hwlDHb3upN99KXAG8Ht3/rj+HkZrPCeC3XVFMaH+IbkU+JuILHe7zZioKlV1u/u+EahMZzB76Qsi8qZ762jc3lZJJiIzgSOBV5mg38Eu5wAT6HsQEa+IrASagaXAJqBTVWPuKhP1urST8ZwIJouTVHUhTm+rn3dvW0xo6txPHJ/3FId2OzAHWABsB36U3nBGJiJ5wBLgS6ranbxsonwHuzmHCfU9qGpcVRfg9IBwDHBQmkNKifGcCCZFVxSq2uD+bQb+gPOPaSJqcu/7Dt7/bU5zPHtEVZvc/9QJ4OeM8+/BvSe9BLhfVR9xZ0+o72B35zDRvodBqtoJPAMcDxSJyODDuBPyurSr8ZwIJnxXFCKS61aUISK5wHuBidqL6uPAFe77K4DH0hjLHhu8gLouYBx/D24l5d3AWlW9JWnRhPkOhjqHCfY9lItIkfs+G6fhylqchHCRu9q4/h5Ga9y2GgJwm5b9mHe7org5zSHtERGZjVMKAKc7jwcmwjmIyIPAaThd7jYBNwCPAg8DNcBW4EOqOi4rZIeI/zSc2xEKvAN8Oul++7giIicBLwCrgIQ7+2s499gnyncw1DlcwsT5Hg7HqQz24vxoflhVv+X+v34IKAH+CXxUVcPpi3TfjetEYIwxJvXG860hY4wxY8ASgTHGZDhLBMYYk+EsERhjTIazRGCMMRnOEoGZ8ESkd+S1dqx7moickMp4Rjj+l0Tk8v2wn4dEZO7+iMkYSwQm05wGpCURuE+jfgJ4YD/s7nbgP/fDfoyxRGAmJxH5gNtn/D9F5CkRqXQ7P/sM8GW3L/yT3adHl4jI6+7rRHf7G91O0Z4Vkc0ick3Svi93O017Q0R+LSL5IrLF7VIBESlInk5yBrBisMMyd9+3isgyEVkrIkeLyCPueAPfdtfJFZE/ucdaLSIfdvf1AvCepK4OjNlr9o/ITFYvAsepqorIJ4H/VNWvuP3H7+gPX0QeAG5V1RdFpAb4K3Cwu4+DgNOBfGCdiNwOzAP+CzhBVVtFpERVe0TkWeD9OE9gfwSnv/roLjGdiNMvf7KIqi4SZ+CWx4CjcLrQ3iQit+KUYLap6vvdeAsBVDUhIhuBI3azT2P2iCUCM1lNA37r9m0TALYMsd57gPlO1zgAFLg9ZgL8ye06ICwizTjdPp8B/G5woKGkLh5+gXOr5lHg48CndnOsKpy+apIN9p+1Clgz2N2CiGzG6XRxFfAjEfk+8ISqvpC0bTMwFUsEZh/ZrSEzWf0UuE1VDwM+DQSHWM+DU3JY4L6qkwYjSe4/Js4wP5xU9SVgpoicBnhVdXedqQ3sJo7BYyR2OV4C8KnqemAhTkL4toh8M2mdoLtPY/aJJQIzWRXybvfAVyTN78G51TPob8AXBydEZMEI+/07cLGIlLrrlyQtuw+nIviXQ2y7FjhgxMiTiMhUoF9VfwP8ACcpDJrHOO6900wclgjMZJAjIvVJr+uAG4HfichyIHm86D8CFwxWFgPXAIvcyt+3cCqTh6Sqa4CbgedE5A0guZvo+4Fi4MEhNn8S2NOBiQ4DXnNHyboBGKxErgQGVLVxD/dnzL+w3keN2U9E5CLgPFX92DDr/AGn4nrDPh7ry0C3qt69L/sxBqyy2Jj9QkR+ijMc6ftGWPV6nErjfUoEQCfw633chzGAlQiMMSbjWR2BMcZkOEsExhiT4SwRGGNMhrNEYIwxGc4SgTHGZLj/D0R6rOLAyNjYAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create a 3D grid to build a contour plots.\n", "\n", @@ -377,22 +370,9 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best epsilon:\n", - "8.986095083415364e-05\n", - "\n", - "\n", - "Best F1 score:\n", - "0.8\n" - ] - } - ], + "outputs": [], "source": [ "# Extract the information about which example is anomaly and which is not.\n", "num_examples = data.shape[0]\n", @@ -426,22 +406,9 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(15, 5))\n", @@ -482,32 +449,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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bNy4kba2Nm644YaM+/VNBEmTJ0/m97//fdbnj8ViA280BCwRGGPGjueeg899Ds45x/187rlDOtxf/vIXwuEwl1xyCeAmqrnrrru49957+eEPf8hVV13Vs+0HP/hBVq5cyXXXXddzR/LHP/7xXsfbsmULxx57LADxeJxrr72WE044geOOO47//M//BNwdx6eddhqLFi1izpw5tLe384EPfIDjjz+eY489lt/85jeH9Dv1x24oM8aMDc89BzfdBFVVMGUK7N3rXn/jG3Diwc2Iu379et7+9rf3WlZZWcn06dPTflv/1re+xd13383atWszHvsnP/kJVVVVPP/883R1dXHqqafyvve9D4A1a9awbt06Zs6cybJly5g8eTKPPPII4MYuGmpWIjDGjA0/+5lLAtXV4HnuZ1WVWz4CPfbYYyxdupR58+Zx0kknsW/fPjZt2gTAiSeeyMyZboykuXPnsmLFCr761a/y1FNPUVVVlemwB8USgTFmbNi8GSorey+rrHTLD9KcOXNYvXp1r2UtLS1s3bqV6urqXvMXRyKRQR1bVfnBD37A2rVrWbt2LZs3b+4pESQHpgOYNWsWa9asYe7cudx444184xvfOOjfJx1LBMaYsWHmTGhp6b2spcUtP0jvec976OjoYOnSpYCr17/mmmu4+OKLOeKII1i7di2JRIJt27bxXEp7RCgUIhqNZjz2+9//fpYsWdKz3caNG2lvb3/Tdjt27KC0tJRPfOITXHvttaxZs+agf590rI3AGDM2XHSRaxMAVxJoaYHmZrjmmoM+pIjwwAMP8NnPfpZbb72VRCLBOeecw+23305RUREzZ85kzpw5HH300cyfP79nv8svv5zjjjuO+fPnc//99/d77MWLF7Nlyxbmz5+PqjJhwgQefPDBN2330ksvce211+J5HqFQiCVLlhz075P297RhqI0xI9Vgh6Hmuedcm8Dmza4kcNFFB91QPNrYMNTGGAPuol8gF/6hZG0ExhhT4CwRGGNGtNFQfZ1vh/oeWSIwxoxY4XCYffv2WTLIQFXZt28f4XD4oI9hbQTGmBFr6tSp1NfXs2fPnnyHMqKFw2GmTp160PtbIjDGjFihUKjnDluTO1Y1ZIwxBc4SgTHGFDhLBMYYU+AsERhjTIGzRGCMMQXOEoExxhQ4SwTGGFPgLBEYY0yBs0RgjDEFzhKBMcYU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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Find indices of data examples with probabilities less than the best epsilon.\n", "outliers_indices = np.where(probabilities < epsilon)[0]\n",