diff --git a/brainlit/feature_extraction/__init__.py b/brainlit/feature_extraction/__init__.py index 29f5566cd..6af30c587 100644 --- a/brainlit/feature_extraction/__init__.py +++ b/brainlit/feature_extraction/__init__.py @@ -1,2 +1 @@ -from brainlit.feature_extraction.linear_features import * from brainlit.feature_extraction.neighborhood import * diff --git a/brainlit/feature_extraction/linear_features.py b/brainlit/feature_extraction/linear_features.py deleted file mode 100644 index 93f9b36ed..000000000 --- a/brainlit/feature_extraction/linear_features.py +++ /dev/null @@ -1,151 +0,0 @@ -import numpy as np -import brainlit -from brainlit.preprocessing import preprocess, image_process -from scipy import ndimage as ndi -from pathlib import Path -import pandas as pd -from itertools import product - -from .base import BaseFeatures - - -class LinearFeatures(BaseFeatures): - """ - Computes features based off linear filters. - """ - - def __init__(self, url, size=[1, 1, 1], offset=[15, 15, 15], segment_url=None): - super().__init__(url=url, size=size, offset=offset, segment_url=segment_url) - self.filters = [] - - def add_filter( - self, - name="gaussian", - sigma=[1, 1, 0.3], - mode="reflect", - cval=0, - truncate=4, - phi=[0, 0], - frequency=1, - offset=0, - ): - """ - Adds filter to class for feature computation - - Parameters - ---------- - name : str - Name of filter to add. Currently supports `gaussian`, `gaussian gradient`, - `gaussian laplace`, and `gabor`. - - sigma : scalar or sequence of scalars - Standard deviation for Gaussian kernel. The standard - deviations of the Gaussian filter are given for each axis as a - sequence, or as a single number, in which case it is equal for - all axes. - - mode : {‘reflect’, ‘constant’, ‘nearest’, ‘mirror’, ‘wrap’}, optional - The mode parameter determines how the input array is extended beyond its boundaries. - Default is ‘reflect’. - - cval : scalar, optional - Value to fill past edges of input if mode is ‘constant’. Default is 0.0. - - truncate : float - Truncate the filter at this many standard deviations. - Default is 4.0. - - phi : scalar or sequence of scalars - Angles specifying orientation of the periodic complex - exponential. If the input is n-dimensional, then phi - is a sequence of length n-1. Convention follows - https://en.wikipedia.org/wiki/N-sphere#Spherical_coordinates. - - frequency : scalar - Frequency of the complex exponential. Units are revolutions/voxels. - - offset : scalar - Phase shift of the complex exponential. Units are radians. - """ - if name == "gaussian": - self.filters.append( - (name, {"sigma": sigma, "mode": mode, "cval": 0, "truncate": truncate}) - ) - elif name == "gaussian gradient": - self.filters.append( - (name, {"sigma": sigma, "mode": mode, "cval": 0, "truncate": truncate}) - ) - elif name == "gaussian laplace": - self.filters.append( - (name, {"sigma": sigma, "mode": mode, "cval": 0, "truncate": truncate}) - ) - elif name == "gabor": - self.filters.append( - ( - name, - { - "sigma": sigma, - "phi": phi, - "frequency": frequency, - "offset": offset, - "cval": 0, - "truncate": truncate, - }, - ) - ) - else: - raise ValueError("Invalid filter name") - - def _convert_to_features(self, img, include_neighborhood): - """ - Computes features from image data by applying linear filters. - - Parameters - ---------- - img : ndarray - Image data. - - include_neighborhood : boolean - If True, the neighborhood itself is also included with the - feature responses. - - Returns - ------- - features : ndarray - Feature data generated by applying linear filters. - """ - voxel = (np.subtract(img.shape, 1) / 2).astype(int) - - if include_neighborhood: - filter_response = dict(enumerate(img.flatten())) - filter_count = len(img.flatten()) - else: - filter_response = {} - filter_count = 0 - - for filter in self.filters: - parameters = filter[1] - parameters["input"] = img - if filter[0] == "gaussian": - g_temp = ndi.gaussian_filter(**parameters) - filter_response[filter_count] = float( - g_temp[[voxel[0]], [voxel[1]], [voxel[2]]] - ) - elif filter[0] == "gaussian gradient": - gg_temp = ndi.gaussian_gradient_magnitude(**parameters) - filter_response[filter_count] = float( - gg_temp[[voxel[0]], [voxel[1]], [voxel[2]]] - ) - elif filter[0] == "gaussian laplace": - gl_temp = ndi.gaussian_laplace(**parameters) - filter_response[filter_count] = float( - gl_temp[[voxel[0]], [voxel[1]], [voxel[2]]] - ) - elif filter[0] == "gabor": - gb_temp = image_process.gabor_filter(**parameters) - gb_temp = gb_temp[0] - filter_response[filter_count] = float( - gb_temp[[voxel[0]], [voxel[1]], [voxel[2]]] - ) - filter_count += 1 - return filter_response diff --git a/docs/notebooks/pipelines/df.pkl b/docs/notebooks/pipelines/df.pkl index 00c8e3a04..b094d88ab 100644 Binary files a/docs/notebooks/pipelines/df.pkl and b/docs/notebooks/pipelines/df.pkl differ diff --git a/docs/notebooks/pipelines/logreg.png b/docs/notebooks/pipelines/logreg.png new file mode 100644 index 000000000..bf28de12d Binary files /dev/null and b/docs/notebooks/pipelines/logreg.png differ diff --git a/docs/notebooks/pipelines/mlp.png b/docs/notebooks/pipelines/mlp.png new file mode 100644 index 000000000..b83ba3cc7 Binary files /dev/null and b/docs/notebooks/pipelines/mlp.png differ diff --git a/docs/notebooks/pipelines/tubes.ipynb b/docs/notebooks/pipelines/tubes.ipynb index b7f79c07c..c582e81b1 100644 --- a/docs/notebooks/pipelines/tubes.ipynb +++ b/docs/notebooks/pipelines/tubes.ipynb @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "tags": [] }, @@ -51,20 +51,17 @@ { "output_type": "stream", "name": "stderr", - "text": "Downloading: 100%|██████████| 1/1 [00:00<00:00, 1.96it/s]\n 0%| | 0/1650 [00:01\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpull_bounds_img\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbbox\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# get data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mdata_off\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpull_bounds_img\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbbox\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m50\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m50\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m50\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# get (50,50,50)-shifted data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0marrseg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mseg_id\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflatten\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 25\u001b[0m \u001b[0marrseg\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mseg_id\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mind\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata_off\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflatten\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0marr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconcatenate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0marrseg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: setting an array element with a sequence." + "\u001b[0;31mIndexError\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 13\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtqdm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvertices\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0mv0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mvertices\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mscale\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# point 0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 15\u001b[0;31m \u001b[0mv1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mvertices\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mscale\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# point 1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 16\u001b[0m \u001b[0mcoords\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdraw\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mline_nd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# coords of line between points\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0minds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msample\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcoords\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# get X random points (here, 2)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mIndexError\u001b[0m: index 1650 is out of bounds for axis 0 with size 1650" ] } ], @@ -81,7 +78,7 @@ "sess.cv.progress = False # don't print download\n", "for seg_id in [2]: # list of segments\n", " vertices = sess.cv_segments.skeleton.get(seg_id).vertices\n", - " for i in tqdm(range(len(vertices))):\n", + " for i in tqdm(range(len(vertices)-1)):\n", " v0 = (vertices[i]/scale).astype(int) # point 0\n", " v1 = (vertices[i+1]/scale).astype(int) # point 1\n", " coords = np.array(draw.line_nd(v0, v1)) # coords of line between points\n", @@ -99,21 +96,19 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 43, "metadata": {}, - "outputs": [ - { - "output_type": "error", - "ename": "NameError", - "evalue": "name 'df' is not defined", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\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 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m_pickle\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpkl\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mpkl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdump\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"df.pkl\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"wb\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;31mNameError\u001b[0m: name 'df' is not defined" - ] - } - ], + "outputs": [], + "source": [ + "header = [\"label\", \"seg id\", \"vert id\", \"interp id\", \"data\"]\n", + "df = pd.DataFrame(arr, columns=header)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], "source": [ "import _pickle as pkl\n", "pkl.dump(df, open(\"df.pkl\", \"wb\"))" @@ -121,21 +116,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 44, "metadata": {}, - "outputs": [ - { - "output_type": "error", - "ename": "NameError", - "evalue": "name 'df' is not defined", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mX\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqueeze\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"data\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"label\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'df' is not defined" - ] - } - ], + "outputs": [], "source": [ "X = np.squeeze(np.array([i for i in df[\"data\"]]))\n", "y = df[\"label\"]" @@ -143,23 +126,11 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 41, "metadata": { "tags": [] }, - "outputs": [ - { - "output_type": "error", - "ename": "NameError", - "evalue": "name 'X' is not defined", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\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 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mneural_network\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mMLPClassifier\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodel_selection\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtrain_test_split\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_test\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain_test_split\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstratify\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mclf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mMLPClassifier\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax_iter\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m300\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_score\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'X' is not defined" - ] - } - ], + "outputs": [], "source": [ "from sklearn.neural_network import MLPClassifier\n", "from sklearn.model_selection import train_test_split\n", @@ -170,19 +141,19 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 42, "metadata": {}, "outputs": [ { - "output_type": "error", - "ename": "NameError", - "evalue": "name 'y_test' is not defined", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\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 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmetrics\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mroc_curve\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mauc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mfpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mroc_curve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_score\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mroc_auc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mauc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'y_test' is not defined" - ] + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2020-08-14T15:29:49.490357\n image/svg+xml\n \n \n Matplotlib v3.3.0, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAEWCAYAAACwtjr+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAABLA0lEQVR4nO3dd3gU1dfA8e9JAgm9g0jvvWlEKVKlCCgqKgqiqD+RroDYQEVARUUUpFqxd1FeCypNuvQOIgJC6B1CTTnvH3cCSwxJkGw25Xyeh4ednTszZyczc+bO3LkjqooxxhjjT0GBDsAYY0zGZ8nGGGOM31myMcYY43eWbIwxxvidJRtjjDF+Z8nGGGOM31myyWBEZIiIfBzoOBIjIp1F5NdAxxFoItJERCL8NO/SIqIiEuKn+T8sIm/4Y95pgYi8JiI9LmP6SiKyUkSOi0hfEckmIv8nIkdF5KuUjDW9SNFkIyLbROSsiBSM9/0Kb8Mv7Q1PFpHhF5mHisgJEYkUkZ0iMkpEgv9rWRFpJyKLvXIHReQTESker0xREXlXRHZ7G8dGEXleRHIk4ze3FZF5InJERPaIyDsikiup6TIzVf1EVVsmp6yIdBWRef6OySRORLKKyAERySkiWYHBwKs+4333xUgRecdnnIjIy97+d9D7LBdZThMRifWZT6SI3OczPr+ITPGW9Y+IdEok5iEiEhVvXmV9xtcWkWUictL7v7bP5COBp73f+l88DsxS1VyqOga4HSgCFFDVO/7jPBM9dqYWEQn1jpf/eMfLlSJyY1LT+aNmsxW42yewGkD2S5xHLVXNCTQHOgEPJaNsY6Aj8IDPsm8HPgXeAAoC1YAzwDwRyeeVyQ8sBLIB9VQ1F9ACyAuUS0aseYDhwJVAFaAYPjthYvx11mmMHzQCVqpqJNAe2KiqO+OVqaWqOb1///P5vhtwC1ALqAncBDycyLJ2+cwnp6p+4DNuHHAWd+DuDEwQkWqJzOuLePPaAi55At8DHwP5gA+A7+OSi6ruBjYCNycy78SUAtbFG96kqtH/cX5pSQiwA3fMzYM78fgyrjJxUaqaYv+Abd6Cl/h8NxIYBChQ2vtuMjD8IvNQoLzP8FfA2GSW/RIY530W4B/g8XjTBAFrgaHe8HBgDRCUQuvgNmBNEuvoCWA1LvGFAE8CfwPHgfXArT7luwLzvPV4GJfMb/QZXwb43Zv2N2As8LHP+JtxG/0RYDZQJV4sA71YTgDv4nbin735TQfyXeR3NAEigKeBA968OvuMzwN8COz3/g6D49Zx3G+K93fsDvzlxTnO+/tVAU4DMUAkcMQr38ZbT8eBncBjF4kxyFvuP8A+L5483rjS3nLvA7Z7v2FQIn+3UO9vsB3YC0wEsnnj8gE/eL/1sPe5uM+0+YH3gV3e+O/ircMBXny7gfsTiSGP9zfa7f3u4UCwNy7Yi+8AsAXo5f2+EJ/tZI7P33VcvO3kOmCBt/5XAU3iLXsU0N/7/B4wOLF9Md64BUA3n+EHgUWJbVcXGZcDl2gq+nz3ETDiIuWH+P7GeONaeutQfL7bDrT2GR4EvJ/I3yPBfQuYidtmT+O228+8uKO84QeB8rj99qj3N/vCZ76VcfvyIeBP4E7v+27ePM568/m/ZByPCnrb4xFvfnM5vx9eCXyD2263An19psuGS8CHgQ24mlqCfxev/GqgQ6KxJBXspfzDHXBu8FZQFW8HiMBl9UtONkBVYA/wYDLKVsbthP18hhUok8B0zwMLvc+LgOdTcB28AXyexDpaCZTg/MHqDu8PH4SrnZ0Ainrjunob2EPe+uyBO2iJN34h7kAQijv7PI63gwEVvXm1ALJ4G8xmIKtPLItwCaYY7oC3HKgDhOF2mucu8juaANE+y27sLauSN/5D3JljLtyBfVPc35GEk80PuNpkSdzG3zqhst53u4Hrvc/5gKsuEuMD3u8tC+QEvgU+8saV9pb7Nm7HqoVL/lUuMq/Xgam4xJEL+D/gJW9cAaADrgafC3eC9J3PtD8CX3ixZgEax1uHQ73v2wAnuXiCnwJMwh10CwOLgYe9cd1xZ+IlvBhncWGyWYhLRlmBhsAxn+2kGHDQW36Qt70cBAr5LHujz992CXBHAvviLtz++i3evu6NOwpc6zMcDhxPZLs6i0voW731nsMbVwc4Ga/8Y1zkoItLNkdxB9l1QA+fcf2An+OV/wEY4DN8G7D8IvNOat+aDfwvXiy+yf0zXDILwu1rDb3vc+BqDffjTkTr4JJRVU3i2HmROF/CnRhl8f5djzuRCwKWAc9620RZ3ElKK2+6EbhkmA8ojksmFzsJKIJLrJUTjeVSD6ZJ/LBtuGQz2PuRrXEZOoRLSzbHcBn1b9zZW4K1Dp+yJ7zPnwGh3riG3ndhCUzXHfjL+/wX0D2Ffn8LL+6KiZTZBjyQxHxWAu29z12BzT7jsnu/6wrcgTkab2f0xn/K+YPIM8CXPuOCcGdzTXxi8a2NfANM8Bnug89BM16MTRJY9pfeMoNxB4yqPuMeBmb7/Kb4yaZhvPk8mVBZ77vt3vxyJ7EeZwA9fYYr4RJ3COeTjW8NZDFwVwLzEW8bK+fzXT1g60WWWxs47H0uCsSSQALx1uEpvITgfbcPuC6BskVwyTCbz3d34+4LgDsx6O4zrqX3+0J8tpPsPuM/9tlOnsBLwj7jfwHu8z6Xi7cN/oVPDcD7rhHuoJUXV7tey/lEF4PPgQio4MUmCfzOK3AnmUGcr41N8sZdD+yJV/6huO0qgXlVxZ3EBQP1cScpd/vsG5/HK/8JMCTe/rzlIvNOat+aTeLJ5kPgLd/tz/u+IzA33neT8E76uPRkMxR30lc+3vfXAtvjffcUXk0On8TjDf+PBJINLoFNj/sbJfbPX63RPsLda+nqrdRLdZWq5lPVcqo6WFVjEyuLO2vtiFuBcTf1D3j/F01gmqI+4w9epMwlEZHrcAf621V1UxLFd8Sb9l7vJtsRETkCVMdVf+Psifugqie9jzlxO9JhVT3hU/Yfn89X+g5763EH7kw2zl6fz6cSGM6ZyO9IaNlXerFniRfLP/GWG98en88nk1huB9xZ+D8i8ruI1LtIuQt+v/c5BHfgvpTlFsIl+WU+f6Np3veISHYRmeTdMD2GO0Dm9RqrlAAOqerhi8R4UC+8jn+xGErh1ulunxgm4Wo4cb/Vd7uKvx0c8tl2iFe2FHBH3Hy9eTfk/H7RBndpNc5hXA3uHFWdo6pnVfUI8AguUVTxRkcCuX2K5wYi1TtaxZvPHlVdr6qxqroVV2PocJH5xM3rePz5ePNar6q7VDVGVRcAo3E36pM7r1y4y08JSc6+lZjHcScxi0VknYjE3WsuBVwb72/RGZeE/4tXcTWuX0Vki4g86bOcK+Mt52nO7xvxt6cLjlkAIhKEO9afBXonFYhfko2q/oOrArfBVan9Sp0vcZcKnvW+/hN3Ce+Clh/eCuqAO+sFl5Vv9b7/T0SkDu4SywOqOiOp8rizurhpS+Eu5fTGtVTJizsrTLC1Tjy7gXzxWs2V9Pm8C7dRxS1LcAe/+Dd2/6uElr0Ll8ijfJftjfsvy03ogLREVdvjDrTf4WpCCbng93P+DH9vwsUv6gAu8VZT1bzevzzqGqaAu+dSCXepKDfuLB/c33AHkF9E8l7iMuPbgavZFPSJIbeqxt0c343728bx3Q52ezH4NtTxLbsDV7PJ6/Mvh6qO8Ma3AX7yKb8adxkpMcr5bXgd7jJlnFpcePM8qfnE7ZubgBARqXAZ8/KNqWa8VnE1482rCu7+VUIua9/ykupDqnolrpY+XkTK4/4Wv8f7W+RU1bhm2P/aH5JYznFVHaCqZXH3mPqLSHNvOVvjLSeXqrbxJt2Nu3wWx3d7ifu9cfd4O6hqVFKx+PM5mweBZvHOfH0Fi0iYz7//2sTQ1wjgIRG5wjtregwYLCKdvGVcAbyDO4N53ZtmlDf8gXfgR0SKiWtGXTOpBYpIddxZbh9V/b//EHMO3Aa035vf/biaTZK8pL4UeF5c09SGuJY+cb4E2opIcxHJgjsonsHdsE0pccu+HmgHfKWqMd6yXxCRXN567Y+7dHOp9gLF47YPb1mdRSSPt4Efw12mSshnQD8RKSMiOYEXcTdiL6lFkHfW+jbwuogU9uIoJiKtvCK5cMnoiNe68TmfaXfjagXjRSSfiGQRkUZcIm8+vwKviUhuEQkSkXIi0tgr8iXQV0SKey0tn/SZNm47GeKtv3pcuJ18DNwkIq1EJG6/bOLNKztQF3cPKM5PuHt0eOuimrhmxMHeen4Nd9Dd4BX5EHeQKyYiV+K2w8k+028Tka7e56YiUkqcErh9+nvvd5zAnbwOFZEcItIA1zLuI2/auGeLSnvD7b11LiJSF+gbNy/cZa4Yb52FikjcmflMn9/ZmAtrdL4ua98SkTvk/CMYh3HHgFjcfaOKItLF21ayiMg1IhJXS9yLu7+SLOIe/SjvJYejuN8ci7tkfFxEnhD3DFCwiFQXkWt8ft9T3vorxr9rLhNwyfgmVT2VnFj8lmxU9W9VXZpIkSdxO2jcv5mJlE3uMtfgLmEM9Ia/ALrgbgYexLVgygY0UNWDXplDuOu5UcAfInIcV+s5iqt+Iq6a2/kiix2Au5zyrpxvy5/cMy1UdT1u51yI25BqAPMv4Wd3wl0+PIQ7yJ27bKmqfwL3AG/izs5vwm0cZy9h/onZg9tRduGud3dX1Y3euD64+xxbcK3pPsW1YrpUM3Fnm3tEJO7SZxdgm7hLVt1xlxkS8h7uQDQHV9M+7cX1XzyB2x4WecudjqvNgGsUkg23jhfhTj58dcFtXxtx92Qe/Y8x3Iu7L7Iet96/5vylrrdx91lW4Rp5xL+i0Bl3n+kg7j7oF7iDI6q6A3fQfhp30rMDtw8FAc1wjWlO+8zr/4DKXuIAd3b7BS7xb8HdD2vnc7Y7yZtmDa7W/qP3XVwT5AK49QbuhvgC3LazwJumr8+ye+LW9T7cyUQPVY3b30rgLm3F1S7uwv3NjuP2i5fVa0bt7QO3eOv0CK4xyS1x+4aIFMXd8/mOBKTAvnUN7ngTibsq8oiqblHV47j7bXdxvsHFy7hGOOBqE1XFXfr6zov1ZxF5+iLLqYDbViNxx5jxqjrLOyFsh7u/uNX7De/gWjyCu9cT4Y2bjtvWznjLK4WrjdXG7Zdxx72L7YfA+RZNxlwSEWmCu+FZPImiJg0SkS9wz8o8l0S58cBaVR0f7/tuuAYgj15mHA2BXqp6d5KFk57XYGC/qk5KgXm9Bvwd/3dnVuJ6U7hLVRsnWfhi87BkY/4LSzbpi3d55BDuTLUl7oy9nqquSGK6brimxbv9HqRJM7yaXVlcbagCrjY6VlXf+K/ztCfYjckcrsBdWiuAuzzSI6lEA6Cqb/k7MJMmZcVd6iyDu8z4OXBZtTyr2RhjjPE76/XZGGOM36W7y2gFCxbU0qVLBzoMY4xJV5YtW3ZAVQsFavnpLtmULl2apUsTa1FtjDEmPhH5J+lS/mOX0YwxxvidJRtjjDF+Z8nGGGOM31myMcYY43eWbIwxxvidJRtjjDF+57dkIyLvicg+EVl7kfEiImNEZLOIrBaRq/wVizHGmMDyZ81mMu610BdzI66DtwpAN9z7EYwxxqSws1vmBDoE/z3Uqapz4l5idBHtgQ+9l5wtEpG8IlLUepc1xpgUcmIvA+8bwYrVhwIdSUDv2RTjwvdaR3CR93eLSDcRWSoiS/fv358qwRljTLoVGwMrx8P7lageMou5W0omPY2fpYsGAqr6lqqGq2p4oUIB69rHGGPSvPW/z+DjXrfBjF5w5ij33l6UP5d1CHRYAe0bbSfuNa5xinP+da7GGGMuwcmDexjeeySvfpmd4KCaXPfcZsp3HIaUv5XSIoEOL6DJZirQW0Q+B64Fjtr9GmOMuUQay88TxtPr2S1sPZgHgAfbRVOg2xwoXCDAwZ3nt2QjIp8BTYCCIhIBPAdkAVDVicBPQBtgM3ASuN9fsRhjTEa0c9VCHu32IV8vvgLIQ82SkUycdDP1Wl8f6ND+xZ+t0e5OYrwCvfy1fGOMybDOHIX5z9Cr736+X1eZ7FmjGPpIUR55YTAhWYIDHV2C0t37bIwxJtNSJXrNx4TMHwgn9/Jyu0JkKVCW197pTskKJZKePoAs2RhjTDpwdMtKBvccx6atp5n20F6kWH0qdRnPV4VrBTq0ZLFkY4wxaZieOc5XL73Io69HsftYcYKDYllZaiJ1bn8IJF08vQJYsjHGmLRJlb9nfEbvR2cybV0JIIx6Vc8y8f37qFm3YqCju2SWbIwxJq05/BcjH3mRZz4rxunoEuTNfpaXh1zF/wbcRlBQ4J+Z+S8s2RhjTFoRdRIWvwRLXuHk3nqcji5Nl7ZhjHynH4WvyB3o6C6LJRtjjEkD9i/+lj+/fpmGRRYD8ESvMjQZ0J5GLWsHNrAUYsnGGGMCKPbwFt4bNIzHJxchJKgxG1+JIf/NbxBavCGNAh1cCrJkY4wxgRB9hrVfvEr3Z7Yxf2tpAFpcG8LJdr+Sv3j+wMbmB5ZsjDEmlZ1YP42hA95n1K+ViI4tQZG80bzxeks63tcQSQOdZvqDJRtjjEktxyNgdn9uH5iVaX9WRUTp2aUoL4y5l7x5wwIdnV9ZsjHGGH+LiYLlo2HhEIg6wRM3VGIvFZnw3r1cW79MoKNLFZZsjDHGj6K3zuLNp8ewLeI0o285AeVvpclDb7B0TIl0+8zMf2HJxhhj/OHEHha/NZiHR4awcldtALoN/h/VWrm3ZqafjmZShiUbY4xJSbHRHJk7jqcHz2bi/FqoCqWugLETO1CtVfVARxcwlmyMMSal7FrE58OH8+jHVdh7vDYhwbEM6F2dZ164mRw5sgY6uoCyZGOMMZfr5AGY9xSseYdfl7Zn7/GcNLgqOxPe70KNmlcEOro0wZKNMcb8VxrLmWXvsPPHlyibcxsEZeGVZ6py/d5W3PfAtZmqAUBSLNkYY8x/sXc5M8cMpsfb5QiStqx640+ytnyTggUqc3+gY0uDLNkYY8ylOH2EvT88w2MjdvHxsmsBqFw2KxF1h1K2QMbrZialZLbWd8YY89+oErvmAyY9cCuV783Bx8tqEpZVGT6kPqs2PE7ZcpZoEmM1G2OMScqBtTC9J7cOL8bUdU0AaNW0MOPe7kg5SzLJYsnGGGMu5uxxWDDEdTWjMdx2VUMW763G6LG3cMed1TJsp5n+YMnGGGPiU4VNXzF19BtE7ImmZ4NYqNWTe3sO47boHOTKFRroCNMdSzbGGOPr0J9s/2IAfcfl4vt1rQjNEkPrJ0dStm4jBMgV6PjSKUs2xhgDEHWSqPkvMOb1OTw3rREnzmYlVw5h+AttKHV13UBHl+5ZsjHGZG6q8PdUFr07nIc/CGf17hsAuOO2crw+5maKFcsd4AAzBks2xpjM68gWmNUXtvzIM990YfXuKyhTMhtjJ9xKmzYVAh1dhmLJxhiT+USfRhe/zPG5o8gdcgyy5mbsiDp8uLQ6gwY3IXv2LIGOMMOxZGOMyVy2TuPPTwfRc3J1RG7ht9djkMavUilnUV64LdDBZVyWbIwxmcOxHZz+tR8vvXWQETPbcDYmhAL5QthWtSdlcuYLdHQZniUbY0zGFnMWlr3Bb5M/oOdXzdl8oAYAD9xfi1debUmBAtkDHGDm4Ne+0USktYj8KSKbReTJBMaXFJFZIrJCRFaLSBt/xmOMyWR2zEY/qM0DvRfQcsKdbD5QgKqV8zJnTlfefe8WSzSpyG81GxEJBsYBLYAIYImITFXV9T7FBgNfquoEEakK/ASU9ldMxphMInI3/P4YbPwUAUpfWZlsYUE8+1xT+vevR9aswYGOMNPx52W0usBmVd0CICKfA+0B32SjQFwj9jzALj/GY4zJ6GKjYeU4Vn7xJrsPCjfWCIO6T/NE93502RdFmTJ2byZQ/JlsigE7fIYjgGvjlRkC/CoifYAcwA0JzUhEugHdAEqWLJnigRpjMoCdCzj+Q1+e+7Qgo+d2pkCuGDYOvof8pSsTCpQpE+gAM7dAv8/mbmCyqhYH2gAfici/YlLVt1Q1XFXDCxUqlOpBGmPSsJP70Z8fYMqgB6n6RCNen1MPJIhO9zckSwHLMGmFP2s2O4ESPsPFve98PQi0BlDVhSISBhQE9vkxLmNMRhAbA2ve4Z+pL9L7swb8sOEuAMKvvoJJb93MVVcVDXCAxpc/k80SoIKIlMElmbuATvHKbAeaA5NFpAoQBuz3Y0zGmIxgz1KY0RPdvYQOb3VjWcSV5M6VhRdfuoHu3cMJDg70RRsTn9+SjapGi0hv4BcgGHhPVdeJyFBgqapOBQYAb4tIP1xjga6qqv6KyRiTzp0+DPMGEbtiIkFBiuQqxsgX6jHxp5y8/noriha1FwCkVZLeju3h4eG6dOnSQIdhjElNGgvrPuTgT8/w5Ld1AOHtlytCvWchqyWY5BCRZaoaHqjlWw8Cxpi0bf9q9LeefDg1ksd+uJsDJ3KQNWsQz5V7hOKWaNINSzbGmLTpzDFY8Bwbpn1Gj69v5PctpQFo0qQUEya0o3hxe89MemLJxhiTtqjCxs/R2QN49tvKvDyrG1ExwRQsmI3XXmtFly41EZFAR2kukSUbY0zacXADzOwN22ciwM6otkTFBPPQQ1cxYsQN5M+fLdARmv/Iko0xJvCiTsCi4eyaMYkDx7NSs2x+uP5lXrn3Lh7cdIgGDaznkPTOko0xJnBUYfN3xMzox4RfijBo2sMUKxzMytV9yZqnMAWBgoVyBjpKkwIs2RhjAuPI3zCzD8vnruThr9uxNKIYAI1qVuRYVE4KBjg8k7Is2RhjUlfUKVjyMsfmjOKZHxswdv5DxGoQxYvnYsyYG7nllsrWACADSnayEZHsqnrSn8EYYzK4LT/BzD7okS00erM7q3ZdQXCw0P+RaxkypAm5coUGOkLjJ0l2ICQi9UVkPbDRG64lIuP9HpkxJuM49g98fytMaQtHtyAFq9HvsSbUrVuMpUu78dprrSzRZHDJqdm8DrQCpgKo6ioRaeTXqIwxGUPMWVj6GmfnvcComXUIDmnKwGfaQp2+3BsUwj191TrNzCSSdRlNVXfEu4Ya459wjDEZxj8zYEYv5i47Rfdv7mP93sKEhgZz71sPUyQ4CwIEB9u9mcwiOclmh4jUB1REsgCPABv8G5YxJt2K3AWzB3Bg+VQe/6EF7y+pA0CFCvkZP74tRYpYU+bMKDnJpjswGvea553Ar0BPfwZljEmHYqNhxZvo/OeYPL8cA3/szcET2cmaNZinnmrIk082JCzMGsBmVsn5y1dS1c6+X4hIA2C+f0IyxqQ7EfNgRk84sAYUPt7QnIMnstOsWRnGj29DpUr21Exml5xk8yZwVTK+M8ZkNif3wZzHObniU46eDqVoiTJI0zGMv+k6lizZRefONeyZGQMkkmxEpB5QHygkIv19RuXGvXnTGJNZxcbA6kkwbxA/ryxIryk9KVsmL78teBzJmp1KYLUZc4HEajZZgZxeGd83FB0DbvdnUMaYNGz3YpjRk52bNvHo9635enU1AHIVL8LBY1DQcoxJwEWTjar+DvwuIpNV9Z9UjMkYkxadOgTzniJm5TuMm38Ng3/pw/HTWcmRIwtDhzalb99rCQmxZ2ZMwpJzz+akiLwKVAPC4r5U1WZ+i8oYk3ZoLKydDHOfIPbEQRpPeID5W0sAcMstlRk9ujUlS+YJbIwmzUvOacgnuK5qygDPA9uAJX6MyRiTVuxbCZ81hF8fhFMHCCrVmJZ3tqZEidx8//1dTJnS0RKNSRZR1cQLiCxT1atFZLWq1vS+W6Kq16RKhPGEh4fr0qVLA7FoYzKPM0dh/rPoirF8ubIKIdly06Ffb6h8N2fOxhAVFUvOnFkDHaW5BN6xPDxQy0/OZbQo7//dItIW2AXk919IxpiAUYWNn8Lvj/H3P2fo+W1nft1UjkKFstHs5VvJJ0JoaAih1memuUTJSTbDRSQPMAD3fE1u4FF/BmWMCYCD62FGL85sncursxvwwozGnI4KJl++MF54oTl58oQlPQ9jLiLJZKOqP3gfjwJN4VwPAsaYjOBsJCwcCstfZ/am4vSY0ouNe93Fiy5dajJyZEsKF84R4CBNepfYQ53BwJ24PtGmqepaEWkHPA1kA+qkTojGGL9Qhb++hVmPQmQEMbFB9PypMxv3ZqFSpQJMmNCWpk3LBDpKk0EkVrN5FygBLAbGiMguIBx4UlW/S4XYjDH+cvgvmNmH2C2/cjo6hOwlrib4hglMqFuIOXP+4fHHGxAaap1mmpST2NYUDtRU1VgRCQP2AOVU9WDqhGaMSXFRp2DxS7DkZdZE5KX7tw9RuWZZ3n3iMQgKpvEV0Lhx6UBHaTKgxJLNWVWNBVDV0yKyxRKNMenY3z/ArL6c2BfB0N8aM2puA6JjhK2nQzh89Cz58mULdIQmA0ss2VQWkdXeZwHKecMCaNwzN8aYNO7oNpj1CPw9lf9bV5HeUx9l+8EciEDPnuG88EJz8ua1lmbGvxJLNlVSLQpjTMqLPgNLR8IfLxB95gwdP+3Et6sqAlC79hVMmtSOunWLBThIk1kk1hGndb5pTHq17TeY2RsObwIgpOpd5KnRjpx/b2PYsKb07l3XOs00qcqvzU1EpDXuldLBwDuqOiKBMncCQwAFVqlqJ3/GZEyGdnwnzO4Pm77kj3+KQe76XPvQUCjVnFfrnWToS9EUL5470FGaTMhvycZ7Tmcc0AKIAJaIyFRVXe9TpgLwFNBAVQ+LSGF/xWNMhhYTBSvGwIIhHDkWzVM/t2fSwjpUrlyAlc82IStQoED2QEdpMrFkJRsRyQaUVNU/L2HedYHNqrrFm8fnQHtgvU+Zh4BxqnoYQFX3XcL8jTEAEXNgek/0wDo+W1GD/j/dzN4jWQgJCeLmmysTExOLvVzXBFqSyUZEbgJG4t7cWUZEagNDVfXmJCYtBuzwGY4Aro1XpqK3jPm4vWGIqk5LXujGZHIn9sKcgbD+I/7an5+eUx9m+oaiADRoUIKJE9tRvbpdLDBpQ3JqNkNwtZTZAKq6UkRSqg+LEKAC0AQoDswRkRqqesS3kIh0A7oBlCxZMoUWbUw6FRsDqybA/MFw5ihRZKPZ+32J2Af582fjlVdu4P776xAUJIGO1JhzkvWKAVU9KnLBhpv4S3CcnbjubuIU977zFQH8oapRwFYR2YRLPhe8nE1V3wLeAvc+m2Qs25iMadcimNET9q1AFaTsjWRp9iYvFIpk1qxtvPLKDRQqZJ1mmrQnOW0f14lIJyBYRCqIyJvAgmRMtwSoICJlRCQrcBcwNV6Z73C1GkSkIO6y2pZkxm5M5nHqIPz6EHxWj71/b6LLV/cwPGIC3Poj5C3HvffW4v3321uiMWlWcpJNH6AacAb4FPeqgUeTmkhVo4HewC/ABuBLVV0nIkNFJO5+zy/AQRFZD8wCBlqXOMb40FhY/Q68V5HYVe8yaVFdKr/2GB//UZ5RHxzleOTZQEdoTLIk57XQV6nq8lSKJ0n2WmiTaexd4S6Z7V7Eql1F6P5/nVn0l3tGpnXr8owb14ayZfMFOEiTXqSH10K/JiJXAF8DX6jqWj/HZEzmdvoIzH8GVo0nKhqe+u1W3phVi5gYKFo0J6NHt+b226sS7z6qMWlakpfRVLUp7g2d+4FJIrJGRAb7PTJjMhtVWP8RvF8JVo4FhJBrHmFFdDtiY6FPn7ps2NCLO+6oZonGpDvJeqhTVffgXqA2C3gceBYY7s/AjMlUDqyFGb0gYg7bD+chplBzynQahRSqycTiBzl69Azh4VcGOkpj/rPkPNRZBegIdAAOAl8AA/wclzGZw9njsOB5WP4GUdHK6EUteG5aQ+rVL81vfWsgQIUKBQIdpTGXLTk1m/dwCaaVqu7yczzGZA6qsOkr12lm5E4WbitB95/uZfWWLICSP382Tp6MIkeOrIGO1JgUkWSyUdV6qRGIMZnGoT9hZh/45zcOnwzjyVn389asUgCUKZOXcePacOONFQIcpDEp66LJRkS+VNU7RWQNF/YYYG/qNOa/iDoJf7wIS16B2CjOBBek9oS+bN8dS5YsQQwcWJ9BgxqRPXuWQEdqTIpLrGbziPd/u9QIxJgMbfNUmNUXjnnvJKz+AKHXj+DBY+uZMWMrEya0pWrVQoGN0Rg/Ss5DnS+r6hNJfZda7KFOk64c3Qoz+8KWHzgdFcJLizpQ6YY76NS7AwDR0bEEB4s1ZTZ+F+iHOpPTXU2LBL67MaUDMSZDiT4NC4fB5Kqw5Qd+21KdGuOfZej3Veg3bCunTkUBEBISZInGZAqJ3bPpAfQEyorIap9RuYD5/g7MmHRr2y8wozcc2cyeYznp/3t/Pvs9NxBLtWqFmDixHdmy2X0Zk7kkds/mU+Bn4CXgSZ/vj6vqIb9GZUx6dGwHzO4Hf31DTKwwafVNPD21LkePxZAtWwjPPdeYfv3qkTWrvTXTZD6JJRtV1W0i0iv+CBHJbwnHGE/MWVj2BiwaClEnICQ7MeHP8uZ7OTh67CBt2lRg7NgbKVPGOs00mVdSNZt2wDJc02ffC8sKlPVjXMakDztmw/SecGgDx09nJabMHeRt9xpZc5fg7be3s3dvJLfdVsXuy5hM76LJRlXbef+n1Cugjck4TuyB3x+DDZ+gClO2NKXvlBa0alOVdzu5F9Q2bGivMDcmTnL6RmsArFTVEyJyD3AV8Iaqbvd7dMakNbHRsHK8ewXA2WNsO1qEPjN78MN8gLOsXbuf06ejCQtLVh+3xmQaydkjJgC1RKQWrgPOd4CPgMb+DMyYNGfXQnfJbP9KomKCGLXmfzz/TSlOnYohd+5QXnyxGd27hxMcnJwnCozJXJKTbKJVVUWkPTBWVd8VkQf9HZgxacbJ/TD3SVj7nhsMLct1Y7ux5s/TQAx33VWdUaNaUrRorsDGaUwalpxkc1xEngK6ANeLSBBgDwmYjE9jYfXbMO8pOH0YgrLANQPJfu0gwpf/xsnofxg/vi0tW5YLdKTGpHnJSTYdgU7AA6q6R0RKAq/6NyxjAmzvMpjeA/YsQRU+3NqJcm170LBhQwBef70VWbMG28OZxiRTcl4xsEdEPgGuEZF2wGJV/dD/oRkTAKcPw7zBsGoCoGw4XpUeP3Xl9yUnqTJrFStvcA9l5skTFuhIjUlXktMa7U5cTWY27lmbN0VkoKp+7efYjEk9qrD+Q/h9IJzaz6noUF5Y259XvshGVNRJChXKzlNPNSRLFrv5b8x/kZzLaIOAa1R1H4CIFAKmA5ZsTMawfzXM6AU75wEwbX97en3RkC3bTgCxPPTQVYwYcQP582cLbJzGpGPJSTZBcYnGc5Dk9RZtTNp25hgsHALLx4DGQPbCRIa/Qpc2+zhw4ATVqxdm4sS2NGhgD2cac7mSk2ymicgvwGfecEfgJ/+FZIyfqcKfX8Ds/nBiNzEaTGyN3mRpPIycYXkZPXoNERHH6NfvOrJksU4zjUkJyWkgMFBEbgMael+9papT/BuWMX5ycCPM7AXbZwKw7HQLHv6yDe1vr8MzrfIC0KlTjQAGaEzGlNj7bCoAI4FywBrgMVXdmVqBGZOiok7AouGw9DWIjeKYXsEzKwYw9vOTxMYe5dip1Tz5ZEOryRjjJ4nVbN4DPgTmADcBbwK3pUZQxqQYVdj8Pcx6BI5vRxW+PtKHR94twe49JwgOFvr3v47nn29qicYYP0os2eRS1be9z3+KyPLUCMiYFHPkb5jZF7a6W4zHc11Dxy/u4+eZB4CTXHttMSZObEft2lcENk5jMoHEkk2YiNTh/HtssvkOq6olH5M2RZ+GxS/D4pcg5gyE5oEGw8lZsztnvviUPHmOM2LEDXTrdjVBQfaeGWNSQ2LJZjcwymd4j8+wAs38FZQx/9nWn2FmH1erAebEPETR6wdQoVYlBHjvvZsJCwuhSJGcgY3TmEwmsZenNU3NQIy5LMe2w6xHYbNrKHkgax0en/cw73+5h+a//sFvv1VERChVKm9AwzQms7I3PJn0LeYsLB0Fi4ZB9Elig3Mw+eAgBo4P5tChPWTNGsz115ckJkYJCbFLZsYEil+TjYi0BkYDwcA7qjriIuU64Lq/uUZVl/ozJpOBbJ/pupk5tBGAdWFd6PFpfeYu2AtA8+ZlGD++LRUrFghklMYY/JhsRCQYGAe0ACKAJSIyVVXXxyuXC3gE+MNfsZgMJnIXzB4Af37uhvNV4Gj4aK5rsJLIyL0ULpyDUaNa0qlTDUSsNmNMWpCcXp8F6AyUVdWh3vtsrlDVxUlMWhfYrKpbvPl8DrQH1scrNwx4GRh4qcGbTCY2GlaMhQXPwtnjEJINrfs0cs1A8oSE8sQTOdi58xgvvticfPms00xj0pLk1GzGA7G41mdDgePAN8A1SUxXDNjhMxwBXOtbQESuAkqo6o8ictFkIyLdgG4AJUtap4iZ0s75MKOn66EZ2Jm3A49MbUf7/HXoUi8UgEGDrreajDFpVHKSzbWqepWIrABQ1cMikvVyF+y9XnoU0DWpsqr6FvAWQHh4uF7usk06cnIfzHkC1k0GIDpHGcbtHMTgIfuIjPyH5WuO0qlTDYKDgyzRGJOGJSfZRHn3XxTOvc8mNhnT7QRK+AwX976LkwuoDsz2DhJXAFNF5GZrJGCIjYHVb8G8p+HMEQjOypKcT9B9/JUsXxEBwC23VGbMmNYEB9sbL4xJ65KTbMYAU4DCIvICcDswOBnTLQEqiEgZXJK5C+gUN1JVjwIF44ZFZDaus09LNJndniUwvSfsdZvCiStu5InZ9zD+3b9Q3UvJknl4880bufnmSgEO1BiTXMl5xcAnIrIMaI7rquYWVd2QjOmiRaQ38Auu6fN7qrpORIYCS1V16mXGbjKaU4dcTWb1W4BCzuLQ9A1CSt7M9GGTCAoS+vevx3PPNSZHjsu+kmuMSUWimvgtEK/12b+o6na/RJSE8PBwXbrUKj8ZisbC2skw9wk4dQCCQvi7SH/yNn2MAkULAbBkyU7CwkKoUaNIYGM1Jp0SkWWqGh6o5SfnMtqPuPs1AoQBZYA/gWp+jMtkFvtWuVZmuxYAcKZIE15d14sXnv6Tzp0X8s47NwNwzTXFAhmlMeYyJecy2gWvLfSaK/f0W0QmczhzFBY8ByvedDWb7EWYnX0YPV44y8aN6wCIjo4lJibWGgAYkwFccg8CqrpcRK5NuqQxCVCFjZ/B7wPgxB6QIPaVfoSBU+rz4SfuVmClSgWYMKEtTZuWCXCwxpiUkpweBPr7DAYBVwG7/BaRybgOrocZvWHHLDdctB4H6rxOlYa/c+jQBkJDgxk06Hoef7wBoaHWR6wxGUly9uhcPp+jcfdwvvFPOCZDOhvpemVeNsp1ORNWABq9AtW7UlCCaN9+DxERxxg/vi3ly+cPdLTGGD9INNl4D3PmUtXHUikek5Gowl/fuvfMREYAwokK3Rn6exva1qhJI3H3YsaPb0toaLD1AGBMBnbRZCMiId6zMg1SMyCTQRz+y70xc9svbrjwVfxf7BB69/mb7duX8+MvO1i9ugdBQUJYmF0yMyajS2wvX4y7P7NSRKYCXwEn4kaq6rd+js2kR1GnYPEIWDLCvdgsNC87yg/lkUmFmPLdcgDq1LmCSZPaERRkNRljMovknFKGAQdxvT7HPW+jgCUbc6EtP7razNGtAERXvo8xazrz7O1LOHHiEDlzZmX48Kb06lWXkBBrzmxMZpJYsinstURby/kkE8d6XjbnHfsHZj4Cf3/vhgvWgObjOZb9al7qOpYTJ6Lo0KEKb7zRmuLFcwc2VmNMQCSWbIKBnFyYZOJYsjEQfQaWvQaLhkP0KciSkyM1nydb3R6EZs9GfmDSpHaEhgbTtm3FQEdrjAmgxJLNblUdmmqRmPTln+kwoxcc3gSAVryLz/b3oF/HxfTuvZhnnmkMwG23VQlklMaYNCKxZGN3b82/Hd8Js/vDpi/dcL5KbCozkp4vHGLGDPew5pw521FVa8psjDknsWTTPNWiMGlfTBSsGAMLhkBUJIRk53Sdwbw8oy4v9ljI2bMx5M+fjVdfbUHXrrUt0RhjLnDRZKOqh1IzEJOGRcx1PTMfWOuGy9/Cnqov0qjtdP76ax4AXbvW5tVXW1CwYPYABmqMSavsaTpzcSf2wpzHYf2HbjhPWWj2JpRtQxFVSpRYQkhIEBMmtKVx49IBDdUYk7ZZsjH/FhsDqybC/EHuVQDBocSGP8nbq1vRNLoiFQER4dNPbyNfvmxkzRoc6IiNMWmcPVlnLrT7D/ikLszs7RJNmRtZdfVcGgwsQfdev9Kz54/Evd21SJGclmiMMcliNRvjnDoIc5+CNe8ACrlKEFl3FEM+ysUbo38mJka58spcdO8esLfKGmPSMUs2mZ3Gwpr3YO6TcPogBIXA1QP4bt9d9LlpFhERxwgKEvr0qcvw4c3InTs00BEbY9IhSzaZ2d4VrpXZ7kVuuGQzaDaWnaeLcVfLMZw5E8PVVxdl4sR2hIdfGdhYjTHpmiWbzOj0EZj/DKwa72o2OYoS1eA1Qqp1RIKCKAa88EIzsmYNpmfPawgOtlt7xpjLY0eRzEQV1n8M71eGlWMBgaseZUHlmVzd+Qgff7LmXNEBA+rTp8+1lmiMMSnCjiSZxYF18GVT+LkLnNwLVzbgULtFPPx5Mxo0/YI1a/YxfvzScy3NjDEmJdlltIzubCQsfB6WvwGx0ZCtEHr9y3y8og4DGv7G/v0nyZIliMcfb8CgQddbNzPGGL+wZJNRqcKmr2F2P4jcCQjU6sHeCoO4+/7pzJrl3j3TuHEpJkxoS5UqhQIbrzEmQ7NkkxEd2uQeyvznNzd8xTXQfDxcEU7eM9Hs3h1JwYLZGTmyBffeW8tqM8YYv7Nkk5FEnYQ/XoSlr0LMWQjLBw1f4rc9zbgqSzEKAKGhIXz11R0ULZqTAgWs00xjTOqwBgIZxeapMLka/PGCSzTV7md36+XcPaIgLVt/yhNPTD9XtHr1wpZojDGpymo26d3RrTCzL2z5wQ0XqklMk3FM+iGUpzp+zrFjZ8iWLYRKlQrYC82MMQFjySa9ij7jLpf98QJEn4asuaDBMJbH3kb326exZMkuANq2rcDYsW0oXTpvYOM1xmRqlmzSo22/ugYAh/9yw5U7QeORbDuQjbrlxxAToxQrlosxY27k1lsrW23GGBNwfk02ItIaGA0EA++o6oh44/sD/wOigf3AA6r6jz9jSteOR7imzJu+dsP5q0DzcVCyKQClc8L999cmV65Qnn++CblyWaeZxpi0wW8NBEQkGBgH3AhUBe4Wkarxiq0AwlW1JvA18Iq/4knXYqJgyauum5lNX0NIdrj+ZbY1ms1Nvfbw++/bzhV9662bGDWqlSUaY0ya4s+aTV1gs6puARCRz4H2wPq4Aqo6y6f8IuAeP8aTPu343fXMfNBbbRU6ENVgJKPeieD559/m1KloDhw4ycKFDwLYJTNjTJrkz2RTDNjhMxwBXJtI+QeBnxMaISLdgG4AJUuWTKn40rYTe+D3x2DDJ244bzloNpZ5O6vSvfEPrFu3H4C77qrOqFEtAxioMcYkLU00EBCRe4BwoHFC41X1LeAtgPDw8IzdU2RsNKycAPMHw9ljEBIGdZ/icPm+DHxqDu+++z4A5crlY/z4trRsWS7AARtjTNL8mWx2AiV8hot7311ARG4ABgGNVfWMH+NJ+3YthOk9Yf9KN1y2LTQdA3nLEnvwJN9//ydZsgTx5JMNeeqphmTLliWg4RpjTHL5M9ksASqISBlckrkL6ORbQETqAJOA1qq6z4+xpG0nD7jXMq991w3nLgVNR7Mxqj5lsuUjFChQIDuffHIbJUvmoXLlggEN1xhjLpXfWqOpajTQG/gF2AB8qarrRGSoiNzsFXsVyAl8JSIrRWSqv+JJkzQWVr8F71dyiSYoC1z7NCfvXMWg93NSs9ZEXnll/rniLVuWs0RjjEmX/HrPRlV/An6K992zPp9v8Ofy07S9y9wlsz2L3XDJG6D5WKYtDqZnncls3XoEgAMHTgYuRmOMSSFpooFApnL6MMwbDKsmAAo5r4TGo9iV60Ye7f4LX33lmjjXqFGYiRPbUb9+icTnZ4wx6YAlm9SiCus/hN8Hwqn9IMFw1aNQ/zk2bTtLeJVxHD9+luzZszBkSGMeffQ6smQJDnTUxhiTIizZpIb9a9yDmTvnueFi17tuZgrVAKBCBeWaa4qRI0cW3nzzRkqVyhu4WI0xxg8s2fjT2eOwYAgsHw0aA9kLQ6NXOVb8Tp59bjY9e15JxYoFEBGmTr2LHDmyBjpiY4zxC0s2/qAKf34Bvw+AyF0gQVC7F1p/GF//sItHWoxj9+5INm48wLRproceSzTGmIzMkk1KO/QnzOgF22e44Svqwg0T2HKiDL07/MTPP28G4LrrivPyy5m3MZ4xJnOxZJNSok7Aohdg6UiIjYKw/HD9CM5W6srI1xYxbNh4Tp+OJm/eMEaMaM5DD11NUJB1mmmMyRws2VwuVdj8Pcx6BI5vd9/V+B80fAmyF2TH34cYOvR3zpyJoXPnGrz2WkuKFMkZ2JiNMSaVWbK5HEe2wMw+sNV7brVwHWg+nsPZapE3WxgClCuXn9GjW1O+fH6aNy8b0HCNMSZQ/NZdTYYWfRoWDoXJVV2iyZobmr1J7N2LeW9aKOXLv8nHH68+V/zhh8Mt0RhjMjWr2VyqrdNgZm848rcbrnIPNH6VdduC6NHsI+bOdZfSfv55M1261ApgoMYYk3ZYskmuY9thdj/461s3XKAqNB/PyQL1GTbsd0aOXEh0dCyFC+fg9ddbcffd1QMbrzHGpCGWbJIScxaWve4um0WfhCw5oN4QuOoRNv19jFbVxrNt2xFEoHv3q3nxxebky5ct0FEbY0yaYskmMdtnuWdmDm1wwxXvgCajIFdxAEqVykNYWAi1ahVh4sR2XHdd8QAGa9KaqKgoIiIiOH36dKBDMZlIWFgYxYsXJ0uWtPVyRUs2CYnc7Z7+3/iZG85XAZqNJbr4DUycuJS7785PgQLZCQ0NYdq0zhQrlpuQEGtrYS4UERFBrly5KF26NCL2TJXxP1Xl4MGDREREUKZMmUCHcwE7QvqKjYZlb7iXmW38DELCoMFwuHcNi/dVo27dt+nT52eeeGL6uUlKlcpricYk6PTp0xQoUMASjUk1IkKBAgXSZG3aajZxds53PTPv95osl70Jmo3mKEUZ9OgMxo9fgiqULJmH9u0rBTZWk25YojGpLa1uc5ZsTu6HOY/DusluOHdpaDYGLduOL75YR79+49izJ5KQkCD697+OZ59tbJ1mGmPMJcq8139iY2DVRHfJbN1kCM4K1w2Gruug3E2sWrWXu+/+hj17IqlfvwTLl3fj5ZdbWKIx6UpwcDC1a9emevXq3HTTTRw5cuTcuHXr1tGsWTMqVapEhQoVGDZsGKp6bvzPP/9MeHg4VatWpU6dOgwYMCAAvyBxK1as4MEHHwx0GBd15swZOnbsSPny5bn22mvZtm1bguVKly5NjRo1qF27NuHh4ee+/+qrr6hWrRpBQUEsXbr03Pdr1qyha9eufo4+halquvp39dVX62XbvUT1o3DVkbh/X7VUPbRJo6NjLijWr980ffvtZRoTE3v5yzSZzvr16wMdgubIkePc53vvvVeHDx+uqqonT57UsmXL6i+//KKqqidOnNDWrVvr2LFjVVV1zZo1WrZsWd2wYYOqqkZHR+v48eNTNLaoqKjLnsftt9+uK1euTNVlXopx48bpww8/rKqqn332md55550JlitVqpTu37//X9+vX79eN27cqI0bN9YlS5ZcMK558+b6zz//JDi/hLY9YKkG8NiduS6jnToE8wfBqkmAQs5i0PQNqNCBWbO30bPnBCZNakejRqUAGDWqVUDDNRnIa366jj5Aky7jqVevHqtXu3uSn376KQ0aNKBly5YAZM+enbFjx9KkSRN69erFK6+8wqBBg6hcuTLgakg9evT41zwjIyPp06cPS5cuRUR47rnn6NChAzlz5iQyMhKAr7/+mh9++IHJkyfTtWtXwsLCWLFiBQ0aNODbb79l5cqV5M2bF4AKFSowb948goKC6N69O9u3ux453njjDRo0aHDBso8fP87q1aupVcv11LF48WIeeeQRTp8+TbZs2Xj//fepVKkSkydP5ttvvyUyMpKYmBh++ukn+vTpw9q1a4mKimLIkCG0b9+ebdu20aVLF06cOAHA2LFjqV+/frLXb0K+//57hgwZAsDtt99O7969UdVk31epUqXKRcfddNNNfP755zz++OOXFWNqyRzJRmNh3Qfu3sypAxAUAlf1g3rPsu+IMLDr93z44SoARo1aeC7ZGJNRxMTEMGPGjHOXnNatW8fVV199QZly5coRGRnJsWPHWLt2bbIumw0bNow8efKwZs0aAA4fPpzkNBERESxYsIDg4GBiYmKYMmUK999/P3/88QelSpWiSJEidOrUiX79+tGwYUO2b99Oq1at2LBhwwXzWbp0KdWrn++po3LlysydO5eQkBCmT5/O008/zTfffAPA8uXLWb16Nfnz5+fpp5+mWbNmvPfeexw5coS6detyww03ULhwYX777TfCwsL466+/uPvuuy+4dBXn+uuv5/jx4//6fuTIkdxww4XvqNq5cyclSpQAICQkhDx58nDw4EEKFix4QTkRoWXLlogIDz/8MN26dUtyPYaHhzNixAhLNmnGvlXuwcxd891w8cbQfByx+avy7rvLeeKJ6Rw+fJrQ0GAGD27EwIGXdyZjTIIuoQaSkk6dOkXt2rXZuXMnVapUoUWLFik6/+nTp/P555+fG86XL1+S09xxxx0EBwcD0LFjR4YOHcr999/P559/TseOHc/Nd/369eemOXbsGJGRkeTMef71HLt376ZQoULnho8ePcp9993HX3/9hYgQFRV1blyLFi3Inz8/AL/++itTp05l5MiRgGuivn37dq688kp69+7NypUrCQ4OZtOmTQnGP3fu3CR/46WaN28exYoVY9++fbRo0YLKlSvTqFGjRKcpXLgwu3btSvFY/CXjJpszx2DBs7BiLGgMZC8CTV6Dyp3Yuu0I97R/nwULdgDQsmU5xo1rQ/ny+QMctDEpK1u2bKxcuZKTJ0/SqlUrxo0bR9++falatSpz5sy5oOyWLVvImTMnuXPnplq1aixbtuzcJapL5XuZKP4zHzly5Dj3uV69emzevJn9+/fz3XffMXjwYABiY2NZtGgRYWFhif4233k/88wzNG3alClTprBt2zaaNGmS4DJVlW+++YZKlS58hGHIkCEUKVKEVatWERsbe9FlX0rNplixYuzYsYPixYsTHR3N0aNHKVCgwL+mLVasGOASyK233srixYuTTDZxlwvTi4zXGk0VNnzmWpktHw0o1OkLD/wJVTqDCLlzh7Jp00GuuCInn3/egWnTOluiMRla9uzZGTNmDK+99hrR0dF07tyZefPmMX26e0D51KlT9O3b99wlmYEDB/Liiy+eO7uPjY1l4sSJ/5pvixYtGDdu3LnhuMtoRYoUYcOGDcTGxjJlypSLxiUi3HrrrfTv358qVaqcOxC3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\n" + }, + "metadata": { + "needs_background": "light" + } } ], "source": [ @@ -200,31 +171,20 @@ "plt.ylim([0.0, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", - "plt.title('MLP ROC')\n", + "plt.title('MLP ROC. 2 random points on each edge/(50,50,50) offset. seg2')\n", "plt.legend(loc=\"lower right\")\n", + "plt.savefig('mlp.png')\n", "plt.show()" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 45, "metadata": {}, - "outputs": [ - { - "output_type": "error", - "ename": "NameError", - "evalue": "name 'X' is not defined", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\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 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinear_model\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLogisticRegression\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mX_center\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m171\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_test\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain_test_split\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_center\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstratify\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mclf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mLogisticRegression\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_score\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'X' is not defined" - ] - } - ], + "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", - "X_center = X[:, 171].reshape(-1,1)\n", + "X_center = X[:, 172].reshape(-1,1)\n", "X_train, X_test, y_train, y_test = train_test_split(X_center, y, stratify=y, random_state=1)\n", "clf = LogisticRegression(random_state=0).fit(X_train, y_train)\n", "y_score = clf.predict(X_test)" @@ -232,19 +192,19 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 46, "metadata": {}, "outputs": [ { - "output_type": "error", - "ename": "NameError", - "evalue": "name 'y_test' is not defined", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mroc_curve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_score\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mroc_auc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mauc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mlw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'y_test' is not defined" - ] + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2020-08-14T15:30:09.560963\n image/svg+xml\n \n \n Matplotlib v3.3.0, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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GjRoQGRk5On+hw4dokWLFlStWpUWLVoQHR0NwGeffcazzz6balk+oao56u+yyy5TX0k4cUz11+dVxxVQHY32bdpGpw99VRMTEnw2T5N7bdiwwd8haEhIyOnPnTp10hEjRqiq6rFjx7RSpUr69ddfq6pqXFyctm7dWidOnKiqqmvXrtVKlSrpxo0bVVU1ISFBJ0+enKmxxcfHX3AZd911l65evTpL53kuJk2apN27d1dV1blz5+o999yT6njly5fX/fv3/6f/gAED9MUXX1RV1RdffFEHDhyoqqpJSUnaoEEDjYuLS7W81NY9YLme537X7zv+c/3zVaL4fu7/tEapvvpjz/Kqo1H9opNq3F6fzMvkDWdtrKPxzV8GPBPFlClTtGfPnqqq+sYbb2jHjh3PGnfLli1apkwZVVXt2LGjzpgxI8Pyjx49qg8++KDWqVNH69atqx999NF/5vvhhx/qAw88oKqqDzzwgHbv3l0bNWqkffv21fLly2t0dPTpcatUqaJ79uzRffv26R133KGRkZEaGRmpP//883/mfeTIEa1Wrdrp7t9++02vvPJKbdCggV511VW6adMmVVV988039dZbb9WmTZtqkyZNNDY2Vjt37qyXX365NmjQQOfPn6+qqv/88482btxYGzZsqA0bNtRffvklw++fkZYtW+qSJUtU1UlSxYoV06SkpP+Ml1aiqFatmu7atUtVVXft2nXW93388cf1/fffT3W+mZ0o8nwdxb5t2xjw0ETe+i4MCGfsry1oMqg9lGvq79CMyTSJiYl89913py/TrF+/nssuu+yscSpXrkxsbCxHjhxh3bp1Xl1qev755wkPD2ft2rUApy+NpCcqKoolS5YQEBBAYmIi8+bNo3Pnzvz222+UL1+ekiVL0r59e/r27Uvjxo3Zvn07rVq1YuPGjWeVs3z5curUqXO6u0aNGvz0008EBgby7bff8vTTT/Pxxx8DsHLlStasWUPRokV5+umnadasGTNnzuTw4cM0atSI5s2bc9FFF7Fw4UKCg4P566+/uO+++1i+fPl/4r/22ms5evTof/qPHj2a5s2bn9Vv586dlC3r3BkZGBhIeHg4Bw8epHjx4meNJyK0bNkSEaF79+5069YNgL1791LKfYD34osvZu/evaeniYyM5KeffuKee+7JcJlfqDybKJISE5kxfAJPjt5L9LEwCgQmMLhLEAPGvgohIf4Oz+Q2/TXjcXzg+PHjNGjQgJ07d1KzZk1atGiRqeV/++23vPfee6e7ixTJuA7v7rvvJsB9F0u7du0YPnw4nTt35r333qNdu3any92wYcPpaY4cOUJsbCyhoWfeBLl7925KlChxujsmJoYHHniAv/76CxEhPj7+9LAWLVpQtGhRAL755hsWLFjA6NGjAec25u3bt3PJJZfQu3dvVq9eTUBAAJs3b041/p9++inD73iufv75Z0qXLs2+ffto0aIFNWrUoEmTs19qJiJn3dF00UUXsWvXrkyPJTV5MlH8s3wp93d4jyWbiwDBtKwfzaQZD1Dlsob+Ds2YTFWwYEFWr17NsWPHaNWqFZMmTaJPnz7UqlWLxYsXnzXu1q1bCQ0NpXDhwtSuXZsVK1ZQv37985qv5w4t5ZPpIR4HYldddRVbtmxh//79zJ8/n8GDBwOQlJTE0qVLCQ4OTve7eZY9ZMgQmjZtyrx589i2bRvXX399qvNUVT7++GOqV69+VnnDhg2jZMmS/PHHHyQlJaU573M5oyhdujQ7duygTJkyJCQkEBMTQ7Fixf4zbenSpQFn53/77bfz+++/06RJE0qWLMnu3bspVaoUu3fv5qKLLjo9zYkTJyhYsGCayycz5a27nuLj4MeBFP6yBZt35ufiwnG8N+YSvlo51pKEydUKFSrE+PHjGTNmDAkJCXTo0IGff/6Zb7/9FnDOPPr06cPAgQMBGDBgAC+88MLpo+qkpCSmTp36n3JbtGjBpEmTTncnX3oqWbIkGzduJCkpiXnz5qUZl4hw++23069fP2rWrHl6J9qyZUsmTJhwerzVq1f/Z9qaNWuyZcuW090xMTGnd7izZs1Kc56tWrViwoQJTiUtzp1TydOXKlWKfPny8fbbb5OYmJjq9D/99BOrV6/+z1/KJAHQpk0bZs+eDcBHH31Es2bN/vOcQ1xc3OnEExcXxzfffHP6kprn9LNnz6Zt27anp9u8efNZl958Kc8kiq/ffIeT0+rA8lcoViiOBS/Gs+mvJ2jX72HEWnk1eUDDhg2pV68ec+fOpWDBgnzyySeMGDGC6tWrU7duXS6//HJ69+4NQL169Xj11Ve57777qFmzJnXq1GHr1q3/KXPw4MFER0dTp04d6tevz6JFiwAYNWoUt9xyC1dfffXpa+xpadeuHXPmzDl92Qlg/PjxLF++nHr16lGrVq1Uk1SNGjWIiYk5vZMdOHAgTz31FA0bNiQhISHN+Q0ZMoT4+Hjq1atH7dq1GTJkCAC9evVi9uzZ1K9fn02bNp11FnK+unbtysGDB6lSpQpjx45l1KhRAOzatYubbroJcOohGjduTP369WnUqBE333wzrVs77cYNGjSIhQsXUrVqVb799lsGDRp0uuxFixZx8803X3CM3pDkrJpTREZGamoVTGnZsWEjfbpMZ/5v4Tzf+nsGtz8KLV6Hiy/3YZTGwMaNG6lZs6a/w8jVxo0bR1hYGA899JC/Q8lSe/fupX379nz33XepDk9t3RORFaoameoEGci1h9IJp04xtu8oajacw/zfwgktcIqi9W+GDr9bkjAml+jZsycFChTwdxhZbvv27YwZMybL5pcrK7OXfvY1PR75ij+2RwD5ufOqGF57swelq1fzd2jGmEwUHBxMx455r921yy/P2oPd3JUoTkTz2/ShXP1YUVQjqFDsKBNfasjNXTv4OzKTR6mqNQxospQvqhNyR6JQhU1z4Ye+NDq5j1bV76dhZAUGTxxCofBwf0dn8qjg4GAOHjxIsWLFLFmYLKHu+yjSu634fOT4RPHXshX07TGbsS3epVqJg0iZxnz+45PkuyhrbhszJi1lypQhKioq098NYEx6kt9wl5lybKI4GRfLqMfG8OLsBE4mFCM46UY+ersZ1H6AfJJr6+hNDhIUFJSpbxkzxl98ukcVkdYi8qeIbBGRQakMLyAi77vDfxORCt6U+927H1Ov8lCGzYCTCYF0bhHL1E9egDqdwZKEMcZkKp89RyEiAcBmoAUQBSwD7lPVDR7j9ALqqWoPEbkXuF1V26VaoKtY2MV6KLYnADVLxTB1/PU0uauNT76DMcbkFtn1OYpGwBZV3aqqp4D3gLYpxmkLzHY/fwTcIBnU+kXH5iM4KJ4Xegaw+u+RliSMMcbHfHlGcRfQWlUfcrs7Aleoam+Pcda540S53X+74xxIUVY3oJvbWQdY55Ogc57iwIEMx8obbFmcYcviDFsWZ1RX1bDzmTBHVGar6jRgGoCILD/f06fcxpbFGbYszrBlcYYtizNExPu2j1Lw5aWnnUBZj+4ybr9UxxGRQCAcOOjDmIwxxpwjXyaKZUBVEakoIvmBe4EFKcZZADzgfr4L+F5zWiuFxhiTy/ns0pOqJohIb+BrIACYqarrRWQ4zrtbFwAzgLdFZAtwCCeZZGSar2LOgWxZnGHL4gxbFmfYsjjjvJdFjmtm3BhjTNayp9OMMcakyxKFMcaYdGXbROGr5j9yIi+WRT8R2SAia0TkOxEp7484s0JGy8JjvDtFREUk194a6c2yEJF73HVjvYi8m9UxZhUvtpFyIrJIRFa528lN/ojT10Rkpojsc59RS224iMh4dzmtEZFLvSpYVbPdH07l999AJSA/8AdQK8U4vYCp7ud7gff9Hbcfl0VToJD7uWdeXhbueGHAYmApEOnvuP24XlQFVgFF3O6L/B23H5fFNKCn+7kWsM3fcftoWTQBLgXWpTH8JuBLQIArgd+8KTe7nlH4pPmPHCrDZaGqi1T1mNu5FOeZldzIm/UC4HngJeBEVgaXxbxZFg8Dk1Q1GkBV92VxjFnFm2WhQGH3cziwKwvjyzKquhjnDtK0tAXeUsdSIEJESmVUbnZNFKWBHR7dUW6/VMdR1QQgBiiWJdFlLW+WhaeuOEcMuVGGy8I9lS6rqp9nZWB+4M16UQ2oJiK/iMhSEWmdZdFlLW+WxTDgfhGJAr4AHs2a0LKdc92fADmkCQ/jHRG5H4gErvN3LP4gIvmAscCDfg4luwjEufx0Pc5Z5mIRqauqh/0ZlJ/cB8xS1TEichXO81t1VDXJ34HlBNn1jMKa/zjDm2WBiDQHngHaqOrJLIotq2W0LMJwGo38QUS24VyDXZBLK7S9WS+igAWqGq+q/+A0+181i+LLSt4si67ABwCq+isQjNNgYF7j1f4kpeyaKKz5jzMyXBYi0hB4HSdJ5Nbr0JDBslDVGFUtrqoVVLUCTn1NG1U978bQsjFvtpH5OGcTiEhxnEtRW7MwxqzizbLYDtwAICI1cRJFXnxH7QKgk3v305VAjKruzmiibHnpSX3X/EeO4+WyeAUIBT506/O3q2que1GHl8siT/ByWXwNtBSRDUAiMEBVc91Zt5fLoj8wXUT64lRsP5gbDyxFZC7OwUFxtz5mKBAEoKpTcepnbgK2AMeAzl6VmwuXlTHGmEyUXS89GWOMySYsURhjjEmXJQpjjDHpskRhjDEmXZYojDHGpMsShcmWRCRRRFZ7/FVIZ9zYTJjfLBH5x53XSvfp3XMt4w0RqeV+fjrFsCUXGqNbTvJyWScin4pIRAbjN8itLaWarGO3x5psSURiVTU0s8dNp4xZwGeq+pGItARGq2q9CyjvgmPKqFwRmQ1sVtWR6Yz/IE4Lur0zOxaTd9gZhckRRCTUfdfGShFZKyL/aTVWREqJyGKPI+5r3f4tReRXd9oPRSSjHfhioIo7bT+3rHUi8rjbL0REPheRP9z+7dz+P4hIpIiMAgq6cbzjDot1/78nIjd7xDxLRO4SkQAReUVElrnvCejuxWL5FbdBNxFp5H7HVSKyRESqu08pDwfaubG0c2OfKSK/u+Om1vquMWfzd/vp9md/qf3hPEm82v2bh9OKQGF3WHGcJ0uTz4hj3f/9gWfczwE4bT8Vx9nxh7j9nwSeTWV+s4C73M93A78BlwFrgRCcJ9/XAw2BO4HpHtOGu/9/wH3/RXJMHuMkx3g7MNv9nB+nJc+CQDdgsNu/ALAcqJhKnLEe3+9DoLXbXRgIdD83Bz52Pz8ITPSY/gXgfvdzBE77TyH+/r3tL3v/ZcsmPIwBjqtqg+QOEQkCXhCRJkASzpF0SWCPxzTLgJnuuPNVdbWIXIfzoppf3OZN8uMciafmFREZjNMGUFectoHmqWqcG8P/gGuBr4AxIvISzuWqn87he30JvCYiBYDWwGJVPe5e7qonIne544XjNOD3T4rpC4rIavf7bwQWeow/W0Sq4jRREZTG/FsCbUTkCbc7GCjnlmVMqixRmJyiA1ACuExV48VpHTbYcwRVXewmkpuBWSIyFogGFqrqfV7MY4CqfpTcISI3pDaSqm4W570XNwEjROQ7VR3uzZdQ1RMi8gPQCmiH85IdcN449qiqfp1BEcdVtYGIFMJp2+gRYDzOy5oWqertbsX/D2lML8CdqvqnN/EaA1ZHYXKOcGCfmySaAv95L7g47wrfq6rTgTdwXgm5FLhGRJLrHEJEpJqX8/wJuE1EColICM5lo59E5BLgmKrOwWmQMbX3Dse7ZzapeR+nMbbksxNwdvo9k6cRkWruPFOlzhsN+wD95Uwz+8nNRT/oMepRnEtwyb4GHhX39EqcloeNSZclCpNTvANEishaoBOwKZVxrgf+EJFVOEfrr6nqfpwd51wRWYNz2amGNzNU1ZU4dRe/49RZvKGqq4C6wO/uJaChwIhUJp8GrEmuzE7hG5yXS32rzqs7wUlsG4CVIrIOp9n4dM/43VjW4LyU52XgRfe7e063CKiVXJmNc+YR5Ma23u02Jl12e6wxxph02RmFMcaYdFmiMMYYky5LFMYYY9JlicIYY0y6LFEYY4xJlyUKY4wx6bJEYYwxJl3/B00BoFYPa25aAAAAAElFTkSuQmCC\n" + }, + "metadata": { + "needs_background": "light" + } } ], "source": [ @@ -260,11 +220,19 @@ "plt.ylim([0.0, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", - "plt.title('LogRegression Receiver operating characteristic')\n", + "plt.title('LogRegression ROC. vertex/(50,50,50) offset. seg2.')\n", "plt.legend(loc=\"lower right\")\n", + "plt.savefig('logreg.png')\n", "plt.show()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, diff --git a/docs/notebooks/pipelines/tubes_feature_extraction_demo.ipynb b/docs/notebooks/pipelines/tubes_feature_extraction_demo.ipynb index 0605c5847..d29221668 100644 --- a/docs/notebooks/pipelines/tubes_feature_extraction_demo.ipynb +++ b/docs/notebooks/pipelines/tubes_feature_extraction_demo.ipynb @@ -10,12 +10,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5-final" + "version": "3.8.3-final" }, "orig_nbformat": 2, "kernelspec": { - "name": "python38564bitbrainlitdevcondaeb92f57d956f4d988727802693853a80", - "display_name": "Python 3.8.5 64-bit ('brainlit_dev': conda)" + "name": "python_defaultSpec_1597693974877", + "display_name": "Python 3.8.3 64-bit ('brainlit3.8': conda)" } }, "nbformat": 4, @@ -34,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -62,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -72,7 +72,7 @@ "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SegmentVertexLabel0123456...17181920212223242526
020136479649651255722118361831268725162...13560295343705012628237031609312727212762014213125
120012362123751241312291123711243012255...12340124191240012399123561245112351122761238512358
221121814367751360464328655201359165388...12727269072074312495354532292612571126821357912534
321012355123931242012452123841240312289...12351123361240312386123421237112381123231239212425
422123765127741258215534135901245921999...12484126771374412489146861354012480178401351312469
\n

5 rows × 30 columns

\n
" }, "metadata": {}, - "execution_count": 8 + "execution_count": 3 } ], "source": [ @@ -91,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 19, "metadata": { "tags": [] }, @@ -116,15 +116,15 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 20, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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H37YHz+CR6tXr2bQoEH+DsOj5557joYNG9K4cWO++uqrXNssXryYtm3b0rp1ay677DK2bXOew4qNjaVFixaZ+zdudCpgrl+/nrvvvruofgTnL+eS9HVxLVRPHVRfSE1Ny7I9YsQCff31VZqWlu6T85nSbePGjf4OQcuVK5f5/Z133qkTJkxQVdVTp05p/fr19auvvlJV1ZMnT2rPnj112rRpqqq6fv16rV+/vm7atElVVVNTU3XGjBmFGltKSso5H+Omm27SNWvWFOk582PDhg3asmVLTUpK0u3bt2v9+vU1NTU1R7tGjRpl/r5Mnz5d77rrLlVVTUhIyGzz+eefa48ePTK3r7rqKv3jjz9yPW9uv3tAnBbwc9eGnlyWLNnB0KHzmTWrD5071wFg8uQefo7KlBov+Wiu4mHNu41Lx44dWbfOWVrm/fffp1OnTnTv3h2AiIgIpk2bRteuXRk2bBiTJk1izJgxNGnSBHB6JkOGDMlxzBMnTnD//fcTFxeHiDBu3Dj69etH+fLlOXHiBAAfffQRX3zxBbNnz+buu+8mLCyM1atX06lTJz755BPWrFlD5cpOVcdGjRqxbNkyAgICGDx4MLt27QLglVdeoVOnTlnOffz4cdatW0erVq0AWLFiBQ8++CBJSUmEh4fz9ttv07hxY2bPns0nn3zCiRMnSEtL47vvvuOFF17ggw8+IDk5mRtuuIGnnnoKgOuvv57du3eTlJTEgw8+yL333uv19c3N559/zoABAwgNDaVevXo0bNiQFStW0LFjxyztRIRjx44BkJCQwPnnnw9AxYoVM9ucPHkyy/zDtddey5w5c3jkkUfOKUZvlPlEsX//SUaNWsg776wFYPLknzIThTGlRVpaGosXL84cptmwYQMXX3xxljYNGjTgxIkTHDt2jF9//dWroaann36aSpUqsX79egCOHDmS53vi4+P58ccfCQwMJC0tjU8//ZR77rmHn3/+mTp16lCtWjVuu+02RowYwWWXXcauXbvo0aMHmzZtynKcuLg4mjc/swJCkyZN+P777wkKCmLRokX861//4uOPPwbgl19+Yd26dURGRvL111+zdetWVqxYgarSt29fli5dSufOnXnrrbeIjIwkMTGRdu3a0a9fP6KiorKcd8SIESxZsiTHzzVgwABGjx6dZd+ePXvo0KFD5natWrXYs2dPjve+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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2020-08-17T12:59:10.375719\n image/svg+xml\n \n \n Matplotlib v3.3.0, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEWCAYAAAB42tAoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAA7jUlEQVR4nO3dd3hU1dbA4d9KT2iBhCZdQIp0AxZEEKUIXL0qiuhF5XJFRFBBsQHqhw0VUZBqReVee0OlCIiKBSFA6IgoiEFACBAIKaSs748zCRMSJkPIZFLW+zx5nHNmzzkrx5CVvfc5e4mqYowxxpxKgL8DMMYYU7JZojDGGOORJQpjjDEeWaIwxhjjkSUKY4wxHlmiMMYY45ElCmOMMR5ZojDlgojsFJHjIhJ90v61IqIi0tC1PUdEnjjFMVREjolIkojsFpHJIhJY2LYi0k9EVrraJYjIf0Wk7kltaovIayKyR0SOishWEfk/EalwRhfEmNNgicKUJzuAgdkbItIaiDjNY7RV1YrAZcCNwG1etO0KDAD+7Xbu/sD/gBeBaOBcIA34XkSqutpUA34CwoELVbUS0AOIBBqfZtzGFJolClOevA3c7LZ9C/BWYQ6kqluB5UArL9puB34A2gGIiADPA0+o6v9UNUVV9wL/AZKAUa6PjgaOAv9S1Z2uY/2pqner6vrCxG1MYViiMOXJCqCyiLRwDQPdAMwtzIFEpCXQBVjrRdvmrrbbXbuaAfWBD9zbqWoW8BFOrwHgcuBj135j/CbI3wEYU8yyexXfAluA3af5+TUikgkcBF4F3iigbSDO8Na7wAzX/ux5kj35fGaP2/tRp2hjTLGyRGHKm7eB74BGFG7YqYNrKMmrtsBvwHXARKACzjzEAdf7tXHmTdzVdns/wbVtjF/Z0JMpV1T1D5xfzn2Aj4vhfKqq7+NMSj/i2v0LEI+TQHKISABwLbDUtWsJcLVrvzF+Yz+ApjwaAnRX1WOneD9QRMLcvkKK4JwTgdtEpJY6a/vfB4wTkRtd56iFM5RVGXjB9ZnJru03RaQBgIjUcd1q26YIYjLGK5YoTLmjqr+paqyHJg8CKW5fXxfBOTfgDHmNcW2/BwzCucMpAdiMcxtsZ1VNcLU5CFwEpAM/i8hRnN5GIicmxo3xObHCRcYYYzyxHoUxxhiPLFEYY4zxyBKFMcYYjyxRGGOM8ajUPXAXHR2tDRs29HcYxhhTqqxevfqAqlYvzGdLXaJo2LAhsbGe7mw0xhhzMhH5o7CftaEnY4wxHlmiMMYY45ElCmOMMR5ZojDGGOORJQpjjDEeWaIwxhjjkc8ShYi8LiJ/i8jGU7wvIjJVRLaLyHoR6eCrWIwxxhSeL3sUc4DeHt6/Amjq+hoKzPRhLMYYUz6lH+P4juVndAifPXCnqt+JSEMPTa4C3nIVcVkhIpEiUltVrUawMcYURuZx2L8e9sXC3lWwdxVj5tRm7e5aZ3RYfz6ZXQf402073rUvT6IQkaE4vQ7q169fLMEZY0yJlpUJB7e4EkIs7FsF+9c5ycJNq1pBTP3+/DM6ValYwkNVXwZeBoiJibFKS8aY8kUVDv/mJIXs3sLfayA9bzXfzSkdWXP4PP51Y3Oo2ZGbR7al69PpNGr0eKFP789EsRuo57Zd17XPGGPKL1VI2p0zdMS+WOcr9VDetpUbQK2OULMjyVXa88Rr6Tz3wmoCA4ULhg2iSZ1qCHCm66j6M1HMA0aIyLvA+UCizU8YY8qd5APOsJH7ENKxvXnbRdR0kkKtjlAzBmrFQEQNABYs+JU7b5jPjh2HARgy5DyiosKLLESfJQoReQfoBkSLSDzwKBAMoKqzgPlAH5wi8cnAYF/FYowxJULaEdi32tVTcCWGIzvztguNdCWDjk5CqNkRKtUFkVzNdu8+wj33LOLDDzcD0KZNTWbN6suFF9bLe8wz4Mu7ngYW8L4Cd/rq/MYY41fpKbA/LvcQ0sFfgJOmWYMioGaHnCEkasVAZJM8SSE/d945n88++4WIiGAmTOjG3XdfQFBQ0T/1UComs40xpkTLTIcDG3MPISVshKyM3O0CgqF62xNDSLU6QrXmEOD9r+KMjKycZPDMM5cTHBzI88/3pH79KkX5HeViicIYY06HZjk9g5yewir4Ow4y03K3kwCIbuXqJbi+oltDUGihTpuYmMq4cV+zbdtBFi68CRGhWbNoPvjgujP/ngpgicIYY05F1ZlDyE4K2belHj+at21kE7fJ5o5Qsz0EVyiCEJQPPtjMPfcsZM+eJAIDhbi4vbRvX/uMj+0tSxTGGJMtaY/bRLNrCCk1IW+7inVzDx/VPA/CqhZ5OL/9dpARIxawcOF2AC68sC6zZvWjTZuaRX4uTyxRGGPKp5SDuZa6YN8qSPorb7vwaLeJZtdkc4UzWxLDG5Mm/cj48ctITc0gMjKMZ565nP/8pwMBAQVPchc1SxTGmLLveJIzZOQ+hJT4e952IZWd3oF7b6FSfa/uQCpqycnppKZmMGhQGyZN6kmNGmc+jFVYliiMMWVLRqqzMJ77EFLCFvLelhoG1dvnTgpVmzqT0H6wf/8xfvklgYsvdtaze+CBznTr1pBLLmngl3jcWaIwxpReWRmQsDl3T+HABshKz90uIAii25x4eK1WR4g+97RuS/WVrCzl9dfXcv/9iwkKCmDr1hFUqxZOaGhQiUgSYInCGFNaaBYc+jX3vMLfayEj5aSGAlEt3Za66Og8uxAU5pewPdm48W+GDfuCH35wFtLu0eNskpPTqVat6JbfKAqWKIwxJY8qHN2Ve/2jfashLTFv2ypn504KNTtASKXij/k0HDt2nAkTvmXy5BVkZGRRs2YFXnyxNwMGnIv4YT6kIJYojDH+d2xf7iW0966ClP1521U868QyF9nJITyq+OM9Q/37f8DChdsRgeHDY3jyycuIjCx5PZ5sliiMMcUr9bArIcSemGw++mfedmHVTlottaOTKMqABx7ozL59Scyc2Zfzz6/r73AKZInCGOM76cdg39oTK6XuW+XMM5wsuOKJ21Kzk0KVRn65LbWoZWRk8dJLP7Nz52GmTLkCgG7dGhIbO9Qvz0QUhiUKY0zRyK7X7D6ElLDJmYR2FxgKNdrlfoCtajMICPRL2L60cuVubr/9C+LinPoSQ4eex7nnOjUkSkuSAEsUxpjC8LJeMxKYe7XUmjHOQnmBIf6Ju5gcPpzKww8vZdasWFShQYMqTJvWJydJlDaWKIwxnuWq1+xKDKeo10zVZrkfYKveFoIjij9mP3r33Y3cc89C9u07RlBQAPfeeyHjx19ChQqlNzlaojDGnFDIes05t6WG+q4mQmnx1Ve/sW/fMTp3rsfMmX1p3bp4F/DzBUsUxpRnueo1uxJDQfWas4eQIqoXf7wlUFpaBrt3H+Xss53VY599tgddutTnllvalap5CE8sURhTXhSqXrMrKeRTr9nA11/v4I47viQgQFi3bhghIYFER0cweHB7f4dWpCxRGFMWFbpec0eIbGxJoQD79iVx332LmTt3PQDNm0cTH38kp1dR1liiMKa0y1OveZWzrZm52+Vbr7lFmbwt1VeyspRXXlnNgw8u5fDhVMLCghg3rgtjxnQmJKTsXkdLFMaUJn6q12wcV1/9HvPm/QJAr16NmT69D40bV/NzVL5nicKYkiq/es37VkN6Ut62VZu6LYpXdPWaTW7XXNOclSt3M2VKb667rmWJXMDPFyxRGFNSeFuvuVK9kyabfVOv2cC8eb8QH3+E4cM7AnDzzW255poWVKpUvnpmliiM8Qev6zVXz73+UTHVay7vdu1K5K67FvDZZ78QGhpI795NOPvsqohIuUsSYInCGN87fhT2rcmdGE5Vr7lWTO7egp/qNZdX6emZTJ36M48++g3HjqVTqVIITzzRnQYNyveDhJYojClKGanOmkfuS2jnW685HGq0z50U/Fiv2cCKFfHcfvsXrF+/D4DrrmvJCy/0ok6dyn6OzP8sURhTWFkZcGBT7p6Cx3rNbkNIJaReszlh/PhlrF+/j0aNIpk2rQ99+jT1d0glhv2kGuON7HrN7ktoF1iv2TWnUELrNZd3qsrRo8epXNmZc5g27QreemsdY8deQkREsJ+jK1ksURhzssLUa87uLZSCes0GfvnlAMOHz0cEFi8ehIjQrFk0Tz55mb9DK5EsURhz2vWaO56YdC6F9ZrLs9TUDJ5+ejkTJ/7A8eOZREWFs3PnYRo1stuLPbFEYcqXnHrNbomhwHrNrsRQRuo1l1eLF//G8OHz2b79IAD//nc7nn22B1FR5ateRmH4NFGISG9gChAIvKqqE096vz7wJhDpavOgqs73ZUymHClMvebsIaQyUq/ZOHMRQ4bM44034gBo2bI6s2b1pUuXBv4NrBTxWaIQkUBgOtADiAdWicg8Vd3s1mwc8L6qzhSRlsB8oKGvYjJlmHu95uzeQjmv12wcIkLDhpGEhwfxyCNdGT36wjK9gJ8v+LJH0QnYrqq/A4jIu8BVgHuiUCD7JuUqQD6Pphpzklz1ml1Jwat6za7bUst4vWYDcXF72bPnKFdc4dzi+sADnRk0qI3NRRSSLxNFHcB98DceOP+kNo8BX4nISKACcHl+BxKRocBQgPr16xd5oKYEO6N6ze0gOLzYQzb+c/RoGo8++g1TpvxMVFQ4W7eOoFq1cEJDgyxJnAF/T2YPBOao6vMiciHwtoi0Us09XqCqLwMvA8TExGg+xzFlwcn1mrN7C2mH87a1es3Gjary6adbueuuhcTHHyEgQLjxxtYEB9uT7kXBl4liN1DPbbuua5+7IUBvAFX9SUTCgGjgbx/GZUoKq9dsisAffxxmxIgFfPHFNgBiYs5i9ux+dOhQ28+RlR2+TBSrgKYi0ggnQdwA3HhSm13AZcAcEWkBhAH53MBuSr3C1muu1REq1rE7kEy+VJVrr32f1av3ULlyKE891Z1hw2IIDLSeRFHyWaJQ1QwRGQEswrn19XVV3SQiE4BYVZ0H3Au8IiKjcCa2b1VVG1oq7U6u17x3FRz6JW+7oAjXbakxVq/ZnJasLCUgQBARJk3qyaxZsbzwQi9q17an4n1BStvv5ZiYGI2NjfV3GCabt/WaA0OcO5DcewtWr9mcpoSEZB58cAkAr7xypZ+jKV1EZLWqxhTms/6ezDalSVYmHNrmZb3m1rmTgtVrNmdAVXnrrXXcd99iDhxIJiQkkEcf7UbdurYEeHGwRGHyd9r1mjueGEKyes2mCG3Zsp877viSb7/9A4Bu3Royc2ZfSxLFyBKFcST9lbvYjqd6ze51Faxes/ERVeWRR5bxzDM/kJ6eRXR0BM8/35NBg9ogNo9VrCxRlEcpCa4F8WJPDCF5Va+5I1SoWfzxmnJJRNi9+yjp6VncdlsHJk68nGrV7AFKf7BEUdaddr1m1xCS1Ws2fvDXX0c5cCCZNm2cP0iefbYHQ4a0p3NnW5HBnyxRlCWnW6/Z/QE2q9ds/CgzM4uZM2MZO/Zr6tSpRFzcMEJCAomOjiA62pKEv1miKK2y6zW711UoqF5zdlKwes2mBFmzZg+33/4FsbHO8OcllzTgyJE0oqOtTkRJYb8tSgOr12zKoCNH0hg//mumTVtFVpZSt25lpk7tzT//2dwmq0sYrxOFiESoarIvgzGcVK/ZlRi8qddcq6MznGT1mk0poKpccskbrFu3j8BAYfToC3jssW5UqmTP2pREBSYKEbkIeBWoCNQXkbbA7ao63NfBlQvZ9ZrdewsF1mt23ZZq9ZpNKSUijBp1ATNmxDJ7dj/atavl75CMBwUu4SEiPwP9gXmq2t61b6OqtiqG+PIo1Ut4WL1mU04dP57J5Mk/ERgojBnTGXB6FVlZagv4FROfL+Ghqn+eNGaYeaq2xiVXvWZXYvCmXnOtjlC5od2WasqM5cv/YNiwL9m8eT+hoYHcfHNbatasiIgQGGg/56WBN4niT9fwk4pIMHA3sMW3YZUyha7X3BGqnmML45ky6cCBZO6/fzFvvBEHQNOm1Zgxoy81a1b0b2DmtHmTKIYBU3BKm+4GvgLK7/zEadVrbnfi4bWaHSG6FQQG+yVsY4qLqjJnThxjxiwmISGFkJBAHnroYh588GLCwuxGy9LIm/9rzVT1JvcdItIZ+ME3IZUgeeo1r3Kecs7I5+avas1zL3Vh9ZpNOTZ37gYSElLo3r0RM2b0oVmzaH+HZM6AN4niJaCDF/tKt9Oq19wwd7GdmudBqK1kacqv5OR0EhNTqV27EiLCjBl9WLXqL266qbU9E1EGnDJRiMiFwEVAdREZ7fZWZZyKdaVb8v7c6x+dql5zhVq51z+yes3G5LJgwa/ceed8zj67KosXD0JEaNYs2noRZYinHkUIzrMTQYD7U1xHcG6XLT3SEp0hI/chpCN/5G0XGpl3tVSr12xMvnbvPsI99yziww83A1CpUigJCSm29EYZdMpEoarfAt+KyBxVzee3agnlbb3m4ApQo0PuxGD1mo0pUGZmFtOnr2LcuK85evQ4FSoEM2HCpdx11/kEBdkzEWWRN3MUySLyHHAukLNokKp291lU3spMdxbCcx9C8liv2W0Iyeo1G3PasrKUrl3n8MMPzoOi//xnc6ZM6U39+lX8HJnxJW8SxX+B94B+OLfK3gLks8ZEMUlJgKUjC67XnGu1VKvXbExRCAgQevZszK5diUyb1ocrr2zm75BMMfBmCY/VqnqeiKxX1TaufatUtWOxRHiSmHqisfe47cip1+xKClav2Zgio6q8//4mgoICuPbalgCkpWWQnp5FxYohfo7OnA5fL+GRXeBgj4j0Bf4CqhXmZEXmgkegbher12yMD/3220GGD5/PV1/9RvXqEXTv3oiqVcMJDQ0i1Dro5Yo3ieIJEakC3Ivz/ERl4B5fBlWgDnfZyqnG+EhaWgbPPfcjTz65nNTUDKpWDePJJ7tTpYrVNSmvCkwUqvqF62UicCnkPJltjCljvvlmJ3fc8SVbtx4AYNCgNkya1JMaNWw4tzzz9MBdIHA9zhpPC1V1o4j0Ax4GwoH2xROiMaY4ZGZmMXy4kySaNYti5sy+XHppI3+HZUoATz2K14B6wEpgqoj8BcQAD6rqp8UQmzHGx7KylNTUDCIiggkMDGDmzL58990f3H9/Z0JDbQE/4/D0kxADtFHVLBEJA/YCjVU1oXhCM8b40oYN+xg27EuaN4/itdeuAqBr14Z07drQv4GZEsdTojiu6hRUUNVUEfndkoQxpd+xY8eZMOFbJk9eQUZGFjt2HOLQoRSqVrXVjk3+PCWK5iKy3vVagMaubQE0+5kKY0zp8fnnvzBixAJ27UpEBIYPj+HJJy8jMtLuaDKn5ilRtCi2KIwxPpWRkcWAAR/y8cdOccp27Woxe3Y/OnWq4+fITGngaVHA0rMQoDHGo6CgAKpUCaVixRAef/xSRozoZAv4Ga8VuITHGR1cpDdOGdVA4FVVnZhPm+uBxwAF1qnqjZ6OGVNPNHbbAXvgzpgC/PxzPADnn18XgISEZFJSMqhb14pslUe+XsKjUFzPYUwHegDxwCoRmaeqm93aNAUeAjqr6iERqeGreIwpLw4fTuWhh5Ywe/ZqmjePJi5uGCEhgURFWZ0IUzheJQoRCQfqq2o+hR1OqROwXVV/dx3jXeAqYLNbm9uA6ap6CEBV/z6N4xtj3Kgq77yzkdGjF7Fv3zGCggK48spmZGZmURaKUhr/KTBRiMg/gEk4Fe8aiUg7YIKqXlnAR+sAf7ptxwPnn9TmHNc5fsD5SX5MVRd6F7oxJtuvvyYwfPh8liz5HYDOnesxa1Y/WrWyTro5c970KB7D6R18A6CqcSJSVM/1BwFNgW5AXeA7EWmtqofdG4nIUGAowHl1i+jMxpQR6emZdO/+FvHxR6hWLZxnn72cwYPbExBg1RpN0fBqmXFVTZTcJUK9mQHfjbMESLa6rn3u4oGfVTUd2CEi23ASx6pcJ1N9GXgZnMlsL85tTJmnqogIwcGBPPlkd5Yt28mzz15O9eq2gJ8pWt7cH7dJRG4EAkWkqYi8BPzoxedWAU1FpJGIhAA3APNOavMpTm8CEYnGGYr63cvYjSmX9u1LYtCgT3jiie9y9t18c1veeOMqSxLGJ7xJFCNx6mWnAf/DWW78noI+pKoZwAhgEbAFeF9VN4nIBBHJnt9YBCSIyGZgGTDGlgkxJn9ZWcrs2bE0bz6duXPXM3nyCo4eTSv4g8acIW9KoXZQ1TXFFE+B7DkKUx6tW7eXYcO+ZMUK59mI3r2bMH16H84+2yo8Gu/4+jmK50WkFvAh8J6qbizMiYwxpy89PZOHHlrKiy+uIDNTqV27IlOm9KZ//5acNG9ojM8UOPSkqpfiVLbbD8wWkQ0iMs7nkRljCAoKYO3avWRlKSNHdmLLlju57rpzLUmYYnVaS3iISGvgfmCAqob4LCoPbOjJlHW7diWSmZlFo0bOsNKvvyaQmJhGTMxZfo7MlGZnMvRUYI9CRFqIyGMisgHIvuPJnmYwpoilp2cyadKPtGgxndtu+5zsP+KaNo2yJGH8yps5iteB94BeqvqXj+Mxplz66ac/GTbsS9av3wdAtWrhJCenU6GCXzruxuRSYKJQ1QuLIxBjyqNDh1J48MElvPyyc2Nho0aRTJ/ehyuuaOrnyIw54ZSJQkTeV9XrXUNO7hMZVuHOmCKQlpZBu3az2bUrkeDgAMaMuYixYy8hIiLY36EZk4unHsXdrv/2K45AjClvQkODGDKkPUuX7mDmzL60bFnd3yEZky9vHrh7RlUfKGhfcbG7nkxplZqawdNPL6dZs2huvLE14JQoDQwUu93V+JxP73rCKTx0sisKczJjyqvFi3+jdeuZTJjwHaNGLSIlJR1wnpOwJGFKOk9zFHcAw4GzRWS921uVgB98HZgxZcHevUmMHr2Id95xFjQ499zqzJrVj/Bwm4cwpYenOYr/AQuAp4EH3fYfVdWDPo3KmFIuMzOL2bNX8/DDS0lMTCM8PIhHH+3KqFEXEhJi1eZM6eIpUaiq7hSRO09+Q0SqWbIw5tQyM5WXXlpJYmIaffo0Zdq0K3KetDamtCmoR9EPWI1ze6z7QKoCZ/swLmNKnaNH08jMVCIjwwgJCeSVV/7Bvn1JXHNNC5uHMKXaKROFqvZz/beoyp4aUyapKp98spW77lpAr16Nee21qwC4+OL6fo7MmKLhzVpPnUWkguv1v0RksojYvwBjgJ07D3Plle9y7bXvs3v3UTZu3E9qaoa/wzKmSHlze+xMIFlE2gL3Ar8Bb/s0KmNKuPT0TJ555ntatpzOF19so3LlUKZNu4Iff/w3YWHeLKFmTOnhzU90hqqqiFwFTFPV10RkiK8DM6akSk5O54ILXmXDhr8BuOGGVkye3JPatSv5OTJjfMObRHFURB4CBgFdRCQAsJvATbkVERFMTMxZJCenM2NGX3r2bOzvkIzxKW8SxQDgRuDfqrrXNT/xnG/DMqbkUFXeemsdjRtXy5mgfuGFXoSEBNqDc6Zc8KYU6l7gv0AVEekHpKrqWz6PzJgSYMuW/Vx66ZvceutnDB36OcePZwJQpUqYJQlTbnhz19P1wErgOuB64GcR6e/rwIzxp5SUdMaN+5q2bWfx7bd/UL16BA89dDHBwd7c/2FM2eLN0NNYoKOq/g0gItWBJcCHvgzMGH9ZuHA7d945n99/PwTAbbd1YOLEy6lWLdzPkRnjH94kioDsJOGSgHe31RpT6iQlHWfQoE84cCCZVq1qMGtWXzp3tseGTPnmTaJYKCKLgHdc2wOA+b4LyZjilZmZRVaWEhwcSMWKIUyZ0pv4+COMGnUBwcG2gJ8xBRYuAhCRa4CLXZvLVfUTn0blgRUuMkVp9eq/uP32L7jqqmaMH9/V3+EY4zNnUrjIUz2KpsAkoDGwAbhPVXcXLkRjSpYjR9IYP/5rpk1bRVaWcuRIGg8+eLH1IIzJh6e5hteBL4BrcVaQfalYIjLGh1SVDz7YRPPm05g6dSUiMHr0BaxZc7slCWNOwdMcRSVVfcX1+hcRWVMcARnjK0ePpjFgwIcsWLAdgPPPr8OsWf1o166WnyMzpmTzlCjCRKQ9J+pQhLtvq6olDlOqVKwYQlpaJlWqhDJx4uUMHXoeAQFWJ8KYgpxyMltElnn4nKpqd9+E5JlNZpvT8d13f1C7dkWaNnV+Xv744zBhYUHUrFnRz5EZU7x8MpmtqpcWPiRj/OvAgWTuv38xb7wRx2WXNWLx4kGICA0aRPo7NGNKHVs435QpWVnKnDlxjBmzmIMHUwgJCaRLl/pkZipBQTbMZExh+PQJaxHpLSK/iMh2EXnQQ7trRURFpFDdImMANm36m27d5jBkyDwOHkzhsssasWHDHTz6aDeCgmwxAWMKy2c9ChEJBKYDPYB4YJWIzFPVzSe1qwTcDfzsq1hM2ZeYmMoFF7xGUtJxatSowOTJPbnxxtaIWC/CmDNVYKIQ51/aTcDZqjrBVY+ilqquLOCjnYDtqvq76zjvAlcBm09q9zjwDDDmdIM3RlUREapUCeOBBzqze/cRnnrqMqpWtQX8jCkq3vTHZwAXAgNd20dxegoFqQP86bYd79qXQ0Q6APVU9UtPBxKRoSISKyKxXpzXlAO7dx+hf//3mTt3fc6+sWO7MHNmP0sSxhQxbxLF+ap6J5AKoKqHgJAzPbGrpOpk4N6C2qrqy6oaU9hbu0zZkZGRxZQpK2jefDoffbSFRx/9hszMLAAbZjLGR7yZo0h3zTco5NSjyPLic7uBem7bdV37slUCWgHfuP6B1wLmiciVqmo9B5PHqlW7GTbsS9as2QPAP//ZnKlTexMYaBPVxviSN4liKvAJUENEngT6A+O8+NwqoKmINMJJEDfg1N4GQFUTgejsbRH5BmfhQUsSJpdjx47zwANLmDFjFapQv34VXnrpCq68spm/QzOmXCgwUajqf0VkNXAZzvId/1TVLV58LkNERgCLgEDgdVXdJCITgFhVnXeGsZtyIigogCVLficgQBg9+kIefbQrFSqc8einMcZLBdajcN3llIeq7vJJRAWwJTzKh99+O0hkZBhRURGAM+wUFhZE69Y1/RyZMaWTT5bwcPMlzvyEAGFAI+AX4NzCnNAYT9LSMnjuuR958snl3HRTa1599UoAOnasU8AnjTG+4s3QU2v3bdctrcN9FpEpt775Zid33PElW7ceAJw7nDIzs2yy2hg/O+0ns1V1jYic74tgTPn099/HGDNmMW+9tQ6AZs2imDmzL5de2sjPkRljwLsns0e7bQYAHYC/fBaRKVcOHEimRYvpHDyYQmhoIGPHduH++zsTGmrrVRpTUnjzr7GS2+sMnDmLj3wTjilvoqMjuOqqZsTHH2HGjL40aVLN3yEZY07iMVG4HrSrpKr3FVM8pow7duw4EyZ8S9++53DJJQ0AmDGjL6GhgfZktTEl1CkThYgEuZ6F6FycAZmy6/PPf2HEiAXs2pXIl1/+yvr1dxAQIISF2TCTMSWZp3+hK3HmI+JEZB7wAXAs+01V/djHsZky4s8/E7n77oV88slWANq3r8Xs2f2sXrUxpYQ3f8qFAQlAd048T6GAJQrjUUZGFlOn/swjjyzj2LF0KlYM4YknLuXOOztZISFjShFPiaKG646njZxIENk8P85tDHDkSBpPP/09x46lc+21LXjxxd7UrVvZ32EZY06Tp0QRCFQkd4LIZonC5Ovw4VTCw4MIDQ2iWrVwZs/uR2hoIH37nuPv0IwxheQpUexR1QnFFokp1VSVd97ZyKhRixgxoiPjx3cF4JprWvg5MmPMmfKUKGym0Xhl27YEhg//kqVLdwDw3Xe7ckqUGmNKP0+J4rJii8KUSqmpGTzzzPc89dT3HD+eSbVq4Tz3XA9uvbWdJQljypBTJgpVPVicgZjSZe/eJC655A1+/dX5Mbn11nY891wPoqMj/ByZMaao2ZNOplBq1qxAvXpVCAoKYObMvnTt2tDfIRljfMQShfFKVpbyyiurufTSRpxzThQiwv/+dw1Vq4YTEhLo7/CMMT5kTz2ZAq1bt5fOnV9n2LAvGT78S7KrItasWdGShDHlgPUozCklJR3nsce+4cUXV5CZqZx1ViWGDStUJUVjTClmicLk69NPtzJy5ALi448QECCMHNmJJ57oTuXKof4OzRhTzCxRmDx27z7CDTd8SFpaJuedV5tZs/oRE3OWv8MyxviJJQoDQHp6JkFBAYgIdepU5sknuxMSEsjw4R2tZrUx5Zz9BjD8+OOfnHfey8yduz5n3733XsTIkedbkjDGWKIozw4eTOH22z+nc+fX2bDhb2bMiM25o8kYY7LZ0FM5pKrMnbuee+/9iv37kwkODuD++zszdmwXW3rDGJOHJYpyZt++JAYO/Ihly3YC0LVrA2bO7EuLFtX9G5gxpsSyRFHOREaGsWdPEtHREUya1IObb25rvQhjjEeWKMqBxYt/o0OH2kRFRRAaGsQHH1xH7doViYqyBfyMMQWzyewybM+eowwc+BE9e87lgQeW5Oxv1aqGJQljjNesR1EGZWZmMXv2ah56aClHjqQRHh5Es2ZRVkzIGFMolijKmDVr9jBs2BesWvUXAH37NmXatD40bBjp38CMMaWWJYoyZOfOw3Tq9AqZmUqdOpWYOvUKrr66ufUijDFnxKeJQkR6A1OAQOBVVZ140vujgf8AGcB+4N+q+ocvYyrLGjaMZPDgdlSqFMr//V83KlWyBfyMMWfOZ5PZIhIITAeuAFoCA0Wk5UnN1gIxqtoG+BB41lfxlEU7dx7mH/94h2+/3Zmz7+WX/8Hkyb0sSRhjiowvexSdgO2q+juAiLwLXAVszm6gqsvc2q8A/uXDeMqM9PRMJk/+if/7v29JScngwIFkfvppCIANMxljipwvb4+tA/zpth3v2ncqQ4AF+b0hIkNFJFZEYoswvlLp++930b79bB58cCkpKRnccEMrPv74en+HZYwpw0rEZLaI/AuIAbrm976qvgy8DBBTT8rlqnWHDqUwZsxiXnttLQCNG1dlxoy+9OzZ2M+RGWPKOl8mit1APbftuq59uYjI5cBYoKuqpvkwnlItK0v57LNfCA4O4MEHL+ahhy4mPDzY32EZY8oBXyaKVUBTEWmEkyBuAG50byAi7YHZQG9V/duHsZRKW7ceoFGjSEJDg4iKiuC//72G+vWr0Lx5tL9DM8aUIz6bo1DVDGAEsAjYAryvqptEZIKIXOlq9hxQEfhAROJEZJ6v4ilNkpPTGTt2KW3azOTZZ3/I2d+zZ2NLEsaYYufTOQpVnQ/MP2nfI26vL/fl+UujhQu3M3z4l+zYcRiAAweS/RuQMabcKxGT2Qb++uso99yzkA8+cO4ebt26BrNm9eOii+oV8EljjPEtSxQlwLZtCcTEvMzRo8eJiAjmsce6cs89FxAcHOjv0IwxxhJFSdC0aTU6dqxDhQrBvPTSFTRoEOnvkIwxJoclCj84ciSNRx5ZxvDhHTnnnChEhHnzbqBChRB/h2aMMXlYoihGqsqHH27m7rsXsmdPElu3HmDhQmfVEksSxpiSyhJFMfn990OMGDGfBQu2A3DBBXV55hm76csYU/JZovCx48czmTTpRx5//DtSUzOIjAxj4sTLuO228wgIsAX8jDElnyUKH/vzz0QmTPiWtLRMbrqpNc8/35OaNSv6OyxjjPGaJQofOHQohcjIMESExo2rMWVKb5o0qcZll53t79CMMea0+XKZ8XInK0t5/fW1NGnyEnPnrs/Zf/vtMZYkjDGlliWKIrJp09906zaHIUPmcfBgSs6ktTHGlHY29HSGkpPTefzxb5k06ScyMrKoUaMCL7zQi4EDW/k7NGOMKRKWKM7Atm0J9Oo1l507DyMCw4adx1NPXUbVquH+Ds0YY4qMJYoz0KBBFcLCgmjbtiazZvXjggvq+jskU8Kkp6cTHx9Pamqqv0Mx5URYWBh169YlOLjoCptZojgNGRlZzJoVy8CBrYiKiiA0NIiFC2+iTp3KBAXZdI/JKz4+nkqVKtGwYUNE7LkZ41uqSkJCAvHx8TRq1KjIjmu/3by0cuVuOnV6hZEjF/DAA0ty9jdoEGlJwpxSamoqUVFRliRMsRARoqKiirwHaz2KAiQmpjJ27NfMmLEKVahfvwpXXdXM32GZUsSShClOvvh5s0RxCqrKe+9tYtSoRezdm0RQUACjR1/AI490tQX8jDHlio2ZnMK6dfsYOPAj9u5N4qKL6rFmzVCeeaaHJQlT6gQGBtKuXTtatWrFP/7xDw4fPpzz3qZNm+jevTvNmjWjadOmPP7446hqzvsLFiwgJiaGli1b0r59e+69914/fAeerV27liFDhvg7jFNKS0tjwIABNGnShPPPP5+dO3fm2+6FF17g3HPPpVWrVgwcODBn+GjIkCG0bduWNm3a0L9/f5KSkgCYNm0ar7/+evF8E6paqr7Oq4tq8gH1hYyMzFzbo0Yt1FdeWa2ZmVk+OZ8p+zZv3uzvELRChQo5r2+++WZ94oknVFU1OTlZzz77bF20aJGqqh47dkx79+6t06ZNU1XVDRs26Nlnn61btmxRVdWMjAydMWNGkcaWnp5+xsfo37+/xsXFFes5T8f06dP19ttvV1XVd955R6+//vo8beLj47Vhw4aanJysqqrXXXedvvHGG6qqmpiYmNNu1KhR+vTTT6uq8/+rXbt2+Z4zv587IFYL+XvXhp5cli3bwfDh85k9ux+XXNIAgMmTe/k5KlOmPO+juYp7teA2LhdeeCHr1zvLy/zvf/+jc+fO9OzZE4CIiAimTZtGt27duPPOO3n22WcZO3YszZs3B5yeyR133JHnmElJSYwcOZLY2FhEhEcffZRrr72WihUr5vz1++GHH/LFF18wZ84cbr31VsLCwli7di2dO3fm448/Ji4ujsjISACaNm3K999/T0BAAMOGDWPXrl0AvPjii3Tu3DnXuY8ePcr69etp27YtACtXruTuu+8mNTWV8PBw3njjDZo1a8acOXP4+OOPSUpKIjMzk/nz5zNy5Eg2btxIeno6jz32GFdddRU7d+5k0KBBHDt2DHD+ar/ooou8vr75+eyzz3jssccA6N+/PyNGjEBV88wlZGRkkJKSQnBwMMnJyZx11lkAVK5cGXD+qE9JScn5XEREBA0bNmTlypV06tTpjGIsSLlPFH//fYwxYxbz1lvrAJg8+aecRGFMWZKZmcnSpUtzhmk2bdrEeeedl6tN48aNSUpK4siRI2zcuNGroabHH3+cKlWqsGHDBgAOHTpU4Gfi4+P58ccfCQwMJDMzk08++YTBgwfz888/06BBA2rWrMmNN97IqFGjuPjii9m1axe9evViy5YtuY4TGxtLq1YnVkFo3rw5y5cvJygoiCVLlvDwww/z0UcfAbBmzRrWr19PtWrVePjhh+nevTuvv/46hw8fplOnTlx++eXUqFGDxYsXExYWxq+//srAgQOJjY3NE3+XLl04evRonv2TJk3i8stz15nZvXs39erVAyAoKIgqVaqQkJBAdHR0Tps6depw3333Ub9+fcLDw+nZs2dOAgcYPHgw8+fPp2XLljz//PM5+2NiYli+fLklCl/JylJee20NDzywhEOHUgkNDWTcuEsYM+bM/now5pRO4y//opSSkkK7du3YvXs3LVq0oEePHkV6/CVLlvDuu+/mbFetWrXAz1x33XUEBgYCMGDAACZMmMDgwYN59913GTBgQM5xN2/enPOZI0eOkJSURMWKJ5bp37NnD9WrV8/ZTkxM5JZbbuHXX39FREhPT895r0ePHlSrVg2Ar776innz5jFp0iTAuY15165dnHXWWYwYMYK4uDgCAwPZtm1bvvEvX768wO/xdBw6dIjPPvuMHTt2EBkZyXXXXcfcuXP517+cCphvvPEGmZmZjBw5kvfee4/BgwcDUKNGDbZu3VqkseSnXE5m79hxiC5d3mDo0C84dCiVnj0bs3HjcMaNu4TQ0HKbO00ZFR4eTlxcHH/88QeqyvTp0wFo2bIlq1evztX2999/p2LFilSuXJlzzz03z/unw31o5eT7+itUqJDz+sILL2T79u3s37+fTz/9lGuuuQaArKwsVqxYQVxcHHFxcezevTtXksj+3tyPPX78eC699FI2btzI559/nus993OqKh999FHOsXft2kWLFi144YUXqFmzJuvWrSM2Npbjx4/n+7116dKFdu3a5flasmRJnrZ16tThzz//BJzhpcTERKKionK1WbJkCY0aNaJ69eoEBwdzzTXX8OOPP+ZqExgYyA033JDTQ8q+ruHhvl8yqFwmisqVQ9m2LYFatSry7rvXsnDhTTRpUs3fYRnjUxEREUydOpXnn3+ejIwMbrrpJr7//vucX24pKSncdddd3H///QCMGTOGp556Kuev6qysLGbNmpXnuD169MhJPnBi6KlmzZps2bKFrKwsPvnkk1PGJSJcffXVjB49mhYtWuT8Eu3ZsycvvfRSTru4uLg8n23RogXbt59YqTkxMZE6deoAMGfOnFOes1evXrz00ks5d3itXbs25/O1a9cmICCAt99+m8zMzHw/v3z58pwk4/518rATwJVXXsmbb74JOHM13bt3zzM/Ub9+fVasWEFycjKqytKlS2nRogWqmvP9qSrz5s3LmTMC2LZtW66hN18pN4li0aLtpKVlABAVFcG8eTewdeudDBjQyh6IMuVG+/btadOmDe+88w7h4eF89tlnPPHEEzRr1ozWrVvTsWNHRowYAUCbNm148cUXGThwIC1atKBVq1b8/vvveY45btw4Dh06RKtW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\n" }, "metadata": { "needs_background": "light" @@ -153,54 +153,60 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 11, "metadata": {}, "outputs": [ { - "output_type": "error", - "ename": "NameError", - "evalue": "name 'X' is not defined", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\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 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinear_model\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLogisticRegression\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mX_center\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m171\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_test\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain_test_split\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_center\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstratify\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mclf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mLogisticRegression\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrandom_state\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0my_score\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'X' is not defined" - ] + "output_type": "execute_result", + "data": { + "text/plain": "0 13823\n1 12363\n2 12628\n3 12399\n4 12537\n5 12336\n6 12485\n7 12241\n8 12774\n9 12279\n0 12893\n1 12316\n2 17840\n3 12328\n4 13947\n5 12335\n6 13570\n7 12210\n8 12388\n9 12195\nName: 14, dtype: int64" + }, + "metadata": {}, + "execution_count": 11 } ], + "source": [ + "X.iloc[:, 14]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", - "X_center = X[:, 171].reshape(-1,1)\n", - "X_train, X_test, y_train, y_test = train_test_split(X_center, y, stratify=y, random_state=1)\n", - "clf = LogisticRegression(random_state=0).fit(X_train, y_train)\n", - "y_score = clf.predict(X_test)" + "X_center = X.iloc[:, 14].values.reshape(-1,1)\n", + "Xc_train, Xc_test, yc_train, yc_test = train_test_split(X_center, y, stratify=y, random_state=1)\n", + "clf = LogisticRegression(random_state=0).fit(Xc_train, yc_train)\n", + "yc_score = clf.predict(Xc_test)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 23, "metadata": {}, "outputs": [ { - "output_type": "error", - "ename": "NameError", - "evalue": "name 'y_test' is not defined", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mroc_curve\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_test\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_score\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mroc_auc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mauc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfpr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtpr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mlw\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'y_test' is not defined" - ] + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2020-08-17T13:00:20.201086\n image/svg+xml\n \n \n Matplotlib v3.3.0, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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21egEsUPU/9Pq5V8Wn/qXFZ1KKpft1FN2BGQdZm84ZR/1qEE5pUB30QxduxY7dy5s6qqvv3229q6detT5l2/fr2WLl1aVVVbt26tEydOzLD8AwcO6COPPKK1atXS2rVr67Rp005b76effqoPP/ywqqo+/PDD2rFjR23QoIE+/fTTWrZsWY2Lizsxb6VKlXT79u26c+dOvfPOOzUmJkZjYmL0l19+OW3d+/fv1ypVqpwYX7BggV5xxRVar149vfLKK/XPP/9UVdV33nlHb731Vr3++uu1UaNGevDgQW3btq1edtllWq9ePZ0xY4aqqv7777/asGFDrV+/vtavX19//fXXDLc/I82aNdP58+erqpOkihYtqikpKafNd6ZEUaVKFd26dauqqm7duvWU7e3WrZt+/PHHaa43sxNFnm+j2LlxIz0fHc1730cCUQz/rSmNej8AZa73OjRjMk1ycjLff//9idM0q1ev5tJLLz1lnooVK3Lw4EH279/PqlWr/DrVNGDAAKKioli5ciXAiVMj6YmNjWX+/PkEBQWRnJzM9OnTadu2LQsWLKBs2bKUKFGCBx54gKeffpqGDRuyadMmmjdvztq1a08pZ9GiRdSqVevEeLVq1fj5558JDg5mzpw5PP/883z22WcALFmyhBUrVlCkSBGef/55GjduzKRJk9i3bx8NGjSgSZMmXHDBBcyePZvQ0FD+/vtv7r//fhYtWnRa/Ndccw0HDhw47f2hQ4fSpEmTU97bsmULF1/sXBkZHBxMVFQUe/bsoVixYqfMJyI0a9YMEaFjx4506NABgB07dlDSvYH3wgsvZMeOHSeWiYmJ4eeff+bee+/NsM7PV55NFCnJyUzsP4pnh+4g7lAkBYKT6NMuhJ7DX4fwcK/DM7lND814ngA4fPgw9erVY8uWLVSvXp2mTZtmavlz5szho48+OjFeuHDGbXj33HMPQe6zWFq1akX//v1p27YtH330Ea1atTpR7po1a04ss3//fg4ePEhExMknQW7bto3ixYufGI+Pj+fhhx/m77//RkRITEw8Ma1p06YUKVIEgO+++46ZM2cydOhQwLmMedOmTVx00UV07dqVZcuWERQUxLp169KM/+eff85wG8/WL7/8QqlSpdi5cydNmzalWrVqNGp06kPNROSUK5ouuOACtm7dmumxpCVPJop/F/3OQw9+xPx1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\n" + }, + "metadata": { + "needs_background": "light" + } } ], "source": [ - "fpr, tpr, _ = roc_curve(y_test, y_score)\n", - "roc_auc = auc(fpr, tpr)\n", + "fpr_c, tpr_c, _ = roc_curve(yc_test, yc_score)\n", + "roc_auc_c = auc(fpr_c, tpr_c)\n", "\n", "plt.figure()\n", "lw = 2\n", - "plt.plot(fpr, tpr, color='darkorange',\n", - " lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)\n", + "plt.plot(fpr_c, tpr_c, color='darkorange',\n", + " lw=lw, label='ROC curve (area = %0.2f)' % roc_auc_c)\n", "plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", diff --git a/setup.py b/setup.py index e41a87a12..9b78ad530 100644 --- a/setup.py +++ b/setup.py @@ -28,6 +28,7 @@ "statsmodels>=0.11.1", "nibabel>=2.4.1", "nilearn>=0.5.2", + "feather-format==0.4.1", ] # Find savanna version.