From e553b6a3a93fd7cac6ca4d954731d18971eb7eb6 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 25 Feb 2021 15:46:25 +0100 Subject: [PATCH 01/24] Initial code creation. --- probatus/impute/imputation.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 probatus/impute/imputation.py diff --git a/probatus/impute/imputation.py b/probatus/impute/imputation.py new file mode 100644 index 00000000..847b3908 --- /dev/null +++ b/probatus/impute/imputation.py @@ -0,0 +1,18 @@ +# Copyright (c) 2021 ING Bank N.V. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file From 120d6e47bef91fb42579bc2465c8e56a867c7a9f Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Mon, 1 Mar 2021 17:25:15 +0100 Subject: [PATCH 02/24] Intial setup for mvi comparison. --- probatus/missing/imputation.py | 155 +++++++++++++++++++++++++++++++ tests/missing/test_imputation.py | 41 ++++++++ tests/utils/test_missing.py | 89 ++++++++++++++++++ 3 files changed, 285 insertions(+) create mode 100644 probatus/missing/imputation.py create mode 100644 tests/missing/test_imputation.py create mode 100644 tests/utils/test_missing.py diff --git a/probatus/missing/imputation.py b/probatus/missing/imputation.py new file mode 100644 index 00000000..2038f7da --- /dev/null +++ b/probatus/missing/imputation.py @@ -0,0 +1,155 @@ +# Copyright (c) 2021 ING Bank N.V. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +from probatus.utils import BaseFitComputeClass,BaseFitComputePlotClass +from sklearn.model_selection import cross_val_score +from sklearn.pipeline import make_pipeline +import numpy as np +class CompareImputationStrategies(BaseFitComputeClass): + """ + Comparison of various imputation stragegies + that can be used for imputation of missing values. + + Args : + + """ + def __init__(self,clf,strategies,scoring='roc_auc',cv=5,verbose=0): + """ + Initialise the class + + Args : + clf(model object): + Binary classification model. + + scoring (string, list of strings, probatus.utils.Scorer or list of probatus.utils.Scorers, optional): + Metrics for which the score is calculated. It can be either a name or list of names metric names and + needs to be aligned with predefined [classification scorers names in sklearn](https://scikit-learn.org/stable/modules/model_evaluation.html). + Another option is using probatus.utils.Scorer to define a custom metric. + + strategies (dictionary of sklearn.impute objects): + Dictionary containing the sklearn.impute objects. + #TODO Add more documentation. + + verbose (int, optional): + Controls verbosity of the output: + + - 0 - nether prints nor warnings are shown + - 1 - 50 - only most important warnings regarding data properties are shown (excluding SHAP warnings) + - 51 - 100 - shows most important warnings, prints of the feature removal process + - above 100 - presents all prints and all warnings (including SHAP warnings). + """ + self.clf = clf + self.scoring = scoring + self.strategies = strategies + self.cv = cv + self.verbose = verbose + self.results = {} + + def fit(self, X, y,column_names=None,class_names=None): + """ + Calculates score + + Args: + X (pd.DataFrame): + input variables. + + y (pd.Series): + target variable. + + column_names (None, or list of str, optional): + List of feature names for the dataset. If None, then column names from the X_train dataframe are used. + + class_names (None, or list of str, optional): + List of class names e.g. ['neg', 'pos']. If none, the default ['Negative Class', 'Positive Class'] are + used. + """ + #Add the No imputation to strategy. + self.strategies['No Imputation'] = None + + for strategy in self.strategies: + + if 'No Imputation' in strategy : + imputation_results = self._get_no_imputer_scores(X,y) + self.results[strategy] = imputation_results + else : + imputation_results = self.get_scores_for_imputer( + imputer = self.strategies[strategy], + X=X, + y=y) + self.results[strategy] = imputation_results + + + + def compute(self): + """ + Compute class + + """ + + def fit_compute(self): + """ + Fit & compute class + """ + + def show(self): + """ + Show the results. + """ + + for k,v in self.results.items(): + print(f'{k}: {np.mean(v)} +/- {np.std(v)}') + + def _get_no_imputer_scores(self,X,y): + """ + Calculate the results without any imputation. + Args : + X(pd.DataFrame) : Dataframe for X + y(pd.Series) : Target + """ + no_imputer_scores = cross_val_score( + self.clf, + X, + y, + scoring=self.scoring, + cv=self.cv) + + return no_imputer_scores + + def get_scores_for_imputer(self,imputer,X,y): + """ + Calculate the results with an imputer. + args : + imputer(sklearn.imputer) : The imputer object to use for imputation. + X(pd.DataFrame) : Dataframe for X + y(pd.Series) : Target + returns : + impute_scores : + + """ + + estimator = make_pipeline(imputer,self.clf) + + impute_scores = cross_val_score( + estimator, + X, + y, + scoring=self.scoring, + cv=self.cv) + + return impute_scores diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py new file mode 100644 index 00000000..d0a3c84b --- /dev/null +++ b/tests/missing/test_imputation.py @@ -0,0 +1,41 @@ +#Code to test the imputation strategies. +from probatus.missing.imputation import CompareImputationStrategies +from tests.utils.test_missing import generate_MCAR,generate_MNAR +import pandas as pd +from sklearn.datasets import make_classification +import lightgbm as lgb +import xgboost as xgb +from sklearn.experimental import enable_iterative_imputer +from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer +from feature_engine.imputation import RandomSampleImputer + +def test_imputation(): + X,y = make_classification( + n_samples=1000, + n_features=20, + class_sep = 0.3) + X_missing = generate_MCAR(pd.DataFrame(X),missing=0.3) + #Initialize the classifier + clf = lgb.LGBMClassifier() + #Create strategies for imputation. + strategies = { + 'KNN' : KNNImputer(n_neighbors=3), + 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), + 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), + 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, + sample_posterior=True), + 'Random Imputer': RandomSampleImputer() + + } + cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10) + cmp.fit(X_missing,y) + cmp.show() + + + + + + + +if __name__ == '__main__': + test_imputation() \ No newline at end of file diff --git a/tests/utils/test_missing.py b/tests/utils/test_missing.py new file mode 100644 index 00000000..4362e3b6 --- /dev/null +++ b/tests/utils/test_missing.py @@ -0,0 +1,89 @@ +import pandas as pd +import numpy as np + + +def generate_MCAR(df,missing): + """ + Generate missing values completely at random for dataframe df + + Args: + df: input dataframe where some values will be masked + missings: (float or dict) + - float ( must be a fraction between 0 and 1 - both inclusive), then it will apply this fraction of missing + values on the whole dataset. + - dict: + - keys: column names to mask values + - values: fraction of missing values for this column + + Returns: + pd.DataFrame: same as the input dataframe, but with some values masked based on the missing variable + + Examples: + + # Apply 20% missing values over all the columns + miss_rand = generate_MCAR(data, missing=0.2) + + # Use the dictionary + missing_vals = {"PAY_0":0.3,"PAY_5": 0.5} + miss_rand = generate_MCAR(data, missing=missing_vals) + + """ + + df = df.copy() + + if type(missing)==float and missing<=1 and missing>=0: + df = df.mask(np.random.random(df.shape) < missing) + elif type(missing)==dict: + for k,v in missing.items(): + df[k] = df[k].mask(np.random.random(df.shape[0]) < v) + + else: + raise ValueError("missing must be float within range [0.1] or dict") + + return df + + +def generate_MNAR(df,missing, conditions, missing_false = None): + """ + Generate missing values not at random for dataframe df + + Missing values following the strategy are generated at random when the condition is satisfied. + + A different method can be added for cases when the condition is false, using the missing_false variable. + The default value None does not do any type of inputattion when the condition is false + + Args: + df: input dataframe where some values will be masked + missings: (float or dict) + - float ( must be a fraction between 0 and 1 - both inclusive), then it will apply this fraction of missing + values on the whole dataset. + - dict: + - keys: column names to mask values + - values: fraction of missing values for this column + conditions: pd.Series (boolean): series with same index ad df with boolean values + missing_false: default None. Add missing values in case the condition False. + If None, then no masking is performed. + - float ( must be a fraction between 0 and 1 - both inclusive), then it will apply this fraction of missing + values on the whole dataset. + - dict: + - keys: column names to mask values + - values: fraction of missing values for this column + + Returns: + pd.DataFrame: same as the input dataframe, but with some values masked based on the missing variable + + + + """ + + df_true = df[conditions] + df_false= df[~conditions] + + df_true = generate_MCAR(df_true,missing) + + if missing_false is not None: + df_false = generate_MCAR(df_false, missing_false) + + out = pd.concat([df_true,df_false]) + + return out From b51501f19cbe4394b3af21fc75a966760719dea5 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Tue, 2 Mar 2021 09:53:29 +0100 Subject: [PATCH 03/24] Added handling of categorical variables. --- probatus/impute/imputation.py | 18 ------- probatus/missing/imputation.py | 85 ++++++++++++++++++++------------ tests/missing/test_imputation.py | 36 ++++++++++---- 3 files changed, 81 insertions(+), 58 deletions(-) delete mode 100644 probatus/impute/imputation.py diff --git a/probatus/impute/imputation.py b/probatus/impute/imputation.py deleted file mode 100644 index 847b3908..00000000 --- a/probatus/impute/imputation.py +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2021 ING Bank N.V. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy of -# this software and associated documentation files (the "Software"), to deal in -# the Software without restriction, including without limitation the rights to -# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -# the Software, and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/probatus/missing/imputation.py b/probatus/missing/imputation.py index 2038f7da..6e0d393b 100644 --- a/probatus/missing/imputation.py +++ b/probatus/missing/imputation.py @@ -19,7 +19,11 @@ from probatus.utils import BaseFitComputeClass,BaseFitComputePlotClass from sklearn.model_selection import cross_val_score -from sklearn.pipeline import make_pipeline +from sklearn.pipeline import make_pipeline,Pipeline +from sklearn.impute import SimpleImputer +from sklearn.compose import ColumnTransformer +from sklearn.preprocessing import OneHotEncoder + import numpy as np class CompareImputationStrategies(BaseFitComputeClass): """ @@ -61,7 +65,7 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,verbose=0): self.verbose = verbose self.results = {} - def fit(self, X, y,column_names=None,class_names=None): + def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto'): """ Calculates score @@ -78,20 +82,60 @@ def fit(self, X, y,column_names=None,class_names=None): class_names (None, or list of str, optional): List of class names e.g. ['neg', 'pos']. If none, the default ['Negative Class', 'Positive Class'] are used. + + categorical_features ((None, or list of str, optional):deafault=auto + List of categorical features to consider. + The imputation strategy for categorical is different + that compared to numerical features. """ + #Identify categorical features if not explicitly specified. + if 'auto' in categorical_columns: + X_cat = X.select_dtypes(include=['category','object']) + categorical_columns = X_cat.columns.to_list() + for column in categorical_columns: + X[column] = X[column].astype('category') + else : + #Check if the passed columns are in the dataframe. + X_cat = X[categorical_columns] + + X_num = X.drop(columns = categorical_columns,inplace=False) + numeric_columns = X_num.columns.to_list() + + #Add the No imputation to strategy. self.strategies['No Imputation'] = None - + for strategy in self.strategies: - if 'No Imputation' in strategy : + if 'No Imputation' in strategy: imputation_results = self._get_no_imputer_scores(X,y) self.results[strategy] = imputation_results + else : - imputation_results = self.get_scores_for_imputer( - imputer = self.strategies[strategy], - X=X, - y=y) + + numeric_transformer = Pipeline(steps=[ + ('imputer', self.strategies[strategy])]) + + categorical_transformer = Pipeline(steps=[ + ('imp_cat',SimpleImputer(strategy='most_frequent',add_indicator=True)), + ('ohe_cat',OneHotEncoder(handle_unknown='ignore')), + ]) + + preprocessor = ColumnTransformer( + transformers=[ + ('num', numeric_transformer, numeric_columns), + ('cat', categorical_transformer, categorical_columns)]) + + clf = Pipeline(steps=[('preprocessor', preprocessor), + ('classifier', self.clf)]) + + imputation_results = cross_val_score( + clf, + X, + y, + scoring=self.scoring, + cv=self.cv) + self.results[strategy] = imputation_results @@ -117,7 +161,7 @@ def show(self): def _get_no_imputer_scores(self,X,y): """ - Calculate the results without any imputation. + Calculate the results without any imputation strategy. Args : X(pd.DataFrame) : Dataframe for X y(pd.Series) : Target @@ -131,25 +175,4 @@ def _get_no_imputer_scores(self,X,y): return no_imputer_scores - def get_scores_for_imputer(self,imputer,X,y): - """ - Calculate the results with an imputer. - args : - imputer(sklearn.imputer) : The imputer object to use for imputation. - X(pd.DataFrame) : Dataframe for X - y(pd.Series) : Target - returns : - impute_scores : - - """ - - estimator = make_pipeline(imputer,self.clf) - - impute_scores = cross_val_score( - estimator, - X, - y, - scoring=self.scoring, - cv=self.cv) - - return impute_scores + diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py index d0a3c84b..3fcd7eaf 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing/test_imputation.py @@ -8,13 +8,12 @@ from sklearn.experimental import enable_iterative_imputer from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer from feature_engine.imputation import RandomSampleImputer +from sklearn.preprocessing import KBinsDiscretizer +import string def test_imputation(): - X,y = make_classification( - n_samples=1000, - n_features=20, - class_sep = 0.3) - X_missing = generate_MCAR(pd.DataFrame(X),missing=0.3) + X,y = get_data(n_samples=1000,n_numerical=10,n_category=5) + X_missing = generate_MCAR(X,missing=0.2) #Initialize the classifier clf = lgb.LGBMClassifier() #Create strategies for imputation. @@ -25,17 +24,36 @@ def test_imputation(): 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, sample_posterior=True), 'Random Imputer': RandomSampleImputer() - + } cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10) cmp.fit(X_missing,y) cmp.show() - - - +def get_data(n_samples,n_numerical,n_category): + """ + Returns a dataframe with numerical and categorical features + """ + no_vars = n_numerical + n_category + # Create single dataset to avoid random effects + # Only works for all informative features + X,y = make_classification( + n_samples=n_samples, + n_features=no_vars, + random_state=123,class_sep=0.3) + + binner = KBinsDiscretizer(n_bins=5, encode='ordinal', strategy="quantile", ) + X[:,n_numerical:] = binner.fit_transform(X[:,n_numerical:]) + + #Add column names. + X = pd.DataFrame(X, columns=["f_"+str(i) for i in range(0,no_vars)]) + # Efficiently map values to another value with .map(dict) + X.iloc[:,n_numerical:] = X.iloc[:,n_numerical:].apply( + lambda x: x.map({i:letter for i,letter in enumerate(string.ascii_uppercase)})) + + return X,y if __name__ == '__main__': test_imputation() \ No newline at end of file From 964f3fafdd2f3b027be7d69150494aa143278e78 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Tue, 2 Mar 2021 11:54:22 +0100 Subject: [PATCH 04/24] Bare bone implementation --- probatus/missing/imputation.py | 59 ++++++++++++++++++++++++++++---- tests/missing/test_imputation.py | 27 ++++++++++----- 2 files changed, 71 insertions(+), 15 deletions(-) diff --git a/probatus/missing/imputation.py b/probatus/missing/imputation.py index 6e0d393b..bfa29afe 100644 --- a/probatus/missing/imputation.py +++ b/probatus/missing/imputation.py @@ -23,6 +23,7 @@ from sklearn.impute import SimpleImputer from sklearn.compose import ColumnTransformer from sklearn.preprocessing import OneHotEncoder +import matplotlib.pyplot as plt import numpy as np class CompareImputationStrategies(BaseFitComputeClass): @@ -101,14 +102,32 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' X_num = X.drop(columns = categorical_columns,inplace=False) numeric_columns = X_num.columns.to_list() - #Add the No imputation to strategy. self.strategies['No Imputation'] = None for strategy in self.strategies: if 'No Imputation' in strategy: - imputation_results = self._get_no_imputer_scores(X,y) + + categorical_transformer = Pipeline(steps=[ + ('ohe_cat',OneHotEncoder(handle_unknown='ignore')), + ]) + + preprocessor = ColumnTransformer( + transformers=[ + ('cat', categorical_transformer, categorical_columns)], + remainder='passthrough') + + self.clf = Pipeline(steps=[('preprocessor', preprocessor), + ('classifier', self.clf)]) + + imputation_results = cross_val_score( + self.clf, + X, + y, + scoring=self.scoring, + cv=self.cv) + self.results[strategy] = imputation_results else : @@ -124,7 +143,8 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' preprocessor = ColumnTransformer( transformers=[ ('num', numeric_transformer, numeric_columns), - ('cat', categorical_transformer, categorical_columns)]) + ('cat', categorical_transformer, categorical_columns)], + remainder='passthrough') clf = Pipeline(steps=[('preprocessor', preprocessor), ('classifier', self.clf)]) @@ -155,9 +175,7 @@ def show(self): """ Show the results. """ - - for k,v in self.results.items(): - print(f'{k}: {np.mean(v)} +/- {np.std(v)}') + self._plot_results() def _get_no_imputer_scores(self,X,y): """ @@ -175,4 +193,33 @@ def _get_no_imputer_scores(self,X,y): return no_imputer_scores + def _plot_results(self): + """ + Plot the results. + """ + + imp_methods = [] + performance = [] + std_error = [] + cmap=[] + + for k,v in self.results.items(): + imp_methods.append(k) + performance.append(np.round(np.mean(v),4)) + std_error.append(np.round(np.std(v),4)) + cmap.append(np.random.rand(3,)) + + + y_pos = np.arange(len(imp_methods)) + + plt.barh(y_pos, performance, xerr=std_error,align='center',color=cmap) + for index, value in enumerate(performance): + plt.text(value, index, str(value)) + plt.yticks(y_pos, imp_methods) + plt.xlabel('Metric') + plt.title('Imputation Techniques') + + plt.show() + + diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py index 3fcd7eaf..3fccb99e 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing/test_imputation.py @@ -5,25 +5,35 @@ from sklearn.datasets import make_classification import lightgbm as lgb import xgboost as xgb +from sklearn.ensemble import RandomForestClassifier +from sklearn.linear_model import LogisticRegression from sklearn.experimental import enable_iterative_imputer from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer from feature_engine.imputation import RandomSampleImputer from sklearn.preprocessing import KBinsDiscretizer import string +import fire -def test_imputation(): +def test_imputation(choice=1): X,y = get_data(n_samples=1000,n_numerical=10,n_category=5) X_missing = generate_MCAR(X,missing=0.2) #Initialize the classifier - clf = lgb.LGBMClassifier() + print(f'Using choice {choice}') + if choice == 1: + clf = RandomForestClassifier() + if choice == 2 : + clf = xgb.XGBClassifier() + if choice == 3 : + clf = lgb.LGBMClassifier() + if choice == 4 : + clf = LogisticRegression() + #Create strategies for imputation. strategies = { 'KNN' : KNNImputer(n_neighbors=3), 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), - 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, - sample_posterior=True), - 'Random Imputer': RandomSampleImputer() + sample_posterior=True) } cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10) @@ -33,11 +43,10 @@ def test_imputation(): def get_data(n_samples,n_numerical,n_category): """ - Returns a dataframe with numerical and categorical features + Returns a dataframe with numerical and categorical features. """ no_vars = n_numerical + n_category - # Create single dataset to avoid random effects - # Only works for all informative features + X,y = make_classification( n_samples=n_samples, n_features=no_vars, @@ -56,4 +65,4 @@ def get_data(n_samples,n_numerical,n_category): return X,y if __name__ == '__main__': - test_imputation() \ No newline at end of file + fire.Fire(test_imputation) \ No newline at end of file From 57edb3f6143e7bcaf34b97e2a0b5e91ae9466fa9 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Tue, 2 Mar 2021 20:28:56 +0100 Subject: [PATCH 05/24] Added support for RF,LR models in a elegant way. --- docs/tutorials/nb_imputation_comparison.ipynb | 323 ++++++++++++++++++ probatus/missing/imputation.py | 243 +++++++------ tests/missing/test_imputation.py | 48 ++- 3 files changed, 505 insertions(+), 109 deletions(-) create mode 100644 docs/tutorials/nb_imputation_comparison.ipynb diff --git a/docs/tutorials/nb_imputation_comparison.ipynb b/docs/tutorials/nb_imputation_comparison.ipynb new file mode 100644 index 00000000..b019a625 --- /dev/null +++ b/docs/tutorials/nb_imputation_comparison.ipynb @@ -0,0 +1,323 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Imputation Comparison\n", + "\n", + "[![open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ing-bank/probatus/blob/master/docs/tutorials/nb_imputation_comparison.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "%config Completer.use_jedi = False\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "pd.set_option('display.max_columns', 100)\n", + "pd.set_option('display.max_row', 500)\n", + "pd.set_option('display.max_colwidth', 200)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook explains how the `CompareImputationStrategies` class works in `probatus`\n", + "First let us import the class and other required classes." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from probatus.missing.imputation import CompareImputationStrategies\n", + "from tests.utils.test_missing import generate_MCAR\n", + "import pandas as pd \n", + "from sklearn.datasets import make_classification\n", + "import lightgbm as lgb \n", + "import xgboost as xgb \n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.experimental import enable_iterative_imputer \n", + "from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer\n", + "from feature_engine.imputation import RandomSampleImputer\n", + "from sklearn.preprocessing import KBinsDiscretizer\n", + "import string\n", + "import fire" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's create some data on which we want to apply the various imputation strategies.\n", + "We will create a dataset with both numerical and categorical variables.\n", + "\n", + "Currently `CompareImputationStrategies` supports any scikit learn compatible imputation strategies.\n", + "For categorical columns `OneHotEncoder` is applied internally by default. \n", + "The user supplied imputation strategies are applied to numerical columns only. Support for user supplied imputation strategies for categorical columns can be added in the future releases." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape of X,y : (1000, 15),(1000,)\n" + ] + } + ], + "source": [ + "def get_data(n_samples,n_numerical,n_category):\n", + " \"\"\"\n", + " Returns a dataframe with numerical and categorical features.\n", + " \"\"\"\n", + " no_vars = n_numerical + n_category\n", + " \n", + " X,y = make_classification(\n", + " n_samples=n_samples, \n", + " n_features=no_vars, \n", + " random_state=123,\n", + " class_sep=0.3,\n", + " flip_y=0.3)\n", + "\n", + " binner = KBinsDiscretizer(n_bins=5, encode='ordinal', strategy=\"quantile\")\n", + " X[:,n_numerical:] = binner.fit_transform(X[:,n_numerical:])\n", + "\n", + " #Add column names.\n", + " X = pd.DataFrame(X, columns=[\"f_\"+str(i) for i in range(0,no_vars)])\n", + "\n", + " # Efficiently map values to another value with .map(dict)\n", + " X.iloc[:,n_numerical:] = X.iloc[:,n_numerical:].apply(\n", + " lambda x: x.map({i:letter for i,letter in enumerate(string.ascii_uppercase)}))\n", + " \n", + " return X,y\n", + "\n", + "X,y = get_data(n_samples=1000,n_numerical=10,n_category=5)\n", + "print(f\"Shape of X,y : {X.shape},{y.shape}\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Add missing values to the dataset. `generate_MCAR` method randomly adds missing values to the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "f_0 0.191\n", + "f_1 0.189\n", + "f_2 0.181\n", + "f_3 0.206\n", + "f_4 0.197\n", + "f_5 0.205\n", + "f_6 0.191\n", + "f_7 0.190\n", + "f_8 0.200\n", + "f_9 0.196\n", + "f_10 0.194\n", + "f_11 0.181\n", + "f_12 0.210\n", + "f_13 0.201\n", + "f_14 0.210\n", + "dtype: float64" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "X_missing = generate_MCAR(X,missing=0.2)\n", + "X_missing.isnull().mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imputation Strategies" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create a dictionary with all the strategies to compare. Also, create a classifier that you want to use to evaluate various strategies.\n", + "If the model supports handling of missing features by default then the model performance on an unimputed dataset is calculated.\n", + "The model performance against the unimputed dataset can be found in `Model Imputation` results." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "strategies = {\n", + " 'KNN' : KNNImputer(n_neighbors=3),\n", + " 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", + " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,\n", + " sample_posterior=True)\n", + " }\n", + "clf = lgb.LGBMClassifier()\n", + "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10)\n", + "cmp.fit_compute(X_missing,y)\n", + "cmp.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As can be seen with the above plot that, the `Iterative Imputer` strategy provide better model performance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However if the model does not support missing values by default, only the inputation strategies are calculated.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "posx and posy should be finite values\n", + "posx and posy should be finite values\n", + "posx and posy should be finite values\n", + "posx and posy should be finite values\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-02T20:25:35.310670\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "strategies = {\n", + " 'KNN' : KNNImputer(n_neighbors=3),\n", + " 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", + " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,\n", + " sample_posterior=True)\n", + " }\n", + "clf = LogisticRegression()\n", + "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10,model_na_support=False)\n", + "cmp.fit_compute(X_missing,y)\n", + "cmp.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Scikit Learn Compatible Imputers. \n", + "\n", + "You can also use any other scikit-learn compatible imputer as an imputing strategy.\n", + "eg. [feature engine](https://feature-engine.readthedocs.io/en/latest/index.html) library provides a host of other imputing stratgies as well. You can pass them for comparision. Let us try the `RandomSampleImputer`. You can read more about it [here](https://feature-engine.readthedocs.io/en/latest/imputation/RandomSampleImputer.html)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-02T18:20:04.149488\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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jlDVckPBta8sd7++ThpMIGa2muDcbIpXDM2bpHrvrI7xal5EasnMV1fFO4RKmdlyd8+qavn6f5VNRESEOrxbu7tP4ruTNQRw947xjkFEpL5TD0tERBKCEpaIiCQEJSwREUkISlgiIpIQlLBERCQhKGGJiEhCUMISEZGEoIQlIiIJQQlLREQSQp3d6ULqt+8fcywzX12294IickBw9/I3Da/31MMSETmIbN68GfjOEy4SghKWiMhBYtasWdx666188sn+PNYwfpSwREQOAosWLeK6667j4osvpkOHDrtti0ajcYqqenQNS0TkAFZ6rWrZsmVcffXVnH766axbt46CggK++uorzjnnHCKRCNFolEikfvdh6nd0IiKyX0pKSgBo3749ycnJbN++nXPOOYennnqKUaNG0b9/f4B6n6xAPSwRkQPWa6+9xueff865555L8+bNefrpp4lGowwdOpSrr74agFNOOYWpU6dy+eWXxznavav/KVVERKrthRdeoE+fPuTk5ABw+umnk52dzZ133klhYWFZud69e9OwYcN4hVkt6mGJiBxgnnvuOe68804WLlzI/fffz1/+8hdycnK44YYbiEQiPPjgg3Tu3JnVq1czc+ZMBg8eHO+Qq0QJSwDYXriF/Nuej3cYIhLjlNvOrvY+n332Gffffz9//vOf6d69Oz179uS9994r23799dfTsWNHNmzYwJo1a5g+fTqdOnWqybBrjRKWiMgBYuvWrbRt25bJkyfTqlUrAM455xzGjh3LxIkTueqqqwDKJlokGl3DEhE5ALzwwgsMGTKEjRs3liWrkpISDjvsMMaOHcu8efNYt27dbvu4ezxC3WdKWCIiCW7+/Pn84he/4Nprry1LVgBJSUkAHH300Wzbto3Vq1fvtl+i3Z5JCUtEJMEVFBRwyy238JOf/ITPPvuM1157jfz8/LLtmZmZHHPMMdx00024e8L1rEopYYmIJLiUlBSWL1/Oxx9/zNlnn82TTz7JFVdcwdixY8vK/PnPf+bpp5/GzBKuZ1VKCUtEJMF1796dRo0a8fjjj3PFFVcwbtw4nn/+eR566CFmz54NQIMGDTj00EPjHOn+UcISEUlwXbt2pXnz5syYMYN169axfft2unbtykUXXcSOHTviHV6N0bR2EZEEUlBQwObNm8nKyiISiZRNrLjzzjtJSUnhP//5D+PG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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "strategies = {\n", + " 'KNN' : KNNImputer(n_neighbors=3),\n", + " 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", + " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,\n", + " sample_posterior=True),\n", + " 'Random Imputation' : RandomSampleImputer()\n", + " }\n", + "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10)\n", + "cmp.fit_compute(X_missing,y)\n", + "cmp.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unfortunately in this case, the `RandomSampleImputer` does not provide any improvements over the existing strategies. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "LightGBM,XGBoost models handle missing values by deafault. However incase you want to use the models like RandomForest,LogisticRegression you need to transform the datasets before\n", + "using the `CompareImputationStrategies` for comparing various imputation strategies." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.12-final" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/probatus/missing/imputation.py b/probatus/missing/imputation.py index bfa29afe..8bf5f4ac 100644 --- a/probatus/missing/imputation.py +++ b/probatus/missing/imputation.py @@ -17,26 +17,31 @@ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -from probatus.utils import BaseFitComputeClass,BaseFitComputePlotClass +from probatus.utils import preprocess_data, preprocess_labels,BaseFitComputePlotClass from sklearn.model_selection import cross_val_score -from sklearn.pipeline import make_pipeline,Pipeline +from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.compose import ColumnTransformer from sklearn.preprocessing import OneHotEncoder import matplotlib.pyplot as plt - import numpy as np -class CompareImputationStrategies(BaseFitComputeClass): - """ - Comparison of various imputation stragegies - that can be used for imputation of missing values. +import pandas as pd - Args : +class CompareImputationStrategies(BaseFitComputePlotClass): + """ + Comparison of various imputation stragegies that can be used for imputation + of missing values. + The aim of this class is to present the user the model performance is + based on the choosen metric and imputation strategy. + For models like XGBoost & LighGBM which have capabilities to handle misisng values, any + data transformation is not required. + However in the case of RandomForestClassifier,LogisticRegression + the data must be transformed before passing for comparision. """ - def __init__(self,clf,strategies,scoring='roc_auc',cv=5,verbose=0): + def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,verbose=0): """ - Initialise the class + Initialise the class. Args : clf(model object): @@ -49,7 +54,16 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,verbose=0): strategies (dictionary of sklearn.impute objects): Dictionary containing the sklearn.impute objects. - #TODO Add more documentation. + e.g. + + strategies = {'KNN' : KNNImputer(n_neighbors=3), + 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), + 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, + sample_posterior=True)} + This allows you to have fine grained control over the imputation method. + model_na_support(boolean): default True + If the classifier supports missing values by default e.g. LightGBM,XGBoost etc. If True an default + comparison will be added without any imputation. If False only the provided strategies will be used. verbose (int, optional): Controls verbosity of the output: @@ -60,15 +74,21 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,verbose=0): - above 100 - presents all prints and all warnings (including SHAP warnings). """ self.clf = clf + self.model_na_support = model_na_support self.scoring = scoring self.strategies = strategies self.cv = cv self.verbose = verbose - self.results = {} - + self.fitted = False + self.results_df = None + + def __repr__(self): + return "Imputation comparision for {}".format(self.clf.__class__.__name__) + + def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto'): """ - Calculates score + Calculates the cross validated results for various imputation strategies. Args: X (pd.DataFrame): @@ -78,17 +98,27 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' target variable. column_names (None, or list of str, optional): - List of feature names for the dataset. If None, then column names from the X_train dataframe are used. + List of feature names for the dataset. + If None, then column names from the X dataframe are used. class_names (None, or list of str, optional): - List of class names e.g. ['neg', 'pos']. If none, the default ['Negative Class', 'Positive Class'] are + List of class names e.g. ['neg', 'pos']. + If none, the default ['Negative Class', 'Positive Class'] are used. - categorical_features ((None, or list of str, optional):deafault=auto - List of categorical features to consider. - The imputation strategy for categorical is different - that compared to numerical features. + categorical_features (None, or list of str, optional):default=auto + List of categorical features.The imputation strategy for categorical + is different that compared to numerical features. If auto try to infer + the categorical columns based on 'object' and 'category' datatypes. """ + #Place holder for results. + results = [] + + self.X, self.column_names = preprocess_data(X, column_names=column_names, + verbose=self.verbose) + self.y = preprocess_labels(y, index=self.X.index, verbose=self.verbose) + + #Identify categorical features if not explicitly specified. if 'auto' in categorical_columns: X_cat = X.select_dtypes(include=['category','object']) @@ -97,129 +127,146 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' X[column] = X[column].astype('category') else : #Check if the passed columns are in the dataframe. + assert categorical_columns in X.columns,"All categorical columns not in the dataframe." X_cat = X[categorical_columns] - + #Identify the numeric columns.Numeric columns are all columns expect the categorical + # columns X_num = X.drop(columns = categorical_columns,inplace=False) numeric_columns = X_num.columns.to_list() - - #Add the No imputation to strategy. - self.strategies['No Imputation'] = None - + for strategy in self.strategies: - if 'No Imputation' in strategy: - - categorical_transformer = Pipeline(steps=[ + numeric_transformer = Pipeline(steps=[ + ('imputer', self.strategies[strategy])]) + + categorical_transformer = Pipeline(steps=[ + ('imp_cat',SimpleImputer(strategy='most_frequent',add_indicator=True)), ('ohe_cat',OneHotEncoder(handle_unknown='ignore')), ]) - preprocessor = ColumnTransformer( + preprocessor = ColumnTransformer( transformers=[ + ('num', numeric_transformer, numeric_columns), ('cat', categorical_transformer, categorical_columns)], remainder='passthrough') - self.clf = Pipeline(steps=[('preprocessor', preprocessor), + clf = Pipeline(steps=[('preprocessor', preprocessor), ('classifier', self.clf)]) - - imputation_results = cross_val_score( - self.clf, + + imputation_results = cross_val_score( + clf, X, y, scoring=self.scoring, cv=self.cv) - self.results[strategy] = imputation_results - - else : - - numeric_transformer = Pipeline(steps=[ - ('imputer', self.strategies[strategy])]) - - categorical_transformer = Pipeline(steps=[ - ('imp_cat',SimpleImputer(strategy='most_frequent',add_indicator=True)), + temp_results = { + 'strategy' : strategy, + 'score': np.round(np.mean(imputation_results),3), + 'std':np.round(np.std(imputation_results),3), + } + results.append(temp_results) + #If model supports missing values by default, then calculate the scores + #on raw data without any imputation. + if self.model_na_support : + categorical_transformer = Pipeline(steps=[ ('ohe_cat',OneHotEncoder(handle_unknown='ignore')), ]) - preprocessor = ColumnTransformer( + preprocessor = ColumnTransformer( transformers=[ - ('num', numeric_transformer, numeric_columns), ('cat', categorical_transformer, categorical_columns)], remainder='passthrough') - clf = Pipeline(steps=[('preprocessor', preprocessor), + self.clf = Pipeline(steps=[('preprocessor', preprocessor), ('classifier', self.clf)]) - - imputation_results = cross_val_score( - clf, + + imputation_results = cross_val_score( + self.clf, X, y, scoring=self.scoring, cv=self.cv) - self.results[strategy] = imputation_results + temp_results = { + 'strategy' : 'Model Imputation', + 'score': np.round(np.mean(imputation_results),3), + 'std':np.round(np.std(imputation_results),3), + } + results.append(temp_results) + + self.results_df = pd.DataFrame(results) + self.results_df.sort_values(by='score',inplace=True) + self.fitted = True + return self - def compute(self): + def compute(self,return_scores=True): """ - Compute class - + Compute method. """ + self._check_if_fitted() + if return_scores : + return self.results_df - def fit_compute(self): - """ - Fit & compute class + def fit_compute(self, X, y,column_names=None,class_names=None,categorical_columns='auto'): """ + Calculates the cross validated results for various imputation strategies. + + Args: + X (pd.DataFrame): + input variables. - def show(self): - """ - Show the results. - """ - self._plot_results() + y (pd.Series): + target variable. - def _get_no_imputer_scores(self,X,y): - """ - Calculate the results without any imputation strategy. - Args : - X(pd.DataFrame) : Dataframe for X - y(pd.Series) : Target - """ - no_imputer_scores = cross_val_score( - self.clf, - X, - y, - scoring=self.scoring, - cv=self.cv) - - return no_imputer_scores - - def _plot_results(self): - """ - Plot the results. - """ + column_names (None, or list of str, optional): + List of feature names for the dataset. + If None, then column names from the X dataframe are used. - imp_methods = [] - performance = [] - std_error = [] - cmap=[] - - for k,v in self.results.items(): - imp_methods.append(k) - performance.append(np.round(np.mean(v),4)) - std_error.append(np.round(np.std(v),4)) - cmap.append(np.random.rand(3,)) + class_names (None, or list of str, optional): + List of class names e.g. ['neg', 'pos']. + If none, the default ['Negative Class', 'Positive Class'] are + used. + categorical_features (None, or list of str, optional):default=auto + List of categorical features.The imputation strategy for categorical + is different that compared to numerical features. If auto try to infer + the categorical columns based on 'object' and 'category' datatypes. + """ + self.fit(X,y, + column_names=column_names, + class_names=class_names, + categorical_columns=categorical_columns + ) + return self.compute() - y_pos = np.arange(len(imp_methods)) - plt.barh(y_pos, performance, xerr=std_error,align='center',color=cmap) + def plot(self,show=True): + """ + Plot the results for imputation. + """ + imp_methods = list(self.results_df['strategy']) + performance = list(self.results_df['score']) + std_error = list(self.results_df['std']) + y_pos = [i for i, _ in enumerate(imp_methods)] + x_spacing = 0.01 + y_spacing = 2*x_spacing + plt.barh( + y_pos, + performance, + xerr=std_error, + align='center', + color=np.random.rand(len(performance),3)) + for index, value in enumerate(performance): - plt.text(value, index, str(value)) + plt.text(value+x_spacing ,index+y_spacing, str(value),rotation=45) plt.yticks(y_pos, imp_methods) plt.xlabel('Metric') plt.title('Imputation Techniques') - - plt.show() - - - + plt.tight_layout() + if show: + plt.show() + else: + plt.close() \ No newline at end of file diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py index 3fccb99e..f06a407f 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing/test_imputation.py @@ -14,31 +14,57 @@ import string import fire -def test_imputation(choice=1): +def test_imputation(choice=3): X,y = get_data(n_samples=1000,n_numerical=10,n_category=5) X_missing = generate_MCAR(X,missing=0.2) + + strategies = { + 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), + 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), + 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, + sample_posterior=True), + 'KNN' : KNNImputer(n_neighbors=3), + 'Random Imputer': RandomSampleImputer() + + } + #Initialize the classifier print(f'Using choice {choice}') if choice == 1: clf = RandomForestClassifier() + cmp = CompareImputationStrategies( + clf=clf, + strategies=strategies, + cv=5, + model_na_support=False) if choice == 2 : clf = xgb.XGBClassifier() + cmp = CompareImputationStrategies( + clf=clf, + strategies=strategies, + cv=5, + model_na_support=True) if choice == 3 : clf = lgb.LGBMClassifier() + cmp = CompareImputationStrategies( + clf=clf, + strategies=strategies, + cv=5, + model_na_support=True) if choice == 4 : clf = LogisticRegression() + cmp = CompareImputationStrategies( + clf=clf, + strategies=strategies, + cv=5, + model_na_support=False) #Create strategies for imputation. - strategies = { - 'KNN' : KNNImputer(n_neighbors=3), - 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), - 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, - sample_posterior=True) - - } - cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10) - cmp.fit(X_missing,y) - cmp.show() + + + cmp.fit_compute(X_missing,y) + cmp.plot() + def get_data(n_samples,n_numerical,n_category): From 43da42a7cbe009c9e4b4de5ca316fe17f8f09e0f Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 4 Mar 2021 13:58:00 +0100 Subject: [PATCH 06/24] Added notebook and cleaned up tests. --- docs/tutorials/nb_imputation_comparison.ipynb | 98 +++++++------- probatus/missing/imputation.py | 50 +++++-- probatus/utils/missing_helpers.py | 87 +++++++++++++ tests/missing/test_imputation.py | 122 +++++++----------- tests/utils/test_missing.py | 89 ------------- 5 files changed, 226 insertions(+), 220 deletions(-) create mode 100644 probatus/utils/missing_helpers.py delete mode 100644 tests/utils/test_missing.py diff --git a/docs/tutorials/nb_imputation_comparison.ipynb b/docs/tutorials/nb_imputation_comparison.ipynb index b019a625..c51185d4 100644 --- a/docs/tutorials/nb_imputation_comparison.ipynb +++ b/docs/tutorials/nb_imputation_comparison.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -37,12 +37,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from probatus.missing.imputation import CompareImputationStrategies\n", - "from tests.utils.test_missing import generate_MCAR\n", + "from probatus.utils.missing_helpers import generate_MCAR\n", "import pandas as pd \n", "from sklearn.datasets import make_classification\n", "import lightgbm as lgb \n", @@ -71,7 +71,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -121,33 +121,33 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "f_0 0.191\n", - "f_1 0.189\n", - "f_2 0.181\n", - "f_3 0.206\n", - "f_4 0.197\n", - "f_5 0.205\n", - "f_6 0.191\n", - "f_7 0.190\n", - "f_8 0.200\n", - "f_9 0.196\n", - "f_10 0.194\n", - "f_11 0.181\n", - "f_12 0.210\n", - "f_13 0.201\n", - "f_14 0.210\n", + "f_0 0.187\n", + "f_1 0.196\n", + "f_2 0.196\n", + "f_3 0.195\n", + "f_4 0.221\n", + "f_5 0.173\n", + "f_6 0.203\n", + "f_7 0.201\n", + "f_8 0.222\n", + "f_9 0.199\n", + "f_10 0.211\n", + "f_11 0.210\n", + "f_12 0.186\n", + "f_13 0.184\n", + "f_14 0.195\n", "dtype: float64" ] }, "metadata": {}, - "execution_count": 5 + "execution_count": 4 } ], "source": [ @@ -173,9 +173,21 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T13:47:15.197491\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAasAAAEYCAYAAADiT9m2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAq9UlEQVR4nO3de3xU1bn/8c8zIRDkbgCVVC4iCBGVClK0YPFUUZSWYqnKpYJYPS0erCD9HYxUsR4L9KhtOYpKAUGoCFWsVCWoKAYsCogKXqDWSotEBRWCKGKSeX5/7J10iAm5Zzbm+3698mJm7zVrPbOj+WbtvbLH3B0REZEoiyW7ABERkfIorEREJPIUViIiEnkKKxERiTyFlYiIRJ7CSkREIk9hJVIPmdlIM3sq2XWUx8zczE6s4mtXmNnomq5JkkNhJVJFZrbdzM5NwrhjzGxtJdp3DH/oNyja5u5/dPeBNVzXSDPbH34dMLN4wvP9NTlWRbj7IHdfUNfjSu1QWIlIjQgDsKm7NwUGAblFz8NtIlWmsBKpAeFs5wUz+62Z7TWzf5jZWeH2HWa2K/GUlJnNN7N7zexpM/vUzJ43sw7hvq/MhMxstZn9xMy6A/cCZ4Yzlr3h/ovM7BUz2xeONzWhvJzw373ha84sOTsLa91gZnnhv2eVGPvW8P19amZPmVnrSh6fdmb2iJntNrN3zezahH0pZpZlZu+E/b9sZscnvPxcM3s7PK53m5klHPO1Zna7me0J+x1U8pgljHG7mX0Ufm+uSTzGJWfJZjbVzBYlPO9rZn8Na3jNzAYk7BsT9vlpWMPIyhwbqRiFlUjN+RawGUgHHgQeAs4ATgRGAXeZWeIMYyRwK9AaeBX4Y3kDuPtbwE+BdeGMpWW46zPgcqAlcBHwMzP7Qbjv7PDfluFr1iX2aWZHA08AM8Pa7wSeMLP0hGYjgCuAtkBDYFJ5tSb0HwP+ArwGZADfBa4zs/PDJhOB4cCFQHNgLPB5QheDCY7jqcAlwPkJ+74FbCM4hr8B5haFWQlXhf18E+gNDKtE/RkEx+d/gKMJ3vsjZtbGzJoQHLdB7t4MOIvgeyk1TGElUnPedff73b0QWAIcD/zK3Q+6+1PAlwTBVeQJd89x94PAjQSzpeO/2m353H21u29x97i7bwYWA9+p4MsvAt5294XuXuDui4GtwPcS2tzv7n9z9wPAUqBnJco7A2jj7r9y9y/d/R/AH4DLwv0/Aaa4+zYPvObuHye8frq773X3fwHPlRj7n+7+h/CYLwCOA44ppYZLgN+5+w53/wSYVon6RwFPuvuT4fF9GthIEK4AcaCHmTV29/fd/Y1K9C0VpLASqTkfJjw+AODuJbclzqx2FD1w9/3AJ0C7qgxsZt8ys+fC02x5BLOvip6qawf8s8S2fxLMgop8kPD4cw59H+XpALQLT6HtDU9dZvHvUDkeeOcwrz/c2MX73L1oNlZabe1ION589f0eTgfgRyXq7wcc5+6fAZcSHO/3zewJM+tWib6lghRWIslTPIsKTw8eDeQSnNIDOCqh7bEJj0v7qIQHgeXA8e7eguC6lh2mfaJcgh/IidoDO8t5XUXtIJh1tkz4aubuFybs71xDY5XlfRKON8H7S/QZZR/vHcDCEvU3cffpAO6+0t3PI5jVbSWYNUoNU1iJJM+FZtbPzBoSXLt6MTxNtZsgKEaFCwPGcugP8w+Bb4SvK9IM+MTdvzCzPgTXmIrsJjhVdUIZdTwJdDWzEWbWwMwuBTKBx2vkXcJ64FMz+28zaxy+px5mdka4fw5wq5l1scCpJa6X1YSlwLVm9g0zawVMLrH/VeAyM0s1s5LXtBYB3zOz88Pa08xsQNjXMWY2JLx2dRDYT3CspYYprESS50HgZoLTf70Iro0UuQr4BfAxcDLw14R9zwJvAB+Y2UfhtnHAr8zsU+Amgh/OQPHpsduAF8LTWH0TiwivDw0Grg/H+3/AYHf/iBoQXk8aTHCt6V3gI4KAahE2uTOs9ylgHzAXaFwTYyf4A7CSYJHHJmBZif2/JPiFYA9wC8H3pqj+HcAQglOXuwlmWr8g+PkZI1ggkkvwffwO8LMarl0A04cvitQ9M5sPvOfuU5JdS31kZh0JgjPV3QuSXI5UgGZWIiISeQorERGJPJ0GFBGRyNPMSkREIq9B+U2kPmjdurV37Ngx2WWISD308ssvf+TubQ7XRmElAHTs2JGNGzcmuwwRqYfMrNw7iug0oIiIRJ7CSkREIk9hJSIikaewEhGRyFNYiYhI5CmsRESkzrg7VbkZhcJKRERq3dNPP81jjz2GWfAxa5UNLIWViIjUqn379nHLLbcwdOhQHn30UcwMMyMer/hHf+mPggWA7W++xejTeie7DBGJgAWv1ewNApo3b87YsWPp06cPV1xxBZ9++imXX345sVjF50sKKxERqTX5+fmkpqbyxRdf0L9/f4YPH855553Hm2++CcD06dMr1I9OA4qISI174403AEhNTQXgvPPO49lnn+WMM85gypQp3HHHHezfv7/C/SmsRESkRq1cuZKRI0fy9ttvF29r2LAhBw4c4E9/+hPz5s1j6tSpzJo1i6VLl1aoT50GFBGRGrN8+XKmT5/O3XffTZcuXXB3zIwOHTpwzDHHMHbsWO6//36GDRvG2WefTdu2bSvUrz58UQBofVQTv6hL92SXISIRUJUFFkUr+3r27EmLFi1Ys2YNH374IQsXLmTXrl0MHz6cgoICmjVrRrdu3SgoKKBBg2C+ZGYvu/thV3jpNKCIiFTbrl27iMVivPDCC+zZs4dhw4YxatQoCgoK2Lt3L3fddRdffvkl3bp1Ix6Pk5KSUqn+FVYiIlIt2dnZdOzYkRUrVtCsWTNeeuklXnvtNc466ywmT57M7NmzadOmDQ888AAAsVis+I+DK0rXrEREpMqys7OZMmUKQ4cOZcuWLZxzzjk0adKEt956i1gsVnzNqkuXLrz55psUFhZWelYFCisREami559/nsmTJ3PvvfeSmprKuHHjGDt2LGlpacXXowDmzJnDPffcwwMPPFCloAKdBhQRkSravn07s2fPpm/fvvTq1YvMzEwmTpxIQUEBAIWFhbz11lssX76c+fPnc/LJJ1d5LIWViIhUyejRo+nTp09xOI0fP57U1FRyc3MBSElJoXPnzjz44IOccsop1RpLYSUiIlVS9KdPRaf8unfvzs6dO5k1a1Zxm4YNG9K0adNqj6WwEhGRCtm2bRvr1q0jPz+fwsJCzKw4sOLxOI0bN2bmzJk888wzrF+/vkbH1gILEREp17Jly8jKyiIjI4OMjAx69+7NmDFjaN68OfF4nFgsRjweJz09nUGDBtGpU6caHV8zKxEROaz8/HyWLFnC3LlzWbVqFUOGDGHHjh3MmDGDvLy84o/6iMVipKenk5WVRZs2bWq0BoWViIiUa9++fcU3ph06dCiDBw8mPz+fxYsXA7BhwwY2bdoEQFpaWo2Pr7ASEZHDSk1NZeLEiSxbtow1a9YQi8Xo168fPXv2JCcnhwMHDrB27VratWsHUOm7U1RE5MPKzPaH/3Y0sxE13HdWied/raF+K/4hLVUfI6v8ViIiNaN///4MHDiQhQsXkpOTQ0pKCiNGjCA3N5fc3FwmTJjAscceW2vjH0kLLDoCI4AHK/oCM2vg7gWHaZIF/LroibufVeXq6t4htVeEmaW4e2Et1SMiX2NpaWmMHDkSM2PatGls3bqVRo0asXv37hpZml6eyH9EiJntd/emZvYi0B14F1gAzASmAwOARsDd7n6fmQ0AbgX2AN3cvauZ/Rk4HkgDfu/us81sOvALYAvwhruPTBjrIWChuz8R1jAfeBx4tLQxD1PzAOAWYC9wCrA0HO/nQGPgB+7+Ttj/F0BvoDkw0d0fN7MxQG93/6+w38eB24ELSql9FHAt0BB4CRjn7oXhLO8+4FzgGndfW9px1keEiHz9rHxnW5Ve1613rzL3xeNx8vLyeP/994nFYmRkZNCsWTMAVq9eXaXxKvIRIUfSzGoyMMndBwOY2dVAnrufYWaNgBfM7Kmw7elAD3d/N3w+1t0/MbPGwAYze8TdJ5vZf7l7z1LGWgJcAjxhZg2B7wI/A64sbcyEcUpzGkHIfgL8A5jj7n3M7OfAeOC6sF1HoA/QGXjOzE4sq8OStZtZd+BS4Nvunm9ms4CRwANAE+Ald7++ZD/hMbwaoElqw8O8BRGRQCwWo1WrVrRs2RKonetTpTmSwqqkgcCpZjYsfN4C6AJ8CawvESDXmtnQ8PHxYbuPD9P3CuD3YSBdAOS4+wEzK2vMw4XVBnd/H8DM3gGKAnULcE5Cu6XuHgfeNrN/AN0O02dJ3wV6EQQxBLO2XeG+QuCR0l7k7rOB2RDMrCoxnogcAc7vfFKVXregijOk2nQkh5UB49195SEbg1Nvn5V4fi5wprt/bmarCU4HlsndvwjbnU8wY3nocGOW42DC43jC8ziHHv+SYeFAAYcugimrbgMWuPsNpez7QtepRORIF/nVgAk+BZolPF8J/MzMUgHMrKuZNSnldS2APWFQdQP6JuzLL3p9KZYAVwD9gexKjlkVPzKzmJl1Bk4AtgHbgZ7h9uMJThOWVvsqYJiZtQ3rOtrMOtRQXSIiSXckzaw2A4Vm9howH/g9wXWeTRac+9oN/KCU12UDPzWztwgC4MWEfbOBzWa2yd1HlnjdU8BC4DF3/zLcNqeCY1bFv4D1BAssfhrO7l4gOMX4JvAWsKms2s1sCvCUmcWAfOAa4J81VJuISFJFfjVgfVC02tDdH05WDVoNKCJFFry2sU7Hq8hqwCPpNKCIiNRTR9JpwK8tdx+T7BpERKJMMysREYk8hZWIiESewkpERCJPYSUiIpGnsBIRkchTWImISOQprEREJPIUViIiEnkKKxERiTyFlYiIRJ7CSkREIk9hJSIikaewEhGRyNNd1wWAjpndWbCxbj/DRkSkojSzEhGRyFNYiYhI5CmsREQk8hRWIiISeQorERGJPIWViIhEnsJKREQiT2ElIiI1Yu3ataxevbpW+lZYiYhItbg7u3bt4qqrrmLUqFE8/fTTxfvi8XiNjKGwEhGRajEz2rZty6hRo7j88suZNGkSjz32GACxWM3EjG63JAAc3P4+717562SXISJ1pNPcrBrrq6CggFgsxhdffEHXrl359re/zS9/+Uu2bt1KSkoKkyZNIh6PVyu4NLMSEZEq+eKLLwBo0KABsViMiy++mA8++ICLLrqIwYMHc/PNN7Nv3z6g+jMshZWIiFTaE088wbhx4xg9ejTvvfceEFyfeuedd3jsscdYsmQJP//5z1m4cCHZ2dnVHk9hJSIilfLEE09w44038uMf/xgz49prrwWgV69eNGnShCuuuIJp06YxY8YMfve739G1a9dqj6mwEhGRCnF39u/fz7x585g+fTrnnHMON9xwAykpKdx5551s27aNc845h+eee46LL74Yd2fIkCGccMIJ1R5bYSUiIhWya9cumjZtypw5c7jgggv45JNPGDRoEO3bt+fDDz/kzjvvpGXLlpx22mkUFhZiZjU2tsJKRETKlZ2dTYcOHVi1ahWtWrUCoGnTpvzxj3/kjjvuYMaMGRx99NEsWrQIgJSUlBodX2ElIiKHlZ2dzZQpUxg6dCgvv/wyhYWFFBYW0rBhQ84880zcHYCTTjqJpk2bUlhYWOM16O+sRESkTM8//zyTJ0/m3nvvJTU1lXHjxjF27Fhat25d3MbMmDt3LrNmzeKBBx6o8VkVaGYlIiKHsX37dmbPnk3fvn3p1asXmZmZTJw4kYKCAgC+/PJL1q9fz6OPPsr8+fM5+eSTa6UOhZWIiJRp9OjR9OnTpzicxo8fT2pqKrm5uQA0bNiQHj16sHjxYk455ZRaq0NhJSIiZSq6HtWgQXDVqHv37uzcuZNZs2YVtznqqKNo1qxZrdahsBIRkWLbtm1j3bp15OfnFy8/LwqseDxO48aNmTlzJs888wzr16+vs7q0wEJERABYtmwZWVlZZGRkkJGRQe/evRkzZgzNmzcvvhFtPB4nPT2dQYMG0alTpzqrTTMrEREhPz+fJUuWMHfuXFatWsWQIUPYsWMHM2bMIC8vr/hGtLFYjPT0dLKysmjTpk2d1aewEhERAPbt28fbb78NwNChQxk8eDD5+fksXrwYgA0bNrBp0yYA0tLS6rQ2hZWIiJCamsrEiRNZtmwZa9asIRaL0a9fP3r27ElOTg4HDhxg7dq1tGvXDqBGb6VUEQorEREBoH///gwcOJCFCxeSk5NDSkoKI0aMIDc3l9zcXCZMmMCxxx6blNoiGVZm5ma2KOF5AzPbbWaPV7Kf7WbWuiptKvLa6jKz68zsqMq2M7MnzaxlbdYmIvVPWloaI0eO5LTTTmPatGnMnj2bBQsWsHv3bpo2bZrU2qK6GvAzoIeZNXb3A8B5wM4k11QbrgMWAZ9Xpp27X1irVYlIvdWqVSuuuuoqMjMzue+++0hLS2PRokUcc8wxSa0rqmEF8CRwEfAwMBxYDPQHMLOjgXnACQQ/wK92981mlh62ywDWAcUnVc1sFHAt0BB4CRjn7uXebdHMOgLZwIvAWcAG4H7gFqAtMNLd15vZVKAzcCLQGviNu//BzAYAk9x9cNjfXcBGoDnQDnjOzD5y93PM7B7gDKAx8LC732xm15bSbjvQ290/MrOJwNiw3Dnu/ruw5hXA2rDmncCQMPhF5Ag3/Mk51e4jbcBT5bYp+vuqCRMmfGXf6tWrq11DZUTyNGDoIeAyM0sDTiUImCK3AK+4+6lAFvBAuP1mYK27nww8CrQHMLPuwKXAt929J1AIjKxELScCdwDdwq8RQD9gUjh+kVOB/wDOBG4ys3ZldejuM4Fc4Bx3PyfcfKO79w77+Y6ZnVpGO8L31Qu4AvgW0Be4ysy+Ge7uAtwdHou9wA9L1mBmV5vZRjPb+MkXn1X4YIhI/WBmdb6QoiyRnVmFM6WOBLOqJ0vs7kf4w9fdnzWzdDNrDpwNXBxuf8LM9oTtvwv0AjaEB74xsKsS5bzr7lsAzOwNYJW7u5ltATomtHssnL0cMLPngD4EQVFRl5jZ1QTfl+OATGDzYdr3Ax5198/C2pYRzD6XhzW/GrZ7uUSdALj7bGA2wCmtM7wSdYpIEi2+8CfV7qPT3KzyG0VIZMMqtBy4HRgApFejHwMWuPsNVXz9wYTH8YTncQ49hiV/4DtQwKEz2FL/OMHMOhHM1M5w9z1mNr+stlWouZAgoEVEjkhRPg0IwXWpW4pmNQnWEJ7GC68JfeTu+4AcglN0mNkgoFXYfhUwzMzahvuONrMOtVDvEDNLC6+dDSC4vvVPINPMGoUr+L6b0P5ToOjuj80JFpbkmdkxwKAy2iVaA/zAzI4ysybA0HCbiMjXSqRnVu7+HjCzlF1TgXlmtplggcXocPstwOLwVN1fgX+F/bxpZlOAp8wsBuQD1xAESU3aDDxHsMDiVnfPBTCzpcDrwLvAKwntZwPZZpYbLpx4BdgK7ABeKKtd0UZ33xTOwIruJjnH3V8JT5+KiHxtWNFqD6mecDXgfne/Pdm1VMUprTN8+ZBrkl2GiNSRKF2zMrOXw8VlZYr6aUAREZFonwY8krj71GTXICLydaWZlYiIRJ7CSkREIk9hJSIikaewEhGRyFNYiYhI5CmsREQk8hRWIiISeQorERGJPIWViIhEnsJKREQiT2ElIiKRp7ASEZHIU1iJiEjk6a7rAkCjjsdF6vNtREQSaWYlIiKRp7ASEZHIU1iJiEjkKaxERCTyFFYiIhJ5CisREYk8hZWIiFRLYWFhrY+hsBIRkSrLzs7m/vvvr/XAUliJiEiVZGdnM2nSJE488URSUlIO2efuNTqW7mAhAOTt2c7jD1+Z7DJEpBYNHja3xvp65ZVXuOaaa/j1r3/NgAED2Lt3L/v27QOgffv2mBnujpnVyHgKKxERqbT9+/fTo0cPmjdvzosvvshNN91E48aNadSoET169OCmm26qsaAChZWIiFRCQUEBDRo0oH///nz++efMmzePzZs3M2HCBC677DJef/117rzzTt544w1OPvnkGhtXYSUiIhWyYsUKVq5cyccff8yMGTM4//zzSUlJ4f333+fHP/4xAGeddRZ33HFHjS+40AILEREp14oVK5g0aRLnn38+qampjB49moKCAs4991yGDx9e3O7Pf/4zO3bsID09vUbHV1iJiEiZ3J28vDzmzZvHbbfdxqBBg5g3bx7NmjXj4YcfBqBBg+Ak3V133cXUqVOZN28eGRkZNVqHTgOKiEiZdu/eTdu2bbnhhhvIzMwsvmbVrl07Pvzww0Padu3alYceeohu3brVeB2aWYmISKmys7Np3749q1ev5vTTTyctLa14FpWZmVn8+C9/+Quvv/46AwcOrJWgAoWViIiUIjs7mylTpjB06FDWr19PYWEh8Xi8eH9BQQEHDx5k6dKlTJgwgaOOOqpW69FpQBEROcTzzz/P5MmTuffee0lNTWXcuHGMHTuW1q1bU1hYSEpKCi1btiQrK4vOnTuzfPlyTjjhhFqtSTMrERE5xPbt25k9ezZ9+/alV69eZGZmMnHiRAoKCopvq3TSSSfRokUL7rnnHjIzM2u9JoWViIgcYvTo0fTp04eCggIAxo8fT2pqKrm5uUCwQrBr167k5OTUSVCBwkpEREoouglt0QKK7t27s3PnTmbNmgWAmdGqVasa/1uqw1FYiYjUc9u2bWPdunXk5+dTWFhYfBNagHg8TuPGjZk5cybPPPMM69evT0qNWmAhIlKPLVu2jKysLDIyMsjIyKB3796MGTOG5s2bE4/HicVixONx0tPTGTRoEJ06dUpKnZpZiYjUU/n5+SxZsoS5c+eyatUqhgwZwo4dO5gxYwZ5eXnEYkFExGIx0tPTycrKok2bNkmpVWElIlKP7du3j7fffhuAoUOHMnjwYPLz81m8eDEAGzZsYNOmTQCkpaUlrU6FlYhIPZWamsrEiRNZtmwZa9asIRaL0a9fP3r27ElOTg4HDhxg7dq1tGvXDqBGP5+qshRWEWZm+xMeX2hmfzOzDmY21cw+N7O2ZbR1M7sj4fkkM5taZ4WLyBGjf//+DBw4kIULF5KTk0NKSgojRowgNzeX3NxcJkyYwLHHHpvsMrXA4khgZt8FZgLnu/s/w99uPgKuB/67lJccBC42s2nu/lHdVSoiR5q0tDRGjhyJmTFt2jS2bt1Ko0aN2L17N02bNk12ecWsaHmiRE84W7oQmA9c6O5bw+1TwyZjgNPd/RMz2+/uTRNedxvQ1N1vNLNJ4eOplKFL59b+2xlDauutiEg13XDzk9XuI73NSWXui8fj5OXl8f777xOLxcjIyKBZs2Zfabd69epq11GSmb3s7r0P10Yzq2hrBPwZGFAUVAn2A/OAnwM3l/Lau4HNZvabsjo3s6uBqwHatG5SE/WKyBEqFovRqlUrWrZsCST3+lRpFFbRlg/8FbiSIJRKmgm8ama3l9zh7vvM7AHgWuBAaZ27+2xgNgQzq5oqWkRq3rRbLqx2H4OHza2BSpJDCyyiLQ5cAvQxs6ySO919L/AgcE0Zr/8dQdBp2iQiRzSFVcS5++fARcBIM7uylCZ3Av9JKbNkd/8EWEoQWCIiRyyF1REgDJ0LgClm9v0S+z4CHiW4vlWaO4DWtVuhiEjt0jWrCCta3Rc+3gEU3ZRreYl2E4GJZbzuQ6B2P8JTRKSWaWYlIiKRp7ASEZHIU1iJiEjkKaxERCTyFFYiIhJ5CisREYk8hZWIiESewkpERCJPYSUiIpGnsBIRkchTWImISOQprEREJPIUViIiEnkKKxERiTyFlYiIRJ4+z0oAaNGqI4OHzU12GSIipdLMSkREIk9hJSIikaewEhGRyFNYiYhI5CmsREQk8hRWIiISeQorERGJPIWViIhEnsJKREQiT2ElIiKRp9stCQCv7t9Nq7Wzk12GiNSCPf2uTnYJ1aaZlYiIlKuwsDCp4yusRETksFasWMH111/P6NGjyc3NBcDd67QGhZWIiJRpxYoVTJo0ifPPP5+UlBSuuOIKCgoKMLM6rUNhJSIiX+Hu5OXlMW/ePG677TYGDRrEvHnzaNKkCY888kid16MFFiIi8hW7d++mbdu23HDDDWRmZlJQUECDBg1o164dH3zwQZ3Xo5mViIgcIjs7m/bt27N69WpOP/100tLSaNAgmNtkZmYWP3788cfZsmVLndSksBIRkWLZ2dlMmTKFoUOHsn79egoLC4nH48X7CwoKOHjwIEuXLuW6666jSZMmdVKXTgOKiAgAzz//PJMnT+bee+8lNTWVcePGMXbsWFq3bk1hYSEpKSm0bNmSrKwsOnfuzPLlyznhhBPqpDbNrEREBIDt27cze/Zs+vbtS69evcjMzGTixIkUFBSQkpICwEknnUSLFi245557yMzMrLPaFFYiIgLA6NGj6dOnDwUFBQCMHz+e1NTUQ/62qmvXruTk5NRpUIHCSkREQkV/6Fu0gKJ79+7s3LmTWbNmAWBmtGrVivT09DqvTWElIlJPbdu2jXXr1pGfn09hYSFmVhxY8Xicxo0bM3PmTJ555hnWr1+f1Fq1wEJEpB5atmwZWVlZZGRkkJGRQe/evRkzZgzNmzcnHo8Ti8WIx+Okp6czaNAgOnXqlNR6NbMSEaln8vPzWbJkCXPnzmXVqlUMGTKEHTt2MGPGDPLy8ojFgmiIxWKkp6eTlZVFmzZtklqzwkpEpB7at28fb7/9NgBDhw5l8ODB5Ofns3jxYgA2bNjApk2bAEhLS0tanUUUViIi9UxqaioTJ05k2bJlrFmzhlgsRr9+/ejZsyc5OTkcOHCAtWvX0q5dO4A6v2ltaRRWIiL1UP/+/Rk4cCALFy4kJyeHlJQURowYQW5uLrm5uUyYMIFjjz022WUWK3eBhZndCIwACoE48J/u/pKZzQHudPc3q1uEme1396aVaL8d2OHu/RO2vQo0cPcelehnPvC4uz9cU+/HzAYAk9x9cHX6KWeMjsBZ7v5gbY0hIl9vaWlpjBw5EjNj2rRpbN26lUaNGrF7926aNq3wj+M6c9iwMrMzgcHA6e5+0MxaAw0B3P0ndVDf4TQzs+PdfYeZda9uZxF4P5XRkeAXiAqHlZk1cPeCWqtIRI44rVq14qqrriIzM5P77ruPtLQ0Fi1axDHHHJPs0r6ivJnVccBH7n4QwN0/KtphZqsJZhAbzWw/cA9wIfA+kAX8BmgPXOfuy81sDDAUaAFkAIvc/ZaSA5rZL4BLgEbAo+5+cxm1LQUuBW4HhgOLgR+HfaQA04EBYT93u/t9Fpx4/T/gPGAH8GUZ7+ce4AygMfBwUQ3hjG4B8D0gFfiRu28t6+CZ2VSgE3BCeCwmAH2BQcBO4Hvunh/2uzTcfgAY4e5/T5z5hf0VzUCnA93D2eQCYGYZ73cAcCuwB+gGdC2rVhGJrk/H31Gt1w9oUf7vtUV/XzVhwoSv7Fu9enW1xq8J5V2zego43sz+ZmazzOw7ZbRrAjzr7icDnwL/QxAIQ4FfJbTrA/wQOBX4kZn1TuzEzAYCXcJ2PYFeZnZ2GWM+AlwcPv4e8JeEfVcCee5+BkHoXGVmncJ6TgIygcuBs8ro+0Z37x3W+R0zOzVh30fufjpBOE8q4/WJOgP/AXwfWAQ85+6nEITSRQnt8sLtdwG/K6fPycAad+/p7r89zPsFOB34ubt/JajM7Goz22hmG+N791fgrYjI15WZRWIhRVkOO7Ny9/1m1gvoD5wDLDGzye4+v0TTL4Hs8PEW4GA4Y9hCcMqqyNPu/jGAmS0D+gEbE/YPDL9eCZ83JQivnFLK+xjYY2aXAW8Bn5fo51QzGxY+bxH2czaw2N0LgVwze7aMt36JmV1NcHyOIwi3zeG+ZeG/L/PvsDycFQnHIoVDj1PHhHaLE/79bQX6TVTW+/0SWO/u75b2InefDcwGaNCtg1dyTBGpI83+7/pqvX51v6trqJLkKXeBRfiDfTWwOvyBOxqYX6JZvhfNIYNFGEWnDeNmljhGyR+IJZ8bMM3d76tQ9bAEuBsYU0o/49195SEbzS4sr8NwRjIJOMPd94Sn4hL/yOBg+G8hFbsDSOKxKHmcyjo2RY8LCGe/ZhYjvF5YWtmU/n4HAJ9VoEYRkUg77GlAMzvJzLokbOoJ/LMa451nZkebWWPgB8ALJfavBMaaWdNw/Awza3uY/h4luDa2ssT2lcDPzCw17KermTUhmKFdamYpZnYcwWyxpOYEP+DzzOwYgutIdeHShH/XhY+3A73Cx98nuE4GwanWZgmvLev9ioh8LZQ3M2gK/J+ZtST4Lf/vQHXmk+sJrjV9g2CBReIpQNz9qXBl37rw3Ol+YBSwq7TO3P1TYAZ85Y/W5hCcYtsULqrYTRCOjxJcP3oT+Bf/DoXEPl8zs1eArQSLMEoGam1pZWabCWZiw8NtfwAeM7PXCE4fFs2SNgOF4fb5wO8p/f2KiHwt2L/PStXyQMFqwN7u/l91MuARJFwN2DtxtWVda9Ctgzebc2OyhheRWrQn4teszOzlcFFbmXQHCxERibw6+4iQcAXh/Loa70ji7h2TXYOISJRpZiUiIpGnsBIRkchTWImISOQprEREJPIUViIiEnkKKxERiTyFlYiIRJ7CSkREIk9hJSIikaewEhGRyFNYiYhI5CmsREQk8hRWIiISeXV213WJtp5N27Ax4p95IyL1l2ZWIiISeQorERGJPIWViIhEnsJKREQiT2ElIiKRp7ASEZHIU1iJiEjkKaxERCTyFFYiIhJ55u7JrkEiwMw+BbYlu45Qa+CjZBeB6ihNVGqJSh0QnVqiUgdUvpYO7t7mcA10uyUpss3deye7CAAz2xiFWlTHV0WllqjUAdGpJSp1QO3UotOAIiISeQorERGJPIWVFJmd7AISRKUW1fFVUaklKnVAdGqJSh1QC7VogYWIiESeZlYiIhJ5CisREYk8hVU9Y2YXmNk2M/u7mU0uZX8jM1sS7n/JzDomqY6zzWyTmRWY2bDaqKEStUw0szfNbLOZrTKzDkmq46dmtsXMXjWztWaWWRt1VKSWhHY/NDM3s1pZMl2BYzLGzHaHx+RVM/tJMuoI21wS/nfyhpk9WBt1VKQWM/ttwvH4m5ntTVId7c3sOTN7Jfx/58JqDeju+qonX0AK8A5wAtAQeA3ILNFmHHBv+PgyYEmS6ugInAo8AAxL8jE5BzgqfPyzJB6T5gmPvw9kJ+uYhO2aATnAi0DvJB2TMcBdtfXfRyXq6AK8ArQKn7dN5vcmof14YF6Sjsls4Gfh40xge3XG1MyqfukD/N3d/+HuXwIPAUNKtBkCLAgfPwx818ysrutw9+3uvhmI1/DYVanlOXf/PHz6IvCNJNWxL+FpE6C2VkdV5L8TgFuBGcAXSa6jtlWkjquAu919D4C770piLYmGA4uTVIcDzcPHLYDc6gyosKpfMoAdCc/fC7eV2sbdC4A8ID0JddSVytZyJbAiWXWY2TVm9g7wG+DaWqijQrWY2enA8e7+RC3VUKE6Qj8MTzM9bGbHJ6mOrkBXM3vBzF40swtqoY6K1gJAeLq6E/BskuqYCowys/eAJwlmeVWmsBKpIDMbBfQG/jdZNbj73e7eGfhvYEoyajCzGHAncH0yxi/hL0BHdz8VeJp/nxWoaw0ITgUOIJjN/MHMWiapliKXAQ+7e2GSxh8OzHf3bwAXAgvD/3aqRGFVv+wEEn/z/Ea4rdQ2ZtaAYPr+cRLqqCsVqsXMzgVuBL7v7geTVUeCh4Af1EIdFamlGdADWG1m24G+wPJaWGRR7jFx948Tvh9zgF41XEOF6iCYWSx393x3fxf4G0F4JaOWIpdRO6cAK1rHlcBSAHdfB6QR3OC2amrjIqC+ovlF8NvfPwhODRRdFD25RJtrOHSBxdJk1JHQdj61u8CiIsfkmwQXk7skuY4uCY+/B2xMVi0l2q+mdhZYVOSYHJfweCjwYpLquABYED5uTXCKLD1Z3xugG7Cd8MYPSTomK4Ax4ePuBNesqlxPjb8JfUX7i2A6/rfwh++N4bZfEcwYIPjt50/A34H1wAlJquMMgt9WPyOY2b2RxGPyDPAh8Gr4tTxJdfweeCOs4bnDBUht11Kiba2EVQWPybTwmLwWHpNuSarDCE6NvglsAS5L5veG4HrR9NqqoYLHJBN4IfzevAoMrM54ut2SiIhEnq5ZiYhI5CmsREQk8hRWIiISeQorERGJPIWViIhEnsJKRAAI756+KOF5g/CO5o+X87qeh7ujtpn1NrOZNVmr1D8KKxEp8hnQw8wah8/Po2J3FulJ8Dc3X2FmDdx9o7vX1n0MpZ5QWIlIoieBi8LHh9yx28yamNk8M1sffkbREDNrSPCHoJeGn590qZlNNbOFZvYCwf3gBhTNzsysqZndH34u12Yz+2Fdv0E5MimsRCTRQ8BlZpZG8HliLyXsuxF41t37EHzG1/8CqcBNBJ/x1dPdl4RtM4Fz3X14if5/CeS5+yke3Hy2Nu4ILl9DDZJdgIhEh7tvDj8dejjBLCvRQOD7ZjYpfJ4GtC+jq+XufqCU7ecS3HOyaLw91atY6guFlYiUtBy4neDjLhI/y8yAH7r7tsTGZvatUvr4rNaqk3pJpwFFpKR5wC3uvqXE9pXA+KJPjjazb4bbPyX42JCKeJrgzv6EfbSqZq1STyisROQQ7v6eu5e21PxWgmtUm83sjfA5BHc7zyxaYFFO9/8DtDKz183sNYJrXyLl0l3XRUQk8jSzEhGRyFNYiYhI5CmsREQk8hRWIiISeQorERGJPIWViIhEnsJKREQi7/8Dd0UdjTI3bScAAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], "source": [ "strategies = {\n", " 'KNN' : KNNImputer(n_neighbors=3),\n", @@ -200,7 +212,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "However if the model does not support missing values by default, only the inputation strategies are calculated.\n" + "However if the model does not support missing values by default, only the inputation strategies are calculated.This can be indicated by setting the `model_na_support` parameter to `False`.\n" ] }, { @@ -208,22 +220,12 @@ "execution_count": 9, "metadata": {}, "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "posx and posy should be finite values\n", - "posx and posy should be finite values\n", - "posx and posy should be finite values\n", - "posx and posy should be finite values\n" - ] - }, { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-02T20:25:35.310670\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T13:48:49.866423\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -234,6 +236,7 @@ "strategies = {\n", " 'KNN' : KNNImputer(n_neighbors=3),\n", " 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", + " 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=False),\n", " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,\n", " sample_posterior=True)\n", " }\n", @@ -255,15 +258,15 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 7, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-02T18:20:04.149488\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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jlDVckPBta8sd7++ThpMIGa2muDcbIpXDM2bpHrvrI7xal5EasnMV1fFO4RKmdlyd8+qavn6f5VNRESEOrxbu7tP4ruTNQRw947xjkFEpL5TD0tERBKCEpaIiCQEJSwREUkISlgiIpIQlLBERCQhKGGJiEhCUMISEZGEoIQlIiIJQQlLREQSQp3d6ULqt+8fcywzX12294IickBw9/I3Da/31MMSETmIbN68GfjOEy4SghKWiMhBYtasWdx666188sn+PNYwfpSwREQOAosWLeK6667j4osvpkOHDrtti0ajcYqqenQNS0TkAFZ6rWrZsmVcffXVnH766axbt46CggK++uorzjnnHCKRCNFolEikfvdh6nd0IiKyX0pKSgBo3749ycnJbN++nXPOOYennnqKUaNG0b9/f4B6n6xAPSwRkQPWa6+9xueff865555L8+bNefrpp4lGowwdOpSrr74agFNOOYWpU6dy+eWXxznavav/KVVERKrthRdeoE+fPuTk5ABw+umnk52dzZ133klhYWFZud69e9OwYcN4hVkt6mGJiBxgnnvuOe68804WLlzI/fffz1/+8hdycnK44YYbiEQiPPjgg3Tu3JnVq1czc+ZMBg8eHO+Qq0QJSwDYXriF/Nuej3cYIhLjlNvOrvY+n332Gffffz9//vOf6d69Oz179uS9994r23799dfTsWNHNmzYwJo1a5g+fTqdOnWqybBrjRKWiMgBYuvWrbRt25bJkyfTqlUrAM455xzGjh3LxIkTueqqqwDKJlokGl3DEhE5ALzwwgsMGTKEjRs3liWrkpISDjvsMMaOHcu8efNYt27dbvu4ezxC3WdKWCIiCW7+/Pn84he/4Nprry1LVgBJSUkAHH300Wzbto3Vq1fvtl+i3Z5JCUtEJMEVFBRwyy238JOf/ITPPvuM1157jfz8/LLtmZmZHHPMMdx00024e8L1rEopYYmIJLiUlBSWL1/Oxx9/zNlnn82TTz7JFVdcwdixY8vK/PnPf+bpp5/GzBKuZ1VKCUtEJMF1796dRo0a8fjjj3PFFVcwbtw4nn/+eR566CFmz54NQIMGDTj00EPjHOn+UcISEUlwXbt2pXnz5syYMYN169axfft2unbtykUXXcSOHTviHV6N0bR2EZEEUlBQwObNm8nKyiISiZRNrLjzzjtJSUnhP//5D+PG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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T13:47:58.990950\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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SU5QZmaWk5ygzMwsJzlBmZlZTnKCMjOznOQEZWZmOckJyszMcpITlJmZ5SQnKDMzy0mNdi8+y219+vSJpUuXbr+gmVk98734zMxsl+IEZWZmW3zyySfAfx4Bn01OUGZmBsDdd99Nv379eP3115GU9STlBGVmZrzyyitMnjyZ5s2bc+aZZ1JSUpL1JOUEZWZmpFIprrjiCp566imOOuooTjvttGqTVGMmLCcoM7MmrLS0FICDDjqIL3/5ywD87ne/o1+/fgwZMmTLdN/LL78MgKRGi83LzA3wMnOzpmju3Lk8/PDDlJeXc+GFF7LXXnvRvn37LccvvvhiVqxYwQknnMBDDz3En//8Z3bfffd6j6OmZeZOUAY4QZk1NYsXL2bEiBHcfPPNLFy4kJdffpmjjz6aM888k86dO28p94UvfIHXXnuN+fPnc8QRRzRILDUlqEZ75LvltpLlb3B5y6uzHYaZ1cFVm39S53MiAkksW7aME088kWOPPZZjjz2W73//+9x33320aNGCs88+m912241ly5axefNmFixYQM+ePRvgHWybr0GZmTUh7733HgA9e/bk7bffZv78+QC0a9eOAw44gKeeeooPP/wQgN13352ioqKsJCdwgjIzazIefPBBRo8ezfr16znggAPo2bMnP//5zzn11FNZsmQJU6dOpaCggGnTpgGw//7706VLl6zF6yk+M7Mm4LHHHuO73/0uf/zjH+nUqRMAY8aM4YwzzqCkpITevXsDcMABB9CxY8dshrqFE5SZWROwatUqfvSjH3HCCSfwxhtv8Pe//53y8nK+9KUv0bVrVwB++9vfcvvtt3PnnXdmN9iEp/jMzJqA5s2bs2zZMl577TVOPvlkZs2axVlnncWvfvUrAD788EOefvppbr31Vrp3757laNOcoMzMmoCjjz6ali1bcvvtt3PWWWcxZcoUHnjgAaZOncoDDzzAbrvtxh133MGRRx6Z7VC3cIIyM2sCDjvsMNq3b8+cOXN444032LRpE4cddhinn346H330EdC4d4moDV+DMjP7jFm1ahXvvPMOffr0IZVKkZeXB8DVV19N8+bN+ec//8mUKVNo3bo1d955J+eddx7gBGVmZg1o9uzZTJgwgcLCQgoLC+nTpw+jRo2ibdu2APzkJz/hkUce4dVXX+Wll17igQce4MADD8xy1NXzrY4MgC6p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\n" }, "metadata": { "needs_background": "light" @@ -278,6 +281,7 @@ " sample_posterior=True),\n", " 'Random Imputation' : RandomSampleImputer()\n", " }\n", + "clf = lgb.LGBMClassifier()\n", "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10)\n", "cmp.fit_compute(X_missing,y)\n", "cmp.plot()" @@ -291,12 +295,18 @@ ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "metadata": {}, - "source": [ - "LightGBM,XGBoost models handle missing values by deafault. However incase you want to use the models like RandomForest,LogisticRegression you need to transform the datasets before\n", - "using the `CompareImputationStrategies` for comparing various imputation strategies." - ] + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/probatus/missing/imputation.py b/probatus/missing/imputation.py index 8bf5f4ac..6a258f8e 100644 --- a/probatus/missing/imputation.py +++ b/probatus/missing/imputation.py @@ -30,13 +30,34 @@ class CompareImputationStrategies(BaseFitComputePlotClass): """ Comparison of various imputation stragegies that can be used for imputation - of missing values. - The aim of this class is to present the user the model performance is - based on the choosen metric and imputation strategy. - For models like XGBoost & LighGBM which have capabilities to handle misisng values, any - data transformation is not required. - However in the case of RandomForestClassifier,LogisticRegression - the data must be transformed before passing for comparision. + of missing values. The aim of this class is to present the model performance based on imputation + strategies and choosen model. + For models like XGBoost & LighGBM which have capabilities to handle misisng values by default + the model performance with no imputation will be shown as well. + Usage E.g. + ```python + + from probatus.missing.imputation import CompareImputationStrategies + strategies = { + 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), + 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), + 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, + sample_posterior=True), + 'KNN' : KNNImputer(n_neighbors=3) + + clf = lgb.LGBMClassifier() + cmp = CompareImputationStrategies( + clf=clf, + strategies=strategies, + cv=5, + model_na_support=True) + + cmp.fit_compute(X_missing,y) + cmp.plot() + + } + + ``` """ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,verbose=0): @@ -61,6 +82,7 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,ve 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, sample_posterior=True)} This allows you to have fine grained control over the imputation method. + model_na_support(boolean): default True If the classifier supports missing values by default e.g. LightGBM,XGBoost etc. If True an default comparison will be added without any imputation. If False only the provided strategies will be used. @@ -80,7 +102,7 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,ve self.cv = cv self.verbose = verbose self.fitted = False - self.results_df = None + self.report = None def __repr__(self): return "Imputation comparision for {}".format(self.clf.__class__.__name__) @@ -196,8 +218,8 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' results.append(temp_results) - self.results_df = pd.DataFrame(results) - self.results_df.sort_values(by='score',inplace=True) + self.report = pd.DataFrame(results) + self.report.sort_values(by='score',inplace=True) self.fitted = True return self @@ -208,7 +230,7 @@ def compute(self,return_scores=True): """ self._check_if_fitted() if return_scores : - return self.results_df + return self.report def fit_compute(self, X, y,column_names=None,class_names=None,categorical_columns='auto'): """ @@ -247,9 +269,9 @@ def plot(self,show=True): """ Plot the results for imputation. """ - imp_methods = list(self.results_df['strategy']) - performance = list(self.results_df['score']) - std_error = list(self.results_df['std']) + imp_methods = list(self.report['strategy']) + performance = list(self.report['score']) + std_error = list(self.report['std']) y_pos = [i for i, _ in enumerate(imp_methods)] x_spacing = 0.01 y_spacing = 2*x_spacing diff --git a/probatus/utils/missing_helpers.py b/probatus/utils/missing_helpers.py new file mode 100644 index 00000000..db978e87 --- /dev/null +++ b/probatus/utils/missing_helpers.py @@ -0,0 +1,87 @@ +import pandas as pd +import numpy as np +import logging +import pytest +from sklearn.preprocessing import KBinsDiscretizer +from sklearn.datasets import make_classification +import string + +def generate_MCAR(df,missing): + """ + Generate missing values completely at random for dataframe df + + Args: + df: input dataframe where some values will be masked + missings: (float or dict) + - float ( must be a fraction between 0 and 1 - both inclusive), then it will apply this fraction of missing + values on the whole dataset. + - dict: + - keys: column names to mask values + - values: fraction of missing values for this column + + Returns: + pd.DataFrame: same as the input dataframe, but with some values masked based on the missing variable + + Examples: + + # Apply 20% missing values over all the columns + miss_rand = generate_MCAR(data, missing=0.2) + + # Use the dictionary + missing_vals = {"PAY_0":0.3,"PAY_5": 0.5} + miss_rand = generate_MCAR(data, missing=missing_vals) + + """ + + df = df.copy() + + if type(missing)==float and missing<=1 and missing>=0: + df = df.mask(np.random.random(df.shape) < missing) + elif type(missing)==dict: + for k,v in missing.items(): + df[k] = df[k].mask(np.random.random(df.shape[0]) < v) + + else: + raise ValueError("missing must be float within range [0.1] or dict") + + return df + + +def get_data(n_samples,n_numerical,n_category): + """ + Returns a dataframe(X),target(y) with numerical and categorical features. + + Args : + n_samples(int) : Number of samples to return. + n_numerical(int) : Number of numerical columns to create. + n_category(int) : Number of categorical columns to create. + + Returns : + X(DataFrame) : DataFrame with numerical and categorical features. + y(Series) : Series with binary values. + + Examples: + + # Create a data with 1000 samples, 10 numerical and 5 categorical variables. + X,y = get_data(n_samples=1000,n_numerical=10,n_category=5) + + """ + #Total number of columns is the sum of numerical and categorical columns. + no_vars = n_numerical + n_category + + X,y = make_classification( + n_samples=n_samples, + n_features=no_vars, + random_state=123,class_sep=0.3) + + binner = KBinsDiscretizer(n_bins=5, encode='ordinal', strategy="quantile", ) + X[:,n_numerical:] = binner.fit_transform(X[:,n_numerical:]) + + #Add column names. + X = pd.DataFrame(X, columns=["f_"+str(i) for i in range(0,no_vars)]) + + # Efficiently map values to another value with .map(dict) + X.iloc[:,n_numerical:] = X.iloc[:,n_numerical:].apply( + lambda x: x.map({i:letter for i,letter in enumerate(string.ascii_uppercase)})) + + return X,y diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py index f06a407f..e13865d9 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing/test_imputation.py @@ -1,94 +1,70 @@ #Code to test the imputation strategies. from probatus.missing.imputation import CompareImputationStrategies -from tests.utils.test_missing import generate_MCAR,generate_MNAR -import pandas as pd -from sklearn.datasets import make_classification import lightgbm as lgb -import xgboost as xgb -from sklearn.ensemble import RandomForestClassifier from sklearn.linear_model import LogisticRegression from sklearn.experimental import enable_iterative_imputer from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer from feature_engine.imputation import RandomSampleImputer -from sklearn.preprocessing import KBinsDiscretizer -import string -import fire +import pandas as pd +import numpy as np +import pytest -def test_imputation(choice=3): - X,y = get_data(n_samples=1000,n_numerical=10,n_category=5) - X_missing = generate_MCAR(X,missing=0.2) +@pytest.fixture(scope='function') +def X(): + return pd.DataFrame({'col_1': [1, np.nan, 1, 1, np.nan, 1, 1, 0], + 'col_2': [0, 0, 0, np.nan, 0, 0, 0, 1], + 'col_3': [1, 0, np.nan, 0, 1, np.nan, 1, 0], + 'col_4': ['A', 'B', 'A', np.nan, 'B', np.nan, 'A', 'A']}, index=[1, 2, 3, 4, 5, 6, 7, 8]) + +@pytest.fixture(scope='function') +def y(): + return pd.Series([1, 0, 1, 0, 1, 0, 1, 0], index=[1, 2, 3, 4, 5, 6, 7, 8]) + +def test_imputation_boosting(X,y,capsys): + + #Create strategies for imputation. strategies = { 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, sample_posterior=True), 'KNN' : KNNImputer(n_neighbors=3), - 'Random Imputer': RandomSampleImputer() - } - #Initialize the classifier - print(f'Using choice {choice}') - if choice == 1: - clf = RandomForestClassifier() - cmp = CompareImputationStrategies( - clf=clf, - strategies=strategies, - cv=5, - model_na_support=False) - if choice == 2 : - clf = xgb.XGBClassifier() - cmp = CompareImputationStrategies( - clf=clf, - strategies=strategies, - cv=5, - model_na_support=True) - if choice == 3 : - clf = lgb.LGBMClassifier() - cmp = CompareImputationStrategies( - clf=clf, - strategies=strategies, - cv=5, - model_na_support=True) - if choice == 4 : - clf = LogisticRegression() - cmp = CompareImputationStrategies( - clf=clf, - strategies=strategies, - cv=5, - model_na_support=False) - - #Create strategies for imputation. - - - cmp.fit_compute(X_missing,y) - cmp.plot() + clf = lgb.LGBMClassifier() + cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=True) + report = cmp.fit_compute(X,y) + cmp.plot(show=False) + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0]==5 + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 -def get_data(n_samples,n_numerical,n_category): - """ - Returns a dataframe with numerical and categorical features. - """ - no_vars = n_numerical + n_category - - X,y = make_classification( - n_samples=n_samples, - n_features=no_vars, - random_state=123,class_sep=0.3) - - binner = KBinsDiscretizer(n_bins=5, encode='ordinal', strategy="quantile", ) - X[:,n_numerical:] = binner.fit_transform(X[:,n_numerical:]) - - #Add column names. - X = pd.DataFrame(X, columns=["f_"+str(i) for i in range(0,no_vars)]) - - # Efficiently map values to another value with .map(dict) - X.iloc[:,n_numerical:] = X.iloc[:,n_numerical:].apply( - lambda x: x.map({i:letter for i,letter in enumerate(string.ascii_uppercase)})) - - return X,y +def test_imputation_linear(X,y,capsys): + + #Create strategies for imputation. + strategies = { + 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), + 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), + 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, + sample_posterior=True), + 'KNN' : KNNImputer(n_neighbors=3), + } + #Initialize the classifier + clf = LogisticRegression() + cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=False) + report = cmp.fit_compute(X,y) + cmp.plot(show=False) + + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0]==4 -if __name__ == '__main__': - fire.Fire(test_imputation) \ No newline at end of file + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 \ No newline at end of file diff --git a/tests/utils/test_missing.py b/tests/utils/test_missing.py deleted file mode 100644 index 4362e3b6..00000000 --- a/tests/utils/test_missing.py +++ /dev/null @@ -1,89 +0,0 @@ -import pandas as pd -import numpy as np - - -def generate_MCAR(df,missing): - """ - Generate missing values completely at random for dataframe df - - Args: - df: input dataframe where some values will be masked - missings: (float or dict) - - float ( must be a fraction between 0 and 1 - both inclusive), then it will apply this fraction of missing - values on the whole dataset. - - dict: - - keys: column names to mask values - - values: fraction of missing values for this column - - Returns: - pd.DataFrame: same as the input dataframe, but with some values masked based on the missing variable - - Examples: - - # Apply 20% missing values over all the columns - miss_rand = generate_MCAR(data, missing=0.2) - - # Use the dictionary - missing_vals = {"PAY_0":0.3,"PAY_5": 0.5} - miss_rand = generate_MCAR(data, missing=missing_vals) - - """ - - df = df.copy() - - if type(missing)==float and missing<=1 and missing>=0: - df = df.mask(np.random.random(df.shape) < missing) - elif type(missing)==dict: - for k,v in missing.items(): - df[k] = df[k].mask(np.random.random(df.shape[0]) < v) - - else: - raise ValueError("missing must be float within range [0.1] or dict") - - return df - - -def generate_MNAR(df,missing, conditions, missing_false = None): - """ - Generate missing values not at random for dataframe df - - Missing values following the strategy are generated at random when the condition is satisfied. - - A different method can be added for cases when the condition is false, using the missing_false variable. - The default value None does not do any type of inputattion when the condition is false - - Args: - df: input dataframe where some values will be masked - missings: (float or dict) - - float ( must be a fraction between 0 and 1 - both inclusive), then it will apply this fraction of missing - values on the whole dataset. - - dict: - - keys: column names to mask values - - values: fraction of missing values for this column - conditions: pd.Series (boolean): series with same index ad df with boolean values - missing_false: default None. Add missing values in case the condition False. - If None, then no masking is performed. - - float ( must be a fraction between 0 and 1 - both inclusive), then it will apply this fraction of missing - values on the whole dataset. - - dict: - - keys: column names to mask values - - values: fraction of missing values for this column - - Returns: - pd.DataFrame: same as the input dataframe, but with some values masked based on the missing variable - - - - """ - - df_true = df[conditions] - df_false= df[~conditions] - - df_true = generate_MCAR(df_true,missing) - - if missing_false is not None: - df_false = generate_MCAR(df_false, missing_false) - - out = pd.concat([df_true,df_false]) - - return out From be1e54e392df0076aa3f6a653c5764265f009e2a Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 4 Mar 2021 16:05:38 +0100 Subject: [PATCH 07/24] Resolving pyflakes and code for pipelines. --- docs/img/imputation_comparision.png | Bin 0 -> 20452 bytes docs/tutorials/nb_imputation_comparison.ipynb | 159 ++++++++---------- probatus/missing/imputation.py | 96 +++++++---- probatus/utils/missing_helpers.py | 2 - tests/missing/test_imputation.py | 1 - 5 files changed, 133 insertions(+), 125 deletions(-) create mode 100644 docs/img/imputation_comparision.png diff --git a/docs/img/imputation_comparision.png b/docs/img/imputation_comparision.png new file mode 100644 index 0000000000000000000000000000000000000000..a814cb0aaa378cbefdd5ddf14d4e18e898560c64 GIT binary patch literal 20452 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 v>7lRSAI#$oP{%tC4kwnpaGVfEI>+ZN", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T13:47:15.197491\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T15:58:17.749799\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -196,7 +163,7 @@ " sample_posterior=True)\n", " }\n", "clf = lgb.LGBMClassifier()\n", - "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10)\n", + "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=5,random_state=45)\n", "cmp.fit_compute(X_missing,y)\n", "cmp.plot()" ] @@ -212,20 +179,20 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "However if the model does not support missing values by default, only the inputation strategies are calculated.This can be indicated by setting the `model_na_support` parameter to `False`.\n" + "However if the model does not support missing values by default e.g LogisticRegression , results for only the inputation strategies are calculated. This can be indicated by setting the `model_na_support` parameter to `False`.\n" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 16, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T13:48:49.866423\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T15:59:15.743486\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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iYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhInXF33L1a5yphiYhIrZs/fz7PPPMMZgZQraSlhCUiIrVq27Zt3HzzzQwfPpynn34aM8PMKC0trVI9WulCRERqVYsWLRg9ejR9+/bl0ksvZfv27Vx88cXEYlXrMylhCQD/+ayYMc8UpjsMEakH7h3WKWV1lZSU0KBBA3bv3s3AgQO58MILOfXUU3nnnXcAuO2225KuS0OCIiKScsXFxQA0aNAAgFNOOYVFixbRp08fJk2axB133MGOHTuqVKd6WCIiklJz585l/vz5lJaWMmbMGNq3b8+BBx7Izp07+dOf/sTDDz/MTTfdxA033MCJJ56YdL3qYYmISMosX76ccePGcd5559GhQwduvfVWHn30UQ444AC6devG6NGjueWWW7j++ut56aWXOPbYY5OuWz0sERGpsdLSUmKxGAUFBZx++un079+f/v37c/XVV/PnP/+ZRo0aMWTIEM455xyOOeYY9uzZw8CBA6vUhnpYIiJSY5s2bQIgJyeHLVu2sGDBAgBatmxJ9+7dWbFiBV26dOGYY47B3fc+26oKJSwREamRefPm0bVrVxYvXkxOTg45OTlMnjyZc845hxUrVvDggw/SsGFDHn74YYC9n8OqKg0JiohItc2bN49JkyYxfPhwVqxYwaBBg7j88su58MIL2bhxI7m5uQB0796dNm3a1KgtJSwREamWl156iYkTJ3L//feTkZHBFVdcwaWXXkq7du048MAD6dKlCwB33nknM2fO5PHHH69RexoSFBGRalm/fj1Tp06lX79+9O7dm549ezJ+/Hj27NkDBOsFFhUVsXz5cv74xz+SnZ1do/aUsEREpFouueQS+vbtuzdBjR07lkaNGlFYGKyaU1JSQpMmTZg5c2aVpq9XRAlLRESqpWzF9YYNg6dL2dnZbNy4kXvvvXef/VVdM7AiSlgiIpKUtWvXsmzZMoqLiykpKcHM9iat0tJSmjRpwl133cWCBQtYvnx5ytvXpAsREanUnDlzyMvLIysri6ysLHJzcxk1ahQtWrTY+6Hh0tJS2rRpwxlnnEG3bt1SHoN6WCIisl/FxcXMnj2badOmsXDhQoYNG8aGDRuYMmUKW7du3TvkF4vFaNOmDXl5ebRr1y7lcShhiYhIpbZt28a6desAGD58OEOHDqW4uJhZs2YBsGLF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\n" }, "metadata": { "needs_background": "light" @@ -246,6 +213,40 @@ "cmp.plot()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also pass a sklearn pipline instead of a classifier." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T15:59:23.868511\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAasAAAEYCAYAAADiT9m2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAtdklEQVR4nO3de3wV1bn/8c+zIZAU5Ba5aFRuR21EYyqBooDCqVKkWKD1BngUrVKtIoW2lhOxXuop2l8tlVarKFZF5FLFKxYFBYMKTYAi3kBqpVJiK1jlGjAkz++PmeAmTchOspM96Pf9euXF7Jk1az0z0f1krVl7bXN3REREoiyW6gBERERqomQlIiKRp2QlIiKRp2QlIiKRp2QlIiKRp2QlIiKRp2Ql8iVkZqPN7IVUx1ETM3Mz+686nvsnM7sk2TFJaihZidSRmW00szNT0O4YM3ulFuW7hG/6TSv2ufssdx+U5LhGm9nO8KfEzMrjXu9MZluJcPez3f2hxm5XGoaSlYgkRZgAW7p7S+BsoLjidbhPpM6UrESSIOztvGpmU83sUzP7m5mdFu7fZGYfxQ9JmdmDZnaPmS0ysx1m9rKZdQ6P/UdPyMyWmtnlZpYN3AOcGvZYPg2Pf8vM/mJm28P2booLryD899PwnFMr987CWIvMbFv472mV2v55eH07zOwFMzu8lvfnSDN73My2mNn7ZnZt3LEmZpZvZu+F9a8ys6PjTj/TzDaE9/UuM7O4e/6Kmf3KzD4J6z278j2La+NXZrY1/N1cHX+PK/eSzewmM3sk7nUfM3stjOF1MxsQd2xMWOeOMIbRtbk3khglK5Hk+TqwFsgEHgXmAL2A/wIuAn5nZvE9jNHAz4HDgTXArJoacPd3gCuB5WGPpU14aBdwMdAG+BZwlZkND4+dHv7bJjxneXydZtYOWABMC2P/NbDAzDLjio0CLgU6AM2AH9cUa1z9MeAZ4HUgC/gG8EMz+2ZYZCIwEhgCtAIuA3bHVTGU4D7mAOcD34w79nVgPcE9/CUwoyKZVXJFWM/XgDzg3FrEn0Vwf24F2hFc++Nm1t7MWhDct7Pd/TDgNILfpSSZkpVI8rzv7n9w9zJgLnA0cIu773X3F4DPCBJXhQXuXuDue4HrCXpLR/9ntTVz96Xu/oa7l7v7WmA2cEaCp38L2ODuM919n7vPBtYB58SV+YO7v+vuJcA8ILcW4fUC2rv7Le7+mbv/DbgPuDA8fjkw2d3Xe+B1d/847vzb3P1Td/8AWFKp7b+7+33hPX8IOALoWEUM5wO/cfdN7v5vYEot4r8IeM7dnwvv7yJgJUFyBSgHTjSzDHf/0N3fqkXdkiAlK5Hk+VfcdgmAu1feF9+z2lSx4e47gX8DR9alYTP7upktCYfZthH0vhIdqjsS+HulfX8n6AVV+Gfc9m4OvI6adAaODIfQPg2HLvP5PKkcDbx3kPMP1vb+Y+5e0RurKrYjibvf/Of1Hkxn4LxK8fcDjnD3XcAFBPf7QzNbYGZfrUXdkiAlK5HU2d+LCocH2wHFBEN6AF+JK9spbruqr0p4FHgaONrdWxM817KDlI9XTPCGHO8YYHMN5yVqE0Gvs03cz2HuPiTuePcktVWdD4m73wTXF28X1d/vTcDMSvG3cPfbANz9eXc/i6BXt46g1yhJpmQlkjpDzKyfmTUjeHa1Ihym2kKQKC4KJwZcxoFv5v8CjgrPq3AY8G9332NmvQmeMVXYQjBU1a2aOJ4DjjOzUWbW1MwuAE4Ank3KVUIhsMPMfmpmGeE1nWhmvcLj9wM/N7NjLZBT6XlZMswDrjWzo8ysLTCp0vE1wIVmlmZmlZ9pPQKcY2bfDGNPN7MBYV0dzWxY+OxqL7CT4F5LkilZiaTOo8CNBMN/PQmejVS4AvgJ8DHQA3gt7thLwFvAP81sa7jvB8AtZrYD+BnBmzOwf3js/4BXw2GsPvFBhM+HhgI/Ctu7Dhjq7ltJgvB50lCCZ03vA1sJElTrsMivw3hfALYDM4CMZLQd5z7geYJJHquB+ZWO30DwB8EnwM0Ev5uK+DcBwwiGLrcQ9LR+QvD+GSOYIFJM8Hs8A7gqybELYPryRZHGZ2YPAv9w98mpjuXLyMy6ECTONHffl+JwJAHqWYmISOQpWYmISORpGFBERCJPPSsREYm8pjUXkS+Dww8/3Lt06ZLqMETkS2jVqlVb3b39wcooWQkAXbp0YeXKlakOQ0S+hMysxhVFNAwoIiKRp2QlIiKRp2QlIiKRp2QlIiKRp2QlIiKRp2QlIiKRp2QlIiKRp2QlIiKRpw8FCwD+wS4+G7c81WGISIQ0++2pqQ5hP/WsREQk8pSsREQk8pSsREQk8pSsREQk8pSsREQk8pSsREQk8jR1XUREkuK1116juLiY1q1bc9ZZZyW1bvWsRESk3l544QXGjBnDW2+9xbnnnktBQUFS61fPSkRE6mXLli387Gc/4ze/+Q1DhgyhRYsWlJeXs2HDBo499tiktKGelYiI1EubNm3o1asXzZo148033+QXv/gFM2bM4IwzzuDuu+9OShvqWYmISL2kpaXRsmVLZs+ezfLlyxk/fjw33ngjK1euZNCgQeTk5NCvX796taFkJSIidVZeXk4sFmPKlCl89tln3HvvvfTo0QOAvLw8LrroIvbt21fvdjQMKCIitbJ+/XqWL19OaWkp7g6Au9OsWTPcnRkzZvDuu+8yY8YMFi9eTOfOnevdpnpWIiKSsPnz55Ofn09WVhZZWVnk5eUxZswYWrVqBcC1117LqFGjmDJlChs2bOCxxx6ja9eu9W5XyUpERBJSWlrK3LlzmTFjBn379uXxxx9nxYoV3H777Vx33XW0bt0agEcffZTy8nJ27drFYYcdlpS2NQwoIiIJ2759Oxs2bABgxIgRDB06lNLSUmbPng3An//8Z9asWUMsFktaogIlKxERSVBaWhoTJ05k/vz5LFu2jFgsRr9+/cjNzaWgoICSkhJee+01OnXqlPS2k5KszOx6M3vLzNaa2Roz+3q4/34zOyFJbeysZfmNZras0r41ZvZmMuI5SLs3mdmPG7iNAWZ2WkO2ISJSlf79+zNo0CBmzpxJQUEBTZo0YdSoURQXF1NcXMyECRMaJFnV+5mVmZ0KDAVOcfe9ZnY40AzA3S+vb/31dJiZHe3um8wsO8WxJNMAYCfwWqInmFlTd6///FER+VJLT09n9OjRmBlTpkxh3bp1NG/enC1bttCyZcsGazcZEyyOALa6+14Ad99accDMlgI/dveVYc/o98AQ4EMgH/glcAzwQ3d/2szGACOA1kAW8Ii731y5QTP7CXA+0Bx4wt1vrCa2ecAFwK+AkcBs4H/COpoAtxG88TcH7nL3e82sJfAU0BZIAya7+1Nm1gX4E/AKcBqwGRjm7iXV3Zjw+v8C9AdaABcD/wucBMx198lhvQuBVcApwFvAxe6+28w2AnnuvtXM8sLrGANcCZSZ2UXAOGAdcE94Lwnv56tmdhPQHegGfBDeAxH5kjpr/tW1Km9vtKr2WHl5Odu2bWPy5MnEYjGysrLo2LFjfUOsVjKGAV8Ajjazd83sbjM7o5pyLYCX3L0HsAO4FTiLIDndEleuN/BdIAc4L3yT3s/MBgHHhuVygZ5mdno1bT4OfCfcPgd4Ju7Y94Bt7t4L6AVcYWZdgT3ACHc/BRgI3GFmFp5zLEFS6wF8GsZZk8/cPY8gmTwFXA2cCIwxs8ywzPHA3e6eDWwHflBdZe6+Maxrqrvnuvsy4M7wda8wpvvjTjkBONPd/yNRmdlYM1tpZiu3lnySwKWIiARisRht27YlOzub448/PqmTKapS756Vu+80s54EvYeBwFwzm+TuD1Yq+hlBDwLgDWCvu5ea2RtAl7hyi9z9YwAzmw/0A1bGHR8U/vwlfN2SIIlUtcTvx8AnZnYh8A6wu1I9OWZ2bvi6dVjPP4BfhAmwnKCHV/HnwvvuvibcXlUp7uo8HXfNb7n7h+G1/Q04miDpbXL3V8NyjwDXEvSiEnUmcMLnOZVWYQ8R4Onqen/uPh2YDtCzQ7bXoj0ROQQt+s5dtSrf7LenNlAktZeUz1m5exmwFFgaJp9LgAcrFSv1io86B0mgYtiw3Mzi46j8pln5tQFT3P3eBMObC9xFMHxWuZ5x7v78ATuDocj2QM8wmW4E0sPDe+OKlgEZCbRfcU45B55fzuf3v7pr3sfnvd90qhcD+rj7nvidYfLalUCMIiKRVu9hQDM73szi14DPBf5ejyrPMrN2ZpYBDAderXT8eeCyip6DmWWZWYeD1PcEwbOx5yvtfx64yszSwnqOM7MWBD2sj8JENRCo/zohNTsmnKgCMIrguRjARqBnuB0/5LgDiO9zv0Dw7AoAM8ttkChFRFIkGc+sWgIPmdnbZraW4BnJTfWor5DgWdNa4HF3jx8CxN1fAB4Floe9uMc48I2bSuV3uPvt7v5ZpUP3A28Dq8Pp7PcS9HRmAXlh3RcTTF5oaOuBq83sHYKJHb8P998M3GlmKwl6chWeAUaEU/H7Ewwb5oUfHXibYAKGiMgXhn0+Mpd64RBcnrtfk+pYGks4G/BZdz8xlXH07JDtyy94IJUhiEjENNYzKzNbFU5Eq5ZWsBARkciL1EK24QzCB1McRqMKp6KntFclIhJ16lmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkKVmJiEjkRWrVdUkdO6ZFo313jYhIbalnJSIikadkJSIikadkJSIikadkJSIikadkJSIikadkJSIikadkJSIijcbdcfdan6dkJSIiDW7RokU89dRTmBlArROWkpWIiDSo7du3c/PNNzNixAieeOIJzAwzo7y8POE6tIKFiIg0qFatWnHZZZfRu3dvLr30Unbs2MHFF19MLJZ4f0nJSgD46PV/8Lv2P0p1GCISAddsuSNpdZWVldGkSRP27NlD//79GTlyJGeddRZvv/02ALfddltC9WgYUEREkq60tBSAJk2aAHDmmWfy0ksv0atXLyZPnswdd9zBzp07E65PPSsREUmqBQsWsGjRIsrLy/nBD35Ahw4daNeuHbt27eKPf/wjDzzwADfddBM33HADp59+ekJ1qmclIiJJU1hYyIQJEzjvvPPo2LEjt956K4888ghf+cpX6Nq1K5dddhm33HIL119/PS+//DInn3xyQvWqZyUiIvVWXl5OLBZj5cqVDB48mL59+9K3b1/Gjx/Pk08+SbNmzRgyZAjDhw/npJNOYt++ffTv3z/h+tWzEhGRevvoo48AyMnJYevWrSxevBiA1q1b0717d4qKiujcuTMnnXQS7r7/WVailKxERKReFi5cSJcuXViyZAk5OTnk5OQwZcoUhg8fTlFREffddx9NmzblgQceANj/Oava0DCgiIjU2cKFC5k8eTIjRoygqKiIgQMHMnbsWEaOHMnmzZvJy8sDoHv37mRmZta5HSUrERGpk5dffplJkyZxzz33kJaWxlVXXcWll15K+/btadeuHZ07dwZg6tSpzJo1izlz5tS5LQ0DiohInWzcuJHp06fTp08fevbsSY8ePZg4cSL79u0DgvX/SkpKKCws5OGHHyY7O7vObSlZiYhInVxyySX07t17f3IaN24czZo1o7i4GAhWr8jIyGDWrFkJT1GvjpKViIjUScXK6U2bBk+UsrOz2bx5M3ffffcB+2uzBmB1lKxERCQh69evZ/ny5ZSWllJWVoaZ7U9Y5eXlZGRkMG3aNBYvXkxhYWFS29YECxERqdH8+fPJz88nKyuLrKws8vLyGDNmDK1atdr/geDy8nIyMzM5++yz6dq1a1LbV89KREQOqrS0lLlz5zJjxgxefPFFhg0bxqZNm7j99tvZtm3b/mG+WCxGZmYm+fn5tG/fPqkxKFmJiEiNtm/fzoYNGwAYMWIEQ4cOpbS0lNmzZwNQVFTE6tWrAUhP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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.pipeline import Pipeline\n", + "steps = [('scaler', StandardScaler()), ('LR', LogisticRegression())]\n", + "clf = Pipeline(steps)\n", + "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10,model_na_support=False)\n", + "cmp.fit_compute(X_missing,y)\n", + "cmp.plot()\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -258,15 +259,15 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 18, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T13:47:58.990950\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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SU5QZmaWk5ygzMwsJzlBmZlZTnKCMjOznOQEZWZmOckJyszMcpITlJmZ5SQnKDMzy0mNdi8+y219+vSJpUuXbr+gmVk98734zMxsl+IEZWZmW3zyySfAfx4Bn01OUGZmBsDdd99Nv379eP3115GU9STlBGVmZrzyyitMnjyZ5s2bc+aZZ1JSUpL1JOUEZWZmpFIprrjiCp566imOOuooTjvttGqTVGMmLCcoM7MmrLS0FICDDjqIL3/5ywD87ne/o1+/fgwZMmTLdN/LL78MgKRGi83LzA3wMnOzpmju3Lk8/PDDlJeXc+GFF7LXXnvRvn37LccvvvhiVqxYwQknnMBDDz3En//8Z3bfffd6j6OmZeZOUAY4QZk1NYsXL2bEiBHcfPPNLFy4kJdffpmjjz6aM888k86dO28p94UvfIHXXnuN+fPnc8QRRzRILDUlqEZ75LvltpLlb3B5y6uzHYaZ1cFVm39S53MiAkksW7aME088kWOPPZZjjz2W73//+9x33320aNGCs88+m912241ly5axefNmFixYQM+ePRvgHWybr0GZmTUh7733HgA9e/bk7bffZv78+QC0a9eOAw44gKeeeooPP/wQgN13352ioqKsJCdwgjIzazIefPBBRo8ezfr16znggAPo2bMnP//5zzn11FNZsmQJU6dOpaCggGnTpgGw//7706VLl6zF6yk+M7Mm4LHHHuO73/0uf/zjH+nUqRMAY8aM4YwzzqCkpITevXsDcMABB9CxY8dshrqFE5SZWROwatUqfvSjH3HCCSfwxhtv8Pe//53y8nK+9KUv0bVrVwB++9vfcvvtt3PnnXdmN9iEp/jMzJqA5s2bs2zZMl577TVOPvlkZs2axVlnncWvfvUrAD788EOefvppbr31Vrp3757laNOcoMzMmoCjjz6ali1bcvvtt3PWWWcxZcoUHnjgAaZOncoDDzzAbrvtxh133MGRRx6Z7VC3cIIyM2sCDjvsMNq3b8+cOXN444032LRpE4cddhinn346H330EdC4d4moDV+DMjP7jFm1ahXvvPMOffr0IZVKkZeXB8DVV19N8+bN+ec//8mUKVNo3bo1d955J+eddx7gBGVmZg1o9uzZTJgwgcLCQgoLC+nTpw+jRo2ibdu2APzkJz/hkUce4dVXX+Wll17igQce4MADD8xy1NXzrY4MgC6p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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T15:59:44.893576\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAasAAAEYCAYAAADiT9m2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAzAUlEQVR4nO3de3xU1bn/8c8zIRcgBBAUNFJQij2AIpRgawmKRVECXrBaNXBqqsWqbUGooodyFC816s96a9VCjZcDQrGAV7Ryb6gJaFRUqEBaL6XG1mAVEBACeX5/7B06xIRMwiQZ4Pt+vfLKzN5rr/XsHV7zsNZes7a5OyIiIoks0twBiIiI1EXJSkREEp6SlYiIJDwlKxERSXhKViIikvCUrEREJOEpWYkcgsxslJktaO446mJmbmZfb+CxL5nZpfGOSZqHkpVIA5nZB2Z2ejO0m2dmf65H+W7hh36Lqm3u/qS7D41zXKPM7IvwZ7uZVUa9/yKebcXC3Ye5+xNN3a40DiUrEYmLMAGmu3s6MAwoq3ofbhNpMCUrkTgIezuvmNm9Zva5mb1nZt8Jt28ws0+ih6TM7HEz+62ZLTSzLWb2JzPrGu77Sk/IzJaZ2Y/MrCfwW+DksMfyebh/uJm9aWabw/amRIVXGP7+PDzm5Oq9szDW18xsU/j7O9XavjU8vy1mtsDMOtbz+hxlZnPNrNzM3jezsVH7ksxskpn9Laz/dTPrEnX46WZWGl7XB83Moq75n83sbjP7LKx3WPVrFtXG3Wa2Mfzb/CT6GlfvJZvZFDObEfX+22ZWFMbwlpkNjtqXF9a5JYxhVH2ujcRGyUokfr4FvA10AGYCvwcGAF8HRgO/MbPoHsYo4FagI7AKeLKuBtz9XeBKoDjssbQLd20FfgC0A4YDV5nZeeG+U8Lf7cJjiqPrNLPDgPnAA2Hs9wDzzaxDVLFc4IfAEUAKcG1dsUbVHwGeB94CMoEhwDVmdmZYZAJwCZADZACXAduiqhhBcB37AN8Hzoza9y1gHcE1vAsoqEpm1YwJ6+kHZAEX1CP+TILrcxtwGMG5zzWzw82sNcF1G+bubYDvEPwtJc6UrETi5313f8zddwOzgS7ALe6+w90XADsJEleV+e5e6O47gF8Q9Ja6fLXaurn7Mnd/x90r3f1tYBZwaoyHDwdK3X26u+9y91nAWuDsqDKPuft6d98OPAX0rUd4A4DD3f0Wd9/p7u8BvwMuDvf/CJjs7us88Ja7fxp1/B3u/rm7/x1YWq3tD939d+E1fwI4EuhUQwzfB+5z9w3u/m8gvx7xjwZedPcXw+u7ECghSK4AlcDxZtbS3T929zX1qFtipGQlEj//inq9HcDdq2+L7lltqHrh7l8A/waOakjDZvYtM1saDrNtIuh9xTpUdxTwYbVtHxL0gqr8M+r1NvY+j7p0BY4Kh9A+D4cuJ/GfpNIF+Ns+jt9X23v2uXtVb6ym2I4i6nrz1fPdl67AhdXizwaOdPetwEUE1/tjM5tvZv9Vj7olRkpWIs1nTy8qHB48DCgjGNIDaBVVtnPU65oelTATeA7o4u5tCe5r2T7KRysj+ECO9jXgozqOi9UGgl5nu6ifNu6eE7W/e5zaqs3HRF1vgvOLtpXar/cGYHq1+Fu7+x0A7v6yu59B0KtbS9BrlDhTshJpPjlmlm1mKQT3rlaEw1TlBIlidDgx4DL2/jD/F3B0eFyVNsC/3f1LMzuJ4B5TlXKCoapja4njReA4M8s1sxZmdhHQC3ghLmcJrwJbzOx6M2sZntPxZjYg3P8IcKuZ9bBAn2r3y+LhKWCsmR1tZu2BG6rtXwVcbGbJZlb9ntYM4GwzOzOMPc3MBod1dTKzc8N7VzuALwiutcSZkpVI85kJ3EQw/Nef4N5IlTHAdcCnQG+gKGrfEmAN8E8z2xhuuxq4xcy2ADcSfDgDe4bHfgm8Eg5jfTs6iPD+0Ajg52F7E4ER7r6ROAjvJ40guNf0PrCRIEG1DYvcE8a7ANgMFAAt49F2lN8BLxNM8ngDmFdt//8S/IfgM+Bmgr9NVfwbgHMJhi7LCXpa1xF8fkYIJoiUEfwdTwWuinPsApgevijS9MzsceAf7j65uWM5FJlZN4LEmezuu5o5HImBelYiIpLwlKxERCThaRhQREQSnnpWIiKS8FrUXUQOBR07dvRu3bo1dxgicgh6/fXXN7r74fsqo2QlAHTr1o2SkpLmDkNEDkFmVueKIhoGFBGRhKdkJSIiCU/JSkREEp6SlYiIJDwlKxERSXhKViIikvCUrEREJOHpe1YiItKoXnzxRUpKSti2bRsTJ06kbdu2JCUl1asOrQ0oAKR0SfbDJ8T6FHQROZR8NP7jBh+7fPlyrrjiCn7961/z4osvUlpaypgxY/jud79Leno6AGb2urtn7aseDQOKiEijWbZsGRdeeCGnn34699xzDy1btuSBBx6gqCh4nmisHSYlKxERaTTf+MY32LRpE6tXrwagZ8+edOjQgYceeogdO3ZgZjHVo2QlIiJxVVRUxJw5c/jTn/5ETk4OO3bsYMqUKZx//vm8+eabzJ49mzZt2jBr1qyY69QECxERiZsFCxbw05/+lNzcXO655x5eeeUVJk+eTHl5ORs2bGDo0KEAdO3alYyMjJjrVbISEZG4KC8v58Ybb+S+++4jJyeH1q1b8+mnn9KyZUv69etHv379AHjwwQd54YUXuPTSS2OuW8OAIiISF+3atWPAgAGkpKSwevVq8vPzKSgo4JRTTuGhhx4CoKysjIULF/L444/To0ePmOtWz0pEROIiOTmZ9PR0Zs2aRXFxMePGjeOmm26ipKSEoUOHcuKJJzJw4EBmz55NampqvepWshIRkf1WWVlJJBIhPz+fnTt3MnXqVHr37g1AVlYWo0ePZufOnQD1TlSgYUAREWmgdevWUVxcTEVFxZ7vS7k7KSkpuDsFBQWsX7+egoICFi1aRLdu3RrcllawEEArWIhI7WpawWLevHlMmjSJzMxMMjMzycrKIi8vb68Zfrm5uaSmplJaWsq0adPo1atXjfXHsoKFkpUASlYiUrvqyaqiooLRo0czduxYBg4cyNy5c1mxYgUpKSl71v6rUllZydatW2nTpk2t9Wu5JRERaRSbN2+mtLQUgJEjRzJixAgqKir2fNF35cqVrFq1ikgkss9EFSslKxERqZfk5GQmTJjAvHnzWL58OZFIhOzsbPr27UthYSHbt2+nqKiIzp07x63NhE9WZvZF+LubmeXGue5J1d4XxaneL+JRTx1tTKq7lIhI4xg0aBBDhw5l+vTpFBYWkpSURG5uLmVlZZSVlTF+/Pi4JqsDaep6NyAXmBnrAWbWwt137aPIJOD2qjfu/p0GR9f09oo9FmaW5O67GykeETmEpKWlMWrUKMyM/Px81q5dS2pqKuXl5Xse/RFPB1KyugPoaWargCeAB8Jtg4FU4EF3n2pmg4Fbgc+A/wKOM7NngC5AGnC/u08zszuAlmF9a9x9lJl94e7pZvZ7YLq7zwcws8eBF4Cna2qztoDDWG4GPgdOAJ4C3gHGAS2B89z9b2H9XwJZQAYwwd1fMLM8IMvdfxrW9wJwN3BWDbGPBsYCKcBK4Gp33x328qYCpwM/Af4c+yUXkYPdxgc/rbPM4GcH17qvsrKSTZs2MXnyZHJycpgxYwadOnWKX4ChAylZ3QBc6+4jAMzsCmCTuw8ws1TgFTNbEJb9JnC8u78fvr/M3f9tZi2B18xsrrvfYGY/dfe+NbQ1G/g+MN/MUoAhwFXA5TW1GdVOTU4EegL/Bt4DHnH3k8xsHPAz4JqwXDfgJKA7sNTMvl5bhdVjN7OewEXAQHevMLOHgFHA/wGtgZXu/vPq9YTX8AqApPYJPyIsIgkoEonQvn172rVrx6OPPkok0jifJQdSsqpuKNDHzC4I37cFegA7gVerJZCxZjYyfN0lLLev/068BNwfJqSzgEJ3325mtbW5r2T1mrt/DGBmfwOqEuo7wGlR5Z5y90qg1MzeI+gVxmoI0J8gEUPQa/sk3LcbmFvTQe4+DZgGwdT1erQnIgeJjj/pUGeZZeOXNX4gdTiQk5UBP3P3l/faGAy9ba32/nTgZHffZmbLCIYDa+XuX4blziTosfx+X23WYUfU68qo95Xsff2rJwsHdrH3JJja4jbgCXf/nxr2fan7VCJyoDuQxn62ANGT9V8GrjKzZAAzO87MWtdwXFvgszBR/Rfw7ah9FVXH12A28ENgEPDHerbZEBeaWcTMugPHAuuAD4C+4fYuBMOENcW+GLjAzI4I4zrMzLrGKS4RkWZ3IPWs3gZ2m9lbwOPA/QT3ed6wYOyrHDivhuP+CFxpZu8SJIAVUfumAW+b2RvuPqracQuA6cCz7r4z3PZIjG02xN+BVwkmWFwZ9u5eIRhi/AvwLvBGbbGb2WRggZlFgAqCyRQfxik2EZFmpeWWEkDVbEN3n9NcMWi5JRGpTU1rA8aTllsSEZGDwoE0DHjQcve85o5BRCSRqWclIiIJT8lKREQSnpKViIgkPCUrERFJeEpWIiKS8JSsREQk4SlZiYhIwlOyEhGRhKdkJSIiCU8rWAgAfTqdSMn4kuYOQ0SkRkpWIiLSaN577z0qKys54ogjyMjIaHA9SlYiItIonn/+eW677TbS0tLIysoiNzeX/v37N6gu3bMSEZG4KywsZOLEiRQUFPDUU0+xc+dOli5d2uD6lKxERCTuNm3axJVXXsnxxx9Pp06dyM3NZenSpWzbto3Kysp616dhQBERiZuioiIyMjI4++yz2bhxIwC7du0iIyODbdu2kZycTCQSoby8nMMPPzzmetWzEhGRuFi4cCHZ2dlcdtllAHTsGDx9vEWLFhx55JG0atWK5ORkpk+fzl133cW2bdtirlvJSkRE9tv8+fOZPHky8+fP54QTTuDZZ5/da39qaiqtW7fm5ptv5u677yYvL49WrVrFXL+GAQWAjz7ewA23jmvuMESkmd3xv/fX+5j333+fe++9lzvvvJPBgwezdOlSli9fzrnnngvA7t272bVrFytXrmTNmjU8/fTTHHfccfVqQ8lKRET2S4cOHXjsscfo0qULAFdeeSVDhgwhOzub8847j6SkJNq2bctVV13FsGHD6p2oQMlKREQaqKioiLKyMtq3b8+QIUNwd3bv3s2xxx7L9ddfz8qVKxk+fDiRSISkpCRuuOGGBrele1YiIlJvCxYsIC8vjzVr1nD++edTWFiImdGiRdAH6tmzJwsXLuSDDz4gKSlpv9tTz0pEROqlvLycG2+8kfvuu4+cnBxat25NZWUlpaWl9OjRA4BTTz2VrKwspkyZwowZMwAwswa3qWQlIiL10q5dOwYMGEBKSgqrV6/m9ttvZ/jw4SxevJjJkydz9dVXA3DdddfRqlWr/UpSVZSsRESkXpKTk0lPT2fWrFkUFxczbtw4brrpJkpKShg6dCh9+vQhOzub7t27x61NJSsREYlZZWUlkUiE/Px8du7cydSpU+nduzcAWVlZjB49ml27dsW9XU2wEBGRfVq3bh3FxcVUVFTg7gC4OykpKbg7BQUFrF+/noKCAhYtWkTXrl3jHoN6ViIiUqt58+YxadIkMjMzyczMJCsri7y8vD3Ppho7diy5ubnk5+dTWlrKnDlzOOaYY+Ieh5KViIjUqKKigtmzZ1NQUMDAgQOZO3cuK1as4M4772TixIm0bdsWgJkzZ1JZWcnWrVtp06ZNo8SiYUAREanV5s2bKS0tBWDkyJGMGDGCiooKZs2aBcDKlStZtWoVkUik0RIVKFmJiEgtkpOTmTBhAvPmzWP58uVEIhGys7Pp27cvhYWFbN++naKiIjp37tzosSRksjIzN7MZUe9bmFm5mb1Qz3o+MLOODSkTy7H7y8yuMbM6lx2uXs7MXjSzdo0Zm4gIwKBBgxg6dCjTp0+nsLCQpKQkcnNzKSsro6ysjPHjxzdJskrUe1ZbgePNrKW7bwfOAD5q5pgawzXADKCuh7rsVc7dcxo1KhGRUFpaGqNGjcLMyM/PZ+3ataSmplJeXk56enqTxZGQPavQi8Dw8PUlwKyqHWZ2mJk9Y2Zvm9kKM+sTbu9gZgvMbI2ZPQJY1DGjzexVM1tlZlPNLKbFqsysm5mtNbPHzWy9mT1pZqeb2StmVmpmJ4XlppjZdDMrDrePCbcPju4RmtlvzCzPzMYCRwFLzWxpuO9hMysJ47853FZTuT29PjObYGarw59romJ+18x+F9a1wMxa1vsvICICtG/fnjFjxjBx4kSWLFnC0qVLmTFjBp06dWqyGBK1ZwXwe+DG8IO+D/AoMCjcdzPwprufZ2bfBf4P6AvcBPzZ3W8xs+HA5QBm1hO4CBjo7hVm9hAwKjwuFl8HLgQuA14DcoFs4BxgEnBeWK4P8G2gNfCmmc2vrUJ3f8DMJgCnufvGcPMv3P3fYSJdbGZ9ailHeF79gR8C3yJIzCvN7E/AZ0AP4BJ3H2NmTwHfI+idicghauajc+sss2LxW/vcX/U9q379+sUlplglbLJy97fNrBtBr+rFaruzCT58cfclYY8qAzgFOD/cPt/MPgvLDwH6A6+Fa1S1BD6pRzjvu/s7AGa2Bljs7m5m7wDdoso9Gw5bbg97QScBn9ejne+b2RUEf5cjgV7A2/sonw087e5bw9jmEST058KYV4XlXq8WJ2H5K4ArADLaNt4sHhE5eMRjnb+GSNhkFXoOuBsYDHTYj3oMeMLd/6eBx++Iel0Z9b6Sva+hVzvOgV3sPdyaVmOAZscA1wID3P0zM3u8trINiHk3QYLeOzj3acA0gCMzO1WPXUQOMrmXfa/OMg15UnBTSOR7VhAM/d1c1auJspxgGA8zGwxsdPfNQCHBEB1mNgxoH5ZfDFxgZkeE+w4zs/ivBwLnmlmamXUgSLCvAR8CvcwsNZzBNySq/BagqkuTQTCxZJOZdQKG1VIu2nLgPDNrZWatgZHhNhGRg0pC96zc/R/AAzXsmgI8amZvE8yQuzTcfjMwKxyqKwL+HtbzFzObDCwwswhQAfyEIJHE09vAUqAjcKu7lwGE94xWA+8Db0aVnwb80czK3P00M3sTWAtsAF6prVzVRnd/I+yBvRpuesTd3wyHT0VEDhpWdbNM9o+ZTQG+cPe7mzuWhjgys5NfeuXFzR2GiDSz5hgGNLPX3T1rX2USfRhQREQksYcBDyTuPqW5YxAROVipZyUiIglPyUpERBKekpWIiCQ8JSsREUl4SlYiIpLwlKxERCThKVmJiEjCU7ISEZGEp2QlIiIJT2sDCgBZWVleUlLS3GGIyCFIawOKiMhBQWsDiohIo3nvvfeorKzkiCOOICMjo8H1KFmJiEijeP7557nttttIS0sjKyuL3Nxc+vfv36C6NAwoIiJxV1hYyMSJEykoKOCpp55i586dLF26tMH1KVmJiEjcbdq0iSuvvJLjjz+eTp06kZuby9KlS9m2bRuVlZX1rk/DgCIiEjdFRUVkZGRw9tlns3HjRgB27dpFRkYG27ZtIzk5mUgkQnl5OYcffnjM9apnJSIicbFw4UKys7O57LLLAOjYsSMALVq04Mgjj6RVq1YkJyczffp07rrrLrZt2xZz3epZCQCb317NH7t8o7nDEJFmdtaGdQ06bv78+dxyyy3Mnz+fOXPm8Oyzz3Luuefu2Z+amkrr1q25+eabmTdvHjNnzqRVq1Yx16+elYiI7Jf333+fe++9lzvvvJNhw4bRoUMHli9fvmf/7t272bVrFytXruSpp57iD3/4A717965XG+pZiYjIfunQoQOPPfYYXbp0AeDKK69kyJAhZGdnc95555GUlETbtm256qqrGDZsGMcdd1y921CyEhGRBikqKqKsrIz27dszZMgQ3J3du3dz7LHHcv3117Ny5UqGDx9OJBIhKSmJG264ocFtaRhQRETqbcGCBeTl5bFmzRrOP/98CgsLMTNatAj6QD179mThwoV88MEHJCUl7Xd76lmJiEi9lJeXc+ONN3LfffeRk5ND69atqayspLS0lB49egBw6qmnkpWVxZQpU5gxYwYAZtbgNpWsRESkXtq1a8eAAQNISUlh9erV3H777QwfPpzFixczefJkrr76agCuu+46WrVqtV9JqoqSlYiI1EtycjLp6enMmjWL4uJixo0bx0033URJSQlDhw6lT58+ZGdn071797i1qWQlIiIxq6ysJBKJkJ+fz86dO5k6deqeaehZWVmMHj2aXbt2xb1dTbAQEZF9WrduHcXFxVRUVFD1wF53JyUlBXenoKCA9evXU1BQwKJFi+jatWvcY9CTggWA41LS/IFO8f8HJiIHluorWMybN49JkyaRmZlJZmYmWVlZ5OXl7fVsqtzcXFJTUyktLWXatGn06tWrXm3G8qRgJSsB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Aw9QUFDAk08+yRFHHNGgdjR1XUREGqxjx458+OGHPProo/z4xz+mV69edO/enaKiIhYuXLinzMyZMzn++OMb3I56ViIiUi9FRUWUlZXRunVrhg0bxtVXX82f//xn0tPTueqqqwB45JFHWLJkCZdeeim5ubn73aZ6ViIiErMFCxaQl5fHmjVruPjii1m5ciXZ2dl06tSJN954g+nTpwPQpk0bduzYwdatW+PSrnpWIiISk/Lycm688Ubuu+8+cnJyaN26Ndu3bycSiTB58mS6dOnCE088waJFiyguLmbu3LkNnlBRnZKViIjEpF27dgwYMICUlBRWr17N7bffTk5ODosXL+aXv/wll112GRdeeCHr1q3jjjvu4Mgjj4xb20pWIiISk+TkZNLT05k1axbFxcWMGzeOm266iddee40zzzyT7t27c+qpp9K/f/+4t61kJSIidaqsrCQSiZCfn8/OnTuZOnUqvXv3BmDAgAGMHj26wYvUxkITLEREpEbr1q2juLiYioqKPYnI3UlJScHdKSgoYP369RQUFLBo0SK6du3aaLFYY2ZCOXCktu3lR39nZnOHISLNpPqXgufNm8ekSZPIzMwkMzOTrKws8vLyyMjI2FMmNzeX1NRUSktLmTZtGr169WpQ22b2urtn7bOMkpWAkpXIoS46WVVUVDB69GjGjh3LwIEDmTt3LitWrCAlJYWJEyfStm3bPWUrKyvZunUrbdq0aXDbsSQrDQOKiMhXbN68mdLSUgBGjhzJiBEjqKioYNasWQCsXLmSVatWEYlE9itRxUrJSkRE9pKcnMyECROYN28ey5cvJxKJkJ2dTd++fSksLGT79u0UFRU16FEfDaVklcDM7Iuo1zlmtt7MuprZFDPbZmZH1FLWzexXUe+vNbMpTRa4iBzwBg0axNChQ5k+fTqFhYUkJSWRm5tLWVkZZWVljB8/vkmTlaauHwDMbAjwAHCmu38YPmVzI/Bz4PoaDtkBnG9m+e6+sekiFZGDRVpaGqNGjcLMyM/PZ+3ataSmplJeXk56enqTx6NkleDM7BTgd0COu/8tatejQJ6Z3enu/6522C5gGjAe+EXTRCoiB5v27dszZswYevXqxdSpU0lLS2PGjBl06tSpyWNRskpsqcAzwGB3X1tt3xcECWsccFMNxz4IvG1mdzVqhCJywChb+aNa9w0eXHtvadmy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\n" }, "metadata": { "needs_background": "light" @@ -287,20 +288,6 @@ "cmp.plot()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Unfortunately in this case, the `RandomSampleImputer` does not provide any improvements over the existing strategies. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": null, diff --git a/probatus/missing/imputation.py b/probatus/missing/imputation.py index 6a258f8e..2c304431 100644 --- a/probatus/missing/imputation.py +++ b/probatus/missing/imputation.py @@ -17,7 +17,7 @@ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -from probatus.utils import preprocess_data, preprocess_labels,BaseFitComputePlotClass +from probatus.utils import preprocess_data, preprocess_labels,BaseFitComputePlotClass,get_single_scorer from sklearn.model_selection import cross_val_score from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer @@ -30,22 +30,29 @@ class CompareImputationStrategies(BaseFitComputePlotClass): """ Comparison of various imputation stragegies that can be used for imputation - of missing values. The aim of this class is to present the model performance based on imputation + of missing values. + The aim of this class is to present the model performance based on imputation strategies and choosen model. For models like XGBoost & LighGBM which have capabilities to handle misisng values by default the model performance with no imputation will be shown as well. + The missing values categorical features are filled with `missing` and an missing indicator is + added. + Usage E.g. ```python + #Import the class from probatus.missing.imputation import CompareImputationStrategies + #Create the strategies. strategies = { 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, sample_posterior=True), 'KNN' : KNNImputer(n_neighbors=3) - + #Create a classifier. clf = lgb.LGBMClassifier() + #Create the comparision of the imputation strategies. cmp = CompareImputationStrategies( clf=clf, strategies=strategies, @@ -53,25 +60,23 @@ class CompareImputationStrategies(BaseFitComputePlotClass): model_na_support=True) cmp.fit_compute(X_missing,y) + #Plot the results. cmp.plot() + } ``` """ - def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,verbose=0): + def __init__(self,clf,strategies,scoring='roc_auc',cv=None,model_na_support=True,n_jobs=-1,verbose=0, + random_state=None): """ Initialise the class. Args : clf(model object): - Binary classification model. - - scoring (string, list of strings, probatus.utils.Scorer or list of probatus.utils.Scorers, optional): - Metrics for which the score is calculated. It can be either a name or list of names metric names and - needs to be aligned with predefined [classification scorers names in sklearn](https://scikit-learn.org/stable/modules/model_evaluation.html). - Another option is using probatus.utils.Scorer to define a custom metric. + A binary classification model, that will used to evaluate various imputation strategies. strategies (dictionary of sklearn.impute objects): Dictionary containing the sklearn.impute objects. @@ -82,10 +87,20 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,ve 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, sample_posterior=True)} This allows you to have fine grained control over the imputation method. - + + scoring (string, list of strings, probatus.utils.Scorer or list of probatus.utils.Scorers, optional): + Metrics for which the score is calculated. It can be either a name or list of names metric names and + needs to be aligned with predefined [classification scorers names in sklearn](https://scikit-learn.org/stable/modules/model_evaluation.html). + Another option is using probatus.utils.Scorer to define a custom metric. + model_na_support(boolean): default True - If the classifier supports missing values by default e.g. LightGBM,XGBoost etc. If True an default - comparison will be added without any imputation. If False only the provided strategies will be used. + If the classifier supports missing values by default e.g. LightGBM,XGBoost etc. + If True an default comparison `Model Imputation` will be added indicating the results without any explict imputation. + If False only the provided strategies will be used. + + n_jobs (int, optional): + Number of cores to run in parallel while fitting across folds. None means 1 unless in a + `joblib.parallel_backend` context. -1 means using all processors. verbose (int, optional): Controls verbosity of the output: @@ -94,21 +109,37 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,ve - 1 - 50 - only most important warnings regarding data properties are shown (excluding SHAP warnings) - 51 - 100 - shows most important warnings, prints of the feature removal process - above 100 - presents all prints and all warnings (including SHAP warnings). + + random_state (int, optional): + Random state set at each round of feature elimination. If it is None, the results will not be + reproducible and in random search at each iteration a different hyperparameters might be tested. For + reproducible results set it to integer. """ self.clf = clf self.model_na_support = model_na_support - self.scoring = scoring + self.scorer = get_single_scorer(scoring) self.strategies = strategies - self.cv = cv + if cv is None: + self.cv = 5 + else : + self.cv = cv self.verbose = verbose + + self.n_jobs = n_jobs + + if random_state is None: + self.random_state = 42 + else: + self.random_state = random_state + self.fitted = False - self.report = None + self.report = pd.DataFrame([]) def __repr__(self): return "Imputation comparision for {}".format(self.clf.__class__.__name__) - def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto'): + def fit(self, X, y,column_names=None,categorical_columns='auto'): """ Calculates the cross validated results for various imputation strategies. @@ -122,11 +153,6 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' column_names (None, or list of str, optional): List of feature names for the dataset. If None, then column names from the X dataframe are used. - - class_names (None, or list of str, optional): - List of class names e.g. ['neg', 'pos']. - If none, the default ['Negative Class', 'Positive Class'] are - used. categorical_features (None, or list of str, optional):default=auto List of categorical features.The imputation strategy for categorical @@ -162,7 +188,7 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' ('imputer', self.strategies[strategy])]) categorical_transformer = Pipeline(steps=[ - ('imp_cat',SimpleImputer(strategy='most_frequent',add_indicator=True)), + ('imp_cat',SimpleImputer(strategy='constant',fill_value='missing',add_indicator=True)), ('ohe_cat',OneHotEncoder(handle_unknown='ignore')), ]) @@ -179,8 +205,9 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' clf, X, y, - scoring=self.scoring, - cv=self.cv) + scoring=self.scorer.scorer, + cv=self.cv, + n_jobs = self.n_jobs) temp_results = { 'strategy' : strategy, @@ -207,8 +234,10 @@ def fit(self, X, y,column_names=None,class_names=None,categorical_columns='auto' self.clf, X, y, - scoring=self.scoring, - cv=self.cv) + scoring=self.scorer.scorer, + cv=self.cv, + n_jobs = self.n_jobs + ) temp_results = { 'strategy' : 'Model Imputation', @@ -232,7 +261,7 @@ def compute(self,return_scores=True): if return_scores : return self.report - def fit_compute(self, X, y,column_names=None,class_names=None,categorical_columns='auto'): + def fit_compute(self, X, y,column_names=None,categorical_columns='auto'): """ Calculates the cross validated results for various imputation strategies. @@ -246,11 +275,6 @@ def fit_compute(self, X, y,column_names=None,class_names=None,categorical_column column_names (None, or list of str, optional): List of feature names for the dataset. If None, then column names from the X dataframe are used. - - class_names (None, or list of str, optional): - List of class names e.g. ['neg', 'pos']. - If none, the default ['Negative Class', 'Positive Class'] are - used. categorical_features (None, or list of str, optional):default=auto List of categorical features.The imputation strategy for categorical @@ -259,7 +283,6 @@ def fit_compute(self, X, y,column_names=None,class_names=None,categorical_column """ self.fit(X,y, column_names=column_names, - class_names=class_names, categorical_columns=categorical_columns ) return self.compute() @@ -272,6 +295,7 @@ def plot(self,show=True): imp_methods = list(self.report['strategy']) performance = list(self.report['score']) std_error = list(self.report['std']) + y_pos = [i for i, _ in enumerate(imp_methods)] x_spacing = 0.01 y_spacing = 2*x_spacing @@ -285,8 +309,8 @@ def plot(self,show=True): for index, value in enumerate(performance): plt.text(value+x_spacing ,index+y_spacing, str(value),rotation=45) plt.yticks(y_pos, imp_methods) - plt.xlabel('Metric') - plt.title('Imputation Techniques') + plt.xlabel(f"Metric ({(self.scorer.metric_name).replace('_',' ').upper()})") + plt.title("Imputation Techniques") plt.tight_layout() if show: plt.show() diff --git a/probatus/utils/missing_helpers.py b/probatus/utils/missing_helpers.py index db978e87..5267ae48 100644 --- a/probatus/utils/missing_helpers.py +++ b/probatus/utils/missing_helpers.py @@ -1,7 +1,5 @@ import pandas as pd import numpy as np -import logging -import pytest from sklearn.preprocessing import KBinsDiscretizer from sklearn.datasets import make_classification import string diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py index e13865d9..5f3c4c5a 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing/test_imputation.py @@ -4,7 +4,6 @@ from sklearn.linear_model import LogisticRegression from sklearn.experimental import enable_iterative_imputer from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer -from feature_engine.imputation import RandomSampleImputer import pandas as pd import numpy as np import pytest From d7d1ff323560839655730d3565667095e0837f39 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 4 Mar 2021 16:31:43 +0100 Subject: [PATCH 08/24] Skipping LGBM tests --- tests/missing/test_imputation.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py index 5f3c4c5a..f3887cb4 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing/test_imputation.py @@ -7,7 +7,7 @@ import pandas as pd import numpy as np import pytest - +import os @pytest.fixture(scope='function') def X(): @@ -20,8 +20,8 @@ def X(): def y(): return pd.Series([1, 0, 1, 0, 1, 0, 1, 0], index=[1, 2, 3, 4, 5, 6, 7, 8]) -def test_imputation_boosting(X,y,capsys): - +def test_imputation_linear(X,y,capsys): + #Create strategies for imputation. strategies = { 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), @@ -31,21 +31,22 @@ def test_imputation_boosting(X,y,capsys): 'KNN' : KNNImputer(n_neighbors=3), } #Initialize the classifier - clf = lgb.LGBMClassifier() - cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=True) + clf = LogisticRegression() + cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=False) report = cmp.fit_compute(X,y) cmp.plot(show=False) assert cmp.fitted == True cmp._check_if_fitted() - assert report.shape[0]==5 + assert report.shape[0]==4 # Check if there is any prints out, _ = capsys.readouterr() assert len(out) == 0 -def test_imputation_linear(X,y,capsys): - +@pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") +def test_imputation_boosting(X,y,capsys): + #Create strategies for imputation. strategies = { 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), @@ -55,14 +56,14 @@ def test_imputation_linear(X,y,capsys): 'KNN' : KNNImputer(n_neighbors=3), } #Initialize the classifier - clf = LogisticRegression() - cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=False) + clf = lgb.LGBMClassifier() + cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=True) report = cmp.fit_compute(X,y) cmp.plot(show=False) assert cmp.fitted == True cmp._check_if_fitted() - assert report.shape[0]==4 + assert report.shape[0]==5 # Check if there is any prints out, _ = capsys.readouterr() From 802a41bcb8771a8e70e8c02e6406bb4e0a25962b Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 4 Mar 2021 16:40:47 +0100 Subject: [PATCH 09/24] Skipping LGBM tests --- tests/missing/test_imputation.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py index f3887cb4..ae587ba4 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing/test_imputation.py @@ -1,6 +1,6 @@ #Code to test the imputation strategies. from probatus.missing.imputation import CompareImputationStrategies -import lightgbm as lgb +from sklearn.ensemble import RandomForestClassifier from sklearn.linear_model import LogisticRegression from sklearn.experimental import enable_iterative_imputer from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer @@ -45,7 +45,7 @@ def test_imputation_linear(X,y,capsys): assert len(out) == 0 @pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") -def test_imputation_boosting(X,y,capsys): +def test_imputation_bagging(X,y,capsys): #Create strategies for imputation. strategies = { @@ -56,14 +56,14 @@ def test_imputation_boosting(X,y,capsys): 'KNN' : KNNImputer(n_neighbors=3), } #Initialize the classifier - clf = lgb.LGBMClassifier() - cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=True) + clf = RandomForestClassifier() + cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=False) report = cmp.fit_compute(X,y) cmp.plot(show=False) assert cmp.fitted == True cmp._check_if_fitted() - assert report.shape[0]==5 + assert report.shape[0]==4 # Check if there is any prints out, _ = capsys.readouterr() From eb212068bc8c5c52263849ca400b42db08f826b5 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Wed, 10 Mar 2021 23:38:32 +0100 Subject: [PATCH 10/24] Renaming class and adjusting notebooks. --- docs/api/imputation_selector.md | 6 + docs/tutorials/nb_imputation_comparison.ipynb | 124 +++++++++--------- mkdocs.yml | 2 + probatus/missing_values/__init__.py | 23 ++++ .../{missing => missing_values}/imputation.py | 10 +- requirements.txt | 10 ++ 6 files changed, 103 insertions(+), 72 deletions(-) create mode 100644 docs/api/imputation_selector.md create mode 100644 probatus/missing_values/__init__.py rename probatus/{missing => missing_values}/imputation.py (98%) create mode 100644 requirements.txt diff --git a/docs/api/imputation_selector.md b/docs/api/imputation_selector.md new file mode 100644 index 00000000..1e223f7f --- /dev/null +++ b/docs/api/imputation_selector.md @@ -0,0 +1,6 @@ +# Imputation Selector + +This module allows to select imputation strategies. + + +::: probatus.missing_values.imputation diff --git a/docs/tutorials/nb_imputation_comparison.ipynb b/docs/tutorials/nb_imputation_comparison.ipynb index 3ed47ff4..64759ca0 100644 --- a/docs/tutorials/nb_imputation_comparison.ipynb +++ b/docs/tutorials/nb_imputation_comparison.ipynb @@ -9,11 +9,31 @@ "[![open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/ing-bank/probatus/blob/master/docs/tutorials/nb_imputation_comparison.ipynb)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook explains how the `ImputationSelector` class works in `probatus`. With `ImputationSelector` you can compare multiple imputation strategies\n", + "and choose a strategy which works the best for a given model and a dataset.\n", + "Currently `ImputationSelector` supports any scikit learn compatible imputation strategy. For categorical variables the missing values are replaced by `missing` token and `OneHotEncoder` is applied. The user supplied imputation strategies are applied to numerical columns only. \n", + "Support for user supplied imputation strategies for categorical columns can be added in the future releases.\n", + "\n", + "Let us create some data on which we want to apply the various imputation strategies.We will create a dataset with both numerical and categorical variables.First let us import the class and other required classes." + ] + }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n %reload_ext autoreload\n" + ] + } + ], "source": [ "%matplotlib inline\n", "%load_ext autoreload\n", @@ -26,22 +46,13 @@ "pd.set_option('display.max_colwidth', 200)" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This notebook explains how the `CompareImputationStrategies` class works in `probatus`.\n", - "\n", - "First let us import the class and other required classes." - ] - }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ - "from probatus.missing.imputation import CompareImputationStrategies\n", + "from probatus.missing_values.imputation import ImputationSelector\n", "from probatus.utils.missing_helpers import generate_MCAR,get_data\n", "import pandas as pd \n", "import lightgbm as lgb \n", @@ -51,19 +62,9 @@ "from feature_engine.imputation import RandomSampleImputer\n" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Currently `CompareImputationStrategies` supports any scikit learn compatible imputation strategies. For categorical variables the missing values are replaced by `missing` token and `OneHotEncoder` is applied.The user supplied imputation strategies are applied to numerical columns only. \n", - "Support for user supplied imputation strategies for categorical columns can be added in the future releases.\n", - "\n", - "Let's create some data on which we want to apply the various imputation strategies.We will create a dataset with both numerical and categorical variables." - ] - }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -88,33 +89,33 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 17, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "f_0 0.207\n", - "f_1 0.205\n", - "f_2 0.212\n", - "f_3 0.207\n", - "f_4 0.197\n", - "f_5 0.205\n", - "f_6 0.201\n", - "f_7 0.219\n", - "f_8 0.200\n", - "f_9 0.211\n", - "f_10 0.193\n", - "f_11 0.226\n", - "f_12 0.192\n", + "f_0 0.214\n", + "f_1 0.185\n", + "f_2 0.185\n", + "f_3 0.209\n", + "f_4 0.195\n", + "f_5 0.191\n", + "f_6 0.198\n", + "f_7 0.180\n", + "f_8 0.213\n", + "f_9 0.210\n", + "f_10 0.208\n", + "f_11 0.195\n", + "f_12 0.208\n", "f_13 0.207\n", - "f_14 0.193\n", + "f_14 0.209\n", "dtype: float64" ] }, "metadata": {}, - "execution_count": 13 + "execution_count": 17 } ], "source": [ @@ -140,15 +141,15 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 18, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T15:58:17.749799\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-10T23:32:55.775337\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", + "image/png": "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S0REIkGBJSIikaDAEhGRSFBgiYhIJNTbau3SuJ15htXb9+KIiBwJzbBERCQSFFgiIhIJCiwREYkEBZaIiESCAktERCJBgSUiIpGgwBIRkTrh7gntT5/DEhGRhHjnnXfYv38/J510EpmZmZhZQvtXYImIyFF7/vnnGT9+PO3bt+eUU05h7NixdOjQIaFj6JSgiIgclcWLF/PTn/6URx99lLlz5/LRRx/xySefJHwcS/Q5Rommc7qd4DMWndnQZYhIPbooY3VC+lmwYAHJycn069ePrVu3kpWVxbnnnstXv/pVOnXqxI033oiZvebuPY5mHM2wRETkiKxatYqysjIGDhxIv3792L9/PxMnTuSOO+7gscceo2vXrixdupTi4uKEjKfAEhGRw/bCCy8waNAgioqKDtwNmJSUxEMPPcRdd91FRkYGV1xxBVu3bmX37t0JGVOBJSIih2XLli2MHTuWxx9/nN69e7N///4D+5o3b34gwBYvXsy2bdtITU1NyLi6S1BERA5LkyZN6Nq1K3379qW4uJjc3Fz279/PZZddxsUXX8xpp53GlClTmDlzJnPmzKF169YJGVczLBEROSwZGRls2rSJGTNm8IMf/IDOnTvToUMHCgsL+dOf/sS+ffto2bIlTzzxBOeee27CxtUMS0REalRYWEhxcTGpqakMGDCA2267jVdeeYW0tDRGjBgBwPTp01myZAk33HADN954Y8Jr0AxLREQOaeHCheTk5LB27Vquu+46VqxYQc+ePWndujWvv/46s2fPBiA9PZ3du3eza9euOqlDMywREalWSUkJEyZMYMqUKWRnZ5OamkppaSmxWIzx48fTtm1bZs2axaJFiygqKmLevHmccMIJdVKLAktERKrVqlUrsrKySE5OZs2aNTzwwANkZ2ezePFi7r//fm666SaGDBnCunXrmDx5Mm3atKmzWhRYIiJSraZNm5KWlkZ+fj5FRUWMGjWKiRMnsnLlSvr370/Hjh259NJL6d69e53XosASEZEqlZeXE4vFyM3NZe/evUydOpUuXboAkJWVxfDhwxP+FSKHopsuRETkgHXr1lFUVERZWdmBMHJ3kpOTcXfy8vJYv349eXl5LFq0iHbt2tVbbVr8VgAtfityPKq8+O38+fMZN24cmZmZZGZm0qNHD3JycmjRosWBNkOHDqVZs2Zs2LCBadOm0blz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\n" }, "metadata": { "needs_background": "light" @@ -163,18 +164,11 @@ " sample_posterior=True)\n", " }\n", "clf = lgb.LGBMClassifier()\n", - "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=5,random_state=45)\n", + "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=5,random_state=45)\n", "cmp.fit_compute(X_missing,y)\n", "cmp.plot()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As can be seen with the above plot that, the `Iterative Imputer` strategy provide better model performance." - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -184,15 +178,15 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 19, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T15:59:15.743486\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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iYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhInXF33L1a5yphiYhIrZs/fz7PPPMMZgZQraSlhCUiIrVq27Zt3HzzzQwfPpynn34aM8PMKC0trVI9WulCRERqVYsWLRg9ejR9+/bl0ksvZfv27Vx88cXEYlXrMylhCQD/+ayYMc8UpjsMEakH7h3WKWV1lZSU0KBBA3bv3s3AgQO58MILOfXUU3nnnXcAuO2225KuS0OCIiKScsXFxQA0aNAAgFNOOYVFixbRp08fJk2axB133MGOHTuqVKd6WCIiklJz585l/vz5lJaWMmbMGNq3b8+BBx7Izp07+dOf/sTDDz/MTTfdxA033MCJJ56YdL3qYYmISMosX76ccePGcd5559GhQwduvfVWHn30UQ444AC6devG6NGjueWWW7j++ut56aWXOPbYY5OuWz0sERGpsdLSUmKxGAUFBZx++un079+f/v37c/XVV/PnP/+ZRo0aMWTIEM455xyOOeYY9uzZw8CBA6vUhnpYIiJSY5s2bQIgJyeHLVu2sGDBAgBatmxJ9+7dWbFiBV26dOGYY47B3fc+26oKJSwREamRefPm0bVrVxYvXkxOTg45OTlMnjyZc845hxUrVvDggw/SsGFDHn74YYC9n8OqKg0JiohItc2bN49JkyYxfPhwVqxYwaBBg7j88su58MIL2bhxI7m5uQB0796dNm3a1KgtJSwREamWl156iYkTJ3L//feTkZHBFVdcwaWXXkq7du048MAD6dKlCwB33nknM2fO5PHHH69RexoSFBGRalm/fj1Tp06lX79+9O7dm549ezJ+/Hj27NkDBOsFFhUVsXz5cv74xz+SnZ1do/aUsEREpFouueQS+vbtuzdBjR07lkaNGlFYGKyaU1JSQpMmTZg5c2aVpq9XRAlLRESqpWzF9YYNg6dL2dnZbNy4kXvvvXef/VVdM7AiSlgiIpKUtWvXsmzZMoqLiykpKcHM9iat0tJSmjRpwl133cWCBQtYvnx5ytvXpAsREanUnDlzyMvLIysri6ysLHJzcxk1ahQtWrTY+6Hh0tJS2rRpwxlnnEG3bt1SHoN6WCIisl/FxcXMnj2badOmsXDhQoYNG8aGDRuYMmUKW7du3TvkF4vFaNOmDXl5ebRr1y7lcShhiYhIpbZt28a6desAGD58OEOHDqW4uJhZs2YBsGLFClatWgVAZmZmrcSghCUiIvuVkZHB+PHjmTNnDkuXLiUWizFgwAB69epFfn4+RUVFvPzyy3TqFHyPVnVWsUiGEpaIiFRq4MCBDB48mBkzZpCfn0+DBg0YMWIEhYWFFBYWMm7cODp27FirMVQ66cLMrgdGACVAKfAjd3/dzB4CfuPu79Q0CDPb4e7NqlB+PbDB3QfG7XsDaOjuR1ehnunAc+7+ZKqux8xOBia4+9Ca1FNJG12BE9z9sdpqQ0QkXmZmJiNHjsTMmDx5MmvWrKFx48Zs3ryZZs2Sfvuukf0mLDM7HhgKHOfun5tZW6ARgLv/sA7i25/mZnawu28ws5p9fJp6cT1V0ZXgj4ikE5aZNXT3PbUWkYh87bVu3ZrLLruMHj168MADD5CZmcmjjz5Khw4d6qT9ynpYBwFb3P1zAHffUnbAzJYQ9CQKzGwHcB8wBPgQyAN+DRwC/NTdnzWzUcBwoCWQBTzq7jcnNmhmPwO+DzQGnnb3GyuI7QngfOB24EJgFvC/YR0NgNuAk8N67nH3BywYWL0bOBXYAHxRwfXcB/QBmgBPlsUQ9uweAc4CMoDz3H1NRTfPzG4CugGHhvdiHNAPOAPYCJzl7sVhvU+E+4uAEe7+j/geYFhfWU/0NiA77FU+AtxVwfWeDPwC+BQ4CjiiolhF5OvtmevPTbrsO3c2qrRM2eevxo0bx5IlS6obVpVU9gzrReBgM3vPzO41s5MqKNcUWOTuPYHtwK0ESWE4cEtcub7A94Ac4Dwzy42vxMwGA4eH5XoBvc2sou9Pfgr4brh9FvCXuGM/ALa6ex+CxHOZmXUL4zkS6AFcDJxQQd3Xu3tuGOdJZpYTd2yLux9HkKAnVHB+vO7A/wBnA48Ci939GILEdGZcua3h/t8Dv62kzonAUnfv5e537ud6AY4Drnb3ryQrM7vczArMrKBo28dJXIqISKC6XxFSE/vtYbn7DjPrDQwEBgGzzWyiu09PKPoFMC/cfgv4POw5vEUwfFVmvrt/DGBmc4ABQEHc8cHhz9/C180IElh+OeF9DHxqZhcA7wK7EurJMbOyPylahvWcCMxy9xKg0MwWVXDp3zezywnuz0EECW51eGxO+O9KvkyY+/PXuHvRgH3vU9e4crPi/r0ziXrjVXS9XwDL3f398k5y96nAVID2hx3rVWxTRCJk2C+fTLrsvcM61WIk1VfppIvwzX0JsCR8070EmJ5QrNjL+ofBxIyyIcRSM4tvI/FNMfG1AZPd/YGkoofZwD3AqHLqGevuL+yz02xIZRWGPZMJQB93/zQclov/UMHn4b8lJLdSSPy9SLxPFd2bsu09hL1gM4sRPj8sL2zKv96TgZ1JxCgiUu/td0jQzI40s8PjdvUC/l2D9k41swPNrAlwDvBKwvEXgNFm1ixsP8vM2u+nvqcJnpW9kLD/BeAKM8sI6znCzJoS9NTON7MGZnYQQa8xUQuCN/mtZtaB4LlSXTg/7t9l4fZ6oHe4fTbBczMIhl2bx51b0fWKiHxtVNZDaAbcbWatCP7a/wdweQ3aW07w7KkzwaSL+OFA3P3FcMbfsnBsdAdwEbCpvMrcfTswBb7yQbWHCIbbVoUTLTYTJMinCZ4nvQP8hy8TQ3ydb5rZ34A1BBMzEpNqbWltZqsJemQXhvseBJ4xszcJhhLLekurgZJw/3Tgd5R/vSIiXxv25QhVLTcUzBLMdfef1EmDERLOEsyNn4VZ19ofdqyfe8df09W8iNQjdf0My8xWhhPd9ksrXYiISCTU2deLhDMLp9dVe1Hi7l3THYOISH2nHpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiESCEpaIiERCna3WLvXbIa0y6vw7cEREqkI9LBERiQQlLBERiQQlLBERiQQlLBERiQQlLBERiQQlLBERiQQlLBERqXPuXuVz9DksERGpdStXrqSoqIimTZvyrW99CzOrch1KWCIiUquef/558vLyyM3NZdeuXYwdO5bjjz8eqFpPSwlLAPjg7/9kwhHfTXcYIlIP3P7enJTV9eqrr3LDDTcwdepU+vbty49+9COKiorYvXs3mZmZVeppKWGJiEitKSkp4c4776Rv37588sknPP/882zYsIHu3bvTvn17brjhhqTrUsISEZGUKy4uJiMjg4EDBwKwZ88e7r77bq6//npGjx7NqlWrmDJlCqtXr066TiUsERFJqblz5zJ//nxKSkq48sor6dixI61ateLaa6+lSZMmAPTr14+MjAxKS0uTrlfT2kVEJGWWL1/OuHHjOO+88+jYsSO33norjzzyCP/973/3JiuAZ555hvfff5+2bdsmXbd6WCIiUmOlpaXEYjEKCgo4/fTT6d+/P/379+fqq6/mL3/5C40bN+biiy8mIyODO++8k5kzZzJz5kw6d+6cdBvqYYmISI1t2rQJgJycHLZs2cKCBQsAaNmyJYceeiivvfYau3btIiMjg+zsbB5//HGOPvroKrWhhCUiIjUyb948unbtyuLFi8nJySEnJ4fJkydzzjnnsGLFCqZOnUpmZibTpk0D4KyzziI7O7vK7WhIUEREqm3evHlMmjSJ4cOHs2LFCgYNGsTll1/OhRdeyMaNG8nNzQXg0EMPpU2bNjVqSwlLRESq5aWXXmLixIncf//9ZGRkcMUVV3DppZfSrl07DjzwQLp06QKw95nV448/XqP2NCQoIiLVsn79eqZOnUq/fv3o3bs3PXv2ZPz48ezZswcIll0qKipi+fLl/PGPf6zWMGA8JSwREamWSy65hL59++5NUGPHjqVRo0YUFhYCwSoXTZo0YebMmRx77LE1bk8JS0REqqVs4dqGDYOnS9nZ2WzcuJF77713n/2xWGpSjRKWiIgkZe3atSxbtozi4mJKSkows71Jq7S0lCZNmnDXXXexYMECli9fnvL2NelCREQqNWfOHPLy8sjKyiIrK4vc3FxGjRpFixYt9n5ouLS0lDZt2nDGGWfQrVu3lMegHpaIiOxXcXExs2fPZtq0aSxcuJBhw4axYcMGpkyZwtatW/cO+cViMdq0aUNeXh7t2rVLeRxKWCIiUqlt27axbt06AIYPH87QoUMpLi5m1qxZAKxYsYJVq1YBkJmZWSsxKGGJiMh+ZWRkMH78eObMmcPSpUuJxWIMGDCAXr16kZ+fT1FRES+//DKdOnUCqNKXMlaFElY9ZmY74raHmNl7ZtbFzG4ys11m1r6Csm5md8S9nmBmN9VZ4CLytTNw4EAGDx7MjBkzyM/Pp0GDBowYMYLCwkIKCwsZN24cHTt2rNUYNOkiAszsO8BdwGnu/u/wr5ctwDXAdeWc8jnwXTOb7O5b6i5SEfm6yszMZOTIkZgZkydPZs2aNTRu3JjNmzfTrFmzOonByqYkSv0T9pqGANOBIe6+Jtx/U1hkFHCcu39iZjvcvVnceb8Emrn79WY2Idy+iQp0zGztFx0yqLYuRUTSYPYHS6t1Xve+PSs8VlpaytatW/nwww+JxWJkZWXRvHlzAJYsWVKt9sxspbvnVlZOPaz6rTHwZ+DksmQVZwfwMHA1cGM5594DrDazX1dUuZldDlwO0Lxhk4qKiYjsFYvFaN26Na1atQJq73lVeZSw6rdi4FXgBwSJKdFdwBtmdnviAXffZmZ/BK4Cisqr3N2nAlMh6GGlKmgRqR/O7zywWufdvmROiiNJDU26qN9Kge8Dfc0sL/Ggu38GPAZcWcH5vyVIdk1rKT4RkTqjhFXPufsu4ExgpJn9oJwivwF+RDm9ZXf/BHiCIGmJiESaElYEhInndGCSmZ2dcGwL8DTB867y3AG0rd0IRURqn55h1WNls/7C7Q1A2eJczyaUGw+Mr+C8j4ADajdSEZHapx6WiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEgr4PSwDofHR3bi+Yk+4wREQqpB6WiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIhEghKWiIjUmp07d6asLiUsERGpFXPnzmXKlCl89NFHKalPCUtERFJuyZIljBkzhhNPPJEOHTrsc8zdq1WnVroQEZGUW7hwIT/96U855ZRT2LRpEx988AF79uyhb9++mBnujplVqU4lLAFg4+fv8n//+na6wxCRNJp86Ospq6tTp060aNECd+fMM8/kqKOOYsuWLXTu3JkHH3ywyskKNCQoIiIpsnnz5r3bWVlZTJo0ieuuu44xY8YwY8YMHnnkETZu3Mj8+fOrVb8SloiI1Nhzzz3HiBEjOP/888nPz+fss8/mJz/5Cffddx+xWJBq2rdvT5cuXardhoYERUSkRl5//XWuueYapk+fzgsvvMA999zDiSeeyDXXXMOuXbsYN24chx12GG+99Ravv/46EyZMqFY7SlgiIlItpaWlxGIxCgoKOPXUUzn++OPp3Lkzl112Gddeey39+/fnhhtu4Mgjj2TJkiWsWbOGGTNm0L1792q1p4QlIiLVsmnTJjp27Ei/fv2YOnUqEyZMYPr06YwdO5bMzEwWLlzIJ598wqWXXgp8meCqS8+wRESkyubNm0fXrl1ZtGgRvXv35r777qNbt26cdtpp3HjjjVx33XXk5OSwcOHCvefUJFmBEpaIiFTRvHnzmDRpEsOHD6egoAB354QTTuCSSy7B3Vm0aBEAzZo1Y/fu3SlbnklDgiIikrSXXnqJiRMncv/995ORkcGYMWMYPXo0bdu2JRaLkZOTw913383DDz/MypUreeKJJ2jatGlK2lYPS0REkrZ+/XqmTp1Kv3796N27Nz169GDcuHEUFxdzwAEHcNFFFzFhwgQGDBjA3LlzOeaYY1LWtnpYIiKStEsuuQSAPXv20LBhQ8aOHcs999xDYWEhXbp0oXPnznTu3Jn+/funvG31sEREJGllC9c2bBj0d7Kzs9m4cSP33XdfrbethCUiIhVau3Yty5Yto7i4mJKSkr0L10IwTb1JkybcddddLFiwgOXLl9dqLBoSFBGRcs2ZM4e8vDyysrLIysoiNzeXUaNG0aJFi72fqSotLaVNmzacccYZdOvWrVbjUQ9LRES+ori4mNmzZzNt2jQWLlzIsGHD2LBhA1OmTGHr1q17P1MVi8Vo06YNeXl5tGvXrlZjUsISEZFybdu2jXXr1gEwfPhwhg4dSnFxMbNmzQJgxYoVrFq1CoDMzMxaj0cJS0REviIjI4Px48czZ84cli5dSiwWY8CAAfTq1Yv8/HyKiop4+eWX6dSpE0C1vt+qqpSwRESkXAMHDmTw4MHMmDGD/Px8GjRowIgRIygsLKSwsJBx48bRsWPHOoun3k+6MLMd7t7MzLoCJ7j7YymsO8/dfxX3+lV3PyEF9e5w92Y1raeSNvaJXUQk1TIzMxk5ciRmxuTJk1mzZg2NGzdm8+bNNGtWq29x5YpSD6srMKIqJ5hZZQk5L/5FKpJVHcqrvMi+zKxBbQQiIl9frVu33vt1IYsWLWLx4sU8+uijdOjQoc5jqfc9rDi3Adlm9gbwCHBXuO9koDFwj7s/YGYnA78APgWOAo4wsz8DBwOZwO/cfaqZ3QY0Cet7291HxvXmHgdmuPtcADObDjwHPF1emxUFHMZyM/AZcAzwBPAWcDXQBDjH3f8Z1r8byAVaAOPd/TkzGwXkuvtPwvqeA24HTi8n9ouAq4BGwOvAGHcvMbMdwAPAKcCVwMvJ33IR+bqYOeLdSsssyzx5v8cXLlyImdV41fXqilIPayKw1N17ufudwA+Are7eB+gDXGZmZR8COA642t2PCF+PdvfeBAnhKjNr4+4TgaKwvpEJbc0Gvg9gZo2A7wBzK2mzIscCPwaygf8FjnD3vsBDwNi4cl2BvsCZwP1mVuGUm8TYzSwbOB/o7+69gBKg7JqaAq+7+7Huvk+yMrPLzazAzAp2fbKnkssQkW+6Bg0apC1ZQbR6WIkGAzlmdm74uiVwOPAFsNzd348re5WZDQ+3Dw7Lfbyfuv8K/M7MGhP0ZvLdvcjMKmrz/QrqAVjh7h8CmNk/gRfD/W8Bg+LKPeHupcA6M/sXQe8wWd8BegMrwpk6TYBN4bES4KnyTnL3qcBUgIOOaepVaE9EImbkY9mVlpl86JLaD6QGopywDBjr7i/sszMYhtuZ8PoU4Hh332VmSwiGBivk7rvDcqcR9Fwe31+blfg8brs07nUp+97/xIThwB727QVXFLcBj7j7/5VzbLe7lyQfrohI/RSlIcHtQPO41y8AV5hZBoCZHWFm5X3pSkvg0zBZHQX0iztWXHZ+OWYDlwIDgXlVbLM6zjOzmJl1Bw4F1gLrgV7h/oMJhgzLi30hcK6ZtQ/jOtDMuqQoLhGReiFKPazVQImZvQlMB35H8NxnlQXjYJuBc8o5bx7wYzN7lyAJvBZ3bCqw2sxWlfMc60VgBvCMu38R7nsoyTar4z/AcoJJFz8Oe3mvEAw3vgO8C6yqKHYzmwS8aGYxoJhggsW/UxSbiEjaWdmqu5I+ZbMQ3f3JdMVw0DFNfdQzR6ereRGpByYf+npa2jWzle6eW1m5KA0JiojIN1iUhgS/ttx9VLpjEBGp79TDEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSNBq7QJAVuPstH0XjohIMtTDEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSDB3T3cMUg+Y2XZgbZrDaAtsUQxpjyHd7SuG+hNDXbXfxd3bVVZISzNJmbXunpvOAMysQDGkP4Z0t68Y6k8M6W4/kYYERUQkEpSwREQkEpSwpMzUdAeAYiiT7hjS3T4ohjLpjiHd7e9Dky5ERCQS1MMSEZFIUMISEZFIUML6hjGz081srZn9w8wmlnO8sZnNDo+/bmZd0xDDiWa2ysz2mNm5aWh/vJm9Y2arzWyhmXVJQww/NrO3zOwNM3vZzHrUdQxx5b5nZm5mKZ/enMR9GGVmm8P78IaZ/bCuYwjLfD/8b+JtM3usLts3szvjrv89M/ssle0nGcMhZrbYzP4W/n8xJNUxJMXd9fMN+QEaAP8EDgUaAW8CPRLKjAHuD7cvAGanIYauQA7wR+DcNLQ/CDgg3L4iTfegRdz22cC8uo4hLNccyAdeA3LTcB9GAb9PZbvViOFw4G9A6/B1+7r+PcSVHws8nIZ7MBW4ItzuAayvrd/J/n7Uw/pm6Qv8w93/5e5fAI8DwxLKDAMeCbefBL5jZlaXMbj7endfDZSmsN2qtL/Y3XeFL18DOqchhm1xL5sCqZ4dlcx/CwC/AKYAu1PcflViqE3JxHAZcI+7fwrg7pvquP14FwKzUth+sjE40CLcbgkUpjiGpChhfbNkARviXn8Q7iu3jLvvAbYCbeo4htpU1fZ/APw1HTGY2ZVm9k/g18BVdR2DmR0HHOzuc1PcdtIxhL4XDkM9aWYHpyGGI4AjzOwVM3vNzE6v4/YBCIemuwGLUth+sjHcBFxkZh8AzxP09OqcEpZIBczsIiAX+H/paN/d73H37sB1wKS6bNvMYsBvgGvqst1y/AXo6u45wHy+7P3XpYYEw4InE/RwHjSzVmmI4wLgSXcvSUPbFwLT3b0zMASYEf43UqeUsL5ZNgLxf6F2DveVW8bMGhJ0/z+u4xhqU1Ltm9kpwPXA2e7+eTpiiPM4cE4dx9AcOBpYYmbrgX7AsymeeFHpfXD3j+Pu/0NA7xS2n1QMBD2OZ9292N3fB94jSGB11X6ZC0j9cGCyMfwAeALA3ZcBmQQL49atdDw40096fgj+UvwXwbBC2cPVngllrmTfSRdP1HUMcWWnk/pJF8ncg28RPIQ+PI2/h8Pjts8CCtL1ewjLLyH1ky6SuQ8HxW0PB15LQwynA4+E220Jhs/a1OXvATgKWE+42EMa7sFfgVHhdjbBM6yUx1JprHXdoH7S+0PQnX8vfEO+Ptx3C0FPAoK/nP4E/ANYDhyahhj6EPxVu5Ogd/d2Hbe/APgIeCP8eTYN9+B3wNth+4v3l0xqK4aEsilPWEneh8nhfXgzvA9HpSEGIxgefQd4C7igrn8PBM+Qbkv1tVfhHvQAXgl/D28Ag2srlv39aGkmERGJBD3DEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEqmnwhXSH4173TBcufy5Ss7rtb/VtM0s18zuqmIsT5rZoeH2+nAl+dVm9lL8avZm1tnMnjGzdWb2TzP7nZk1ijve18zyw5XB/2ZmD5nZARW0+Vsz2xi/ooKZ3WRmExLKrTeztuF2RzN7PGx7pZk9b2ZHmFk7M5tXlWuW+kcJS6T+2gkcbWZNwtenktyqIL0IPlfzFWbW0N0L3D3ptQnNrCfQwN3/Fbd7kAfLJS0hXDYqXCR5DvBndz+cYA2+ZsAvw+MdCD7jd527H+nu3wLmEayqkdhmjOCDwhuAk5KM04CngSXu3t3dewP/B3Rw983Ah2bWP9nrlvpHCUukfnseODPc3melbjNramYPm9nysLcyLOzN3AKcH35/0vlhr2SGmb1CsAbcyWW9NDNrZmZ/iOsxfa+cGEYCz1QQ3zK+XCj1f4Dd7v4HAA/WvBsHjA57UVcSrBixrOxkd3/S3T8qp96TCT4wfF943ckYBBS7+/1x9b/p7kvDl38Or0UiSglLpH57HLjAzDIJviPs9bhj1wOL3L0vwZv1/wMygJ8TfIdXL3efHZbtAZzi7olv/jcAW939mLDHVN5K4P2BlRXEdzpBIgDomVjOg69J+Q9wGMHahBXVk6gsOT8NnGlmGUmcU1n9BcDAJNuXekgJS6Qe8+B7wboSvIE/n3B4MDDRzN4gGJrLBA6poKpn3b2onP2nAPfEtfdpOWUOAjYn7FtsZhuBM0jxgqxhL3EIwdDiNoIkfVpZiBWclsySPZuATjWPUNJFCUuk/nsWuJ2vJgYDvhf2pHq5+yHu/m4FdeysQftFBMkw3iCgC8G6cjeH+94hYTV1M2tBkET/QTDEl8xq66cBrYC3wpXiB/DlsODHQOuE8s2Bz5KoPzO8FokoJSyR+u9h4GZ3fyth/wvA2LJvhDazb4X7t1PORIYKzCd4tkRYR2IyAHiXYEhvHx58wedPgYvN7EBgIXCAmV0c1tUAuIPge5R2Ab8HLjGzb8e1991wMka8C4EfuntXd+9KsIr4qeFzsHzgbDNrXnY+8Gb4vGwR0NjMLo+rP8fMyoYBjwD+ntxtkfpICUuknnP3D9y9vGnovyB4ZrXazN4OX0OwqnmPskkXlVR/K9DazP5uZm8S9JwSzSWYBFFebB8S9Pyu9GAl7eHAeWa2jmD1791AXlj2I4KvrLk9nNb+LkFvantZfWFSOj1ss6yNncDLwFnhEOnvgZfDodAfAz8My5W1f0o4rf1tgtXe/xtWNSi+XokerdYuIvsVTqtfDPT39HzbbUqYWT4wrILndBIBSlgiUikzOw14193/k+5YqsPM2hEk3D+nOxapPiUsERGJBD3DEhGRSFDCEhGRSFDCEhGRSFDCEhGRSFDCEhGRSPj/T9sIwN9/k9YAAAAASUVORK5CYII=\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-10T23:33:05.910517\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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RIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIJWaxcA7KTe5Kxum++/ERE5EOphiYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhIq1u6dCnLly9vUR1KWCIi0qoee+wxpkyZwp49e1pUj1a6EBGRVvPEE09wxRVXUFZWRmFhIe+++y579uyhS5cuSdelhCUAvPTc+3wq92/pDkNE2oG/7jg6ZXW9/vrrvPPOO3z605/m7bff5pJLLmHXrl0UFBRw+umnJ1WXEpaIiLSaiy66iK1bt3LiiSfSrVs3rrrqKoYMGcLixYt59NFHASzRupSwREQkpR5++GEqKyt55513uP7665k8eTKHH344mzdv5tJLLwXg8MMP56KLLgLITLReTboQEZGUWbNmDZMmTWLIkCG89957XHHFFTz44INccMEF/PCHP9xbbtWqVQ2TMDzRupWwREQkZdavX8+IESM466yzuOuuu/jyl7/M4sWLWbJkyd5Zgr/97W+54YYbuPXWWwESnjqohCUiIikzZMgQampqqKysBOCyyy5j4MCBzJ8/nx07dgDg7sybN48TTzwxqbqVsEREpEUqKytZsGAB5eXlHHPMMQwcOJDly5ezbt06AC6//HKys7P5+c9/DsAVV1yRdLICJSwREWmB8vJyioqKWLt2LWPHjqW6uppx48axadMmHnjgAZ566ikABg8ezGGHHdaitjRLUEREDkhtbS0zZsxg1qxZjBo1ik6dOrFlyxYKCgooLi7mjjvuYObMmfTq1YvKykqWLFnSovbUwxIRkQPSvXt3Bg0aRHZ2Ni+99BIlJSWUlpZSUFDAE088QXFxMfPmzWPChAksX76cgoKCFrWnHpaIiByQrKwscnNzKSsro6qqiilTplBcXMyzzz7LyJEjyc/PZ9iwYfTu3Tsl7SlhiYhI0urr68nIyKCkpITdu3cze/Zs+vfvD8CgQYOYOHFiixe7jachQRERScj69eupqqqirq4O9+Dzvu5OdnY27k5paSkbNmygtLSUxx9/nL59+6a0fWtoVA5tHTMLvPdhD6U7DBFpBxpb/HbRokVMnz6dvLw88vLyKCwspKioiK5du+4tM378eHJycti4cSNz5syhX79+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\n" }, "metadata": { "needs_background": "light" @@ -208,7 +202,7 @@ " sample_posterior=True)\n", " }\n", "clf = LogisticRegression()\n", - "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10,model_na_support=False)\n", + "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=10,model_na_support=False)\n", "cmp.fit_compute(X_missing,y)\n", "cmp.plot()" ] @@ -222,15 +216,15 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 20, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T15:59:23.868511\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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JSIikadkJSIikadkJSIikadkJSIikadkJSIijcbdcfdan6dkJSIiDW7RokU89dRTmBlArROWkpWIiDSo7du3c/PNNzNixAieeOIJzAwzo7y8POE6tIKFiIg0qFatWnHZZZfRu3dvLr30Unbs2MHFF19MLJZ4f0nJSgD46PV/8Lv2P0p1GCISAddsuSNpdZWVldGkSRP27NlD//79GTlyJGeddRZvv/02ALfddltC9WgYUEREkq60tBSAJk2aAHDmmWfy0ksv0atXLyZPnswdd9zBzp07E65PPSsREUmqBQsWsGjRIsrLy/nBD35Ahw4daNeuHbt27eKPf/wjDzzwADfddBM33HADp59+ekJ1qmclIiJJU1hYyIQJEzjvvPPo2LEjt956K4888ghf+cpX6Nq1K5dddhm33HIL119/PS+//DInn3xyQvWqZyUiIvVWXl5OLBZj5cqVDB48mL59+9K3b1/Gjx/Pk08+SbNmzRgyZAjDhw/npJNOYt++ffTv3z/h+tWzEhGRevvoo48AyMnJYevWrSxevBiA1q1b0717d4qKiujcuTMnnXQS7r7/WVailKxERKReFi5cSJcuXViyZAk5OTnk5OQwZcoUhg8fTlFREffddx9NmzblgQceANj/Oava0DCgiIjU2cKFC5k8eTIjRoygqKiIgQMHMnbsWEaOHMnmzZvJy8sDoHv37mRmZta5HSUrERGpk5dffplJkyZxzz33kJaWxlVXXcWll15K+/btadeuHZ07dwZg6tSpzJo1izlz5tS5LQ0DiohInWzcuJHp06fTp08fevbsSY8ePZg4cSL79u0DgvX/SkpKKCws5OGHHyY7O7vObSlZiYhInVxyySX07t17f3IaN24czZo1o7i4GAhWr8jIyGDWrFkJT1GvjpKViIjUScXK6U2bBk+UsrOz2bx5M3ffffcB+2uzBmB1lKxERCQh69evZ/ny5ZSWllJWVoaZ7U9Y5eXlZGRkMG3aNBYvXkxhYWFS29YECxERqdH8+fPJz88nKyuLrKws8vLyGDNmDK1atdr/geDy8nIyMzM5++yz6dq1a1LbV89KREQOqrS0lLlz5zJjxgxefPFFhg0bxqZNm7j99tvZtm3b/mG+WCxGZmYm+fn5tG/fPqkxKFmJiEiNtm/fzoYNGwAYMWIEQ4cOpbS0lNmzZwNQVFTE6tWrAUhP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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-10T23:33:13.008626\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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\n" }, "metadata": { "needs_background": "light" @@ -242,7 +236,7 @@ "from sklearn.pipeline import Pipeline\n", "steps = [('scaler', StandardScaler()), ('LR', LogisticRegression())]\n", "clf = Pipeline(steps)\n", - "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10,model_na_support=False)\n", + "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=10,model_na_support=False)\n", "cmp.fit_compute(X_missing,y)\n", "cmp.plot()\n" ] @@ -259,15 +253,15 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 21, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-04T15:59:44.893576\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", - "image/png": "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PqW5YxAROVipZyUiIglPyUpERBKekpWIiCQ8JSsREUl4SlYiIpLwlKxERCThKVmJiEjCU7ISEZGEp2QlIiIJT2sDCgBZWVleUlLS3GGIyCFIawOKiMhBQWsDiohIo3nvvfeorKzkiCOOICMjo8H1KFmJiEijeP7557nttttIS0sjKyuL3Nxc+vfv36C6NAwoIiJxV1hYyMSJEykoKOCpp55i586dLF26tMH1KVmJiEjcbdq0iSuvvJLjjz+eTp06kZuby9KlS9m2bRuVlZX1rk/DgCIiEjdFRUVkZGRw9tlns3HjRgB27dpFRkYG27ZtIzk5mUgkQnl5OYcffnjM9apnJSIicbFw4UKys7O57LLLAOjYsSMALVq04Mgjj6RVq1YkJyczffp07rrrLrZt2xZz3epZCQCb317NH7t8o7nDEJFmdtaGdQ06bv78+dxyyy3Mnz+fOXPm8Oyzz3Luuefu2Z+amkrr1q25+eabmTdvHjNnzqRVq1Yx16+elYiI7Jf333+fe++9lzvvvJNhw4bRoUMHli9fvmf/7t272bVrFytXruSpp57iD3/4A717965XG+pZiYjIfunQoQOPPfYYXbp0AeDKK69kyJAhZGdnc95555GUlETbtm256qqrGDZsGMcdd1y921CyEhGRBikqKqKsrIz27dszZMgQ3J3du3dz7LHHcv3117Ny5UqGDx9OJBIhKSmJG264ocFtaRhQRETqbcGCBeTl5bFmzRrOP/98CgsLMTNatAj6QD179mThwoV88MEHJCUl7Xd76lmJiEi9lJeXc+ONN3LfffeRk5ND69atqayspLS0lB49egBw6qmnkpWVxZQpU5gxYwYAZtbgNpWsRESkXtq1a8eAAQNISUlh9erV3H777QwfPpzFixczefJkrr76agCuu+46WrVqtV9JqoqSlYiI1EtycjLp6enMmjWL4uJixo0bx0033URJSQlDhw6lT58+ZGdn071797i1qWQlIiIxq6ysJBKJkJ+fz86dO5k6deqeaehZWVmMHj2aXbt2xb1dTbAQEZF9WrduHcXFxVRUVFD1wF53JyUlBXenoKCA9evXU1BQwKJFi+jatWvcY9CTggWA41LS/IFO8f8HJiIHluorWMybN49JkyaRmZlJZmYmWVlZ5OXl7fVsqtzcXFJTUyktLWXatGn06tWrXm3G8qRgJSsB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Aw9QUFDAk08+yRFHHNGgdjR1XUREGqxjx458+OGHPProo/z4xz+mV69edO/enaKiIhYuXLinzMyZMzn++OMb3I56ViIiUi9FRUWUlZXRunVrhg0bxtVXX82f//xn0tPTueqqqwB45JFHWLJkCZdeeim5ubn73aZ6ViIiErMFCxaQl5fHmjVruPjii1m5ciXZ2dl06tSJN954g+nTpwPQpk0bduzYwdatW+PSrnpWIiISk/Lycm688Ubuu+8+cnJyaN26Ndu3bycSiTB58mS6dOnCE088waJFiyguLmbu3LkNnlBRnZKViIjEpF27dgwYMICUlBRWr17N7bffTk5ODosXL+aXv/wll112GRdeeCHr1q3jjjvu4Mgjj4xb20pWIiISk+TkZNLT05k1axbFxcWMGzeOm266iddee40zzzyT7t27c+qpp9K/f/+4t61kJSIidaqsrCQSiZCfn8/OnTuZOnUqvXv3BmDAgAGMHj26wYvUxkITLEREpEbr1q2juLiYioqKPYnI3UlJScHdKSgoYP369RQUFLBo0SK6du3aaLFYY2ZCOXCktu3lR39nZnOHISLNpPqXgufNm8ekSZPIzMwkMzOTrKws8vLyyMjI2FMmNzeX1NRUSktLmTZtGr169WpQ22b2urtn7bOMkpWAkpXIoS46WVVUVDB69GjGjh3LwIEDmTt3LitWrCAlJYWJEyfStm3bPWUrKyvZunUrbdq0aXDbsSQrDQOKiMhXbN68mdLSUgBGjhzJiBEjqKioYNasWQCsXLmSVatWEYlE9itRxUrJSkRE9pKcnMyECROYN28ey5cvJxKJkJ2dTd++fSksLGT79u0UFRU16FEfDaVklcDM7Iuo1zlmtt7MuprZFDPbZmZH1FLWzexXUe+vNbMpTRa4iBzwBg0axNChQ5k+fTqFhYUkJSWRm5tLWVkZZWVljB8/vkmTlaauHwDMbAjwAHCmu38YPmVzI/Bz4PoaDtkBnG9m+e6+sekiFZGDRVpaGqNGjcLMyM/PZ+3ataSmplJeXk56enqTx6NkleDM7BTgd0COu/8tatejQJ6Z3enu/6522C5gGjAe+EXTRCoiB5v27dszZswYevXqxdSpU0lLS2PGjBl06tSpyWNRskpsqcAzwGB3X1tt3xcECWsccFMNxz4IvG1mdzVqhCJywChb+aNa9w0eXHtvadmy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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-10T23:33:21.148774\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaoAAAEYCAYAAAANjbKIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAzoklEQVR4nO3de3gV1dn///e9Q0KAcBIFNKKghYoogiballBBlFbEs9Ua+Glq1UdtC4UqKvLlYPuYYq2nVivUCAqSQiHWAx4ABUMJYKOiQAXiAYvGxwaroIAQyP37YyZ0E3NmJ9nA53VduTJ7Zs1a95pw7Zu1Zvba5u6IiIjEq0hTByAiIlIdJSoREYlrSlQiIhLXlKhERCSuKVGJiEhcU6ISEZG4pkQlcggys2FmtqCp46iJmbmZfaue575gZlfHOiZpfEpUIvVkZhvN7OwmaDfLzP5eh/Jdwzf8ZuX73P1Jdx8c47iGmdlX4c8OMyuLev1VLNuqDXc/190fb+x2JfaUqEQkJsLkl+LuKcC5QHH563CfSL0oUYnEQDjKWWZm95nZF2b2vpl9L9y/ycz+HT0NZWbTzewRM1toZl+a2atmdmx47BsjIDNbYmbXmllP4BHgu+FI5Yvw+Hlm9qaZbQ3bmxgVXn74+4vwnO9WHJWFsf7DzLaEv79Xoe1fh/370swWmNnhdbw+R5nZPDMrMbMPzGxE1LEEMxtrZu+F9b9uZl2iTj/bzIrC6/qQmVnUNf+7md1jZp+H9Z5b8ZpFtXGPmW0O/zY/i77GFUfHZjbRzGZGvf6OmRWEMbxlZgOijmWFdX4ZxjCsLtdGaqZEJRI7ZwBvAx2AWcBfgHTgW8Bw4I9mFj2yGAb8GjgcWAU8WVMD7v4OcAOwPByptAsPbQOuAtoB5wE3mtlF4bHvh7/bhecsj67TzA4D5gMPhrHfC8w3sw5RxTKBnwAdgSTg5ppijao/AjwLvAWkAoOAX5rZD8Iio4ErgSFAG+AaYHtUFUMJrmNv4HLgB1HHzgDWE1zDu4Gc8kRWwXVhPX2BNOCyOsSfSnB9fgMcRtD3eWZ2hJm1Irhu57p7a+B7BH9LiSElKpHY+cDdp7n7HmA20AW40913uvsCYBdB0io3393z3X0ncAfBKKnLN6utmbsvcffV7l7m7m8DucCZtTz9PKDI3We4+253zwXWAedHlZnm7hvcfQcwB+hTh/DSgSPc/U533+Xu7wN/Bn4cHr8WGOfu6z3wlrt/FnX+b939C3f/F7C4Qtsfuvufw2v+OHAk0KmSGC4H7nf3Te7+HyC7DvEPB5539+fD67sQKCRIrABlwElm1sLdP3H3tXWoW2pBiUokdj6N2t4B4O4V90WPqDaVb7j7V8B/gKPq07CZnWFmi8OptS0Eo67aTs8dBXxYYd+HBKOfcv8Xtb2dfftRk2OBo8Jpsy/C6cqx/DehdAHeq+b86tree8zdy0dhlcV2FFHXm2/2tzrHAj+qEH8GcKS7bwOuILjen5jZfDM7oQ51Sy0oUYk0nb2jp3BK8DCgmGAaD6BlVNnOUduVfeXBLOAZoIu7tyW4j2XVlI9WTPBmHO0Y4OMazqutTQSjzXZRP63dfUjU8eNj1FZVPiHqehP0L9o2qr7em4AZFeJv5e6/BXD3l9z9HILR3DqC0aLEkBKVSNMZYmYZZpZEcK9qRTg1VUKQJIaHDwFcw75v5J8CR4fnlWsN/Mfdvzaz0wnuKZUrIZieOq6KOJ4HephZppk1M7MrgBOB52LSS3gN+NLMbjWzFmGfTjKz9PD4o8Cvzay7BXpXuD8WC3OAEWZ2tJm1B26rcHwV8GMzSzSzivewZgLnm9kPwtiTzWxAWFcnM7swvFe1E/iK4FpLDClRiTSdWcAEgim/0wjuhZS7DrgF+AzoBRREHXsFWAv8n5ltDvfdBNxpZl8C4wnemIG9U2L/CywLp66+Ex1EeD9oKPCrsL0xwFB330wMhPePhhLcW/oA2EyQnNqGRe4N410AbAVygBaxaDvKn4GXCB7oeAPIq3D8/xH8Z+BzYBLB36Y8/k3AhQTTlSUEI6xbCN4/IwQPgxQT/B3PBG6MceyHPNMXJ4o0PjObDnzk7uOaOpZDkZl1JUiaie6+u4nDkRpoRCUiInFNiUpEROKapv5ERCSuaUQlIiJxrVnNReRQcPjhh3vXrl2bOgwROQS9/vrrm939iKqOK1EJAF27dqWwsLCpwxCRQ5CZVbtSiKb+REQkrilRiYhIXFOiEhGRuKZEJSIicU2JSkRE4poSlYiIxDUlKhERiWv6HJWIiDSY559/nsLCQrZv386YMWNo27YtCQkJdapDa/0JAKnNjvKbWl/b1GGISBy64/M763Xe0qVLuf766/nDH/7A888/T1FREddddx1nnXUWKSkpe8uZ2evunlZVPZr6ExGRBrFkyRJ+9KMfcfbZZ3PvvffSokULHnzwQQoKgu8Bre1ASYlKREQaxLe//W22bNnCmjVrAOjZsycdOnTg4YcfZufOnZhZrepRohIRkZgpKChg7ty5vPrqqwwZMoSdO3cyceJELrnkEt58801mz55N69atyc3NrXWdephCRERiYsGCBfz85z8nMzOTe++9l2XLljFu3DhKSkrYtGkTgwcPBuDYY4+lTZs2ta5XiUpERPZbSUkJ48eP5/7772fIkCG0atWKzz77jBYtWtC3b1/69u0LwEMPPcRzzz3H1VdfXeu6NfUnIiL7rV27dqSnp5OUlMSaNWvIzs4mJyeH73//+zz88MMAFBcXs3DhQqZPn0737t1rXbdGVCIist8SExNJSUkhNzeX5cuXM3LkSCZMmEBhYSGDBw/mlFNOoV+/fsyePZvmzZvXqW4lKhER2S9lZWVEIhGys7PZtWsXU6ZMoVevXgCkpaUxfPhwdu3aBVDnJAWa+hMRkXpYv349y5cvp7S0dO/nodydpKQk3J2cnBw2bNhATk4OixYtomvXrvVuSyMqERGpk7y8PMaOHUtqaiqpqamkpaWRlZW190m+ESNGkJmZSXZ2NkVFRcydO5du3brVuz0lKhERqbXS0lJmz55NTk4O/fr1Y968eaxYsYLJkyfvXcsPYNasWZSVlbFt2zZat269X21q6k9EROpk69atFBUVAXDxxRczdOhQSktL936Id+XKlaxatYpIJLLfSQqUqEREpA4SExMZPXo0eXl5LF26lEgkQkZGBn369CE/P58dO3ZQUFBA586dY9Zm3CcqM/sq/N3VzDJjXPfYCq8LYlTvV7Gop4Y2xtZcSkQk9vr378/gwYOZMWMG+fn5JCQkkJmZSXFxMcXFxYwaNSqmiepAukfVFcgEZtX2BDNr5u67qykyFrir/IW7f6/e0TW+fWKvDTNLcPc9DRSPiBwikpOTGTZsGGZGdnY269ato3nz5pSUlOzz9R2xciAlqt8CPc1sFfA48GC4bwDQHHjI3aeY2QDg18DnwAlADzP7G9AFSAYecPepZvZboEVY31p3H2ZmX7l7ipn9BZjh7vMBzGw68BzwVGVtVhVwGMsk4AvgZGAOsBoYCbQALnL398L6vwbSgDbAaHd/zsyygDR3/3lY33PAPcAPK4l9ODACSAJWAje5+55wdDcFOBv4GfD32l9yETmYPfrlE7Uqt3BAfqX7y8rK2LJlC+PGjSMSifDCCy/QqVOnWIYIHFiJ6jbgZncfCmBm1wNb3D3dzJoDy8xsQVj2VOAkd/8gfH2Nu//HzFoA/zCzee5+m5n93N37VNLWbOByYL6ZJQGDgBuBn1bWZlQ7lTkF6An8B3gfeNTdTzezkcAvgF+G5boCpwPHA4vN7FtVVVgxdjPrCVwB9HP3UjN7GBgGPAG0Ala6+68q1hNew+sB2lrbarogIvJNkUiE9u3b065dO4C96/nF2oGUqCoaDPQ2s8vC122B7sAu4LUKyWOEmV0cbncJy31WTd0vAA+EyeiHQL677zCzqtqsLlH9w90/ATCz94DyZLoaGBhVbo67lwFFZvY+wWiwtgYBpxEkYQhGa/8Oj+0B5lV2krtPBaZC8A2/dWhPRA4C17a+qlbl7lhSv2/4jZUDOVEZ8At3f2mfncF027YKr88Gvuvu281sCcEUYJXc/euw3A8IRip/qa7NGuyM2i6Lel3Gvte/YqJwYDf7PvBSVdwGPO7ut1dy7GvdlxKRA1ncP/UX5Usg+oH8l4AbzSwRwMx6mFmrSs5rC3weJqkTgO9EHSstP78Ss4GfAP2BF+vYZn38yMwiZnY8cBywHtgI9An3dyGYGqws9peBy8ysYxjXYWZ2bIziEhFpUgfSiOptYI+ZvQVMBx4guK/zhgXzXSXARZWc9yJwg5m9Q/DmvyLq2FTgbTN7w92HVThvATADeNrdd4X7Hq1lm/XxL+A1gocpbghHdcsIphX/CbwDvFFV7GY2DlhgZhGglODBiQ9jFJuISJOx8sUEpemUP1Xo7nObKobUZkf5Ta2vbarmRSSO3fF5w96jMrPX3T2tquMH0tSfiIgcgg6kqb+DlrtnNXUMIiLxSiMqERGJa0pUIiIS15SoREQkrilRiYhIXFOiEhGRuKZEJSIicU2JSkRE4poSlYiIxDUlKhERiWtamUIAOLLPUdxR2LTfOSMiUhklKhERaTDvv/8+ZWVldOzYkTZt2tSrDiUqERFpEM8++yy/+c1vSE5OJi0tjczMTE477bQ616N7VCIiEnP5+fmMGTOGnJwc5syZw65du1i8eHG96lKiEhGRmNuyZQs33HADJ510Ep06dSIzM5PFixezfft2ysrK6lSXpv5ERCRmCgoKaNOmDeeffz6bN28GYPfu3bRp04bt27eTmJhIJBKhpKSEI444olZ1akQlIiIxsXDhQjIyMrjmmmsAOPzwwwFo1qwZRx55JC1btiQxMZEZM2Zw9913s3379lrVq0QlIiL7bf78+YwbN4758+dz8skn8/TTT+9zvHnz5rRq1YpJkyZxzz33kJWVRcuWLWtVt6b+BIBNH5cy4o5PmjoMEWliD/7vkXU+54MPPuC+++5j8uTJDBgwgMWLF7N06VIuvPBCAPbs2cPu3btZuXIla9eu5amnnqJHjx61rl+JSkRE9kuHDh2YNm0aXbp0AeCGG25g0KBBZGRkcNFFF5GQkEDbtm258cYbOffcc+uUpECJSkRE6qmgoIDi4mLat2/PoEGDcHf27NnDcccdx6233srKlSs577zziEQiJCQkcNttt9WrHd2jEhGROluwYAFZWVmsXbuWSy65hPz8fMyMZs2C8U/Pnj1ZuHAhGzduJCEhYb/a0ohKRETqpKSkhPHjx3P//fczZMgQWrVqRVlZGUVFRXTv3h2AM888k7S0NCZOnMjMmTMBMLN6tadEJSIiddKuXTvS09NJSkpizZo13HXXXZx33nm8/PLLjBs3jptuugmAW265hZYtW9Y7QZVTohIRkTpJTEwkJSWF3Nxcli9fzsiRI5kwYQKFhYUMHjyY3r17k5GRwfHHHx+T9pSoRESk1srKyohEImRnZ7Nr1y6mTJlCr169AEhLS2P48OHs3r07pm3qYQoREanW+vXrWb58OaWlpbg7AO5OUlIS7k5OTg4bNmwgJyeHRYsWceyxx8a0fY2oRESkSnl5eYwdO5bU1FRSU1NJS0sjKytr73dLjRgxgszMTLKzsykqKmLu3Ll069YtpjEoUYmISKVKS0uZPXs2OTk59OvXj3nz5rFixQomT57MmDFjaNu2LQCzZs2irKyMbdu20bp165jHoak/ERGp0tatWykqKgLg4osvZujQoZSWlpKbmwvAypUrWbVqFZFIpEGSFChRiYhIFRITExk9ejR5eXksXbqUSCRCRkYGffr0IT8/nx07dlBQUEDnzp0bNI4aE5WZ3WFma83sbTNbZWZnhPsfNbMTYxGEmX1Vx/IbzWxphX2rzGxNHeuZbmaXhdsx6Y+ZDTCz5/a3nhra6GpmmQ3ZhogIQP/+/Rk8eDAzZswgPz+fhIQEMjMzKS4upri4mFGjRjV4oqr2HpWZfRcYCpzq7jvN7HAgCcDdr23QyGrW2sy6uPsmM+u5v5XFQX/qoiuQCcyq7Qlm1szdY/vMqIgc9JKTkxk2bBhmRnZ2NuvWraN58+aUlJSQkpLSKDHUNKI6Etjs7jsB3H2zuxcDmNkSM0sLt78ys9+FI69FZnZ6ePx9M7sgLJNlZk+H+4vMbEJlDZrZLWb2j3AEN6ma2OYAV4TbVwK5UXUkhPGU1/M/4X4zsz+a2XozWwR0jDonuj9/MrPCsD+TospsNLNJZvaGma02sxOqu3hmNtHMHjezpWb2oZldYmZ3h+e+aGaJUfWW73/NzL4V7t874iu/zuHmb4H+4ShyVDX9HRC2/Qzwz+piFRGpSvv27bnuuusYM2YMr7zyCosXL2bmzJl06tSpUdqv6am/BcB4M9sALAJmu/urlZRrBbzi7reY2VPAb4BzgBOBx4FnwnKnAycB24F/mNl8dy8sr8TMBgPdw3IGPGNm33f3/EranAdMA+4BzgeGAf9feOynwBZ3Tzez5sAyM1sA9AW+HcbVieDN+7FK6r7D3f9jZgnAy2bW293fDo9tdvdTzewm4GagppHY8cDAsM3lwKXuPia8TucBfwvLbXH3k83sKuB+gpFsVW4Dbnb3oQBmdn0V/QU4FTjJ3T+oIU4ROYjlzby0VuXeXpZU7XF3Z/HixUQijfeIQ7UtuftXwGnA9UAJMNvMsiopugt4MdxeDbzq7qXhdteocgvd/TN33wHkARkV6hkc/rwJvAGcQJC4KvMZ8LmZ/Rh4hyD5RddzlZmtAlYCHcJ6vg/kuvuecGT4ShV1X25mb4Rx9CJIMuXywt+vV+hbVV6IuhYJ7Hudos/Pjfr93VrUG62q/gK8VlWSMrPrw5Fj4Y7tn9WxSRE5FJlZoyYpqMXnqNx9D7AEWGJmq4GrgekVipV6+ceVoQwonyosM7PoNrzCeRVfG5Dt7lNqFT3MBh4Csiqp5xfu/tI+O82G1FShmXUjGCmlu/vnZjYdSI4qsjP8vYfafQ4t+lpUvE5VXZvy7d2E/5kwswjh/cHKwqby/g4AtlUVmLtPBaYCdDrylIp/CxE5iFwyfF6tytXnG34bWrVp0cy+bWbRI5o+wIf70d45ZnaYmbUALgKWVTj+EnCNmaWE7aeaWUeq9hRwd3hexXpujLoH1MPMWgH5wBXhPZ0jCabkKmpD8Oa+xcw6AefWqYf1d0XU7+Xh9kaCES3ABUBiuP0lEP2Bhar6KyJywKtpRJAC/MHM2hH87/5dgmnA+nqN4N7S0cDM6PtTAO6+IHyCb7kFy8J/BQwH/l1ZZe7+JTAZvvE9J48STKu9YcGBEoLE+BRwFsG9qX/x34QQXedbZvYmsA7YxDeTaUNpb2ZvE4zArgz3/Rl42szeIpgyLB8dvQ3sCfdPBx6g8v6KiBzw7L8zUQ3cUHBvK83df94oDR5AzGwjwbXZ3FQxdDryFL/imhdrLigiB7WmmPozs9fdPa2q41qZQkRE4lqjLUrr7tP55kMYArh716aOQUQkXmlEJSIicU2JSkRE4poSlYiIxDUlKhERiWtKVCIiEteUqEREJK4pUYmISFxTohIRkbimRCUiInGt0VamkPjWJTUxLpf3FxHRiEpEROKaEpWIiDSo3bt379f5SlQiIhJzTz31FAMHDmTnzp00a9Zsv5KVEpWIiMTUW2+9xbhx4/jiiy9IT0/f72SlRCUiIjEViUQYP348b775JqeeeiqnnXbafiUrJSoREYmJgoIC1qxZw8knn8zZZ58NwPTp00lPT+fUU0/dm6zef//9OtWrRCUiIvtt4cKFZGRkcM011wDQoUMH9uzZA8C0adM4/fTTycjI4OGHH2bcuHFs3bq11nWbuzdI0HJg6X30MT5/xM1NHYaINKEuY0bU67z58+dz5513MnHiRObOncsFF1zAhRdeCMCePXtISEgAoHfv3nz88ce88sornHLKKXvPN7PX3T2tqvo1ohIRkXr74IMPuO+++5g8eTLnnnsuHTp0YOnSpXuPlyep/Px8du/ezauvvrpPkqoNrUwhIiL11qFDB6ZNm0aXLl0AuOGGGxg0aBAZGRlcdNFFe8u1a9eOF154gWOPPbbObShRiYhInRUUFFBcXEz79u0ZNGgQ7s6ePXs47rjjuPXWW1m5ciXnnXceCQkJRCIRevfuXe+2NPUnIiJ1smDBArKysli7di2XXHIJ+fn5mBnNmgVjn549e7Jw4UI2btxIJLL/aUYjKhERqbWSkhLGjx/P/fffz5AhQ2jVqhVlZWUUFRXRvXt3AM4880zS0tKYOHEiM2fOBMDM6t2mEpWIiNRau3btSE9PJykpiTVr1nDXXXdx3nnn8fLLLzNu3DhuuukmAG655RZatmy5XwmqnBKViIjUWmJiIikpKeTm5rJ8+XJGjhzJhAkTKCwsZPDgwfTu3ZuMjAyOP/74mLWpRCUiIrVSVlZGJBIhOzubXbt2MWXKFHr16gVAWloaw4cP3++V0iujhylERKRK69evZ/ny5ZSWllK+QIS7k5SUhLuTk5PDhg0byMnJYdGiRfV6/LwmGlGJiEil8vLyGDt2LKmpqaSmppKWlkZWVhZt2rQBYMSIEWRmZpKdnU1RURFz586lW7duMY9DiUpERL6htLSU2bNnk5OTQ79+/Zg3bx4rVqxg8uTJjBkzhrZt2wIwa9YsysrK2LZtG61bt26QWDT1JyIildq6dStFRUUAXHzxxQwdOpTS0lJyc3MBWLlyJatWrSISiTRYkgIlKhERqURiYiKjR48mLy+PpUuXEolEyMjIoE+fPuTn57Njxw4KCgro3Llzg8cSl4nKzNzMZka9bmZmJWb2XB3r2Whmh9enTG3O3V9m9ksza1nXcmb2vJm1a8jYRET69+/P4MGDmTFjBvn5+SQkJJCZmUlxcTHFxcWMGjWqURJVvN6j2gacZGYt3H0HcA7wcRPH1BB+CcwEttelnLsPadCoRESA5ORkhg0bhpmRnZ3NunXraN68OSUlJaSkpDRaHPGaqACeB84D5gJXArlAfwAzOwx4DDiO4M37end/28w6hOVSgeXA3o9Em9lwYASQBKwEbnL3PTUFYWZdgReBFcD3gH8A04BJQEdgmLu/ZmYTgeOBbwGHA3e7+5/NbABws7sPDev7I1AItAGOAhab2WZ3H2hmfwLSgRbAXHefYGYjKim3EUhz981mNhq4Jgz3UXe/P4z5BeDvYcwfAxeGSV9EDlGXT/lDtcebP59X6f6ysjK2bNnCuHHjGDJkCDNnzqRTp04NEWKl4nLqL/QX4Mdmlgz0Jkgu5SYBb7p7b2As8ES4fwLwd3fvBTwFHANgZj2BK4B+7t4H2AMMq0Ms3wJ+D5wQ/mQCGcDNYfvlegNnAd8FxpvZUVVV6O4PAsXAQHcfGO6+I/zysN7AmWbWu4pyhP06DfgJcAbwHeA6M+sbHu4OPBReiy+ASyvGYGbXm1mhmRX+Z9tXtb4YInJoiUQitG/fnp49e/LYY4/Rt2/fmk+KobgdUYUjpK4Eo6nnKxzOIHzjdfdXzKyDmbUBvg9cEu6fb2afh+UHAacB/wjXnWoB/LsO4Xzg7qsBzGwt8LK7u5mtBrpGlXs6HLXsMLPFwOkESaK2Ljez6wn+LkcCJwJvV1M+A3jK3beFseURjDqfCWNeFZZ7vUKcALj7VGAqBN/wW4c4ReQANOd/flHt8fp+w29Di9tEFXoGuAcYAHTYj3oMeNzdb6/n+TujtsuiXpex7zWs+GbvwG72HbkmVxqgWTeCEVq6u39uZtOrKluPmPcQJGcRkQNOPE/9QXAfalL5aCbKUsKpu/Ae0GZ33wrkE0zLYWbnAu3D8i8Dl5lZx/DYYWYW+3U+4EIzSw7vlQ0guJ/1IXCimTUPn9QbFFX+S6D8wwdtCB4i2WJmnYBzqygXbSlwkZm1NLNWwMXhPhGRg0Zcj6jc/SPgwUoOTQQeM7O3CR6muDrcPwnIDafnCoB/hfX808zGAQvMLAKUAj8jSCKx9DawmOBhil+7ezGAmc0B1gAfAG9GlZ8KvGhmxeFDEm8C64BNwLKqypXvdPc3wpHXa+GuR939zXDKVETkoGDliwzK/gmf+vvK3e9p6ljqo/fRx/j8ETc3dRgi0oSa6h6Vmb0ePkhWqXif+hMRkUNcXE/9HUjcfWJTxyAicjDSiEpEROKaEpWIiMQ1JSoREYlrSlQiIhLXlKhERCSuKVGJiEhcU6ISEZG4pkQlIiJxTYlKRETimlamEACSOneM2++iEZEDl7sTfg9gvSlRiYhIzKxYsYItW7bQunVrvve97+13kgIlKhERiZFnn32WcePGkZ6ezs6dO2nbti29evUC9m9kpXtUIiKy30pKSvjtb3/LE088waOPPkpycjKff/45mzdvBsDMqO/XSmlEJSIi++3rr79m9+7ddOzYka1bt7JkyRKKi4tp06YNJ5xwAhMmTNCISkREGt97770HQJcuXTjrrLM455xzSE9PJysri6effpqRI0eyZs0aVq1aVe82lKhERKReXnrpJa6//no++OADALKzs1mwYAHnn38+l19+Oc2aNeM73/kOZsaOHTvq3Y4SlYiI1Nmzzz7L+PHjmTRpEt26ddt7/+moo47imGOO4eabb2bTpk08/fTTbNy4kaOOOqrebVl9b27JweWwnp397OlXN3UYItKI5pwxuV7nbd++nTPOOIPu3buTl5fHp59+ynPPPccnn3zCddddB8Ddd9/NsmXLaNasGQ8//DC9e/eusj4ze93d06o8rkQloEQlciiqb6ICWL16NaNGjaJHjx688847nHnmmaxevRp354EHHqBLly4UFxeTkpJCmzZtqq2rpkSlqT8REamVgoIC5s6dy8KFCzn55JN54IEHWLRoEWeffTYTJ05k3rx5tGnTht///vdAMA1YU5KqDSUqERGp0YIFC8jKymLt2rVcdtllvPrqq/Tq1YulS5dyxx13UFZWBkBaWhodO3aMadv6HJWIiFSrpKSE8ePHc//99zNkyBBatWqFu7NhwwZ69OgBQCQSYfr06UyfPp0nnngipu1rRCUiItVq164d6enpJCUlsWbNGu666y5ycnIYMGAADz/8MBCs8ffkk08ybdo0TjzxxJi2rxGViIhUKzExkZSUFHJzc1m+fDkjR45kwoQJFBYWMnjwYE477TROOukk5syZQ/v27WPevhKViIhUqaysjEgkQnZ2Nrt27WLKlCl7F5pNS0tj+PDhbN++nZSUlAaLQVN/IiKyj/Xr17N8+XJKS0v3fpDX3UlKSsLdycnJYcOGDeTk5LBo0SK6du3aoPFoRCUiInvl5eUxduxYUlNTSU1NJS0tjaysrL2PmY8YMYLMzEyys7MpKipi7ty5dOvWrUFjUqISEREASktLmT17Njk5OfTr14958+axYsUKJk+ezJgxY2jbti0As2bNoqysjG3bttG6desGj0tTfyIistfWrVspKioC4OKLL2bo0KGUlpaSm5sLwMqVK1m1ahWRSKRRkhQoUYmISCgxMZHRo0eTl5fH0qVLiUQiZGRk0KdPH/Lz89mxYwcFBQV07ty5UeNSoopjZvZV1PYQM9tgZsea2UQz225mHaso62b2+6jXN5vZxEYLXEQOWP3792fw4MHMmDGD/Px8EhISyMzMpLi4mOLiYkaNGtXoiUr3qA4AZjYIeBD4gbt/GH5L5mbgV8CtlZyyE7jEzLLdfXPjRSoiB7rk5GSGDRuGmZGdnc26deto3rw5JSUlDfoIenWUqOKcmX0f+DMwxN3fizr0GJBlZpPd/T8VTtsNTAVGAXc0TqQicrBo37491113HSeeeCJTpkwhOTmZmTNn0qlTpyaJR4kqvjUH/gYMcPd1FY59RZCsRgITKjn3IeBtM7u7QSMUkbi05MbcGssMaLOyxjLuzuLFi4lEmu5Oke5RxbdSoAD4aRXHHwSuNrNvPHrj7luBJ4ARVVVuZtebWaGZFe78ov5fEy0iBy8za9IkBRpRxbsy4HLgZTMb6+53RR909y/MbBbwsyrOvx94A5hW2UF3n0owRchhPTvrGzRFDiID/nRljWX254sTG5NGVHHO3bcD5wHDzKyykdW9wP9QyX86wntXc6h6RCYiEveUqA4AYcL5ITDOzC6ocGwz8BTB/azK/B44vGEjFBFpOJr6i2PunhK1vQkoX1DrmQrlRgOjqzjvU6Blw0YqItJwNKISEZG4pkQlIiJxTYlKRETimhKViIjENSUqERGJa0pUIiIS15SoREQkrilRiYhIXFOiEhGRuKZEJSIicU2JSkRE4prW+hMAjmt19AGz5L+IHFo0ohIRkbimRCUiInVWXFzMxx9/vM8+94b5/lVN/YmISJ089dRT3HfffbRq1YqzzjqLE044gfPPPx8zw90xs5i2pxGViIjU2qZNm5g8eTI5OTlMmzaNnTt38uCDDzJr1iyAmCcpUKISEZE62L59O5FIhM6dO9O5c2cuu+wykpKSWLZsGa+++mqDtKlEJSIiNSorKwPg29/+Nqeeeiq333477777Lrm5uaSmptKxY0feeuutBmlbiUpERKr1wgsvMGbMGK699lrcnZEjR5KYmMgtt9zCu+++y9SpU7n88stZtGgRpaWlMW9fiUpERKo0f/58br/9dgYNGsRHH33EVVddRffu3bnvvvt4/PHHmTFjBgArVqwgKSmpQe5R6ak/AeDNdVto9Z3nmzoMEWkg21YMqfM5n332GY888gi/+93vOOecc+jUqRN/+tOfmDZtGhdeeCHt27fHzPjDH/7A1KlTefLJJ2nWLPZpRSMqERGpVIcOHXjkkUc455xz2Lx5M5deeilJSUmsXLmSa6+9lg8//BCAbt26MWfOHHr37t0gcVhDfUBLDiwJKd09+aQHmjoMEWkgdRlRFRQUUFxcTPv27Rk0aBAAH330EUVFRQwcOBCArKws2rRpw4MPPrjfsZnZ6+6eVtVxjahERGSvBQsWkJWVxdq1a7nkkkvIz88HIDU1lYEDB+59+u+MM87giCOOaJSYdI9KREQAKCkpYfz48dx///0MGTKEVq1aUVZWxoYNG+jRowcAkUiEJ554gpycHJ544olGiUsjKhERAaBdu3akp6eTlJTEmjVruOuuu8jJyWHAgAE8/PDDACxcuJDHH3+cadOmceKJJzZKXBpRiYgIAImJiaSkpJCb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\n" }, "metadata": { "needs_background": "light" @@ -283,7 +277,7 @@ " 'Random Imputation' : RandomSampleImputer()\n", " }\n", "clf = lgb.LGBMClassifier()\n", - "cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=10)\n", + "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=10)\n", "cmp.fit_compute(X_missing,y)\n", "cmp.plot()" ] @@ -298,9 +292,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3.6.12 64-bit ('probatus': conda)", "language": "python", - "name": "python3" + "name": "python361264bitprobatusconda74d285a941224501ac9ae4f70b7fd0f5" }, "language_info": { "codemirror_mode": { diff --git a/mkdocs.yml b/mkdocs.yml index 6c36ce9d..b0c434f7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -17,10 +17,12 @@ nav: - Multivariate Sample Similarity: tutorials/nb_sample_similarity.ipynb - Univariate Sample Similarity: tutorials/nb_distribution_statistics.ipynb - Custom Scoring Metrics: tutorials/nb_custom_scoring.ipynb + - Imputation Strategy Comparision : tutorials/nb_imputation.ipynb - API: - probatus.feature_elimination: api/feature_elimination.md - probatus.interpret: api/model_interpret.md - probatus.metric_volatility: api/metric_volatility.md + - probatus.missing_values : api/missing_values.md - probatus.sample_similarity: api/sample_similarity.md - probatus.stat_tests: api/stat_tests.md - probatus.utils: api/utils.md diff --git a/probatus/missing_values/__init__.py b/probatus/missing_values/__init__.py new file mode 100644 index 00000000..75d0f971 --- /dev/null +++ b/probatus/missing_values/__init__.py @@ -0,0 +1,23 @@ +# Copyright (c) 2020 ING Bank N.V. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +# the Software, and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +from .imputation import ImputationSelector + +__all__ = ['ImputationSelector'] diff --git a/probatus/missing/imputation.py b/probatus/missing_values/imputation.py similarity index 98% rename from probatus/missing/imputation.py rename to probatus/missing_values/imputation.py index 2c304431..aeec9853 100644 --- a/probatus/missing/imputation.py +++ b/probatus/missing_values/imputation.py @@ -27,7 +27,7 @@ import numpy as np import pandas as pd -class CompareImputationStrategies(BaseFitComputePlotClass): +class ImputationSelector(BaseFitComputePlotClass): """ Comparison of various imputation stragegies that can be used for imputation of missing values. @@ -69,7 +69,7 @@ class CompareImputationStrategies(BaseFitComputePlotClass): ``` """ - def __init__(self,clf,strategies,scoring='roc_auc',cv=None,model_na_support=True,n_jobs=-1,verbose=0, + def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,n_jobs=-1,verbose=0, random_state=None): """ Initialise the class. @@ -119,12 +119,8 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=None,model_na_support=True self.model_na_support = model_na_support self.scorer = get_single_scorer(scoring) self.strategies = strategies - if cv is None: - self.cv = 5 - else : - self.cv = cv + self.cv = 5 self.verbose = verbose - self.n_jobs = n_jobs if random_state is None: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..4089a277 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,10 @@ +scikit-learn>=0.22.2 +pandas>=1.0.0 +matplotlib>=3.1.1 +scipy>=1.4.0 +joblib>=0.13.2 +tqdm>=4.41.0 +shap>=0.38.1 +numpy>=1.19.0 +pytest +mkdocs \ No newline at end of file From d33abbf5f191d6e7a72af513653c5ebc663d0dca Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 11 Mar 2021 07:58:28 +0100 Subject: [PATCH 11/24] Resolving MR comments. Simplifying code by removing parameters. --- docs/tutorials/nb_imputation_comparison.ipynb | 127 +++--------------- probatus/missing_values/imputation.py | 48 ++++--- tests/docs/test_docstring.py | 4 +- tests/docs/test_notebooks.py | 3 +- tests/missing/test_imputation.py | 17 ++- 5 files changed, 63 insertions(+), 136 deletions(-) diff --git a/docs/tutorials/nb_imputation_comparison.ipynb b/docs/tutorials/nb_imputation_comparison.ipynb index 64759ca0..b3aebe4f 100644 --- a/docs/tutorials/nb_imputation_comparison.ipynb +++ b/docs/tutorials/nb_imputation_comparison.ipynb @@ -23,17 +23,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n %reload_ext autoreload\n" - ] - } - ], + "outputs": [], "source": [ "%matplotlib inline\n", "%load_ext autoreload\n", @@ -48,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -64,17 +56,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Shape of X,y : (1000, 15),(1000,)\n" - ] - } - ], + "outputs": [], "source": [ "X,y = get_data(n_samples=1000,n_numerical=10,n_category=5)\n", "print(f\"Shape of X,y : {X.shape},{y.shape}\")" @@ -89,35 +73,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "f_0 0.214\n", - "f_1 0.185\n", - "f_2 0.185\n", - "f_3 0.209\n", - "f_4 0.195\n", - "f_5 0.191\n", - "f_6 0.198\n", - "f_7 0.180\n", - "f_8 0.213\n", - "f_9 0.210\n", - "f_10 0.208\n", - "f_11 0.195\n", - "f_12 0.208\n", - "f_13 0.207\n", - "f_14 0.209\n", - "dtype: float64" - ] - }, - "metadata": {}, - "execution_count": 17 - } - ], + "outputs": [], "source": [ "X_missing = generate_MCAR(X,missing=0.2)\n", "X_missing.isnull().mean()" @@ -141,21 +99,9 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-10T23:32:55.775337\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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", - "image/png": "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S0REIkGBJSIikaDAEhGRSFBgiYhIJNTbau3SuJ15htXb9+KIiBwJzbBERCQSFFgiIhIJCiwREYkEBZaIiESCAktERCJBgSUiIpGgwBIRkTrh7gntT5/DEhGRhHjnnXfYv38/J510EpmZmZhZQvtXYImIyFF7/vnnGT9+PO3bt+eUU05h7NixdOjQIaFj6JSgiIgclcWLF/PTn/6URx99lLlz5/LRRx/xySefJHwcS/Q5Rommc7qd4DMWndnQZYhIPbooY3VC+lmwYAHJycn069ePrVu3kpWVxbnnnstXv/pVOnXqxI033oiZvebuPY5mHM2wRETkiKxatYqysjIGDhxIv3792L9/PxMnTuSOO+7gscceo2vXrixdupTi4uKEjKfAEhGRw/bCCy8waNAgioqKDtwNmJSUxEMPPcRdd91FRkYGV1xxBVu3bmX37t0JGVOBJSIih2XLli2MHTuWxx9/nN69e7N///4D+5o3b34gwBYvXsy2bdtITU1NyLi6S1BERA5LkyZN6Nq1K3379qW4uJjc3Fz279/PZZddxsUXX8xpp53GlClTmDlzJnPmzKF169YJGVczLBEROSwZGRls2rSJGTNm8IMf/IDOnTvToUMHCgsL+dOf/sS+ffto2bIlTzzxBOeee27CxtUMS0REalRYWEhxcTGpqakMGDCA2267jVdeeYW0tDRGjBgBwPTp01myZAk33HADN954Y8Jr0AxLREQOaeHCheTk5LB27Vquu+46VqxYQc+ePWndujWvv/46s2fPBiA9PZ3du3eza9euOqlDMywREalWSUkJEyZMYMqUKWRnZ5OamkppaSmxWIzx48fTtm1bZs2axaJFiygqKmLevHmccMIJdVKLAktERKrVqlUrsrKySE5OZs2aNTzwwANkZ2ezePFi7r//fm666SaGDBnCunXrmDx5Mm3atKmzWhRYIiJSraZNm5KWlkZ+fj5FRUWMGjWKiRMnsnLlSvr370/Hjh259NJL6d69e53XosASEZEqlZeXE4vFyM3NZe/evUydOpUuXboAkJWVxfDhwxP+FSKHopsuRETkgHXr1lFUVERZWdmBMHJ3kpOTcXfy8vJYv349eXl5LFq0iHbt2tVbbVr8VgAtfityPKq8+O38+fMZN24cmZmZZGZm0qNHD3JycmjRosWBNkOHDqVZs2Zs2LCBadOm0blz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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], + "outputs": [], "source": [ "strategies = {\n", " 'KNN' : KNNImputer(n_neighbors=3),\n", @@ -178,21 +124,9 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-10T23:33:05.910517\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAEYCAYAAAAAk8LPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAtOElEQVR4nO3df3yVdf3/8cdrYxvC+KUU2iCmpiU4IxlECYmfFIxIIwUV+OiyVPwFQaVFfhlpn2ZmRqUW6Aw/8HFpgD8QjamJEzdAyPkD5UeYhc1qKvJLlMle3z+ua3g4buwcdrazC5732223Xee63tf7/bqu6Xnxfl/v8z7m7oiIiLR3GekOQEREJBFKWCIiEglKWCIiEglKWCIiEglKWCIiEglKWCIiEglKWCKHGDObYGbl6Y6jOWbmZvapAzz3UTO7KNUxSXopYYkcADN7zcxOT0O7RWa2PIny+eEbf4eGfe7+f+4+IsVxTTCzHeHPLjOrj3m9I5VtJcLdv+Lud7d1u9K6lLBEpMXCJJjr7rnAV4CahtfhPpEWU8ISaaGw1/OMmf3SzN4xs1fN7Ivh/s1m9p/Y4Skzm2tmvzOzx8xsu5k9ZWZ9w2Mf6RGZ2TIz+7aZnQD8DvhC2HN5Jzz+VTN7zsy2he3NjAmvIvz9TnjOF+J7aWGsz5rZ1vD3F+PaviG8vu1mVm5mPZO8P58ws4VmVmtmfzOzyTHHMs1supltCutfY2Z9Yk4/3cw2hvf1NjOzmHu+3MxuNrMtYb1fib9nMW3cbGZvhn+bK2PvcXxv2cxmmtn8mNdDzKwyjOF5Mxsec6worHN7GMOEZO6NJEcJSyQ1Pg+8ABwB3AP8ARgEfAqYCNxqZrE9jQnADUBPoBr4v+YacPdXgElAVdhz6R4e2glcCHQHvgpcbmZfD499KfzdPTynKrZOMzscWAL8Ooz9FmCJmR0RU2w88E3g40A28L3mYo2pPwNYDDwP5AFfBr5jZiPDItOAC4BRQFfgYuDdmCpGE9zHk4BxwMiYY58H1hPcw5uA0oaEFueSsJ7PAYXAuUnEn0dwf34CHE5w7QvN7GNm1pngvn3F3bsAXyT4W0orUcISSY2/ufvv3X0PcC/QB7je3d9393JgN0HyarDE3Svc/X3gRwS9pj4frbZ57r7M3V9093p3fwEoA05N8PSvAhvdfZ67f+DuZcA64GsxZX7v7hvcfRdwHzAgifAGAR9z9+vdfbe7vwrcAZwfHv82cJ27r/fA8+7+Vsz5N7r7O+7+D+DJuLb/7u53hPf8buAooFcjMYwDZrn7Znd/GyhJIv6JwCPu/kh4fx8DVhMkWIB64EQzO8zd33D3tUnULUlSwhJJjX/HbO8CcPf4fbE9rM0NG+6+A3gb+MSBNGxmnzezJ8Mht60EvbBEh+0+Afw9bt/fCXpDDf4Vs/0u+15Hc/oCnwiH094JhzGn82Fi6QNs2s/5+2t77zF3b+iVNRbbJ4i533z0evenLzA2Lv6hwFHuvhM4j+B+v2FmS8zsM0nULUlSwhJJj729qXCo8HCghmB4D6BTTNkjY7Yb+3qFe4CHgD7u3o3gOZftp3ysGoI35VifBP7ZzHmJ2kzQ++we89PF3UfFHD82RW015Q1i7jfB9cXaSdP3ezMwLy7+zu5+I4C7L3X3Mwh6d+sIeo/SSpSwRNJjlJkNNbNsgmdZK8Ihq1qCZDExnCxwMfu+of8b6B2e16AL8La7v2dmgwmeOTWoJRi2OqaJOB4Bjjez8WbWwczOA/oBD6fkKmEVsN3MrjWzw8JrOtHMBoXH7wRuMLPjLHBS3POzVLgPmGxmvc2sB/CDuOPVwPlmlmVm8c+45gNfM7ORYewdzWx4WFcvMzs7fJb1PrCD4F5LK1HCEkmPe4BigqHAgQTPShpcAnwfeAvoD1TGHPszsBb4l5m9Ge67ArjezLYDMwjeoIG9Q2X/AzwTDmkNiQ0ifF40Gvhu2N41wGh3f5MUCJ8vjSZ49vQ34E2CJNUtLHJLGG85sA0oBQ5LRdsx7gCWEkz8+AuwKO74/yP4R8EW4McEf5uG+DcDZxMMY9YS9Li+T/DemUEwaaSG4O94KnB5imOXGKYvcBRpW2Y2F3jd3a9LdyyHIjPLJ0ieWe7+QZrDkSSohyUiIpGghCUiIpGgIUEREYkE9bBERCQSOjRfRA4FPXv29Pz8/HSHISKHmDVr1rzp7h9LpKwSlgCQn5/P6tWr0x2GiBxizCzhlUc0JCgiIpGghCUiIpGghCUiIpGghCUiIpGghCUiIpGghCUiIm3mrbfear5QE5SwRESkTTz++ONcffXVbN++/YDOV8ISEZFWV15ezqRJk1i0aBGPPvroAdWhDw4LAP7C67z/iWvTHYaItBM5NT9LWV1Llizh2muvZenSpfzrX/+iuLiYwYMHk+zqOuphiYhIq9mzZw8bNmzgN7/5Dcceeyx5eXn06dOH119/Pem61MMSEZFWk5mZydSpUwFwd/Lz8+nTpw9Tpkxh5cqVSdWlhCUiIin38MMPU1lZyfbt2ykuLqZr165kZ2cDcP311/Pqq69yzz33AGBm5gl815WGBEVEJKXWrFnDpEmTGDJkCDt37uTqq6/mkUceYevWrUAwTHjyySfz1FNPAZBIsgIlLBERSbH169czYsQIzjrrLO666y6GDx/OkiVLeOqpp6irqyMzM5OxY8eyatUqgA5mZonUq4QlIiIpNWTIEGpqaqisrATgsssu4+STT2b+/Pm8++67APTp04c1a9YAfKAeloiItJnKykoWLFhAeXk5xxxzDAMHDmT58uWsW7cOgMsvv5zs7Gx+/vOf7z2n4ZlWopSwRESkRcrLyykqKmLt2rWMHTuW6upqxo0bx6ZNm3jggQf2PqsaPHgwnTp1OuB2NEtQREQOWG1tLTNmzGDWrFmMGjWKTp06sWXLFgoKCiguLuaOO+5g5syZ9OrVi8rKSpYsWXLAbamHJSIiB6x79+4MGjSI7OxsXnrpJUpKSigtLaWgoIAnnniC4uJi5s2bx4QJE1i+fDkFBQUH3JZ6WCIicsCysrLIzc2lrKyMqqoqpkyZQnFxMc8++ywjR44kPz+fYcOG0bt37xa3pYQlIiIHpL6+noyMDEpKSti9ezezZ8+mf//+AAwaNIiJEyeyZ8+elLWnIUEREUnY+vXrqaqqoq6ujobZ6O5OdnY27k5paSkbNmygtLSUxx9/nL59+6asbUtw+rsc5AZmH+mVPS9Kdxgi0k40tlr7okWLmD59Onl5eeTl5VFYWEhRURFdu3bdW2b8+PHk5OSwceNG5syZQ79+/fbbjpmtcffCRGJSwhJACUtE9hWfsOrq6pg4cSKTJ0/mlFNOYeHChaxYsYLs7GyuueYaunXrtrdsfX09O3fupEuXLs22k0zC0pCgiIgkZNu2bWzcuBGAMWPGMHr0aOrq6igrKwNg5cqVVFdXk5GRkVCySpYSloiINCsrK4tp06axaNEinn76aTIyMhg6dCgDBgygoqKCXbt2UVlZyZFHHtlqMbT7hGVmO8Lf+WY2PsV1T497XZmienekop5m2pjefCkRkdQZNmwYI0aMYN68eVRUVJCZmcn48eOpqamhpqaGqVOntmrCitK09nxgPHBPoieYWQd3/2A/RaYDP2144e5fPODo2t4+sSfCzDLdPXVzTEXkkNKxY0cmTJiAmVFSUsK6devIycmhtraW3NzcVm8/SgnrRuAEM6sG7gZ+He4bDuQAt7n7bDMbDtwAbAE+AxxvZg8AfYCOwK/cfY6Z3QgcFta31t0nmNkOd881sz8A89x9CYCZzQUeBu5vrM2mAg5j+THwDlAA3Ae8CEwBDgO+7u6bwvrfAwqBrsA0d3/YzIqAQne/KqzvYeBm4MxGYp8ITAaygZXAFe6+J+ztzQZOB64Elid+y0XkYHHGW2VJlc8Y3vS3AdfX17N161auu+46MjIyyMvLo1evXi0NsVlRSlg/AL7n7qMBzOxSYKu7DzKzHOAZMysPy54MnOjufwtfX+zub5vZYcCzZrbQ3X9gZle5+4BG2roXGAcsMbNs4MvA5cC3Gmszpp3GfBY4AXgbeBW4090Hm9kU4GrgO2G5fGAwcCzwpJl9qqkK42M3sxOA84BT3L3OzG4HJgD/C3QGVrr7d+PrCe/hpQB9MrvGHxYRaVRGRgY9evSge/fuACT4dVYtFqWEFW8EcJKZnRu+7gYcB+wGVsUlkclmNibc7hOWe2s/dT8K/CpMSmcCFe6+y8yaanN/CetZd38DwMw2AQ1J9UXgtJhy97l7PbDRzF4l6B0m6svAQIJkDEHv7T/hsT3AwsZOcvc5wBwIprUn0Z6IRMxjR1yQVPmcZR/9HFa6RTlhGXC1uy/dZ2cwDLcz7vXpwBfc/V0zW0YwNNgkd38vLDeSoOfyh/212Yz3Y7brY17Xs+/9j08YDnzAvhNjmorbgLvd/YeNHHtPz61E5GDQ7mcJxtgOxE7sXwpcbmZZAGZ2vJl1buS8bsCWMFl9BhgSc6yu4fxG3At8ExgG/CnJNg/EWDPLMLNjgWOA9cBrwIBwfx+CIcPGYn8CONfMPh7GdbiZpW49FBGRdiBKPawXgD1m9jwwF/gVwXOfv1gwDlYLfL2R8/4ETDKzVwiSwIqYY3OAF8zsL+4+Ie68cmAe8KC77w733ZlgmwfiH8AqgkkXk8Je3jMEw40vA68Af2kqdjO7Dig3swygjmCCxd9TFJuISNppaaZ2oGEWorsvSFcMWppJRGI1tpZga9DSTCIictCJ0pDgQcvdi9Idg4hIe6celoiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIISloiIRIJWaxcA7KTe5Kxum++/ERE5EOphiYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhIJChhiYhIq1u6dCnLly9vUR1KWCIi0qoee+wxpkyZwp49e1pUj1a6EBGRVvPEE09wxRVXUFZWRmFhIe+++y579uyhS5cuSdelhCUAvPTc+3wq92/pDkNE2oG/7jg6ZXW9/vrrvPPOO3z605/m7bff5pJLLmHXrl0UFBRw+umnJ1WXEpaIiLSaiy66iK1bt3LiiSfSrVs3rrrqKoYMGcLixYt59NFHASzRupSwREQkpR5++GEqKyt55513uP7665k8eTKHH344mzdv5tJLLwXg8MMP56KLLgLITLReTboQEZGUWbNmDZMmTWLIkCG89957XHHFFTz44INccMEF/PCHP9xbbtWqVQ2TMDzRupWwREQkZdavX8+IESM466yzuOuuu/jyl7/M4sWLWbJkyd5Zgr/97W+54YYbuPXWWwESnjqohCUiIikzZMgQampqqKysBOCyyy5j4MCBzJ8/nx07dgDg7sybN48TTzwxqbqVsEREpEUqKytZsGAB5eXlHHPMMQwcOJDly5ezbt06AC6//HKys7P5+c9/DsAVV1yRdLICJSwREWmB8vJyioqKWLt2LWPHjqW6uppx48axadMmHnjgAZ566ikABg8ezGGHHdaitjRLUEREDkhtbS0zZsxg1qxZjBo1ik6dOrFlyxYKCgooLi7mjjvuYObMmfTq1YvKykqWLFnSovbUwxIRkQPSvXt3Bg0aRHZ2Ni+99BIlJSWUlpZSUFDAE088QXFxMfPmzWPChAksX76cgoKCFrWnHpaIiByQrKwscnNzKSsro6qqiilTplBcXMyzzz7LyJEjyc/PZ9iwYfTu3Tsl7SlhiYhI0urr68nIyKCkpITdu3cze/Zs+vfvD8CgQYOYOHFiixe7jachQRERScj69eupqqqirq4O9+Dzvu5OdnY27k5paSkbNmygtLSUxx9/nL59+6a0fWtoVA5tHTMLvPdhD6U7DBFpBxpb/HbRokVMnz6dvLw88vLyKCwspKioiK5du+4tM378eHJycti4cSNz5syhX79+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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], + "outputs": [], "source": [ "strategies = {\n", " 'KNN' : KNNImputer(n_neighbors=3),\n", @@ -216,21 +150,9 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-10T23:33:13.008626\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAasAAAEYCAYAAADiT9m2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAvEUlEQVR4nO3de3xU9bnv8c+TkAQk3KwtaFAibm0FY6kQSgtYPFVokVJRAQWO5rRFQRQK2+226DHU7rMjrdtqW6tc4tYTKtUDiMqlRqkIMYBCjReUi7S01GgLyv0igTznj7Wiw5jADJkkC/m+X6+8mJn1W7/nWSs6T36/teY35u6IiIhEWVpTJyAiInIsKlYiIhJ5KlYiIhJ5KlYiIhJ5KlYiIhJ5KlYiIhJ5KlYiJyEzG2lmpU2dx7GYmZvZvxznvovN7PpU5yRNQ8VK5DiZ2WYzu7QJ4haYWVkS7XPDN/1mNa+5++/cvX+K8xppZnvCn/1mVh3zfE8qYyXC3b/r7o81dlxpGCpWIpISYQHMdvds4LtAZc3z8DWR46ZiJZIC4WjnZTP7pZntMLM/m9k3w9e3mNk/Y6ekzOxRM3vYzJ43s91m9pKZdQq3fWYkZGZLzexHZnY+8DDwjXDEsiPcfrmZvWZmu8J4U2LSWxb+uyPc5xvxo7Mw11fNbGf47zfjYv8sPL7dZlZqZqcleX7OMLO5ZrbVzP5iZuNjtqWb2WQz2xT2v8bMzozZ/VIz2xie1wfNzGLOeZmZ3Wtm28N+vxt/zmJi3Gtm28LfzbjYcxw/SjazKWY2K+Z5LzMrD3N43cz6xWwrCPvcHeYwMplzI4lRsRJJna8DbwBfAB4Hfg/kA/8CjAJ+Y2axI4yRwM+A04AK4HfHCuDu7wBjgBXhiKVtuGkvcB3QFrgcGGtmV4TbLg7/bRvusyK2TzM7FVgI/CrM/T5goZl9IabZCOB/AV8CMoFbj5VrTP9pwLPA60AO8G3gx2Y2IGwyCbgWGAi0Bn4A7IvpYhDBebwQGAYMiNn2dWA9wTn8OVBcU8zijA77+RrQA7g6ifxzCM7PfwCnEhz7XDP7opm1JDhv33X3VsA3CX6XkmIqViKp8xd3/293Pww8AZwJ3O3uH7t7KXCQoHDVWOjuy9z9Y+AOgtHSmZ/t9tjcfam7v+nu1e7+BjAb+FaCu18ObHT3Enc/5O6zgXXA92La/Le7b3D3/cCTQLck0ssHvujud7v7QXf/MzADuCbc/iPgTndf74HX3f3DmP3vcfcd7v434MW42H919xnhOX8MOB1oX0sOw4D73X2Lu38EFCWR/yhgkbsvCs/v88BqguIKUA1cYGYt3P19d1+bRN+SIBUrkdT5R8zj/QDuHv9a7MhqS80Dd98DfASccTyBzezrZvZiOM22k2D0lehU3RnAX+Ne+yvBKKjGBzGP93HkcRxLJ+CMcAptRzh1OZlPi8qZwKaj7H+02J9sc/ea0VhtuZ1BzPnms8d7NJ2AoXH59wFOd/e9wHCC8/2+mS00s68k0bckSMVKpOl8MooKpwdPBSoJpvQATolp2yHmcW1flfA48Axwpru3IbiuZUdpH6uS4A051lnAe8fYL1FbCEadbWN+Wrn7wJjt56QoVl3eJ+Z8ExxfrL3Ufb63ACVx+bd093sA3P05d7+MYFS3jmDUKCmmYiXSdAaaWR8zyyS4drUynKbaSlAoRoU3BvyAI9/M/wF0DPer0Qr4yN0PmFlPgmtMNbYSTFV1riOPRcB5ZjbCzJqZ2XCgC7AgJUcJrwC7zezfzaxFeEwXmFl+uH0m8DMzO9cCF8ZdL0uFJ4HxZtbRzNoBt8dtrwCuMbMMM4u/pjUL+J6ZDQhzb25m/cK+2pvZ98NrVx8DewjOtaSYipVI03kcKCSY/utOcG2kxmjg34APga5Aecy2PwJrgQ/MbFv42k3A3Wa2G7iL4M0Z+GR67P8AL4fTWL1ikwivDw0C/jWMdxswyN23kQLh9aRBBNea/gJsIyhQbcIm94X5lgK7gGKgRSpix5gBPEdwk8efgHlx2/83wR8E24GfEvxuavLfAnyfYOpyK8FI698I3j/TCG4QqST4PX4LGJvi3AUwffmiSOMzs0eBv7v7nU2dy8nIzHIJCmeGux9q4nQkARpZiYhI5KlYiYhI5GkaUEREIk8jKxERibxmx24iJ4PTTjvNc3NzmzoNETkJrVmzZpu7f/FobVSsBIDc3FxWr17d1GmIyEnIzI65ooimAUVEJPJUrEREJPJUrEREJPJUrEREJPJUrEREJPJUrEREpMFVVVXVa38VKxERaVCLFi3i4YcfZteuXcfdh4qViIg0mBdeeIFx48Zx3nnn0bp16yO2JbPcnz4ULABsqXqNiZVtjt1QRD73fnnGznr34e6YGfPmzeOuu+5iwIABfPjhh3z00Uekp6fTuXNnzCzhgqViJSIiDeYLX/gCZ599Nu7O4MGD6dChA82aNaNLly4UFhZiZgn1o2lAERFJuZoidNZZZ3HzzTdz0003MXbsWJ588kkmTZrEO++8w+uvv55wfxpZiYhIyixYsIDy8nJ27drFlClTGD16NPv27WPq1KlcddVVpKen8/Wvf520tDQOHDiQcL8aWYmISEqsWbOGMWPG0KtXL/bt28e4ceOYP38+AwcOZOjQodxyyy288847PP7447z77rt06NAh4b41shIRkZRYv349/fv3Z/DgwQwePJiHH36YxYsXk5aWxgMPPMADDzzAr3/9ayorKykuLqZTp04J962RlYiIpESvXr2orKykvLwcgDFjxtCtWzdKSkrYtWsXEyZM4De/+Q1z5swhLy8vqb5VrERE5LiVl5czZ84cSktL6dy5M927d6esrIx169YBMHbsWLKysrjnnnsASEtLo1mz5Cf1VKxEROS4lJaWUlBQwNq1axk6dCgVFRUMGzaMTZs2MX/+fF566SUAevbsSXZ2dr1i6ZqViIgkbevWrdx1113cf//9DBw4kFNOOYXt27eTl5dHYWEhM2bMYMqUKbRv357y8nIWLlxYr3gaWYmISNLatm1Lfn4+mZmZvPXWWxQVFVFcXExeXh5LliyhsLCQkpISRo4cSVlZWdLXqOJpZCUiIknLyMggOzub2bNns2LFCiZMmEBhYSGvvvoqAwYMIDc3l759+9KxY8eUxFOxEhGRpFRXV5OWlkZRUREHDx5k2rRpdO3aFYD8/HxGjRrF4cOHUxpT04AiInJM69evZ8WKFVRVVX2y+Ky7k5mZibtTXFzMhg0bKC4u5oUXXkjqM1SJsGSWaJfPr/ZfTfcRi+t3t46IfD7Er7o+b948Jk+eTE5ODjk5OfTo0YOCgoIjvvJjxIgRZGVlsXHjRqZPn06XLl0Sjmdma9y9x1HbqFgJqFiJyKdii1VVVRWjRo1i/Pjx9O7dm7lz57Jy5UoyMzO57bbbaNPm068Wqq6uZu/evbRq1SqpeIkUK00DiojIUe3atYuNGzcCMGTIEAYNGkRVVRWzZ88GYNWqVVRUVJCWlpZ0oUqUipWIiNQpIyODSZMmMW/ePJYvX05aWhp9+vShW7duLFu2jP3791NeXp7UorTHI/LFysz2hP/mmtmIFPc9Oe55eYr63ZOKfo4RY/KxW4mI1F/fvn3p378/JSUlLFu2jPT0dEaMGEFlZSWVlZVMnDixwYvViXTrei4wAng80R3MrJm7HzpKk8nAf9Y8cfdvHnd2je+I3BNhZununtr7SUXkc6958+aMHDkSM6OoqIh169aRlZXF1q1b672MUqJOpGJ1D3C+mVUAjwG/Cl/rB2QBD7r7NDPrB/wM2A58BTjPzOYDZwLNgQfcfbqZ3QO0CPtb6+4jzWyPu2eb2e+BEndfCGBmjwILgKdqi1lXwmEuPwV2AHnAk8CbwASgBXCFu28K+z8A9ABaA5PcfYGZFQA93P3msL8FwL3Ad2rJfRQwHsgEVgE3ufvhcJQ3DbgUGAeUJX7KReRE9v+u3ntc+72W2a/W16urq9m5cyd33nknaWlp5OTkMHz48E+2L1269LjiJeJEKla3A7e6+yAAM7sB2Onu+WaWBbxsZqVh24uAC9z9L+HzH7j7R2bWAnjVzOa6++1mdrO7d6sl1hPAMGChmWUC3wbGAj+sLWZMnNp8FTgf+Aj4MzDT3Xua2QTgFuDHYbtcoCdwDvCimf1LXR3G525m5wPDgd7uXmVmvwVGAv8XaAmscvd/je8nPIc3ALTKsaMcgohIsGJ6u3btaNu2LfDpV9c3hhOpWMXrD1xoZleHz9sA5wIHgVfiCsh4MxsSPj4zbPfhUfpeDDwQFqTvAMvcfb+Z1RXzaMXqVXd/H8DMNgE1BfVN4JKYdk+6ezWw0cz+TDAqTNS3ge4EhRiCUds/w22Hgbm17eTu04HpENy6nkQ8ETkBDJ3T8rj2++UZS1ObSAqcyMXKgFvc/bkjXgym3vbGPb8U+Ia77zOzpQTTgXVy9wNhuwEEI5bfHy3mMXwc87g65nk1R57/+GLhwCGOvAmmrrwNeMzdf1LLtgO6TiUiJ7rI3w0YYzcQewP/c8BYM8sAMLPzzKy2PyPaANvDQvUVoFfMtqqa/WvxBPC/gL7AH5KMeTyGmlmamZ0DdAbWA5uBbuHrZxJME9aW+xLgajP7UpjXqWaW2rVORESa0Ik0snoDOGxmrwOPAg8QXOf5kwVzX1uBK2rZ7w/AGDN7h6AArIzZNh14w8z+5O4j4/YrBUqAp939YPjazARjHo+/Aa8Q3GAxJhzdvUwwxfg28A7wp7pyN7M7gVIzSwOqCG6m+GuKchMRaVJabikCau42dPc5TZWDllsSkRrxawM2NC23JCIinwsn0jTg55a7FzR1DiIiUaaRlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ5WXRcAzsz4Gr88Y3VTpyEiUiuNrEREJPJUrEREJPJUrEREJPJUrEREJPJUrEREJPJUrEREJPJUrEREJPJUrEREpEE999xzlJWV1asPFSsREWkwzz//PBMmTODw4cP16kcrWIiISINYsmQJN910E7Nnz6ZHjx7s27ePw4cP06pVq6T7UrESAF77206yb1rY1GmISBPb89vLU9bX3//+d3bs2MGXv/xlPvroI0aPHs3+/fvJy8vj0ksv5bLLLku4LxUrERFpENdffz07d+7kggsuoE2bNtx888306tWLZ599lsWLF3PxxReTlZWVUF8qViIikjILFiygvLycHTt2cPfddzN+/HhOPfVUtmzZwg033ADAqaeeyvXXX8+OHTto3759Qv3qBgsREUmJNWvWMGbMGHr16sWBAwe46aabePrpp7n22mv5yU9+8km7V155hcOHD5OZmZlw3xpZiYhISqxfv57+/fszePBgBg8ezLRp03j22WcxMy6//HLS09N56KGHmD59OiUlJbRr1y7hvjWyEhGRlOjVqxeVlZWUl5cDcOONN9K9e3dmzZrFnj17AHB3SkpKuOCCC5LqW8VKRESOW3l5OXPmzKG0tJTOnTvTvXt3ysrKWLduHQBjx44lMzOTX/ziFwDcdNNNSRcqULESEZHjVFpaSkFBAWvXrmXo0KFUVFQwbNgwNm3axPz583nppZcA6NmzJy1atKhXLF2zEhGRpG3dupW77rqL+++/n4EDB3LKKaewfft28vLyKCwsZMaMGUyZMoX27dtTXl7OwoX1+xynRlYiIpK0tm3bkp+fT2ZmJm+99RZFRUUUFxeTl5fHkiVLKCwspKSkhJEjR1JWVkZeXl694mlkJSIiScvIyCA7O5vZs2ezYsUKJkyYQGFhIa+++ioDBgwgNzeXvn370rFjx5TEU7ESEZGkVFdXk5aWRlFREQcPHmTatGl07doVgPz8fEaNGlXvhWvjaRpQRESOaf369axYsYKqqircHQhuQ8/MzMTdKS4uZsOGDRQXF/PCCy/QqVOnlMa3mqByckv/0rne4ur7mzoNEWlitS1kO2/ePCZPnkxOTg45OTn06NGDgoICWrdu/UmbESNGkJWVxcaNG5k+fTpdunRJOKaZrXH3Hkdro2lAERGpU1VVFU888QTFxcX07t2buXPnsnLlSqZOncptt91GmzZtAHj88ceprq5m7969x/UVIMeiaUARETmqXbt2sXHjRgCGDBnCoEGDqKqqYvbs2QCsWrWKiooK0tLSGqRQgYqViIgcRUZGBpMmTWLevHksX76ctLQ0+vTpQ7du3Vi2bBn79++nvLycDh06NGgeKlYiInJUffv2pX///pSUlLBs2TLS09MZMWIElZWVVFZWMnHixAYvVim5ZmVmdwAjgMNANXCju68ys5nAfe7+dgpi7HH37CTabwa2uHvfmNcqgGbunvzCVInHnQLscfd7GzBGP+Cgu5c3VAwRkRrNmzdn5MiRmBlFRUWsW7eOrKwstm7dSnZ2wm/L9VLvYmVm3wAGARe5+8dmdhqQCeDuP6pv//XUyszOdPctZnZ+E+eSSv2APUDCxcrMmrn7oQbLSEQ+19q1a8fo0aPp0qUL06ZNo3nz5syaNSvhL0+sr1SMrE4Htrn7xwDuvq1mg5ktBW5199Vmtgd4CBgIvA9MBn4OnAX82N2fMbMCYAjQBsgBZrn7T+MDmtm/AcOALOApdy+sI7cngeHAvcC1wGzgf4Z9pAP3ELzxZwEPuvs0M8sGngbaARnAne7+tJnlAouBMuCbwHvA9919f10nJjz+14C+QEvgOuAnQB7whLvfGfb7B2ANcBGwFrjO3feFo8Me7r7NzHqEx1EAjAEOm9ko4BZgHfBweC4Jz+fL4SjvHKAz8LfwHIjISWT/07cn1b7f2784ZpuajzxNnDgRgKVLlyadV7JScc2qFDjTzDaY2W/N7Ft1tGsJ/NHduwK7gf8ALiMoTnfHtOsJXAVcCAwN36Q/YWb9gXPDdt2A7mZ2cR0x5wJXho+/Bzwbs+2HwE53zwfygdFmdjZwABji7hcBlwD/ZWYW7nMuQVHrCuwI8zyWg+HnBx4mKILjgAuAAjP7Qtjmy8Bv3f18YBdwU12dufvmsK9funs3d18OPBA+zw9zmhmzSxfgUnf/TKEysxvMbLWZrfb9OxM4FBERMDM+fVtsHPUeWbn7HjPrTjB6uAR4wsxud/dH45oeJBhBALwJfOzuVWb2JpAb0+55d/8QwMzmAX2A1THb+4c/r4XPswmKyLJa0vsQ2G5m1wDvAPvi+rnQzK4On7cJ+/k78J9hAawmGOHVjHP/4u4V4eM1cXnX5ZmYY17r7u+Hx/Zn4EyCorfF3V8O280CxhOMohJ1KdAl5j+e1uEIEeCZukZ/7j4dmA7Bh4KTiCciJ4gW378nqfZLa/lQcBSk5AYLdz8MLAWWhsXneuDRuGZV/ulyGdVAzbRhtZnF5hH/phn/3IAid5+WYHpPAA8STJ/F93OLuz93xIvBVOQXge5hMd0MNA83fxzT9DCQyBe01OxTzZH7V/Pp+a/rmA/x6ei3OXVLA3q5+4HYF8PitTeBHEVEIq3e04Bm9mUzOzfmpW7AX+vR5WVmdqqZtQCuAF6O2/4c8IOakYOZ5ZjZl47S31ME18aei3v9OWCsmWWE/ZxnZi0JRlj/DAvVJUBqF7iq3VnhjSoQ3FVZFj7eDHQPH8dOOe4GYj95V0pw7QoAM+vWIFmKiDSRVFyzygYeM7O3zewNgmskU+rR3ysE15reAOa6e+wUIO5eCjwOrAhHcXM48o2buPa73X2qux+M2zQTeBv4k5m9BUwjGOn8DugR9n0dwc0LDW09MM7M3iG4seOh8PWfAg+Y2WqCkVyNZ4EhZlZhZn0Jpg17mNkbZvY2wQ0YIiKfG5FayDacguvh7jc3dS6NJbwbcEFDfvYrEVrIVkSg9oVsG1oiC9lqBQsREYm8SK26Ht5B+GgTp9GowlvRm3RUJSISdRpZiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5EVq1XVpOl87qw2rm+B7bEREEqGRlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ6KlYiIRJ4+ZyUiIg1m8+bNuDtnnHEGWVlZx92PRlYiItIgFi5cyPDhwxk9ejSFhYXs27fvuPvSyEoA+OuaPYxpVtbUaYhIE3v4UJ+U9LN48WJuv/12Hn30UTp16sSVV17Je++9x7nnnntc/WlkJSIiKbdz506mTp1K9+7dcXc++OADJk+ezD333MPzzz+fdH8qViIiknLXXHMNAwcOpKqqinHjxjFixAimTp2Ku7NgwQL279+fVH+aBhQRkZRYsGAB5eXl7N69m8LCQlq3bk1mZiaPPPII2dnZAFx33XVcf/317Ny5kxYtWiTct0ZWIiJSb2vWrGHMmDH06tWLvXv3cvPNN7No0SK2b9/+SaECWLVqFYcOHUr6zkCNrEREpN7Wr19P//79GTx4MIMHD2batGksXLiQtLQ0Lr/8cqqrq5k5cybTpk1j1qxZtGvXLqn+NbISEZF669WrF5WVlZSXlwNw44030r17d2bNmsWePXtwdw4cOMDvfvc7LrjggqT7V7ESEZHjUl5ezpw5cygtLaVz5850796dsrIy1q1bB8CYMWPIzMzk3nvvJTMzkwkTJtC1a9fjiqViJSIiSSstLaWgoIC1a9cydOhQKioqGDZsGJs2bWL+/Pm89NJLAPTs2ZPmzZsDkJZ2/CVH16xERCQpW7du5a677uL+++9n4MCBnHLKKWzfvp28vDwKCwuZMWMGU6ZMoX379pSXl7Nw4cJ6x9TISkREktK2bVvy8/PJzMzkrbfeoqioiOLiYvLy8liyZAmFhYWUlJQwcuRIysrKyMvLq3dMjaxERCQpGRkZZGdnM3v2bFasWMGECRMoLCzk1VdfZcCAAeTm5tK3b186duyYspgqViIikrDq6mrS0tIoKiri4MGDTJs27ZObJvLz8xk1ahSHDx9OeVxNA4qIyFGtX7+eFStWUFVVhbsD4O5kZmbi7hQXF7NhwwaKi4t54YUX6NSpU8pzsJrAcnL7on3Fr0qf2dRpiEgTi191fd68eUyePJmcnBxycnLo0aMHBQUFtG7d+pM2I0aMICsri40bNzJ9+nS6dOmSVEwzW+PuPY7aRsVKQMVKRAKxxaqqqopRo0Yxfvx4evfuzdy5c1m5ciWZmZncdttttGnT5pO21dXV7N27l1atWiUdM5FipWlAERGp065du9i4cSMAQ4YMYdCgQVRVVTF79mwgWOuvoqKCtLS04ypUiVKxEhGRWmVkZDBp0iTmzZvH8uXLSUtLo0+fPnTr1o1ly5axf/9+ysvL6dChQ4PnomIVYWa2J+bxQDPbYGadzGyKme0zsy/V0dbN7L9int9qZlMaLXER+dzo27cv/fv3p6SkhGXLlpGens6IESOorKyksrKSiRMnNkqx0q3rJwAz+zbwK2CAu//VzAC2Af8K/Hstu3wMXGlmRe6+rfEyFZHPm+bNmzNy5EjMjKKiItatW0dWVhZbt2494qs/GpqKVcSZ2cXADGCgu2+K2fQIUGBmU939o7jdDgHTgYnAHY2TqYhEzTOHb0l6n3X92tT6enV1NTt37uTOO+8kLS2NnJwchg8fDsDSpUvrk2ZCVKyiLQuYD/Rz93Vx2/YQFKwJQGEt+z4IvGFmP6+rczO7AbgBIJv2qchXRD6n0tLSaNeuHW3btgUgnOFpNLp1PcLMbB/wR2CTu0+IeX0KQbGaCVQAecD77p4dbt/j7tlmdjdQBewHst19Sl2xdOu6iMBnP2fVGHTr+omvGhgG9DSzyfEb3X0H8Dgwro797wd+CLRsoPxERBqFilXEufs+4HJgpJn9sJYm9wE3UsuUbngt60mCgiUicsJSsToBhEXnO8CdZjY4bts24CmC61u1+S/gtIbNUESkYekGiwiruQYVPt4CnB0+fSau3SRgUh37/QM4pWEzFRFpWBpZiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5On7rASATt2zeXh1n6ZOQ0SkVhpZiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhI5KlYiYhIgzt8+HC99lexEhGRBrFo0SKuu+46qqqqSE9Pr1fBUrESEZGUW7VqFTfeeCObN2/myiuvrHfBMndPcYpyIso9p6Pf8Z83N3UaItKERg+/PWV9vfzyy6xdu5bRo0czevRoPvjgA5566ikyMjI4fPgw6enpn7Q1szXu3uNo/WlkJSIiKde7d2+uvfZazIwHHniA008/nSuuuIKDBw+Snp7OBx98kFR/KlYiIpISCxYsYPLkydx8881s27aNrKwsAFq2bMl9993H6aefznXXXcdDDz3E1KlT2b9/f8J9q1iJiEi9rVmzhjFjxtCrVy/27dvHLbfcwqJFi9i5cycArVq1YubMmWzYsIE77riDgoICWrRokXD/KlYiIlJv69evp3///gwePJhHHnmEfv36sXDhQl566SUOHToEwDPPPMOuXbtYvnw5X/3qV5PqX8VKRETqrVevXlRWVlJeXg7AjTfeyEUXXcSsWbPYu3cvAO3atWPx4sV07do16f5VrERE5LiUl5czZ84cSktL6dy5M927d6esrIx169YBMHbsWDIzM/n5z38OQN++fTn33HOPK5aKlYiIJK20tJSCggLWrl3L0KFDqaioYNiwYWzatIn58+fz0ksvAdCzZ09atmxZ73j6WnsREUnK1q1bueuuu7j//vsZOHAgp5xyCtu3bycvL4/CwkJmzJjBlClTaN++PeXl5SxcuLDeMTWyEhGRpLRt25b8/HwyMzN56623KCoqori4mLy8PJYsWUJhYSElJSWMHDmSsrIy8vLy6h1TIysREUlKRkYG2dnZzJ49mxUrVjBhwgQKCwt59dVXGTBgALm5ufTt25eOHTumLKaKlYiIJKy6upq0tDSKioo4ePAg06ZN++Tuvvz8fEaNGlXvFdZro2lAERE5qvXr17NixQqqqqqoWU/W3cnMzMTdKS4uZsOGDRQXF/PCCy/QqVOnlOegkZWIiNRp3rx5TJ48mZycHHJycujRowcFBQW0bt0agPHjxzNixAiKiorYuHEjc+bM4eyzz055HipWIiJSq6qqKp544gmKi4vp3bs3c+fOZeXKlUydOpXbbruNNm3aAPD4449TXV3N3r17adWqVYPkomlAERGp065du9i4cSMAQ4YMYdCgQVRVVTF79mwg+N6qiooK0tLSGqxQgYqViIjUISMjg0mTJjFv3jyWL19OWloaffr0oVu3bixbtoz9+/dTXl5Ohw4dGjwXFSsREalT37596d+/PyUlJSxbtoz09HRGjBhBZWUllZWVTJw4sVGK1TGvWZnZHcAI4DBQDdzo7qvMbCZwn7u/Xd8kzGyPu2cn0X4zsMXd+8a8VgE0c/cLkujnUWCBu89J1fGYWT/gVncfVJ9+jhEjF/imuz/eUDFERACaN2/OyJEjMTOKiopYt24dWVlZbN26lezshN+26+2oxcrMvgEMAi5y94/N7DQgE8Ddf9QI+R1NKzM70923mNn59e0sAseTjFyCPyASLlZm1szdDzVYRiLyudWuXTtGjx5Nly5dmDZtGs2bN2fWrFm0b9++0XI41sjqdGCbu38M4O7bajaY2VKCEcRqM9sDPAQMBN4HJgM/B84Cfuzuz5hZATAEaAPkALPc/afxAc3s34BhQBbwlLsX1pHbk8Bw4F7gWmA28D/DPtKBe4B+YT8Puvs0MzPg18BlwBbgYB3H8xCQD7QA5tTkEI7oHgO+B2QAQ919XV0nz8ymAGcDncNzMRHoBXwXeA/4nrtXhf0+Gb6+Hxjh7u/GjvzC/mpGoPcA54ejyceAX9VxvP2AnwHbga8A59WVq4h8vtz70+lJ7/O7h/5wzDY1n7OaOHEiAEuXLk06zvE41jWrUuBMM9tgZr81s2/V0a4l8Ed37wrsBv6DoCAMAe6OadcTuAq4EBhqZj1iOzGz/sC5YbtuQHczu7iOmHOBK8PH3wOejdn2Q2Cnu+cTFJ3RZnZ2mM+XgS7AdcA36+j7DnfvEeb5LTO7MGbbNne/iKA431rH/rHOAf4HMBiYBbzo7nkERenymHY7w9d/A9x/jD5vB5a7ezd3/+VRjhfgImCCu3+mUJnZDWa22sxW7961N4FDEZGTnZkR/N3fuI46snL3PWbWHegLXAI8YWa3u/ujcU0PAjUl+U3g43DE8CbBlFWN5939QwAzmwf0AVbHbO8f/rwWPs8mKF7LaknvQ2C7mV0DvAPsi+vnQjO7OnzeJuznYmC2ux8GKs3sj3Uc+jAzu4Hg/JxOUNzeCLfNC/9dw6fF8mgWx5yLdI48T7kx7WbH/PvLBPqNVdfxHgRecfe/1LaTu08HpgPkntPRk4wpIhF2a+ENSe8zevjtDZBJahzzBovwjX0psDR8w70eeDSuWZXXjA2DmzBqpg2rzSw2RvwbYvxzA4rcfVpC2cMTwINAQS393OLuzx3xotnAY3UYjkhuBfLdfXs4Fdc8psnH4b+HSexD1bHnIv481XVuah4fIhz9mlka4fXC2tKm9uPtB2jIJCInvKNOA5rZl80s9msduwF/rUe8y8zsVDNrAVwBvBy3/TngB2aWHcbPMbMvHaW/pwiujT0X9/pzwFgzywj7Oc/MWhKM0IabWbqZnU4wWozXmuANfqeZtSe4jtQYhsf8uyJ8vBnoHj4eTHCdDIKp1thP39V1vCIinwvHGhlkA782s7YEf+W/CyQ/tvzUKwTXmjoS3GAROwWIu5eGd/atCOdE9wCjgH/W1pm77wamAvFzqDMJptj+FN5UsZWgOD5FcP3obeBvfFoUYvt83cxeA9YR3IQRX1AbSjsze4NgJHZt+NoM4Gkze51g+rBmlPQGcDh8/VHgAWo/XhGRzwX7dFaqgQMFdwP2cPebGyXgCSS8G7BH7N2WjS33nI5+x3/qVyNyMmuqa1Zmtia8qa1OWsFCREQir9FWXQ/vIHy0seKdSNw9t6lzEBGJMo2sREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8lSsREQk8hpt1XWJttPadWiy77IRETkWjaxERCTyVKxERCTyVKxERCTyVKxERCTyVKxERCTyVKxERCTyVKxERCTyVKxERCTyVKxERCTyzN2bOgeJADPbDaxvwhROA7Y1Yfwo5KD4J3f8KOTQVPE7ufsXj9ZAyy1JjfXu3qOpgpvZ6qaMH4UcFP/kjh+FHJo6/tFoGlBERCJPxUpERCJPxUpqTD/J40PT56D4J3d8aPocmjp+nXSDhYiIRJ5GViIiEnkqViIiEnkqVicZM/uOma03s3fN7DNfDWxmWWb2RLh9lZnlNnL8i83sT2Z2yMyuTmXsBONPMrO3zewNM1tiZp2aIIcxZvammVWYWZmZdWnM+DHtrjIzN7OU3sqcwPEXmNnW8PgrzOxHjRk/bDMs/O9grZk93pjxzeyXMce+wcx2pDJ+gjmcZWYvmtlr4f8LA1OdQ9LcXT8nyQ+QDmwCOgOZwOtAl7g2NwEPh4+vAZ5o5Pi5wIXA/wWuboLjvwQ4JXw8NpXHn0QOrWMeDwb+0Jjxw3atgGXASqBHIx9/AfCbVJ73JOOfC7wGtAuff6mxz39M+1uAR5rgHEwHxoaPuwCbG+L3kcyPRlYnl57Au+7+Z3c/CPwe+H5cm+8Dj4WP5wDfNjNrrPjuvtnd3wCqUxQz2fgvuvu+8OlKoGMT5LAr5mlLIJV3QSXy3wDAz4CpwIEUxk4mfkNJJP5o4EF33w7g7v9s5PixrgVmpzB+ojk40Dp83AaoTHEOSVOxOrnkAFtinv89fK3WNu5+CNgJfKER4zekZOP/EFjcFDmY2Tgz2wT8HBjfmPHN7CLgTHdfmMK4CccPXRVOP80xszMbOf55wHlm9rKZrTSz7zRyfADCKeizgT+mMH6iOUwBRpnZ34FFBCO8JqViJVILMxsF9AB+0RTx3f1Bdz8H+HfgzsaKa2ZpwH3AvzZWzFo8C+S6+4XA83w60m8szQimAvsRjGxmmFnbRs4Bgmn4Oe5+uAliXws86u4dgYFASfjfRpNRsTq5vAfE/pXaMXyt1jZm1oxgCuDDRozfkBKKb2aXAncAg93946bIIcbvgSsaMX4r4AJgqZltBnoBz6TwJotjHr+7fxhz3mcC3VMUO6H4BCONZ9y9yt3/AmwgKF6NFb/GNaR+CjDRHH4IPAng7iuA5gSL3Dadpr5opp/G+yH4i/HPBFMLNRdWu8a1GceRN1g82ZjxY9o+SupvsEjk+L9GcPH53Cb8HZwb8/h7wOqm+B2E7ZeS2hssEjn+02MeDwFWNnL87wCPhY9PI5gy+0Jjnn/gK8BmwoUbmuC/wcVAQfj4fIJrVinPJam8mzK4fprgFx4M6TeEb8h3hK/dTTCKgOAvqP8HvAu8AnRu5Pj5BH/Z7iUY0a1t5PgvAP8AKsKfZ5rgd/AAsDaM/+LRiklDxI9rm9JileDxF4XH/3p4/F9p5PhGMBX6NvAmcE1jn3+Ca0b3pPq/vSTOQRfg5fB3UAH0b6hcEv3RcksiIhJ5umYlIiKRp2IlIiKRp2IlIiKRp2IlIiKRp2IlIiKRp2IlElHhiuezYp43C1cjX3CM/bodbZVsM+thZr9KMpc5ZtY5fLw5XBX+DTN7KXZlejPraGZPm9lGM9tkZg+YWWbM9p5mtixc8fs1M5tpZqfUEfN+M3svduUEM5tiZrfGtdtsZqeFjzuY2e/D2GvMbJGZnWdmXzSzPyRzzBItKlYi0bUXuMDMWoTPLyOxFT+6EXyO5jPMrJm7r3b3hNcbNLOuQLq7/znm5Us8WA5pKeFyUOGCx/OA+e5+LsEae9nA/wm3tyf4DN+/u/uX3f1rwB8IVs2Ij5lG8IHgLcC3EszTgKeApe5+jrt3B34CtHf3rcD7ZtY70eOWaFGxEom2RcDl4eMjVuA2s5Zm9oiZvRKOUr4fjmLuBoaH34c0PByNlJjZywRrvPWrGZ2ZWbaZ/XfMSOmqWnIYCTxdR34r+HQR1P8BHHD3/wbwYE27icAPwtHTOIKVIVbU7Ozuc9z9H7X024/gg8EPhcediEuAKnd/OKb/1919efh0fngscgJSsRKJtt8D15hZc4Lv+VoVs+0O4I/u3pPgjfoXQAZwF8H3cHVz9yfCtl2AS909/o3/fwM73T0vHCnVtsJ3b2BNHfl9h6AIAHSNb+fB1538DfgXgjUH6+onXk1hfgq43MwyEtjnWP2vBvomGF8iRsVKJMI8+G6vXII370Vxm/sDt5tZBcF0XHPgrDq6esbd99fy+qXAgzHxttfS5nRga9xrL5rZe8B3SfFiq+HocCDBdOIuggI9oCbFOnZLZCmefwJn1D9DaQoqViLR9wxwL58tCgZcFY6gurn7We7+Th197K1H/P0EhTDWJUAngnXjfhq+9jZxK6SbWWuCAvouwbReIiuoDwDaAm+GK7/34dOpwA+BdnHtWwE7Eui/eXgscgJSsRKJvkeAn7r7m3GvPwfcUvNNzmb2tfD13dRy00Idnie4lkTYR3whAHiHYBrvCB58OeePgevM7FRgCXCKmV0X9pUO/BfB9yLtA34DXG9mX4+Jd2V440Wsa4EfuXuuu+cSrA5+WXjdaxkw2Mxa1ewPvB5eH/sjkGVmN8T0f6GZ1Uz9nQe8ldhpkahRsRKJOHf/u7vXdqv5zwiuUb1hZmvD5xCsVN6l5gaLY3T/H0A7M3vLzF4nGDHFW0hww0Ntub1PMOIb58Gq2EOAoWa2kWBV7wPA5LDtPwi+dube8Nb1dwhGUbtr+gsL0nfCmDUx9gJlwPfCadHfAGXh9OcY4Edhu5r4l4a3rq8lWMH9g7CrS2L7lROLVl0XkaMKb51/EejtTfOttSlhZsuA79dxXU4iTsVKRI7JzAYA77j735o6l+NhZl8kKLbzmzoXOT4qViIiEnm6ZiUiIpGnYiUiIpGnYiUiIpGnYiUiIpGnYiUiIpH3/wEA8f8FAWnvBgAAAABJRU5ErkJggg==\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], + "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "from sklearn.pipeline import Pipeline\n", @@ -253,21 +175,9 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-10T23:33:21.148774\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n\n", - "image/png": "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By8za9IkBRpRxbsy4HLgZTMb6+53RR909y/MbBbwsyrOvx94A5hW2UF3n0owRchhPTvrGzRFDiID/nRljWX254sTG5NGVHHO3bcD5wHDzKyykdW9wP9QyX86wntXc6h6RCYiEveUqA4AYcL5ITDOzC6ocGwz8BTB/azK/B44vGEjFBFpOJr6i2PunhK1vQkoX1DrmQrlRgOjqzjvU6Blw0YqItJwNKISEZG4pkQlIiJxTYlKRETimhKViIjENSUqERGJa0pUIiIS15SoREQkrilRiYhIXFOiEhGRuKZEJSIicU2JSkRE4prW+hMAjmt19AGz5L+IHFo0ohIRkbimRCUiInVWXFzMxx9/vM8+94b5/lVN/YmISJ089dRT3HfffbRq1YqzzjqLE044gfPPPx8zw90xs5i2pxGViIjU2qZNm5g8eTI5OTlMmzaNnTt38uCDDzJr1iyAmCcpUKISEZE62L59O5FIhM6dO9O5c2cuu+wykpKSWLZsGa+++mqDtKlEJSIiNSorKwPg29/+Nqeeeiq333477777Lrm5uaSmptKxY0feeuutBmlbiUpERKr1wgsvMGbMGK699lrcnZEjR5KYmMgtt9zCu+++y9SpU7n88stZtGgRpaWlMW9fiUpERKo0f/58br/9dgYNGsRHH33EVVddRffu3bnvvvt4/PHHmTFjBgArVqwgKSmpQe5R6ak/AeDNdVto9Z3nmzoMEWkg21YMqfM5n332GY888gi/+93vOOecc+jUqRN/+tOfmDZtGhdeeCHt27fHzPjDH/7A1KlTefLJJ2nWLPZpRSMqERGpVIcOHXjkkUc455xz2Lx5M5deeilJSUmsXLmSa6+9lg8//BCAbt26MWfOHHr37t0gcVhDfUBLDiwJKd09+aQHmjoMEWkgdRlRFRQUUFxcTPv27Rk0aBAAH330EUVFRQwcOBCArKws2rRpw4MPPrjfsZnZ6+6eVtVxjahERGSvBQsWkJWVxdq1a7nkkkvIz88HIDU1lYEDB+59+u+MM87giCOOaJSYdI9KREQAKCkpYfz48dx///0MGTKEVq1aUVZWxoYNG+jRowcAkUiEJ554gpycHJ544olGiUsjKhERAaBdu3akp6eTlJTEmjVruOuuu8jJyWHAgAE8/PDDACxcuJDHH3+cadOmceKJJzZKXBpRiYgIAImJiaSkpJCb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\n" - }, - "metadata": { - "needs_background": "light" - } - } - ], + "outputs": [], "source": [ "strategies = {\n", " 'KNN' : KNNImputer(n_neighbors=3),\n", @@ -282,6 +192,13 @@ "cmp.plot()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, diff --git a/probatus/missing_values/imputation.py b/probatus/missing_values/imputation.py index aeec9853..891248be 100644 --- a/probatus/missing_values/imputation.py +++ b/probatus/missing_values/imputation.py @@ -29,7 +29,7 @@ class ImputationSelector(BaseFitComputePlotClass): """ - Comparison of various imputation stragegies that can be used for imputation + Comparison of various imputation strategies that can be used for imputation of missing values. The aim of this class is to present the model performance based on imputation strategies and choosen model. @@ -42,18 +42,33 @@ class ImputationSelector(BaseFitComputePlotClass): ```python #Import the class - from probatus.missing.imputation import CompareImputationStrategies + + import pandas as pd + import numpy as np + import matplotlib.pyplot as plt + from probatus.missing_values.imputation import ImputationSelector + from probatus.utils.missing_helpers import generate_MCAR,get_data + import pandas as pd + import lightgbm as lgb + from sklearn.linear_model import LogisticRegression + from sklearn.experimental import enable_iterative_imputer + from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer + + #Create data. + X,y = get_data(n_samples=1000,n_numerical=10,n_category=5) + X_missing = generate_MCAR(X,missing=0.2) + #Create the strategies. strategies = { 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, sample_posterior=True), - 'KNN' : KNNImputer(n_neighbors=3) + 'KNN' : KNNImputer(n_neighbors=3)} #Create a classifier. clf = lgb.LGBMClassifier() #Create the comparision of the imputation strategies. - cmp = CompareImputationStrategies( + cmp = ImputationSelector( clf=clf, strategies=strategies, cv=5, @@ -63,10 +78,8 @@ class ImputationSelector(BaseFitComputePlotClass): #Plot the results. cmp.plot() - - } - ``` + """ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,n_jobs=-1,verbose=0, @@ -119,7 +132,7 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,n_ self.model_na_support = model_na_support self.scorer = get_single_scorer(scoring) self.strategies = strategies - self.cv = 5 + self.cv = cv self.verbose = verbose self.n_jobs = n_jobs @@ -129,7 +142,7 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,n_ self.random_state = random_state self.fitted = False - self.report = pd.DataFrame([]) + self.report = pd.DataFrame(columns=['strategy','score','std']) def __repr__(self): return "Imputation comparision for {}".format(self.clf.__class__.__name__) @@ -163,16 +176,11 @@ def fit(self, X, y,column_names=None,categorical_columns='auto'): self.y = preprocess_labels(y, index=self.X.index, verbose=self.verbose) - #Identify categorical features if not explicitly specified. - if 'auto' in categorical_columns: - X_cat = X.select_dtypes(include=['category','object']) - categorical_columns = X_cat.columns.to_list() - for column in categorical_columns: - X[column] = X[column].astype('category') - else : - #Check if the passed columns are in the dataframe. - assert categorical_columns in X.columns,"All categorical columns not in the dataframe." - X_cat = X[categorical_columns] + #Identify categorical features. + + X_cat = X.select_dtypes(include=['category','object']) + categorical_columns = X_cat.columns.to_list() + #Identify the numeric columns.Numeric columns are all columns expect the categorical # columns X_num = X.drop(columns = categorical_columns,inplace=False) @@ -236,7 +244,7 @@ def fit(self, X, y,column_names=None,categorical_columns='auto'): ) temp_results = { - 'strategy' : 'Model Imputation', + 'strategy' : 'No Imputation', 'score': np.round(np.mean(imputation_results),3), 'std':np.round(np.std(imputation_results),3), } diff --git a/tests/docs/test_docstring.py b/tests/docs/test_docstring.py index 09b744fe..7b3d3800 100644 --- a/tests/docs/test_docstring.py +++ b/tests/docs/test_docstring.py @@ -10,6 +10,7 @@ import probatus.sample_similarity import probatus.stat_tests import probatus.utils +import probatus.missing_values # Turn off interactive mode in plots plt.ioff() @@ -30,7 +31,8 @@ probatus.sample_similarity.PermutationImportanceResemblance, probatus.stat_tests.DistributionStatistics, probatus.stat_tests.AutoDist, - probatus.utils.Scorer + probatus.utils.Scorer, + probatus.missing_values.ImputationSelector ] FUNCTIONS_TO_TEST = [ probatus.utils.sample_row, diff --git a/tests/docs/test_notebooks.py b/tests/docs/test_notebooks.py index 73343054..ce2934a7 100644 --- a/tests/docs/test_notebooks.py +++ b/tests/docs/test_notebooks.py @@ -22,7 +22,8 @@ 'nb_distribution_statistics', 'nb_metric_volatility', 'nb_sample_similarity', - 'nb_shap_model_interpreter' + 'nb_shap_model_interpreter', + 'nb_imputation_comparision' ] diff --git a/tests/missing/test_imputation.py b/tests/missing/test_imputation.py index ae587ba4..8306f11e 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing/test_imputation.py @@ -1,5 +1,5 @@ #Code to test the imputation strategies. -from probatus.missing.imputation import CompareImputationStrategies +from probatus.missing_values.imputation import ImputationSelector from sklearn.ensemble import RandomForestClassifier from sklearn.linear_model import LogisticRegression from sklearn.experimental import enable_iterative_imputer @@ -11,14 +11,14 @@ @pytest.fixture(scope='function') def X(): - return pd.DataFrame({'col_1': [1, np.nan, 1, 1, np.nan, 1, 1, 0], - 'col_2': [0, 0, 0, np.nan, 0, 0, 0, 1], - 'col_3': [1, 0, np.nan, 0, 1, np.nan, 1, 0], - 'col_4': ['A', 'B', 'A', np.nan, 'B', np.nan, 'A', 'A']}, index=[1, 2, 3, 4, 5, 6, 7, 8]) + return pd.DataFrame({'col_1': [1, np.nan, 1, 1, np.nan, 1, 1, 0,1,1], + 'col_2': [0, 0, 0, np.nan, 0, 0, 0, 1,0,0], + 'col_3': [1, 0, np.nan, 0, 1, np.nan, 1, 0,1,1], + 'col_4': ['A', 'B', 'A', np.nan, 'B', np.nan, 'C', 'A','B','C']}, index=[1, 2, 3, 4, 5, 6, 7, 8,9,10]) @pytest.fixture(scope='function') def y(): - return pd.Series([1, 0, 1, 0, 1, 0, 1, 0], index=[1, 2, 3, 4, 5, 6, 7, 8]) + return pd.Series([1, 0, 1, 0, 1, 0, 1, 0,0,0], index=[1, 2, 3, 4, 5, 6, 7, 8,9,10]) def test_imputation_linear(X,y,capsys): @@ -32,7 +32,7 @@ def test_imputation_linear(X,y,capsys): } #Initialize the classifier clf = LogisticRegression() - cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=False) + cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) report = cmp.fit_compute(X,y) cmp.plot(show=False) @@ -44,7 +44,6 @@ def test_imputation_linear(X,y,capsys): out, _ = capsys.readouterr() assert len(out) == 0 -@pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") def test_imputation_bagging(X,y,capsys): #Create strategies for imputation. @@ -57,7 +56,7 @@ def test_imputation_bagging(X,y,capsys): } #Initialize the classifier clf = RandomForestClassifier() - cmp = CompareImputationStrategies(clf=clf,strategies=strategies,cv=3,model_na_support=False) + cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) report = cmp.fit_compute(X,y) cmp.plot(show=False) From 396496f45a6fd9e3966eced404d0773efa092a9d Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 11 Mar 2021 14:50:50 +0100 Subject: [PATCH 12/24] Updating tests. --- docs/tutorials/nb_imputation_comparison.ipynb | 186 +++++---- mkdocs.yml | 4 +- probatus/missing_values/__init__.py | 2 +- probatus/missing_values/imputation.py | 357 ++++++++++-------- probatus/utils/missing_helpers.py | 40 -- .../test_imputation.py | 47 ++- 6 files changed, 360 insertions(+), 276 deletions(-) rename tests/{missing => missing_values}/test_imputation.py (66%) diff --git a/docs/tutorials/nb_imputation_comparison.ipynb b/docs/tutorials/nb_imputation_comparison.ipynb index b3aebe4f..907e3733 100644 --- a/docs/tutorials/nb_imputation_comparison.ipynb +++ b/docs/tutorials/nb_imputation_comparison.ipynb @@ -18,12 +18,13 @@ "Currently `ImputationSelector` supports any scikit learn compatible imputation strategy. For categorical variables the missing values are replaced by `missing` token and `OneHotEncoder` is applied. The user supplied imputation strategies are applied to numerical columns only. \n", "Support for user supplied imputation strategies for categorical columns can be added in the future releases.\n", "\n", - "Let us create some data on which we want to apply the various imputation strategies.We will create a dataset with both numerical and categorical variables.First let us import the class and other required classes." + "Let us look at an example and start by importing all the required classes and methods.\n", + "\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -35,47 +36,81 @@ "import matplotlib.pyplot as plt\n", "pd.set_option('display.max_columns', 100)\n", "pd.set_option('display.max_row', 500)\n", - "pd.set_option('display.max_colwidth', 200)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "pd.set_option('display.max_colwidth', 200)\n", "from probatus.missing_values.imputation import ImputationSelector\n", - "from probatus.utils.missing_helpers import generate_MCAR,get_data\n", - "import pandas as pd \n", + "from probatus.utils.missing_helpers import generate_MCAR\n", "import lightgbm as lgb \n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.experimental import enable_iterative_imputer \n", "from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer\n", - "from feature_engine.imputation import RandomSampleImputer\n" + "from sklearn.datasets import make_classification" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "X,y = get_data(n_samples=1000,n_numerical=10,n_category=5)\n", - "print(f\"Shape of X,y : {X.shape},{y.shape}\")" + "Let us create a classification dataset to apply the various imputation strategies.\n", + "\n", + "Add missing values to the dataset. `generate_MCAR` method randomly adds missing values to the dataset." ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 2, "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shape of X,y : (2000, 20),(2000,)\n" + ] + } + ], "source": [ - "Add missing values to the dataset. `generate_MCAR` method randomly adds missing values to the dataset." + "n_features = 20\n", + "X,y = make_classification(n_samples=2000,n_features=n_features,random_state=123,class_sep=0.3)\n", + "X = pd.DataFrame(X, columns=[\"f_\"+str(i) for i in range(0,n_features)])\n", + "print(f\"Shape of X,y : {X.shape},{y.shape}\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "f_0 0.1910\n", + "f_1 0.1920\n", + "f_2 0.1955\n", + "f_3 0.2120\n", + "f_4 0.1900\n", + "f_5 0.2030\n", + "f_6 0.1995\n", + "f_7 0.2025\n", + "f_8 0.2025\n", + "f_9 0.1880\n", + "f_10 0.1975\n", + "f_11 0.1925\n", + "f_12 0.1945\n", + "f_13 0.1995\n", + "f_14 0.1955\n", + "f_15 0.2090\n", + "f_16 0.2030\n", + "f_17 0.2000\n", + "f_18 0.2080\n", + "f_19 0.2005\n", + "dtype: float64" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ], "source": [ "X_missing = generate_MCAR(X,missing=0.2)\n", "X_missing.isnull().mean()" @@ -92,41 +127,67 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Create a dictionary with all the strategies to compare. Also, create a classifier that you want to use to evaluate various strategies.\n", - "If the model supports handling of missing features by default then the model performance on an unimputed dataset is calculated.\n", - "The model performance against the unimputed dataset can be found in `Model Imputation` results." + "Create a dictionary with all the strategies to compare. Also, create a classifier to use for evaluating various strategies.\n", + "If the model supports handling of missing features by default then the model performance on an unimputed dataset is calculated. You can indicate that the model supports handling missing values by setting the parameter `model_na_support=True`.\n", + "The model performance against the unimputed dataset can be found in `No Imputation` results." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-11T14:24:03.511729\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], "source": [ "strategies = {\n", " 'KNN' : KNNImputer(n_neighbors=3),\n", " 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", + " 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=False),\n", " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,\n", " sample_posterior=True)\n", " }\n", + " \n", "clf = lgb.LGBMClassifier()\n", - "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=5,random_state=45)\n", + "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=5,random_state=45,model_na_support=True)\n", "cmp.fit_compute(X_missing,y)\n", - "cmp.plot()" + "result_plot = cmp.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "However if the model does not support missing values by default e.g LogisticRegression , results for only the inputation strategies are calculated. This can be indicated by setting the `model_na_support` parameter to `False`.\n" + "However if the model does not support missing values by default e.g LogisticRegression , results for only the inputation strategies are calculated. \n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-11T14:24:14.504658\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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7puSYJuH4t/AcoJJEteHvbilBMOH7wDvAqsqi93MxgDPmVkMKCaYEPFBkmITEalzVrYyraRO2SxBd5+bqhgaN+/kZwycnarmRSTFXknhMygze93du5XffzgN8YmIyBHkcBri+8Zy96GpjkFEJGrUgxIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUjSWnwCwMmts1K6mrGISHnqQYmISCQpQYmISCQpQYmISCQpQYmISNKVlJTUuA4lKBERSaqCggIeeeSRGicpJSgREUmagoICbrrpJk466STS0tIOOObu1apL08xFRCQpVq1axY033sgdd9xBnz59+PTTT9m1axcAxx9/PGaGu2NmCdWnBCUiIknxxRdf0LlzZ5o0acKrr77K7bffTlZWFvXr16dz587cfvvtCScnUIISEZEaevXVV8nJyaFHjx4UFRUxZcoUVq9ezciRI7niiit4++23+e1vf8uaNWvo1KlTwvUqQQkAq9du5vizb011GCJSx/699H9qdP6CBQsYPnw4jz32GC1btuTcc88lFouxefNmrr76agC6d+/OPffcU+1JE0pQIiJySD7++GPGjRvHjBkzyMvLo6ioiKysLM455xyA/c+b/vKXv7Bp0yays7OrVb8SlIiIVEtZ4mnQoAGdOnWib9++fPTRR9x0001kZWXRvn17LrzwQtq3b8/vf/97pk6dysyZM8nJyalWO5pmLiIi1bJlyxYAGjRowPvvv8/48eO5+eab6d27N/369WPPnj3MnDkTgBNOOIHHH3+czp07V7sdJSgREUlYQUEBrVu3pqCggLS0NO644w7WrVvH9u3bue6667jsssvo3r07GzZsAOCCCy7glFNOOaS2lKBERCQhBQUFjBkzhosuuojVq1fj7rRr1468vDzefvtt7r77bgB27NjBtm3b2LlzZ43a0zMoERGp0iuvvMLo0aOZNGkS6enp3HDDDQwbNozmzZtz8cUX06pVK8aOHcuaNWtYtmwZc+fOpWnTpjVq06q79IR8M2U0OtaP+Y/hqQ5DROpYotPMH330UTp06EBubi4Aw4YNY9++fUybNo309HQgWCD2ww8/JCsri6OPPjrhGMzsdXfvVn6/hvhERKRK11xzDbm5uezbtw+AESNGkJGRQWFh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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], "source": [ "strategies = {\n", " 'KNN' : KNNImputer(n_neighbors=3),\n", @@ -136,9 +197,9 @@ " sample_posterior=True)\n", " }\n", "clf = LogisticRegression()\n", - "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=10,model_na_support=False)\n", + "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=5)\n", "cmp.fit_compute(X_missing,y)\n", - "cmp.plot()" + "result_plot=cmp.plot()" ] }, { @@ -150,17 +211,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-11T14:24:25.689763\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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NyXVYYhIA7uoaFid63jttdfIzc2ld+/elJSUMHXqVFasWMGIESO46qqrWLlyJffccw+rVq2iW7duCderBCUiIofsmWeeYejQocyaNYu2bdty3nnnEYvFWLduHddeey0AvXr14u677671pAklKBEROSQbNmxg3LhxzJgxg/z8fEpKSsjKyuLcc88F2Pe86YknnqCoqIicnJxa1a8EJSIitVKReJo0aUK3bt3o378/69evZ9SoUWRlZdG5c2cuueQSOnfuzO9+9zumTZvGzJkzyc3NrVU7mmYuIiK1snHjRgCaNGnCJ598woQJE7jlllvo27cvAwYMYPfu3cycOROAE088kccee4zu3bvXuh0lKBERSVhhYSHt27ensLCQtLQ0xo8fz+rVq9myZQvDhg3jiiuuoFevXqxZswaAiy66iFNOOeWQ2lKCEhGRhBQWFjJmzBguvfRSVqxYgbvTqVMn8vPzWblyJXfddRcAW7duZfPmzWzbtq1O7ekZlIiI1Ojll19m9OjRTJ48mfT0dG666Sauv/56WrVqxWWXXUa7du0YO3Ysq1atYsmSJcydO5cWLVrUqU0lKBERqdHatWuZMmUKPXv2BKBr166MHDmShx56iOzsbM455xz69u3Lp59+SlZWFq1bt65zmxriExGRGl133XX07NmTvXv3AjB8+HAyMjIoLi4GYM+ePaSlpdG+ffukJCdQghIRkQRULPTaqFEw8NalSxfWrVvHpEmTAMjIyEh6m0pQIiJygNWrV7NkyRJKS0spKyvbt9ArQHl5OVlZWdx///08//zzLF26tF5i0DMoERHZz7x58ygoKCA3N5fc3Fzy8vIYMmQIzZs3p7y8nFgsRnl5OTk5OVxwwQWccMIJ9RKHelAiIrJPaWkpc+bMYdq0abzwwgsMHDiQoqIiJk6cyLZt24jFgrQRi8XIycmhoKCAVq1a1UssSlAiIrKf7du389FHHwEwaNAgLr74YkpLS5k9ezYAb7zxBsuXLwcgMzOz3uJQghIRkX3S09MZOXIk8+bNY9GiRcRiMXr37k2PHj1YuHAhJSUlLF68mLZt2wLU6vudaksJKsLMbGfc9oVm9qGZtTezsWa2y8xaV1PWzezuuNejzGxsgwUuIoe1Pn36MGDAAGbMmMHChQtJS0vj6quvpri4mOLiYkaMGMExxxxT73FoksRhwMzOBe4H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\n" + }, + "metadata": { + "needs_background": "light" + } + } + ], "source": [ "from sklearn.preprocessing import StandardScaler\n", "from sklearn.pipeline import Pipeline\n", "steps = [('scaler', StandardScaler()), ('LR', LogisticRegression())]\n", "clf = Pipeline(steps)\n", - "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=10,model_na_support=False)\n", + "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=5,model_na_support=False)\n", "cmp.fit_compute(X_missing,y)\n", - "cmp.plot()\n" + "result_plot=cmp.plot()\n" ] }, { @@ -170,41 +243,8 @@ "### Scikit Learn Compatible Imputers. \n", "\n", "You can also use any other scikit-learn compatible imputer as an imputing strategy.\n", - "eg. [feature engine](https://feature-engine.readthedocs.io/en/latest/index.html) library provides a host of other imputing stratgies as well. You can pass them for comparision. Let us try the `RandomSampleImputer`. You can read more about it [here](https://feature-engine.readthedocs.io/en/latest/imputation/RandomSampleImputer.html)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "strategies = {\n", - " 'KNN' : KNNImputer(n_neighbors=3),\n", - " 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", - " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,\n", - " sample_posterior=True),\n", - " 'Random Imputation' : RandomSampleImputer()\n", - " }\n", - "clf = lgb.LGBMClassifier()\n", - "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=10)\n", - "cmp.fit_compute(X_missing,y)\n", - "cmp.plot()" + "eg. [feature engine](https://feature-engine.readthedocs.io/en/latest/index.html) library provides a host of other imputing stratgies as well. You can pass them for comparision as well." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/mkdocs.yml b/mkdocs.yml index b0c434f7..94abf8d2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -17,12 +17,12 @@ nav: - Multivariate Sample Similarity: tutorials/nb_sample_similarity.ipynb - Univariate Sample Similarity: tutorials/nb_distribution_statistics.ipynb - Custom Scoring Metrics: tutorials/nb_custom_scoring.ipynb - - Imputation Strategy Comparision : tutorials/nb_imputation.ipynb + - Imputation Strategy Comparision : tutorials/nb_imputation_comparison.ipynb - API: - probatus.feature_elimination: api/feature_elimination.md - probatus.interpret: api/model_interpret.md - probatus.metric_volatility: api/metric_volatility.md - - probatus.missing_values : api/missing_values.md + - probatus.missing_values : api/imputation_selector.md - probatus.sample_similarity: api/sample_similarity.md - probatus.stat_tests: api/stat_tests.md - probatus.utils: api/utils.md diff --git a/probatus/missing_values/__init__.py b/probatus/missing_values/__init__.py index 75d0f971..04a73b50 100644 --- a/probatus/missing_values/__init__.py +++ b/probatus/missing_values/__init__.py @@ -20,4 +20,4 @@ from .imputation import ImputationSelector -__all__ = ['ImputationSelector'] +__all__ = ["ImputationSelector"] diff --git a/probatus/missing_values/imputation.py b/probatus/missing_values/imputation.py index 891248be..78c3a582 100644 --- a/probatus/missing_values/imputation.py +++ b/probatus/missing_values/imputation.py @@ -17,45 +17,53 @@ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -from probatus.utils import preprocess_data, preprocess_labels,BaseFitComputePlotClass,get_single_scorer -from sklearn.model_selection import cross_val_score -from sklearn.pipeline import Pipeline -from sklearn.impute import SimpleImputer -from sklearn.compose import ColumnTransformer -from sklearn.preprocessing import OneHotEncoder +from probatus.utils import ( + preprocess_data, + preprocess_labels, + BaseFitComputePlotClass, + get_single_scorer, +) +from sklearn.model_selection import cross_val_score +from sklearn.pipeline import Pipeline +from sklearn.impute import SimpleImputer +from sklearn.compose import ColumnTransformer +from sklearn.preprocessing import OneHotEncoder import matplotlib.pyplot as plt -import numpy as np -import pandas as pd +import numpy as np +import pandas as pd + class ImputationSelector(BaseFitComputePlotClass): """ - Comparison of various imputation strategies that can be used for imputation - of missing values. + Comparison of various imputation strategies that can be used for imputing + missing values. The aim of this class is to present the model performance based on imputation - strategies and choosen model. - For models like XGBoost & LighGBM which have capabilities to handle misisng values by default + strategies and a choosen model. + For models like XGBoost & LighGBM which have capabilities to handle missing values by default the model performance with no imputation will be shown as well. - The missing values categorical features are filled with `missing` and an missing indicator is + The missing values categorical features are imputed with the value `missing` and an missing indicator is added. - Usage E.g. + Example usage. ```python #Import the class - + import pandas as pd import numpy as np import matplotlib.pyplot as plt from probatus.missing_values.imputation import ImputationSelector - from probatus.utils.missing_helpers import generate_MCAR,get_data - import pandas as pd - import lightgbm as lgb + from probatus.utils.missing_helpers import generate_MCAR + import lightgbm as lgb from sklearn.linear_model import LogisticRegression - from sklearn.experimental import enable_iterative_imputer + from sklearn.experimental import enable_iterative_imputer from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer + from sklearn.datasets import make_classification - #Create data. - X,y = get_data(n_samples=1000,n_numerical=10,n_category=5) + #Create data with missing values. + n_features = 10 + X,y = make_classification(n_samples=1000,n_features=n_features,random_state=123,class_sep=0.3) + X = pd.DataFrame(X, columns=["f_"+str(i) for i in range(0,n_features)]) X_missing = generate_MCAR(X,missing=0.2) #Create the strategies. @@ -82,19 +90,28 @@ class ImputationSelector(BaseFitComputePlotClass): """ - def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,n_jobs=-1,verbose=0, - random_state=None): + + def __init__( + self, + clf, + strategies, + scoring="roc_auc", + cv=5, + model_na_support=False, + n_jobs=-1, + verbose=0, + random_state=None, + ): """ Initialise the class. Args : - clf(model object): + clf (binary classifier,sklearn.Pipeline): A binary classification model, that will used to evaluate various imputation strategies. - strategies (dictionary of sklearn.impute objects): + strategies (dictionary of sklearn.impute objects or any other scikit learn compatible imputer.): Dictionary containing the sklearn.impute objects. e.g. - strategies = {'KNN' : KNNImputer(n_neighbors=3), 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, @@ -106,11 +123,11 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,n_ needs to be aligned with predefined [classification scorers names in sklearn](https://scikit-learn.org/stable/modules/model_evaluation.html). Another option is using probatus.utils.Scorer to define a custom metric. - model_na_support(boolean): default True - If the classifier supports missing values by default e.g. LightGBM,XGBoost etc. - If True an default comparison `Model Imputation` will be added indicating the results without any explict imputation. + model_na_support(boolean): default False + If the classifier supports missing values by default e.g. LightGBM,XGBoost etc. + If True an default comparison `No Imputation` result will be added indicating the model performance without any explict imputation. If False only the provided strategies will be used. - + n_jobs (int, optional): Number of cores to run in parallel while fitting across folds. None means 1 unless in a `joblib.parallel_backend` context. -1 means using all processors. @@ -122,7 +139,7 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,n_ - 1 - 50 - only most important warnings regarding data properties are shown (excluding SHAP warnings) - 51 - 100 - shows most important warnings, prints of the feature removal process - above 100 - presents all prints and all warnings (including SHAP warnings). - + random_state (int, optional): Random state set at each round of feature elimination. If it is None, the results will not be reproducible and in random search at each iteration a different hyperparameters might be tested. For @@ -135,23 +152,23 @@ def __init__(self,clf,strategies,scoring='roc_auc',cv=5,model_na_support=True,n_ self.cv = cv self.verbose = verbose self.n_jobs = n_jobs - - if random_state is None: - self.random_state = 42 - else: - self.random_state = random_state - + self.random_state = random_state self.fitted = False - self.report = pd.DataFrame(columns=['strategy','score','std']) + self.report_df = pd.DataFrame( + columns=[ + "strategy", + f"{self.scorer.metric_name} score", + f"{self.scorer.metric_name} std", + ] + ) def __repr__(self): return "Imputation comparision for {}".format(self.clf.__class__.__name__) - - def fit(self, X, y,column_names=None,categorical_columns='auto'): + def fit(self, X, y, column_names=None): """ Calculates the cross validated results for various imputation strategies. - + Args: X (pd.DataFrame): input variables. @@ -160,115 +177,147 @@ def fit(self, X, y,column_names=None,categorical_columns='auto'): target variable. column_names (None, or list of str, optional): - List of feature names for the dataset. + List of feature names for the dataset. If None, then column names from the X dataframe are used. - - categorical_features (None, or list of str, optional):default=auto - List of categorical features.The imputation strategy for categorical - is different that compared to numerical features. If auto try to infer - the categorical columns based on 'object' and 'category' datatypes. """ - #Place holder for results. + if self.random_state is not None: + np.random.seed(self.random_state) + + # Place holder for results. results = [] - self.X, self.column_names = preprocess_data(X, column_names=column_names, - verbose=self.verbose) + self.X, self.column_names = preprocess_data( + X, column_names=column_names, verbose=self.verbose + ) self.y = preprocess_labels(y, index=self.X.index, verbose=self.verbose) - - #Identify categorical features. - - X_cat = X.select_dtypes(include=['category','object']) + # Identify categorical features. + X_cat = X.select_dtypes(include=["category", "object"]) categorical_columns = X_cat.columns.to_list() + + # Identify the numeric columns.Numeric columns are all columns expect the categorical columns - #Identify the numeric columns.Numeric columns are all columns expect the categorical - # columns - X_num = X.drop(columns = categorical_columns,inplace=False) + X_num = X.drop(columns=categorical_columns, inplace=False) numeric_columns = X_num.columns.to_list() - - for strategy in self.strategies: - numeric_transformer = Pipeline(steps=[ - ('imputer', self.strategies[strategy])]) + for strategy in self.strategies: - categorical_transformer = Pipeline(steps=[ - ('imp_cat',SimpleImputer(strategy='constant',fill_value='missing',add_indicator=True)), - ('ohe_cat',OneHotEncoder(handle_unknown='ignore')), - ]) + numeric_transformer = Pipeline( + steps=[("imputer", self.strategies[strategy])] + ) + + categorical_transformer = Pipeline( + steps=[ + ( + "imp_cat", + SimpleImputer( + strategy="constant", + fill_value="missing", + add_indicator=True, + ), + ), + ("ohe_cat", OneHotEncoder(handle_unknown="ignore")), + ] + ) preprocessor = ColumnTransformer( - transformers=[ - ('num', numeric_transformer, numeric_columns), - ('cat', categorical_transformer, categorical_columns)], - remainder='passthrough') - - clf = Pipeline(steps=[('preprocessor', preprocessor), - ('classifier', self.clf)]) - - imputation_results = cross_val_score( - clf, - X, - y, - scoring=self.scorer.scorer, - cv=self.cv, - n_jobs = self.n_jobs) - - temp_results = { - 'strategy' : strategy, - 'score': np.round(np.mean(imputation_results),3), - 'std':np.round(np.std(imputation_results),3), - } + transformers=[ + ("num", numeric_transformer, numeric_columns), + ("cat", categorical_transformer, categorical_columns), + ], + remainder="passthrough", + ) + + model_pipeline = Pipeline( + steps=[("preprocessor", preprocessor), ("classifier", self.clf)] + ) + + temp_results = self._calculate_results( + X, y, clf=model_pipeline, strategy=strategy + ) + results.append(temp_results) - #If model supports missing values by default, then calculate the scores - #on raw data without any imputation. - if self.model_na_support : - categorical_transformer = Pipeline(steps=[ - ('ohe_cat',OneHotEncoder(handle_unknown='ignore')), - ]) + + # If model supports missing values by default, then calculate the scores + # on raw data without any imputation. + if self.model_na_support: + + categorical_transformer = Pipeline( + steps=[ + ("ohe_cat", OneHotEncoder(handle_unknown="ignore")), + ] + ) preprocessor = ColumnTransformer( - transformers=[ - ('cat', categorical_transformer, categorical_columns)], - remainder='passthrough') - - self.clf = Pipeline(steps=[('preprocessor', preprocessor), - ('classifier', self.clf)]) - - imputation_results = cross_val_score( - self.clf, - X, - y, - scoring=self.scorer.scorer, - cv=self.cv, - n_jobs = self.n_jobs - ) - - temp_results = { - 'strategy' : 'No Imputation', - 'score': np.round(np.mean(imputation_results),3), - 'std':np.round(np.std(imputation_results),3), - } - results.append(temp_results) + transformers=[("cat", categorical_transformer, categorical_columns)], + remainder="passthrough", + ) + model_pipeline = Pipeline( + steps=[("preprocessor", preprocessor), ("classifier", self.clf)] + ) + + temp_results = self._calculate_results( + X, y, clf=model_pipeline, strategy="No Imputation" + ) + results.append(temp_results) - self.report = pd.DataFrame(results) - self.report.sort_values(by='score',inplace=True) + self.report_df = pd.DataFrame(results) + self.report_df.sort_values(by=f"{self.scorer.metric_name} score", inplace=True) self.fitted = True return self - - - def compute(self,return_scores=True): + + def _calculate_results(self, X, y, clf, strategy): """ - Compute method. + Method to calculate the results for a particular imputation strategy. + + Args: + X (pd.DataFrame): + input variables. + + y (pd.Series): + target variable. + + clf (binary classifier,sklearn.Pipeline): + A binary classification model, that will used to evaluate various imputation strategies. + + strategy(string): + Name of the strategy used for imputation. + + Returns: + + temp_df(dict) : Dictionary containing the results of the evaluation. + """ + imputation_results = cross_val_score( + clf, X, y, scoring=self.scorer.scorer, cv=self.cv, n_jobs=self.n_jobs + ) + + temp_results = { + "strategy": strategy, + f"{self.scorer.metric_name} score": np.round( + np.mean(imputation_results), 3 + ), + f"{self.scorer.metric_name} std": np.round(np.std(imputation_results), 3), + } + + return temp_results + + def compute(self): + """ + Checks if fit() method has been run and computes the DataFrame with results of imputation for each + strategy. + + Returns: + (pd.DataFrame): + DataFrame with results of imputation for each strategy. """ self._check_if_fitted() - if return_scores : - return self.report + return self.report_df - def fit_compute(self, X, y,column_names=None,categorical_columns='auto'): + def fit_compute(self, X, y, column_names=None): """ Calculates the cross validated results for various imputation strategies. - + Args: X (pd.DataFrame): input variables. @@ -277,46 +326,60 @@ def fit_compute(self, X, y,column_names=None,categorical_columns='auto'): target variable. column_names (None, or list of str, optional): - List of feature names for the dataset. + List of feature names for the dataset. If None, then column names from the X dataframe are used. - - categorical_features (None, or list of str, optional):default=auto - List of categorical features.The imputation strategy for categorical - is different that compared to numerical features. If auto try to infer - the categorical columns based on 'object' and 'category' datatypes. + + Returns: + (pd.DataFrame): + DataFrame with results of imputation for each strategy. + """ - self.fit(X,y, - column_names=column_names, - categorical_columns=categorical_columns - ) + self.fit(X, y, column_names=column_names) return self.compute() - - def plot(self,show=True): + def plot(self, show=True, **figure_kwargs): """ - Plot the results for imputation. + Generates plot of the performance of various imputation strategies. + + Args: + show (bool, optional): + If True, the plots are showed to the user, otherwise they are not shown. Not showing plot can be useful, + when you want to edit the returned axis, before showing it. + + **figure_kwargs: + Keyword arguments that are passed to the plt.figure, at its initialization. + + Returns: + (plt.axis): + Axis containing the performance plot. """ - imp_methods = list(self.report['strategy']) - performance = list(self.report['score']) - std_error = list(self.report['std']) + plt.figure(**figure_kwargs) + + imp_methods = list(self.report_df["strategy"]) + performance = list(self.report_df[f"{self.scorer.metric_name} score"]) + std_error = list(self.report_df[f"{self.scorer.metric_name} std"]) - y_pos = [i for i, _ in enumerate(imp_methods)] + y_pos = [i for i, _ in enumerate(imp_methods)] x_spacing = 0.01 - y_spacing = 2*x_spacing + y_spacing = 2 * x_spacing plt.barh( - y_pos, + y_pos, performance, xerr=std_error, - align='center', - color=np.random.rand(len(performance),3)) + align="center", + color=np.random.rand(len(performance), 3), + ) for index, value in enumerate(performance): - plt.text(value+x_spacing ,index+y_spacing, str(value),rotation=45) + plt.text(value + x_spacing, index + y_spacing, str(value), rotation=45) plt.yticks(y_pos, imp_methods) plt.xlabel(f"Metric ({(self.scorer.metric_name).replace('_',' ').upper()})") plt.title("Imputation Techniques") + plt.margins(0.1) plt.tight_layout() + ax = plt.gca() if show: plt.show() else: - plt.close() \ No newline at end of file + plt.close() + return ax diff --git a/probatus/utils/missing_helpers.py b/probatus/utils/missing_helpers.py index 5267ae48..e68479f3 100644 --- a/probatus/utils/missing_helpers.py +++ b/probatus/utils/missing_helpers.py @@ -43,43 +43,3 @@ def generate_MCAR(df,missing): raise ValueError("missing must be float within range [0.1] or dict") return df - - -def get_data(n_samples,n_numerical,n_category): - """ - Returns a dataframe(X),target(y) with numerical and categorical features. - - Args : - n_samples(int) : Number of samples to return. - n_numerical(int) : Number of numerical columns to create. - n_category(int) : Number of categorical columns to create. - - Returns : - X(DataFrame) : DataFrame with numerical and categorical features. - y(Series) : Series with binary values. - - Examples: - - # Create a data with 1000 samples, 10 numerical and 5 categorical variables. - X,y = get_data(n_samples=1000,n_numerical=10,n_category=5) - - """ - #Total number of columns is the sum of numerical and categorical columns. - no_vars = n_numerical + n_category - - X,y = make_classification( - n_samples=n_samples, - n_features=no_vars, - random_state=123,class_sep=0.3) - - binner = KBinsDiscretizer(n_bins=5, encode='ordinal', strategy="quantile", ) - X[:,n_numerical:] = binner.fit_transform(X[:,n_numerical:]) - - #Add column names. - X = pd.DataFrame(X, columns=["f_"+str(i) for i in range(0,no_vars)]) - - # Efficiently map values to another value with .map(dict) - X.iloc[:,n_numerical:] = X.iloc[:,n_numerical:].apply( - lambda x: x.map({i:letter for i,letter in enumerate(string.ascii_uppercase)})) - - return X,y diff --git a/tests/missing/test_imputation.py b/tests/missing_values/test_imputation.py similarity index 66% rename from tests/missing/test_imputation.py rename to tests/missing_values/test_imputation.py index 8306f11e..19b5f6ef 100644 --- a/tests/missing/test_imputation.py +++ b/tests/missing_values/test_imputation.py @@ -8,6 +8,7 @@ import numpy as np import pytest import os +import lightgbm as lgb @pytest.fixture(scope='function') def X(): @@ -20,16 +21,18 @@ def X(): def y(): return pd.Series([1, 0, 1, 0, 1, 0, 1, 0,0,0], index=[1, 2, 3, 4, 5, 6, 7, 8,9,10]) -def test_imputation_linear(X,y,capsys): - - #Create strategies for imputation. - strategies = { - 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), - 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), - 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, - sample_posterior=True), - 'KNN' : KNNImputer(n_neighbors=3), +@pytest.fixture(scope='function') +def strategies(): + return { + 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), + 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), + 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,sample_posterior=True), + 'KNN' : KNNImputer(n_neighbors=3), } + + +def test_imputation_linear(X,y,strategies,capsys): + #Initialize the classifier clf = LogisticRegression() cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) @@ -44,8 +47,26 @@ def test_imputation_linear(X,y,capsys): out, _ = capsys.readouterr() assert len(out) == 0 -def test_imputation_bagging(X,y,capsys): +def test_imputation_bagging(X,y,strategies,capsys): + + #Initialize the classifier + clf = RandomForestClassifier() + cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) + report = cmp.fit_compute(X,y) + cmp.plot(show=False) + + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0]==4 + + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 + +@pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") +def test_imputation_boosting(X,y,capsys): + #Create strategies for imputation. strategies = { 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), @@ -55,14 +76,14 @@ def test_imputation_bagging(X,y,capsys): 'KNN' : KNNImputer(n_neighbors=3), } #Initialize the classifier - clf = RandomForestClassifier() - cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) + clf = lgb.LGBMClassifier() + cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=True) report = cmp.fit_compute(X,y) cmp.plot(show=False) assert cmp.fitted == True cmp._check_if_fitted() - assert report.shape[0]==4 + assert report.shape[0]==5 # Check if there is any prints out, _ = capsys.readouterr() From 3c2a5ed977e8ce7d41e00200937ce874105e0a0b Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 11 Mar 2021 14:54:18 +0100 Subject: [PATCH 13/24] Removed unwanted imports --- probatus/utils/missing_helpers.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/probatus/utils/missing_helpers.py b/probatus/utils/missing_helpers.py index e68479f3..775bb340 100644 --- a/probatus/utils/missing_helpers.py +++ b/probatus/utils/missing_helpers.py @@ -1,8 +1,4 @@ -import pandas as pd import numpy as np -from sklearn.preprocessing import KBinsDiscretizer -from sklearn.datasets import make_classification -import string def generate_MCAR(df,missing): """ From 3ab25962b6cb82699559c887ab0876ff7aafcfd4 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 11 Mar 2021 15:09:53 +0100 Subject: [PATCH 14/24] Updated example, removed lgbm. --- probatus/missing_values/imputation.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/probatus/missing_values/imputation.py b/probatus/missing_values/imputation.py index 78c3a582..f16b8ed5 100644 --- a/probatus/missing_values/imputation.py +++ b/probatus/missing_values/imputation.py @@ -54,7 +54,6 @@ class ImputationSelector(BaseFitComputePlotClass): import matplotlib.pyplot as plt from probatus.missing_values.imputation import ImputationSelector from probatus.utils.missing_helpers import generate_MCAR - import lightgbm as lgb from sklearn.linear_model import LogisticRegression from sklearn.experimental import enable_iterative_imputer from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer @@ -74,13 +73,13 @@ class ImputationSelector(BaseFitComputePlotClass): sample_posterior=True), 'KNN' : KNNImputer(n_neighbors=3)} #Create a classifier. - clf = lgb.LGBMClassifier() + clf = LogisticRegression() #Create the comparision of the imputation strategies. cmp = ImputationSelector( clf=clf, strategies=strategies, cv=5, - model_na_support=True) + model_na_support=False) cmp.fit_compute(X_missing,y) #Plot the results. From 192f32c469661b0a33cbd432f16ee5c7beab21ed Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 11 Mar 2021 15:15:57 +0100 Subject: [PATCH 15/24] Skipping lgbm tests --- tests/missing_values/test_imputation.py | 27 ------------------------- 1 file changed, 27 deletions(-) diff --git a/tests/missing_values/test_imputation.py b/tests/missing_values/test_imputation.py index 19b5f6ef..45b01d05 100644 --- a/tests/missing_values/test_imputation.py +++ b/tests/missing_values/test_imputation.py @@ -7,8 +7,6 @@ import pandas as pd import numpy as np import pytest -import os -import lightgbm as lgb @pytest.fixture(scope='function') def X(): @@ -63,28 +61,3 @@ def test_imputation_bagging(X,y,strategies,capsys): # Check if there is any prints out, _ = capsys.readouterr() assert len(out) == 0 - -@pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") -def test_imputation_boosting(X,y,capsys): - - #Create strategies for imputation. - strategies = { - 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), - 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), - 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, - sample_posterior=True), - 'KNN' : KNNImputer(n_neighbors=3), - } - #Initialize the classifier - clf = lgb.LGBMClassifier() - cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=True) - report = cmp.fit_compute(X,y) - cmp.plot(show=False) - - assert cmp.fitted == True - cmp._check_if_fitted() - assert report.shape[0]==5 - - # Check if there is any prints - out, _ = capsys.readouterr() - assert len(out) == 0 \ No newline at end of file From f86aebae27f0b45bc15a7edb28cd10542840b513 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Thu, 11 Mar 2021 15:27:57 +0100 Subject: [PATCH 16/24] Adding lgb tests --- tests/docs/test_notebooks.py | 4 ++-- tests/missing_values/test_imputation.py | 27 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/tests/docs/test_notebooks.py b/tests/docs/test_notebooks.py index ce2934a7..67cc11b0 100644 --- a/tests/docs/test_notebooks.py +++ b/tests/docs/test_notebooks.py @@ -14,6 +14,7 @@ NOTEBOOKS_TO_TEST_LGBM = [ 'nb_shap_feature_elimination', + 'nb_imputation_comparision' ] NOTEBOOKS_TO_TEST = [ @@ -22,8 +23,7 @@ 'nb_distribution_statistics', 'nb_metric_volatility', 'nb_sample_similarity', - 'nb_shap_model_interpreter', - 'nb_imputation_comparision' + 'nb_shap_model_interpreter' ] diff --git a/tests/missing_values/test_imputation.py b/tests/missing_values/test_imputation.py index 45b01d05..19b5f6ef 100644 --- a/tests/missing_values/test_imputation.py +++ b/tests/missing_values/test_imputation.py @@ -7,6 +7,8 @@ import pandas as pd import numpy as np import pytest +import os +import lightgbm as lgb @pytest.fixture(scope='function') def X(): @@ -61,3 +63,28 @@ def test_imputation_bagging(X,y,strategies,capsys): # Check if there is any prints out, _ = capsys.readouterr() assert len(out) == 0 + +@pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") +def test_imputation_boosting(X,y,capsys): + + #Create strategies for imputation. + strategies = { + 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), + 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), + 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, + sample_posterior=True), + 'KNN' : KNNImputer(n_neighbors=3), + } + #Initialize the classifier + clf = lgb.LGBMClassifier() + cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=True) + report = cmp.fit_compute(X,y) + cmp.plot(show=False) + + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0]==5 + + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 \ No newline at end of file From d616fcd4a3304cdfae9f229c916be1409bd04c1c Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Sat, 13 Mar 2021 01:33:30 +0100 Subject: [PATCH 17/24] Resolving mr issues --- docs/img/imputation_comparision.png | Bin 20452 -> 26384 bytes docs/tutorials/nb_imputation_comparison.ipynb | 108 +++++++++-------- probatus/missing_values/imputation.py | 113 ++++++++++-------- 3 files changed, 120 insertions(+), 101 deletions(-) diff --git a/docs/img/imputation_comparision.png b/docs/img/imputation_comparision.png index a814cb0aaa378cbefdd5ddf14d4e18e898560c64..6050aa6e8fc9dcaec621e392cddafaa40845f8b1 100644 GIT binary patch literal 26384 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 v>7lRSAI#$oP{%tC4kwnpaGVfEI>+ZN\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
f_0f_1f_2f_3f_4f_5f_6f_7f_8f_9f_10f_11f_12f_13f_14f_15f_16f_17f_18f_19
Missing %0.1890.19750.19650.20950.18950.19550.2020.1980.20150.18850.1990.2080.20550.210.20450.20050.2090.20.21350.186
\n" }, "metadata": {}, - "execution_count": 3 + "execution_count": 33 } ], "source": [ "X_missing = generate_MCAR(X,missing=0.2)\n", - "X_missing.isnull().mean()" + "missing_stats = pd.DataFrame(X_missing.isnull().mean()).T\n", + "missing_stats.index=['Missing %']\n", + "missing_stats" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The data has approximately 20% missing values in each feature." ] }, { @@ -134,15 +151,15 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 34, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-11T14:24:03.511729\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-13T01:22:27.109494\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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/hiAnJwcunXrBoTgdskll5CVlUWjRo2SMqryEZRzzrmtLFy4kKlTp5KRkcHKlSuZPHkyFStWZOLEiQwePJhnnnlmq9fMnz+fN998k1WrVnHYYYdx+eWXF/mep8J4gHLOObeVs88+m4yMDAByc3O5+OKL+fTTT5HE+vXrC31N165dqVKlClWqVGHfffdlyZIlHHjggbvcB5/ic845t5Xq1asXPL7pppvo0KEDH374IS+++OI272WqUqVKweOMjAw2bNhQrD54gHLOObddubm5HHDAAQA8+uijpdauT/E551wa2dGy8FS4/vrrufjii7nlllvo2rX0+iczK7XGyqpWrVqZFyx0zu2Kjz76iMMPPzzV3Sg1hZ2vpJlmttV6dZ/ic845l5Y8QDnnnEtLHqCcc86lJQ9Qzjnn0pIHKOecc2nJA5Rzzrm05PdBOedcOhlaM8nvl7vd3cUptwEhYWzlypVp3bp1cvqbwAOUc86VYzsqt7EjOTk51KhRo0QClE/xOeec28zMmTNp3749LVu25NRTT+Xbb78F4J577uGII47gqKOO4rzzzmPBggU88MAD/PWvf6VFixZMnjw5qf3wEZRzzrkCZsZVV13F888/T506dXjqqae48cYbGTNmDCNGjODLL7+kSpUqrFixglq1anHZZZft9KirqDxAOeecK7Bu3To+/PBDTjnlFAA2btxIvXr1ADjqqKO44IIL6NGjBz169CjxvniAcs45V8DMaNasGW+//fZW+15++WUmTZrEiy++yK233sqcOXNKtC9+Dco551yBKlWq8P333xcEqPXr1zN37lw2bdrE119/TYcOHbjjjjvIzc1l9erV7LnnnqxatapE+uIjKOecSyc7WBZe0ipUqEB2djb9+vUjNzeXDRs2cM0113DooYdy4YUXkpubi5nRr18/atWqRffu3enVqxfPP/889957L+3atUtaX7zcRhJ4uQ3n3K7ychtebsM559xuxgOUc865tOQByjnnUqy8XGrZ2fP0AOWccylUtWpVli5dWuaDlJmxdOlSqlatWuTX+Co+51y5MHDgQKZOnUrDhg0ZM2YMlSpVAmD8+PGMHDkSgC+++IL+/ftz9dVXc9999zF27NiC1/bs2ZNhw4YxYcIEAK688kouvPDCYvfrwAMPZOHChXz//ffFfq90V7VqVQ488MAiH++r+JLAV/E5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\n" }, "metadata": { "needs_background": "light" @@ -151,14 +168,13 @@ ], "source": [ "strategies = {\n", - " 'KNN' : KNNImputer(n_neighbors=3),\n", - " 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", - " 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=False),\n", - " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,\n", - " sample_posterior=True)\n", + " 'KNN Imputer' : KNNImputer(n_neighbors=3),\n", + " 'Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", + " 'Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=False),\n", + " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,sample_posterior=True)\n", " }\n", " \n", - "clf = lgb.LGBMClassifier()\n", + "clf = lgb.LGBMClassifier(n_estimators=2)\n", "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=5,random_state=45,model_na_support=True)\n", "cmp.fit_compute(X_missing,y)\n", "result_plot = cmp.plot()" @@ -173,15 +189,15 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 35, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-11T14:24:14.504658\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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7puSYJuH4t/AcoJJEteHvbilBMOH7wDvAqsqi93MxgDPmVkMKCaYEPFBkmITEalzVrYyraRO2SxBd5+bqhgaN+/kZwycnarmRSTFXknhMygze93du5XffzgN8YmIyBHkcBri+8Zy96GpjkFEJGrUgxIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUhSghIRkUjSWnwCwMmts1K6mrGISHnqQYmISCQpQYmISCQpQYmISCQpQYmISNKVlJTUuA4lKBERSaqCggIeeeSRGicpJSgREUmagoICbrrpJk466STS0tIOOObu1apL08xFRCQpVq1axY033sgdd9xBnz59+PTTT9m1axcAxx9/PGaGu2NmCdWnBCUiIknxxRdf0LlzZ5o0acKrr77K7bffTlZWFvXr16dz587cfvvtCScnUIISEZEaevXVV8nJyaFHjx4UFRUxZcoUVq9ezciRI7niiit4++23+e1vf8uaNWvo1KlTwvUqQQkAq9du5vizb011GCJSx/699H9qdP6CBQsYPnw4jz32GC1btuTcc88lFouxefNmrr76agC6d+/OPffcU+1JE0pQIiJySD7++GPGjRvHjBkzyMvLo6ioiKysLM455xyA/c+b/vKXv7Bp0yays7OrVb8SlIiIVEtZ4mnQoAGdOnWib9++fPTRR9x0001kZWXRvn17LrzwQtq3b8/vf/97pk6dysyZM8nJyalWO5pmLiIi1bJlyxYAGjRowPvvv8/48eO5+eab6d27N/369WPPnj3MnDkTgBNOOIHHH3+czp07V7sdJSgREUlYQUEBrVu3pqCggLS0NO644w7WrVvH9u3bue6667jsssvo3r07GzZsAOCCCy7glFNOOaS2lKBERCQhBQUFjBkzhosuuojVq1fj7rRr1468vDzefvtt7r77bgB27NjBtm3b2LlzZ43a0zMoERGp0iuvvMLo0aOZNGkS6enp3HDDDQwbNozmzZtz8cUX06pVK8aOHcuaNWtYtmwZc+fOpWnTpjVq06q79IR8M2U0OtaP+Y/hqQ5DROpYotPMH330UTp06EBubi4Aw4YNY9++fUybNo309HQgWCD2ww8/JCsri6OPPjrhGMzsdXfvVn6/hvhERKRK11xzDbm5uezbtw+AESNGkJGRQWFhIQB79+4lLS2N1q1bVys5HYwSlIiIVKlstK1eveDJUIcOHdi8eTMPPfQQABkZGUlvUwlKRES+Zt26dSxbtozi4mJKSkr2L/QKUFpaSlZWFhMnTuSFF15g+fLltRKDJkmIiMgB5s2bR35+Pjk5OeTk5NCtWzeGDh1KkyZNKC0tJRaLUVpaSnZ2Nv3796dt27a1Eod6UCIisl9xcTFz5sxh6tSpvPjiiwwcOJBNmzYxYcIEdu7cSSwWpI1YLEZ2djb5+fk0b968VmJRghIRkQPs2rWL9evXAzBo0CAGDBhAcXExs2fPBmDFihWsWrUKgMzMzFqLQwlKRET2S09PZ9SoUcybN4/FixcTi8Xo0aMHXbp0YdGiRRQVFbFkyRJatmwJUK3vd6ouJSgRETlAz5496devHzNmzGDRokWkpaUxePBgCgsLKSwsZOTIkRxzzDG1HocmSUSYmX3m7o3C7fOB3wHnAsOAW4A27r6lgrIO/Nbd/zt8fxPQyN3H1vlFiMhhJzMzkyFDhmBmjB8/nrVr11K/fn22bt1Ko0aN6iwOJajDgJmdA0wEznP3D8Iu9Tbgv4GfV3DKl8BFZjbe3bfVXaQi8k3RrFkzrr32Wjp27MjDDz9MZmYmM2fOpEWLFnUWgxJUxJlZL+APwPnu/q+4Q9OAoWY2wd23lzttHzAZGAnoa3JFhC1vz6xwf58+Syvcv3DhQjIyMsjLy6NXr16Y2f4ZfHVFz6CirT7wF+BCd19b7thnBEnqvyo59wFgiJlVulqjmV1nZivNbGVp8RfJiFdEvoHS0tLqPDmBelBRVwz8HfgRFSeiicAbZnZ3+QPuvsvM/gj8DCiqqHJ3n0zQ0yKj0bFaNVjkG+zozldVuH/hwsQWi00F9aCirRS4DMg1s/zyB939U+Ax4MZKzv8dQXJrWEvxiYjUGiWoiHP3L4ALCIbrflRBkd8CP6GC3nD4bOoJgiQlInJYUYI6DISJ5vvAGDP7Yblj24AnCZ5XVeQe4KjajVBEJPn0DCrCyv6uKdzeBJStyDi/XLlRwKhKzvsYaFC7kYqIJJ96UCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklKUCIiEklazVwAOO2UHFYuje43a4rIkUc9KBERiSQlKBERiSQlKBERiSQlKBERiSQlKBERqRXujrsf8vlKUCIiklTPP/88Tz31FGYGcMhJSglKRESSZteuXYwbN45Bgwbx5JNPYmaYGaWlpdWuS38HJSIiSdOkSROGDx9Obm4uw4YNY/fu3Vx99dXEYtXvDylBiYhIUpSWlhKLxdizZw89e/bkyiuv5Nxzz+Wdd94B4M4779xfJhFKUALApvUfMfKCX6c6DBGpY/c+fVuN63jttddo2bIlrVq1AuDcc89l4sSJ/P73v2fMmDH84he/4Cc/+QlAtXpSegYlIiKHbMGCBVx44YVs2LCBkpISAOrVq8cXX3zBE088wbRp0xg7diwPPvggTzzxRLXqVg9KREQOyccff8y4ceOYMWMGvXr1Ys+ePaSlpdG2bVtOOOEEhg8fziOPPMKll15Kr169OProo6tVvxKUiIhUi7tjZjRo0IBOnTrRt29fPvroI2666SaysrJo3749p556Ku+88w7HH388+/bto2fPntVuRwlKRESqZcuWLbRo0YIGDRrw/vvvM378eNasWUPv3r1p2rQp//znP1m5ciUDBgygpKSEtLS0Q2pHz6BERCRhBQUFtG7dmoKCAtLS0rjjjjtYt24d27dv57rrruPyyy8nNzeXjRs3EovFSEtL2/8Hu9WlBCUiIgkpKChgzJgxXHTRRaxevRp3p127duTl5fH2229z9913A/Dpp5+ydetWdu7cWaP2NMQnIiJVeuWVVxg9ejSTJk0iPT2dG264gWHDhtG8eXMuvvhiWrVqxdixY1mzZg3Lli1j7ty5NG3atEZtKkGJiEiVNm7cyOTJk8nNzQWgY8eOjBo1imnTptGoUSO+973v0bt3bz788EOysrKqPWOvIhriExGRKl1zzTXk5uayb98+AEaMGEFGRgaFhYUA7N27l7S0NFq3bp2U5ARKUCIikoCyFcnr1QsG3jp06MDmzZt56KGHAMjIyEh6m0pQIiLyNevWrWPZsmUUFxdTUlKCme1PUqWlpWRlZTFx4kReeOEFli9fXisx6BmUiIgcYN68eeTn55OTk0NOTg7dunVj6NChNGnSZP9ir6WlpWRnZ9O/f3/atm1bK3GoByUiIvsVFxczZ84cpk6dyosvvsjAgQPZtGkTEyZMYOfOnfsXe43FYmRnZ5Ofn0/z5s1rJRYlKBEROcCuXbtYv349AIMGDWLAgAEUFxcze/ZsAFasWMGqVasAyMzMrLU4lKBERGS/9PR0Ro0axbx581i8eDGxWIwePXrQpUsXFi1aRFFREUuWLKFly5YAh7xKRCKSkqDM7FYzW2Nmq83sDTP7Trh/ipl1TFIbn1Wz/EYzW1xu3xtm9nYy4jlIu2PN7KZabqOPmXWvzTZE5MjVs2dP+vXrx4wZM1i0aBFpaWkMHjyYwsJCCgsLGTlyJMccc0ytx1HjSRJm9l1gAHCGu39pZkcBGQDu/uOa1l9Djc2slbtvMrMOKY4lmfoAnwF/T/QEM6vn7vtqLSIR+cbIzMxkyJAhmBnjx49n7dq11K9fn61bt9KoUaM6iyMZPahjgW3u/iWAu29z90IAM1toZt3C7c/M7H/DntYLZpYbHn/fzH4YlhlqZk+F+9eb2S8ratDMbjazFWGPbdxBYnsCuDzcvhKYHVdHWhhPWT0/Cfc3MrMXzWyVmb1lZgPD/W3M7F0z+0N4Dc+ZWdbBbkx4Hfea2crw3DPNbF54bb+Jq3etmc0Ky8w1swbhsY1hwsfMuoX1tQGuB0aGPcKeZtbczP4cXssKMzs7PGesmc0ws6XAjIPFKiJHjj+9Om3/q0+fPvtf8Zo1a8a1117LLbfcwksvvcTLL7/MzJkzadGiRZ3FmYwE9RzQyszeM7MHzax3JeUaAi+5eydgN/Ab4FxgEPCruHK5wMXAacClZQmujJn1A9qF5boAXc2sVyVt/hm4KNz+AfDXuGM/Ana6+5nAmcC1ZtYW2AMMcvczgDzgHvtqkLUd8EB4DZ+GcVZlr7t3AyYBTwE3Ap2BoWaWHZY5GXjQ3TsAu4AbKqvM3TeGdd3r7l3cfTFwX/j+zDCmKXGndAT6uvuV5esys+vC5LmyaO/nCVyKiBxJMjIyyMvLY9asWUybNo3TTz+9Ttuv8RCfu39mZl2BngQf6HPMbLS7Ty9XdC9QEG6/BXzp7sVm9hbQJq7c8+7+CYCZzQN6ACvjjvcLX/8I3zciSByLKgjvE2CHmV0BvAt8Ua6e08zskvB907CeD4E7wqRXCuQAZb8ybHD3N8Lt18vFXZn5cde8xt0/Cq/tfaAVQaLb5O5Lw3IzgZ8BdydQd5m+QMe4h5VNzKysHz7f3YsqOsndJwOTAVo0zfFqtCcih7FLzxq+f/vep2+rsvyhfp9TTSXlD3XdvQRYCCwME841wPRyxYq97M+Qgw/+siHBUjOLj6P8B2X59waMd/eHEwxvDvAAMLSCeka4+7MH7DQbCjQHuoYJdCNQNo/yy7iiJcBBh/jKnVPKgeeX8tX9r+ya9/FVL/dgczljwFnuvid+Z5iw1DUSkcNSjYf4zOxkM2sXt6sL8EENqjzXzL4dPt+5EFha7vizwPCyHoKZ5ZjZwVYmfBK4KzyvfD0/NbP0sJ72ZtaQoCe1JUxOeUDrGlxLoo4PJ5sADAaWhNsbga7hdvxw4m6gcdz754ARZW/MrEutRCkiUoeS8QyqEfComb1jZqsJnnmMrUF9ywmeHa0G/uzu8cN7uPtzwGPAsrC3NpcDP6wpV363u09w973lDk0B3gFWhVPPHybo0cwCuoV1Xw2srcG1JGodcKOZvQs0Ax4K948D7jOzlQQ9tjJ/BQaVTZIgGBLsFk72eIdgEoWIyGHNvhp1S71weK2bu/9nqmOpK+GsvL+5e+dUxtGiaY4P7qG8JnKkSeQZVG0zs9fDyWQH0EoSIiISSZFazTyc+Tc9xWHUqXDaeEp7TyIiUaQelIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRFKk1uKT1GnV7thIrGosIlJGPSgREYkkJSgREYkkJSgREYkkJSgREYkkJSgREUkqd09KPZrFJyIiNfL6669TVFREw4YNOf300zGzpNSrBCUiIofsmWeeIT8/n27duvHFF18wYsQIvvvd7wJBT6omyUpDfCIickj+/ve/c9tttzF58mSmTJlC48aNKSoqYs+ePQCYWY2G+9SDEhGRQ7Jv3z7uvfdecnNz2b59O8888wybNm3ixBNP5Oijj+a2226rUQ9KCUoAWO876L/3z6kOQ0Rq2YKMi2tcx5o1a+jUqRO9evUCoLS0lPvvv59bb72V4cOHs2rVKiZMmMDq1as57bTTDrkdDfGJiEjCnn32WYYMGcJ77723f18sFuPnP/85119/PRkZGZx11lmkp6dTWlpao7bUgxIRkYTMnz+fO++8kwceeID27dsfMAmifv36+8s99dRTbNiwgaOOOqpG7SlBiYjIQZX1hMaMGUPTpk05++yz+fjjj5kxYwbbtm3j8ssv56STTqJx48bcddddzJo1i1mzZnHcccfVqF0N8YmIyEFt2bKFWCzG0qVL2bFjB5dccglXXXUV+/btY8eOHdx3332sXr0agJNPPpnHH3+czp0717hdJSgREalUQUEBbdq0YcGCBTRu3JjXXnuNN998k+7duzN69Ggefvhhjj32WB599FEABg4cSIcOHZLStob4RESkQgUFBYwZM4ZBgwbx1ltvkZeXR8OGDXn33XeJxWL7n0GddNJJ7N27l5KSEtLS0pLWvhKUiIh8zSuvvMLo0aOZNGkS6enp3HDDDQwfPpzMzEzq1fsqdUyZMoWHHnqIP/7xj0lNTqAhPhERqcDGjRuZPHkyZ511Fl27dqVjx46MGjWKffv2AVBSUsK7777L/PnzmT59Op06dUp6DEpQIiLyNddccw25ubn7E9KIESNIT0+nsLAQgLS0NE488UQee+wxTj311FqJQQlKRES+pmwNvbLhvA4dOrB582YefPDB/WUyMjJo1KhRrcWgBCUiIqxbt45ly5ZRXFxMSUnJAQu9lpaWkpWVxcSJE3nhhRdYvnx5ncSkSRIiIke4efPmkZ+fT05ODjk5OXTr1o2hQ4fSpEkTSktLicVilJaWkp2dTf/+/Wnbtm2dxKUelIjIEay4uJg5c+YwdepUXnzxRQYOHMimTZuYMGECO3fuJBYL0kQsFiM7O5v8/HyaN29eJ7EpQYmIHOF27drF+vXrARg0aBADBgyguLiY2bNnA7BixQpWrVoFQGZmZp3FpQQlInIES09PZ9SoUcybN4/FixcTi8Xo0aMHXbp0YdGiRRQVFbFkyRJatmwJkLSvc09ElQnKzG41szVmttrM3jCz74T7p5hZx2QEYWafVbP8RjNbXG7fG2b2djXrmW5ml4TbSbkeM+tjZn+raT1VtNHGzAbXZhsicuTo2bMn/fr1Y8aMGSxatIi0tDQGDx5MYWEhhYWFjBw5kmOOOabO4zroJAkz+y4wADjD3b80s6OADAB3/3EdxHcwjc2slbtvMrMaL/wUgeupjjbAYOCxRE8ws3ruvq/WIhKRw1ZmZiZDhgzBzBg/fjxr166lfv36bN26tVankVelqh7UscA2d/8SwN23uXshgJktNLNu4fZnZva/YU/rBTPLDY+/b2Y/DMsMNbOnwv3rzeyXFTVoZjeb2YqwxzbuILE9AVwebl8JzI6rIy2Mp6yen4T7zczuN7N1ZvYCcHTcOfHX85CZrQyvZ1xcmY1mNs7MVpnZW2Z2ysFunpmNNbNHzWyxmX1gZheZ2V3huQVmlh5Xb9n+5WZ2Urh/fw+v7D6Hm3cCPcNe48iDXG+fsO35wDsHi1VEvrleO/f2/a8+ffrsf8Vr1qwZ1157LbfccgsvvfQSL7/8MjNnzqRFixapCZqqE9RzQCsze8/MHjSz3pWUawi85O6dgN3Ab4BzgUHAr+LK5QIXA6cBl5YlhDJm1g9oF5brAnQ1s16VtPln4KJw+wfAX+OO/QjY6e5nAmcC15pZ2zCek4GOwNVA90rqvtXdu4Vx9jaz+O8s3ubuZwAPATdVcn68E4HvAT8EZgIvu/upQBFwQVy5neH++4HfVVHnaGCxu3dx93sPcr0AZwD/5e7ty1diZteFiXjl3m27ErgUEfkmy8jIIC8vj1mzZjFt2jROP/30lMZz0CE+d//MzLoCPYE8YI6ZjXb36eWK7gUKwu23gC/dvdjM3iIYjirzvLt/AmBm84AewMq44/3C1z/C940IEtaiCsL7BNhhZlcA7wJflKvntLjeR9Ownl7AbHcvAQrN7KVKLv0yM7uO4P4cS5DQVofH5oX/vs5XCfJgFsTdizQOvE9t4srNjvv33gTqjVfZ9e4Flrv7hopOcvfJwGSApl1P9Gq2KSKHie88/1U/YUHGxVWWT/air4eqyj/UDT/MFwILww/Za4Dp5YoVe9mfHEMpUDYkWGpm8W2U/xAs/96A8e7+cELRwxzgAWBoBfWMcPdnD9hpdn5VFYY9j5uAM919h5lNB+LnVX4Z/ltCYn/oHH8vyt+nyu5N2fY+wl6umcUIn/9VFDYVX28f4PMEYhQRiZyDDvGZ2clm1i5uVxfggxq0d66ZfdvMsoALgaXljj8LDDezRmH7OWZ2NJV7ErgrPK98PT+Ne8bT3swaEvTELg+f2RxL0CssrwnBh/pOM2sB9K/WFR66y+P+XRZubwS6hts/BNLD7d1A47hzK7teEZHDVlU9gEbA783sWwS/zf8TuK4G7S0neHZ0HDDT3eOH93D358IZecssmGv/GXAVsKWiytx9NzABvjY3fwrB8NkqCw5sJUiITxI8D3oH+DdfJYL4Ot80s38Aa4FNfD2J1pZmZraaoMd1ZbjvD8BTZvYmwdBgWW9oNVAS7p8O3EfF1ysictiyr0acarkhs6FAN3f/zzpp8DBiZhsJ7s22VMXQtOuJ3n3ZXalqXkTqSCLPoOqamb0eTkw7gFaSEBGRSKqz1czDmX/T66q9w4m7t0l1DCIiUaMelIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRFKdLRYr0dbOmkVyGX4ROXKpByUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpGkBCUiIpFk7p7qGCQCzGw3sC7VcQBHAdsUQyRigGjEoRi+EoU4aiOG1u7evPxOfeW7lFnn7t1SHYSZrUx1HIohWnEohmjFUZcxaIhPREQiSQlKREQiSQlKykxOdQChKMShGL4ShTgUw1eiEEedxaBJEiIiEknqQYmISCQpQYmISCQpQR1hzOz7ZrbOzP5pZqMrOF7fzOaEx18zszYpiKGXma0ys31mdkmy269GHKPM7B0zW21mL5pZ6xTEcL2ZvWVmb5jZEjPrWNcxxJW72MzczGplinEC92KomW0N78UbZvbjuo4hLHNZ+N/FGjN7rK5jMLN74+7Be2b2abJjSDCO483sZTP7R/j/yPlJD8Ld9TpCXkAa8C/gBCADeBPoWK7MDcCkcPsKYE4KYmgDnAb8EbgkhfciD2gQbv80RfeiSdz2D4GCuo4hLNcYWAS8CnRL0c9jKHB/bfz3UI0Y2gH/AJqF749Oxc8jrvwIYFqK7sVk4KfhdkdgY7LjUA/qyJIL/NPd33f3vcDjwMByZQYCj4bbc4FzzMzqMgZ33+juq4HSJLZ7KHG87O5fhG9fBY5LQQy74t42BJI9qymR/yYAfg1MAPYkuf3qxlGbEonhWuABd98B4O5bUhBDvCuB2UmOIdE4HGgSbjcFCpMdhBLUkSUH2BT3/sNwX4Vl3H0fsBPIruMY6kJ14/gRsCAVMZjZjWb2L+Au4Gd1HYOZnQG0cvenk9x2teIIXRwOJ801s1YpiKE90N7MlprZq2b2/RTEAEA45NwWeCnJMSQax1jgKjP7EHiGoDeXVEpQIlUws6uAbsD/pqJ9d3/A3U8Efg6Mqcu2zSwG/Bb477pstxJ/Bdq4+2nA83zV069L9QiG+foQ9F7+YGbfSkEcEAzBz3X3khS1fyUw3d2PA84HZoT/vSSNEtSRZTMQ/1vnceG+CsuYWT2CrvsndRxDXUgoDjPrC9wK/NDdv0xFDHEeBy6s4xgaA52BhWa2ETgLmF8LEyWqvBfu/kncz2AK0LWuYyDoScx392J33wC8R5Cw6jKGMldQO8N7icbxI+AJAHdfBmQSLCSbPMl+qKVXdF8Ev/29TzAsUPbgs1O5Mjdy4CSJJ+o6hriy06m9SRKJ3IvTCR4Ut0thDO3itn8ArEzVzyMsv5DamSSRyL04Nm57EPBqCmL4PvBouH0UwTBYdl3/PIBTgI2Eiy2k6OexABgabncgeAaV1HiSfmF6RftF0BV/L/zgvTXc9yuCHgIEvwX9CfgnsBw4IQUxnEnwm+rnBL23NSm6Fy8AHwNvhK/5KYjhPmBN2P7LB0setRVDubK1kqASvBfjw3vxZngvTklBDEYw5PkO8BZwRSp+HgTPf+6sjZ9DNe5FR2Bp+PN4A+iX7Bi01JGIiESSnkGJiEgkKUGJiEgkKUGJiEgkKUGJiEgkKUGJiEgkKUGJRFS4cvjMuPf1wtW8/1bFeV0OtrK0mXUzs4nVjGWumZ0Qbm8MV1hfbWavxK/ybmbHmdlTZrbezP5lZveZWUbc8VwzWxSukv0PM5tiZg0qafN3ZrY5fnUCMxtrZjeVK7fRzI4Kt48xs8fDtl83s2fMrL2ZNTezgupcs6SeEpRIdH0OdDazrPD9uSS26kYXgr9h+Rozq+fuK9094TX9zKwTkObu78ftzvNgyaGFhMsvhYsKzwP+4u7tCNatawT8T3i8BcHf2P3c3U9299OBAoLVKsq3GSP4Y9xNQO8E4zTgSWChu5/o7l2BXwAt3H0r8JGZnZ3odUvqKUGJRNszwAXh9gErV5tZQzObZmbLw97IwLC38ivg8vD7gi4Pex0zzGwpwXppfcp6YWbWyMweiesRXVxBDEOApyqJbxlfLSL6PWCPuz8C4MEacSOB4WEv6UaCVRiWlZ3s7nPd/eMK6u1D8Ee5D4XXnYg8oNjdJ8XV/6a7Lw7f/iW8FjlMKEGJRNvjwBVmlknwHVmvxR27FXjJ3XMJPpz/F0gHbif47qou7j4nLNsR6Ovu5T/sbwN2uvupYY+oopWxzwZeryS+7xN88AN0Kl/Og68L+TdwEsGafpXVU15ZMn4SuMDM0hM4p6r6VwI9E2xfIkAJSiTCPPherDYEH9jPlDvcDxhtZm8QDLVlAsdXUtV8dy+qYH9f4IG49nZUUOZYYGu5fS+b2WagP0lesDTsBZ5PMFS4iyApn1cWYiWnJbIkzhagZc0jlLqiBCUSffOBu/l6IjDg4rCn1MXdj3f3dyup4/MatF9EkPzi5QGtCdZgGxfue4dyK4ybWROCpPlPgiG7RFYgPw/4FvBWuIJ6D74a5vsEaFaufGPg0wTqzwyvRQ4TSlAi0TcNGOfub5Xb/ywwouwbj83s9HD/biqYeFCJ5wmeDRHWUf7DH+BdgiG6A3jwhZb/D7jazL4NvAg0MLOrw7rSgHsIvjPoC+B+4Boz+05cexeFkyfiXQn82N3buHsbghW1zw2fYy0CfmhmjcvOB94Mn3e9BNQ3s+vi6j/NzMqG9doDbyd2WyQKlKBEIs7dP3T3iqaF/5rgmdNqM1sTvodgpe+OZZMkqqj+N0AzM3vbzN4k6BmV9zTBpIWKYvuIoGd3owcrTw8CLjWz9QQrYe8B8sOyHxN8hcvd4TTzdwl6S7vL6guT0PfDNsva+BxYAvwgHPK8H1gSDm1eD/w4LFfWft9wmvkaghXQ/y+sKi++Xok+rWYuIgcVTnN/GTjbU/ftrTVmZouAgZU8Z5MIUoISkSqZ2XnAu+7+71THcijMrDlBgv1LqmORxClBiYhIJOkZlIiIRJISlIiIRJISlIiIRJISlIiIRJISlIiIRNL/D0RxYoZmaHozAAAAAElFTkSuQmCC\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-13T01:22:45.032536\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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ye3CCy8kLy+PVq1aJaVV5S0o55xzWygoKGDSpEnk5OSwbNkyJk6cSNWqVZkwYQJDhgzh6aef3uI9s2bN4s0332T58uUccMABXHrppaV+5qkknqCcc85t4fTTTycnJweAwsJCzj//fGbPno0k1q1bV+J7evbsSY0aNahRowa777478+fPp3nz5jscg3fxOeec20Lt2rWLXw8dOpQuXbrwySef8MILL2z1WaYaNWoUv87JyWH9+vU7FYMnKOecc9tUWFjInnvuCcDo0aPTdl7v4nPOuSyyvWnhmXD11Vdz/vnnc9NNN9GzZ/rik5ml7WQVVfv27c0XLHTO7Yj//Oc/tG3bNtNhpE1J1ytpqpltMV/du/icc85lJU9QzjnnspInKOecc1nJE5Rzzrms5AnKOedcVvIE5ZxzLiv5c1DOOZdNhtdL8ucVbnP3ziy3AaFgbPXq1cnNzU1OvAk8QTnnXCW2veU2tic/P586deqkJEF5F59zzrlNTJ06lWOPPZYjjzySE044gblz5wJw1113ceCBB3LooYdy5plnMmfOHB544AH+9Kc/0a5dOyZOnJjUOLwF5ZxzrpiZcfnll/Pcc8/RuHFjxowZw29/+1seeeQRbr31Vr766itq1KjB0qVLqV+/PpdcckmZW12l5QnKOedcsTVr1vDJJ59w/PHHA7BhwwaaNWsGwKGHHsrZZ59N79696d27d8pj8QTlnHOumJlx0EEH8e67726xb/z48bz99tu88MIL3HzzzcyYMSOlsfgYlHPOuWI1atTghx9+KE5Q69atY+bMmWzcuJFvv/2WLl26cNttt1FYWMiPP/7IrrvuyvLly1MSi7egnHMum2xnWniqValShbFjxzJw4EAKCwtZv349V1xxBfvvvz/nnHMOhYWFmBkDBw6kfv369OrVi379+vHcc89x991307lz56TF4sttJIEvt+Gc21G+3IYvt+Gcc66c8QTlnHMuK3mCcs65DKssQy1lvU5PUM45l0E1a9Zk0aJFFT5JmRmLFi2iZs2apX6Pz+JzzrkMat68OQUFBfzwww+ZDiXlatasSfPmzUt9vCco55zLoGrVqrHPPvtkOoys5F18zjm3E6655ho6d+7Mueeey7p164q3jxs3jry8PPLy8mjRogUjR44EoKCggFNOOYUuXbowbNgwAGbMmEHnzp055phjGDNmTEauIyuZmf/byX9HHnmkOecqn2nTptnZZ59tZmY33XSTPf744yUel5eXZ3PmzDEzszPPPNMKCgo22d+zZ0+bPXu2rV+/3o499lhbtWpVagPPMsAUK+F3q3fxJcP3HyV/kTHnXPbYSnWHSZMm0b17dwB69OjBqFGj6N+//ybHzJs3jzVr1rD33nuzbt065syZw6BBg1iwYAE33XQTubm5zJ8/n9atWwNhTOqTTz6hffstnlutdDxBOefcDlqyZElxpe969eqxePHiLY555pln6Nu3LwALFy5k2rRpjBkzhurVq9OrVy8mT55MixYt+OCDDzjooIN47733WLJkSVqvI1t5gnLOuR1Uv359li1bBkBhYSENGjTY4pixY8cyatSo4uNbt25NixYtgDBBYv369dx+++386le/QhJt27aladOm6buILOaTJJxzbgfl5uYyYcIEAF599VU6deq0yf758+cXd+8B1KpVi4YNG7J06VJWrFjBmjVrqFq1Kq1ateKll17iqaeeokqVKhx00EFpv5Zs5AnKOed2ULt27WjSpAmdO3dm5syZ9O3blwEDBhTvT+zeKzJixAh69epF165dueGGGwAYPXo0Xbp04dRTT2Xo0KFUqeK/msGrmSdF+z1ybMrFdTIdhnMuCfJGr9hyY8ujSzw2Pz8/tcFUEl7N3DnnXLnikySccy5B/gW1t9w4PD/tcThvQTnnnMtSnqAASYr/LX2ZXeeccylV6ROUJJmZSToBuEJSjUzH5JyrGMpap+/OO++kU6dOnHDCCcydOxeAu+66i5YtW9KvX7+MXEMmVfoEFZPTT4GewCQzW5PpmJxz5d/06dP57rvvmDhxIm3atGHs2LHF+/r06UN+fj75+fnsu+++9O7dm3nz5jF+/Hj+/e9/c+ONN3LjjTcCcOaZZ/L6669n6jIyqlJPkpCUA+QAjwHrgd8UbTezDdt578XAxQA5dRvTcvWoFEfrnMuYa8dvc/ecW3tusa2sdfref/99DjroICRxxBFHcNFFFwGw++67s3LlyiRdSPlSKVtQRWNOQI6ZrQU6AjWB2wDMbIOkbd4bM3vIzNqbWfucXbxQrHNuU0uWLKFu3bpA6er07bvvvkyZMoU1a9YwYcKEEo+vbCpdCyphzKkbcIakacDbQHvgI0lrzOy3ZrYxo4E658q1stbpa9SoEZdeeindu3enXbt2tGnTJq3xZqNK14KKyek4YCQwFvgZ8CszW0hIUpdKuj2TMTrnyr+y1ukDOO+883jrrbfo06cPeXl56Qw3K1WaBJXQrQfQDrgQWALUAW4CMLP5wIHAy+mOzzlXsexInb4zzzyTrl278uijjzJo0CAAnnzySc455xwmTpxIt27d2Lix8nTuVPhafJJ2BVqa2Yw4W+9boAtwNbAOONnM5knqBexlZvfF98lKeXNqNNvPmp3/59RcgHMuK817/Nri10e1agh4bb4dVZlr8dUGHpH0APBnoBHwATAbeDYmpw7ArcCXRW8qbXJyzjmXGhV6kkRsBc2TdA/wIHCfmX0sqRrwFNBF0vvABuA6M3slk/E658qPpmfdWvw6v4Rp5m7nVegEFSdENAPmA+cAD0r60szuAcZIeoHwHFTtmMhK3a3nnHMutSpsF5+kKpIaA38FmpvZWKA7cIOkcyS1Be4C1pnZPPBuPeecyyYVtgUVn2P6QdJfgZ9L2mhmj0jqAfwNWA6MMLPVGQ3UOedciSpkgoqto1OA281snKR1wK8k1TSz+yTlErr1CrxbzznnslOFS1DxeafWQFvgSkl/MrMXJTUC7pb0I/APM1sCyenWO2TPekzxQVLnnEuqCjEGlbCe0x5AIzN7AXgC2AsYFA97B3gXmOFljJxzLvtViAQVZ+udArwOPCdpFPANMAE4VNK/gOeB28zsowyG6pxzrpQqRBefpP0JpYvOBGYAfwEGANcRWk4nAV+a2aSMBemcc65MynULSkETYATQDFgVu+9+QSj8epWZLTazf3hycs658qVcJqiiMScL5gP3AvOAYyXtFZPUQ4Rae84558qhctnFF8ecTgZOBT4E/gncAfwSOFrSe4TJEQMzF6VzzrmdUV5bUC2AawgFX1sQWlCzgD8CTYAjgMvN7KXNltlwzjlXTpSbBJUwlfwA4FjgUTP7A3A38Gn8bwEwHKgONJPU2B/Cdc658qlcJKiEZdqPJ0wXHwicJ6mJmX1PGG/6glCt/D3gVaADsDZjQTvnnNspWZ2gJOVA8ZjT4cBvgJ7AT4GFhEoRjWOx13sI3X6Y2eOEGXyFmYncOefczsraBBVLE30kaa+46RigM2F13I3AJcC+wO9ikpprZv+VVAXAzH7MSODOuUrjmmuuoXPnzpx77rmsW/e/ScPjxo0jLy+PvLw8WrRowciRIwEoKCjglFNOoUuXLgwbNgyAWbNm0alTJ4455hjOP/98fFTif7I2QZnZQuAN4G1JTc1sJGGm3m8kHWVmC4DLgJZAw4T3eRkj51zKTZ8+ne+++46JEyfSpk0bxo4dW7yvT58+5Ofnk5+fz7777kvv3r0BGDx4MPfffz9vvvkmN9xwAwD33Xcfv/vd73j77bepWrUq7777biYuJytl5TRzSVXMbKOZXSFpFTBZUgczu0HSIOAaSXeY2TuSTjOzzD7v9P1HMLxeRkNwzqXQ8C1HCyZNmkT37t0B6NGjB6NGjaJ///6bHDNv3jzWrFnD3nvvzbp165gzZw6DBg1iwYIF3HTTTeTm5nLggQeydOlSAJYtW0aDBg1SfjnlRVYmKDPbmJCkrosT+N6PSepOSTWA30o6i7Cuk3POpdWSJUto1qwZAPXq1WPx4sVbHPPMM8/Qt29fABYuXMi0adMYM2YM1atXp1evXkyePJnu3btz/PHHM2zYMI444gjatGmT1uvIZtncxbcxYTzpOuAxYJKkPcxsBHCZmS01sw0ZDdQ5VynVr1+fZcuWAVBYWFhiy2fs2LH069ev+PjWrVvTokULmjZtSrVq1Vi/fj1Dhgzh4YcfZtasWTRo0ICXX345rdeRzbImQSU855RTtC0mqaKZfNcBzwJTJVU3s68yEqhzzgG5ublMmDABgFdffZVOnTptsn/+/PnF3XsAtWrVomHDhixdupQVK1awZs0aqlatipnRqFEjABo1akRhoU8+LpIVCSrhOafuhFl5AyXtCWBmGxJaUlcCeWbmzzc55zKqXbt2NGnShM6dOzNz5kz69u3LgAEDivcndu8VGTFiBL169aJr167FkySuvfZaBgwYwLHHHsu0adOKJ1Q4ULZMaZTUhVCy6CLgaWAUMMzM1sf9VWKLKuuWaG+/R45NubhOpsNwziVB3ugVW25sefQWm/Lz81MfTCUhaaqZtd98e1a0oKITCMVeNwDfAfeb2fqELr6N8b9ZlZycc86lRsZn8UlqCSwC/kMoYdQc6GdmBZLOBaoBj2QuQudcZZJ/Qe0tNw7PT3scLsMtKEm7AbcABxNWwt0L+IOZfS3pMOBq4PsMhuiccy5D0t6CkpRTNDXczJZI+pCQpI4H/gqcJOlioDZwvZm9ku4YnXPOZV7aWlBxafaiWXn7Sjowfn078DFwjJk9SFgu4xfAOWb2nK/n5Jwrb8pao+/ee++lQ4cOdOjQgaeffhqA4cOHc8ghh5CXl8egQYMych2ZlpYEFZPMQ5LaSKoKXAsMkvQXSTUJY1CnAJjZN2b2ddFzTumcFCHpaEmd03U+51zFsyM1+u677z4mTZpEfn4+I0aMKD7+lltuIT8/nzvvvDPdl5EV0tLFF59x6gu0Am4ws1/EauX3AyOBecClkl43s+fTEdPm4nIedwAXlvL4i4GLAXLqNqbl6lEpjM45l1HXji9x85xbe26xraw1+gBatWrFqlWrWLlyJfXr1y8+bujQodx+++0MGzaMrl27Juliyo+UJihJtYE18VmmFoTp4wMk1YoP3Z4uqSfQlLC44IJUxrONOA8CrgAmmdmnpXmPmT1EWCiRGs3286nvzjmg7DX6AHr27Enbtm3ZsGEDDz/8MAADBw5k+PDhzJ8/n27dujF16lSqV6+enovIEqnu4ssFxko6BRhNeMZpP+BUSfcCmNl4M3uYsM7TeymOZ2vWEO5Fa0kHZygG51wFUNYafcuWLeP+++9n9uzZzJo1i6FDh2Jmxe9r0qQJbdu2paCgIH0XkSVSmqDM7DVgF2AsoWtvtZktAdoD3ST9NeHwxfC/mnyplFD3r6OkY4F6hIkZCwjJ08sJO+d2SFlr9FWpUoVatWpRs2ZNateuzdq1azGz4iS3cuVKZs2aVdwqq0xSlqASEs044GXgTkm7QJheTli2/RhJB8XyRWmrFBHHxE4idNHtQ1gYsQNwG6Er8lxJbVMdh3Ou4ilrjb46depw2mmn0bFjR3Jzc7nsssuoUqUKgwcPJjc3ly5dujBkyBBq1aqVicvJqKTX4kso/LofUMXMPovbHwaOMrOD4kO4ewIvp7t0USw8Wxd4krBsfDtgCNDHzL6TtA/wO+BmM/u8NJ9Zo9l+1uz8P6cmYOdc1ippkoQru7TV4ovJqReh4OuNkl6Q1NLMLiIslfEx8DghOaYlOUmqLqloydu6wEpC5YqTgEHAuTE5nUGYrHFJaZOTc67ymff4tcx7/Fry8vIyHUqFlvRZfJJ+AvyeUBkiD3gQGCHpejM7T1IesNjMPk72ubcSTxWgC1BTUmPgVKA30IiQnJqa2QJJHYDrgJ+b2XfpiM0559zWJTVBxW69aYQlMw4hJIDDgLuBJyVdZGb5yTzn9sQlOgoI402tgMGx1NLPYy3AJyW9BfQBfmdm09IZn3Ou/Gl61q0A5HsXX0olrYtP0tFAPtDMzD4EOgNPmdnXwBPARkL3WSZ8SVgyfgZQQ9L+AGbWm9DdOB34lZk976WVnHMuOySlBRWnZd8G/J+ZfRM3fwxcHksbnQIMKpowkU5xOY8bgT8B44GbgfpxivvuwGQzm150vK835Zxz2SFZLah6hMkHFyRse58w/nQYcKOZvZOkc5VKQkuoBmGtqcsJa0vdCBxOSFRTgC2fonPOOZdxO5SgEh503VtSKzN7n5Cc1ku6EcDMCszsCeBsM3spA11nh8U4PgOeInTv/Y4wg28Q8AJwopm9mea4nHPOlcIOPwcl6VTC80PfAiuAPwB1gEuBH8xscLKCLGNcOXFJj4+A+WbWI25vQ0hQtYDfm9lHCe/ZqSnv7du3tylTpuxs6M45Vykl9TkoSQcQiqt2A14ltFbmELrMHgT2KpqIkC4JLbTqAGZ2OGFq+bj49SxCK2oxYcJGMR93cs657FOqSRKSqpvZ2vi6BlAIvAacD5wNnGZmKyQdYWbvSvrUzApTFnUJ4gPCPQjTx78ExptZnqS3JD0HPAqcCVyYOCnCOedcdtpuCyrOwushqZekjoRuvSbAoYRxp/PN7EtJ3YBHJO2d7uQU4zwK+C3wbNx0tqTzzOxY4GtCa2+YmU1Nd2zOOefKbpstKEn1zKxQ0ueE54WaAN3NbIakNwmz4k6VtBL4JXBNfO4prSTtBfwReM3MnpA0nvAc1hmSnjGzgZKqmdm6nR1vcs45lx5bbUHFrrwPJf06LuK3AfiCsFQGZvYg8HfCw7fNgYFm9mKGHnRdBXwInCfpYDNbZmbjY1xFs/nWxf96cnLOuXJgqy0oM1sj6RzgeUnfmdmRktoDQyXtZmZ/JEyK+MDMvk94X8oTQELF9HZAM+BNM/uVpPnAHySNICwjvwfwY6rjcc45l3zb7OKLEx56Av+S1MDMHoor4V4RV55tQ5hW/v22PifZYnLqRlil931gpKSuhGoR9QjPOH0AXGRm071bzznnyp/tzuIzsw8kHU9IUhvN7K+S5hLGnH6fzhlxCS2n2oRnrk6PSfR2wsKI/QiTOOYSlpv/Zuuf5pxzLpuV6jkoM5sMdCcsm3G5mc0ws0vN7JV0jjnF5HQy8G9gMHBi3D4YeB14hdCt93dgJnBrHEtzzjlXzpT6Qd2YpHoRktTeknLi9rR1ncVqEKcT6uk9CTSR9PMYx7XAS8AeZrYAuBf4tZmt8e4951yyXXPNNXTu3Jlzzz2XdevWFW8fN24ceXl55OXl0aJFC0aOHAlAQUEBp5xyCl26dGHYsGEADB8+nEMOOYS8vDwGDRqUkevIZmWqZm5m70va08yWpSqgRJKaEgq7TiIUfX0DeM7MnomLD54AdJJUw8weMLPi77CZzU9HjM65ymf69Ol89913TJw4kZtvvpmxY8fSv39/APr06UOfPn0A6NKlC7179wZg8ODB3H///ey5556bfNYtt9zCySefnNb4y4sdWW5jOex8/bpS6gn0AKqa2QuSbgAGSzrSzKZKeplQ2qiTpBfNrCDF8ZTs+49geL3tH+ecK3+Gb1l3YNKkSXTv3h2AHj16MGrUqOIEVWTevHmsWbOGvffem3Xr1jFnzhwGDRrEggULuOmmm8jNzQVg6NCh3H777QwbNoyuXbum/nrKkTInqKKklI5uMzN7WFJ14HRJmNmDsbLFY5LOMrMPYxmjVxKnujvnXCotWbKEZs2aAVCvXj0WL168xTHPPPMMffv2BWDhwoVMmzaNMWPGUL16dXr16sXkyZMZOHAgw4cPZ/78+XTr1o2pU6dSvXr1tF5LNkvqku/JJKmKmW00s/slVQH6xSR1r6SNwAuSTvHSRc65dKtfvz7LloWRjsLCQho02HJZubFjxzJq1Kji41u3bk2LFi0AqFatGuvXry9+X5MmTWjbti0FBQW0atUqTVeR/ZK25HuymdnGmJgws3sJzzWdLulkM7sfuJUw1dw559IqNzeXCRMmAPDqq6/SqVOnTfbPnz+/uHsPoFatWjRs2JClS5eyYsUK1qxZQ9WqVYuT3MqVK5k1a1Zxq8wFWduCguIklWNmG2LLaQNwftx2N6RtLMw554q1a9eOJk2a0LlzZ1q0aMFVV13FgAEDePDBB4FNu/eKjBgxgl69erF27VpuuOEGIEycmDFjBhs2bGDIkCHUqlUr7deSzXZ4wcJkS3gI92AgB/hPwhIfVc1sfXx9OfB2Ni2Z0X6PHJtysTfmnKuQSpgk4ZJrawsWZkULKiE5dSM8v7QceFnSODP70MzWFyWpopaTc86lQt7oFZtuyM/b9Mv8/LTFUtllxRhUTE5HEsonnQCcTBhf6h23U9SCcs45VzlkSwuqFqFKRR5QxczmSboPuAT4WZzRNzmTMTrnKof8C2pvumF4fkbicBlsQSXW8DOzVcBIQsHXW2K1itnAg0BNwhLzzjnnKpGMJKiEMaeTJP1W0g1mtgS4EphDWNNpLzP7L2GV3v9mIk7nnHOZk5EEFZNTT+BmQhXyvpJeMrNC4CZgIfDHWIl8TbriktQ51vhzzrkyKUvx2FWrVhVv69ChA4cffjgAZsZ1113HcccdR15eHqtXr87U5WSFjIxBSaoD/Aw4B2gN/ADsIuldM+so6XdAMzNLZ3LKJXQz/iLG45xzpVLW4rG1atUqng04evRovv76awCefvppmjZtyuuvv56R68g2GUlQZvajpCuBBsDvgK7AMmClpDfMrCtpHHeStA9hocPHYhHaHDPbsJ33XAxcDJBTtzEtV49KQ6TOubS7dvwmX865tecWh5S1eGyip556ijvuuAOA559/nsaNG5OXl7fJshyVVVq6+IomRMQutP6STjCzhcBaYDqhIvlRhCXbb0hHTJvZFVhM6Grcf3vJCcDMHjKz9mbWPmcXr2TuXGW2ZMkS6tatC5SueGyRpUuXMm/ePNq2bQuEEklNmzYlPz+fTz/9lPfeey/1wWexlCeo2BoxSd0Js/I2Eh7CPQ9QjGEE8Bzwhpm9lepVehMS5sGSfgJ8DQwFJgC/lLRv4nHOObctpS0e269fv022Pffcc5x66qmbfE7Rkhtdu3Zl5syZKYw6+6UsQUlqAGBmGyTtBlwInAF8C3wMvGZmXwHXEqpHnGxmE+J7Ulp/KSbME4F/An2BT4F6hCS5BLhaUmuv8eecK42yFo8t8tRTT3HGGWcUf92pUyemTZsGwLRp0yp9ZfOUJChJLYGpkm4BiFPIPwQuAO4E+prZXEn/B7Q0s2lm9kEqYtlKfM2B3xAWQ/wXobTSN3HpjqcJ3X2+KItzrlQSi8fOnDmTvn37MmDAgOL9JXXvFRYWMm/ePNq0aVO87aKLLuKVV17h2GOPZcOGDXTp0iVt15CNUlIsNiaAd4DvgXfN7EpJvwGuAo43s08lHQo8AfzSzN5KehCbxlMDyDGzlbE1txoYQHgI+DSgv5l9IakP8BKhmsWq0n5+jWb7WbPz/5yCyJ1z2WLe49cCcFSrhl6PL8nSWizWzAok3U2oSt5Y0m1mdo2kNsBwSWuBA4Hr0pCccoAOwIGSlgOdgD8TJmUcBnQzs+/iWNTNwFdmNi2VMTnnnNu+pCUoSa2ADmb2ZNw0nfDQ7XWE2XE3mtkASYcBDYHFZjYt1es5xTGwHwgtpUOBS81stqQRwCjgV5KqAd2Baz05OedK0vSsWwHIL2GauUuNpCQoSdWBN4AWsevuAyAfuJvQUnoI+LWku83s8sT3pjI5JSS/z4DPgVXAwZImm9nHks4AOgI1gHFm9o4vgOicc9khKZMk4sKCpxKma3ciTB9/kfDL/8i4uOCfgdqSDkzGOUsZl0k6HHjazC4DrgAaAUVJcilhYcSHzeydovekKz7nnHNbl7RZfDEJnQocTHjw9dy4q6mk/YBPgF+b2afJOmcpTQOqS3rWzOYADwM1JT0HvE+WLDninHNuU0mdZm5mHxOmbt8NdIytlv6EiQcbzWx5Ms+3LZL2kFQ7tohOAdZIesHMZgC/B54FBpjZ++mKyTnnXOmlapr5T4DxwE1mdlfST7Dtc+cAuwHPAH8HHjezFXH7m0ChmfVKOH6nx5zat29vU6ZM2ZmPcM65Smtr08xT8qBuXP22F3CzpBaS0lFSSfHcG2Kdv+uBM4HTJdWJ9fWeAfaSVHwjfMzJOeeyU8rGX8zs/bgy7rJUnWOz8xWVL+pHmLH3IjCQ0N1YLz4D1RP4mZl9lo6YnHPO7bhUt2yWQ3qKrsbZgdcRJmNsAB4jLOdxGbA7YQLHfZ6cnHOufEjpDLai7rNUd6PFLrtxwI1m9lDcNgMYRlgY8Xqgqpmt8+ecnHOufMjIku/JZmZTgPnALxM2vxm31bFgXTzWk5NzzpUD5TJBJazndJik4wDiDJC1kl6WtDtwEHA04Zks55xz5Uy5fEg1Tog4HrgLWC7pA+AOM+sg6R1gJjAaONfMPslgqM4553ZQuWpBJbScqgLtCeNLHQmTIgZK2sfMOhFqAbYzs7cT3+ecc678KFcJKracehPWkeoD7BefbxpBuJarJe1nZj0JhWsfK3pfpmJ2zjm3Y8pVgopTya8AxhAqVdwgqZOZzQduBTYSFiHEzA4AfpuhUJ1zzu2krE5QkppIOiu+bgHcAPzXzMaa2Q2Eh3DvknSsmc0DfmNmM+L6TsTisM45lzTXXHMNnTt35txzz2XdunXF28eNG0deXh55eXm0aNGCkSNHArDffvsVb3/ttdcyFXa5lLUJKo4bHQ30lHQO8C1h8sMekjpLyjGzBwmTIe6LS7lvACiaUu6cc8k0ffp0vvvuOyZOnEibNm0YO3Zs8b4+ffqQn59Pfn4+++67L7179wagXr16xduPP/74DEVePmXtLL443vQGUA3oBqwmtKCGA2cAGyW9Z2Z3S3rOzJZkLNjvP4Lh9TJ2eudckgwv3ObuSZMm0b17dwB69OjBqFGj6N+//ybHzJs3jzVr1rD33nsD8OOPP3Lsscey5557cs8999CgQYPUxF4BZWULSlFMOi8TVuvtAfQlJKkfgAsJM/gws28yFatzrvJYsmQJdevWBULLaPHixVsc88wzz9C3b9/ir9955x3eeustevTowbBhw9IWa0WQVQlKUoNYYNbi1zKzQsKEiKIk1Ru4CfgeyFyryTlX6dSvX59ly0L968LCwhJbQ2PHjqVfv37FXzds2BCAfv36MX369PQEWkFkTYKSVIuwFPvlkvbaSpKaQGhF9TWzoWY2M3MRO+cqm9zcXCZMmADAq6++SqdOnTbZP3/+/E2699auXcuaNWsAmDhxIq1bt05vwOVc1oxBmdkqSVOAzsAFkh41s28SuvsKJb1CiHlWZqN1zlVG7dq1o0mTJnTu3JkWLVpw1VVXMWDAAB588EFgy+69JUuWcNJJJ1G7dm1q1KjBI488kqnQy6WUrKhbpgCkZsAeZjY1fv0TwjLxS4G/mdmchMUILc7e25CxgEvQfo8cm3JxnUyH4ZwrpbzRK0re0fLoEjfn5+enLhiX3hV1S0NSFUl1gU+ByZKGS7oS+AJ4BVgHnJc4JgVhxdzMROyccy6dMtnFZ2a2TNKvgYcIiwouA54HPgSaEJLUpZLuMrMFmQvVOVeR5F9Qu+Qdw/PTGofbtoy0oCQ1AT6QVM/M/gb8gtCt9wLQi7D4YE2gHTAIqJuJOJ1zzmVORlpQZjZf0mzgPUk/NbO/S6pDqELey8zelDQZWA/sb2afpyMuX23XOeeyR1pbUJJ2KXptZmcBE4GPJNU1s/uBa4BnJeWZ2Y9mttrMPo7vTdmSGQmfvVuqzuGcqzzKWq/v3nvvpUOHDnTo0IGnn34agOHDh3PIIYeQl5fHoEGDMnIdmZa2BCWpOfCZpLslXQ5gZhcDjxOS1K5m9hAwDBgvqX5iUkplyybODjwBeEZSPV8/yjm3o3akXt99993HpEmTyM/PZ8SIEcXH33LLLeTn53PnnXem+zKyQlq6+CTVBBoAXxKWYu8m6aC47XqgE/CypB5mdq+k581saTpii/EdSBjruio+b7XdBCXpYuBigJy6jWm5elSKo3TOpdy148t0+Jxbe26xbUfq9bVq1YpVq1axcuVK6tevX3zc0KFDuf322xk2bBhdu3Yt48WUfylPUHFCxFjgZEIdvS7AIsJMvf2AwcACQgHYqTFZzI3vTfmYUKxgcSJwKNASmFKac8bW3kMANZrt5+NWzjkgPJzbrFkzoPT1+nr27Enbtm3ZsGEDDz/8MAADBw5k+PDhzJ8/n27dujF16lSqV6+enovIEilLUAnJpRqwNpYreiOOQ3WJ574PeARoDLwLzEh8zilVyakothjLauB+oAZwoqQFRUvFO+dcWZW2Xt+oUaHXZdmyZdx///3Mnj2btWvX0rVrV0488cTi9zVp0oS2bdtSUFBAq1at0nchWSCVY1BF608YUKtoo5m9SKiptxcwANgnPuN0l5m9kY7xn5icTgX+TnjuqjuhlfcJcKakLqmOwTlXMZW1Xl+VKlWoVasWNWvWpHbt2qxduxYzK05yK1euZNasWcWtssokJQlKUg1Cd90VhKUxGsdp5ACY2cvAc8ABQL84RlW0L+XdZZJyCTMGLwEWElbi/S/wDGFhxHPiAojOOVcmifX6Zs6cSd++fRkwYEDx/s279+rUqcNpp51Gx44dyc3N5bLLLqNKlSoMHjyY3NxcunTpwpAhQ6hVq1ZJp6vQUlaLT1JHQhK6B9gXGEmoDLEamAfUBroCU83ss5QE8b9YNqnfJ+lkoE6MZxBwtpl9FUsv5QD1zeyr0n5+jWb7WbPz/5zkqJ1z2Wre49cCcFSrhl6nLwm2VosvZWNQZvaupBMJdfUaEhJTbvzvWqAR0KMsiWBHxNZcrqQPCZMgmhHGm35O6Ho8Kxak7UeoZnFOqmNyzjm3fSmdxWdmUyUdA+QTZscNAJBUnVDBfE4qzx/VISSlfwL7A8cQFjs8B/gKqC2pO2Ep+WvNbFUaYnLOlWNNz7oVgPwSppm75En5g7pm9h/CFPMRkq6K29YCaVmm3cwWEcbBjiNMbV8fu/suiocMJCyUeLWZvegP6TrnXHZIy4O6ZjY5jvtMkPRP4Fsz25iOc0v6KTCNUHj2eGCopEfMbIqk3xMmSdQws+UxVn+myTnnskDaSh2Z2fvAnmb2TZqTwKmEZ6wWAo8RWlMXSPolcAfQsCg5Oeecyx7pXm5jOaS28GsRSVUBzGwI8A/gVcL13gPMBs4HxpjZ3FTH4pxzruzSmqCKWk5pKF90JDBEUqN4vuGEB3KfBaqa2UjgeDN7zsecnHMuO2VyRd1UKiQ8Y2WS7osTJe4lTNZ4JY5LrYDkJMtD9qzHFJ/N45xzSVWhElRsOVUjVIPoTShlJEn3Ep6Behl42sxWZypG55xzpVPuE1RC4dfOhEkQbxOeexoLnEWoOP5HQr29C81sasaCdc45V2rlPkHF5NQV6AP0M7MPJO0PjCYs43EhoVr6bWb2aeYidc45VxbpnsWXVAkTHPoAlxETbiz8OhL4qZmtilPbPTk551w5Ui5bUAlrTTUAFpnZ5ZKqAI9JOiBWqqgKHBxr8a31B3Cdc658KZctqNitdxIwTtIoSQea2WWEdaYWSLoeOB34q5mt8eTknHPlT7lqQSVMiGgC/Br4HaFSxBWS/m5mv5C0jLDWU14sVlvNzNZlMm7nnHNlV64SVExOnYD6wEwzy5f0FnA9cK6kqmY2SFI14HlJ+5nZykzG7JxzbseUiy4+STnxv0cDTxEeuL1E0i8suJEwY+88Sbua2UDCNPPKt0ayc85VEFndgpLUAPjRzNZKakdYw+kSM3te0ljgjtjr91czu15S64Sq5L/OYOjOOed2Uta2oCTtAgwGhsXCr4cBRwDtYivpdcJy7ddKGgBgZp9nLGDnnHNJlbUJirAs/HvALsBAM3sU+BOwL3CMpNpm9gZwCeDPODnnXAWTtV18ZrZe0nhCojpZ0pVm9kdJtYC+QHVJ/zKzCZmN1DnnXCpkbYKC4iT1WvwyMUlVJySpd4hVyZ1zzlUsWZ2gJFXZLEmdKOlaM7tV0otmtiCjATrnnEuZrElQCQ/hFj9Ya2YbJeUkJKmqQE9J+5jZV5mN2DnnXCplTYKKyaknMEBSPjDFzN42sw0JSepl4F0zW5jZaJ1zzqVa1szik3QAMAB4nTBz7yJJJwAkJilPTs45VzlkRYKSdChhocHnzGwkYeHBd4D+sVWFmW3IYIjOOefSLCsSlJl9DHwMXB2//gp4BZgCnC2pUQbDc845lwEZSVBFCw1KainpEAAzOx74XNKk+PU3wAvANd6t55xzlU9GElScEHEK8Axwk6TRkhqZWU9grqTp8bivzezbTMTonHMus9KWoCTVTHidCwwFTgCeJSzZfoukxmbWF/g2HuOcc66SSkuCkrQb8ISkXeOmhcBlwJGEWnodgf2BxyU1N7OTzWxSOmJzzjmXnVKeoCRVN7MlwC+BPSR1NLP/EiZAHAc8YmafEmbu1QVqpTom55xz2S+lCSrOvntE0k/MbC5wPDAufr0R+A9wuqTLgXOB35jZ7FTG5JxzrnxIaSUJM1so6RvgCkm3m9k9kjYAj0nqD4wDqgM9gdu8W88551yRlLWg4iKDEJZob01ISoeb2f3An4FHgf3N7AGgn5m9WDT93DnnnEtZgoq187oBjwA3ELrzbotJ6j7gYcLEifpAUXFYS1U8zjnnypeUJKiEllAXYLyZvWRm/YCpwN8ktTezPwF5ZrY0jkc555xzxVKSoBJaQp8CdYpKFZnZdfGc10mqC/hDuM4550qUtEkSCes5dQb2BBYQWkz9gZMkTY7nmwXcYWbLknVu55xzFU9SWlBxKQyT1B14EDBgArAPYULE0cBNhGedRpnZu8k4r3POuYprp1pQkhqY2eK4XtNuwIXAGYQHbmcA083se0kTCWs8NTCzL3Y6aueccxXeDregJLUEpkq6BSBWi/gQuAC4EzgtJqeLgCPNbIknJ+ecc6W1M1186+P78yT9MW5bRxhzusjMvogLEV4JVNu5MJ1zzlU2O9zFZ2YFku4GcoDGkm4zs2sktQGGS1oLHAhcZ2ZvJSle55xzlUSZEpSkVkAHM3sybppOmPxwHdBX0o1mNkDSYUBDYLGZTSua4ZfUyJ1zzlVopU5QkqoDbwAtYtfdB0A+cDehpfQQ8GtJd5vZ5Ynv9eTknHOurEo9BmVma4FTga+BToCAFwlrOR1pZtMJU8prSzow+aE655yrTFTWxk1sPb0J/AaYCFwFtAIGAl8Atc1seZLjzGqSlgOfZTqODGtEWIiyMvN74PcA/B7syPXvbWaNN99Y5gQFIOknhAdxLzWzx2PB1x/NbH2ZP6wCkDTFzNpnOo5M8nvg9wD8HoDfg2Re/w7N4jOzybFS+XhJjczsrmQE45xzzhXZ4eegzGwy0Au4WVILSSlfPt4551zlsVOljszsfUl7euFXHsp0AFnA74HfA/B7AH4Pknb9OzQGtckH/K+KuT/r5JxzLml2OkE555xzqeDjRs4557KSJ6gykNRD0meSPpd0bQn7a0gaE/e/Hyu+VxiluP4rJX0q6WNJr0vaOxNxptL27kHCcX0lmaQKN924NPdA0hnxZ2GmpMfTHWOqleL/hRaS3pT0Ufz/4aRMxJlKkh6RtEDSJ1vZL0l3xXv0saQjynwSM/N/pfhHKIr7BeGh5OqEOoQHbnbML4EH4uszgTGZjjvN198F2CW+vrQiXX9p70E8blfgbeA9oH2m487Az8F+wEfAbvHr3TMddwbuwUOE50QhlIKbk+m4U3AfjgGOAD7Zyv6TgJcJVYeOAt4v6zm8BVV6HYDPzexLC2WfniSUfkp0KvBofD0WOE6S0hhjKm33+s3sTTNbGb98D2ie5hhTrTQ/AwA3ArcBq9MZXJqU5h78ArjXwhpxmNmCNMeYaqW5B0ZYuBWgHvB9GuNLCzN7G1i8jUNOBf5mwXtAfUnNynIOT1CltyfwbcLXBXFbicdYqKpRSKjqXhGU5voTXUT466ki2e49iN0Ye5nZ+HQGlkal+TnYH9hf0juS3pPUI23RpUdp7sFw4BxJBcBLwOVUPmX9nbGFnXoOyrmSSDoHaA8cm+lY0ik+rP5HwqrSlVlVQjdfHqEV/bakQ8xsaSaDSrP+wGgzu1NSR+Dvkg42s42ZDqw88RZU6X0H7JXwdfO4rcRjJFUlNO0XpSW61CvN9RNLYP0WOMXM1qQptnTZ3j3YFTgYyJc0h9Dv/nwFmyhRmp+DAuB5M1tnZl8B/yUkrIqiNPfgIuCfAGb2LlCTUES1MinV74xt8QRVepOB/STtE9fGOhN4frNjngfOj6/7AW9YHC2sALZ7/ZIOBx4kJKeKNu4A27kHZlZoZo3MrKWZtSSMw51iZlMyE25KlOb/g2cJrSckNSJ0+X2ZxhhTrTT34BvgOABJbQkJ6oe0Rpl5zwPnxdl8RwGFZja3LB/gXXylZGbrJf0KeJUwi+cRM5sp6ffAFDN7HniY0JT/nDB4eGbmIk6uUl7/7UAd4Kk4N+QbMzslY0EnWSnvQYVWynvwKtBd0qfABmCwmVWUnoTS3oNBwF8k/YYwYeKCCvTHKgCSniD8IdIojrUNA6oBmNkDhLG3k4DPgZXAz8t8jgp2z5xzzlUQ3sXnnHMuK3mCcs45l5U8QTnnnMtKnqCcc85lJU9QzjnnspInKOeSSNIGSdMkfSLpBUn1E/YdJOmNWAV7tqShibUaJZ0oaUqsAv6RpDu3cZ5nJb232bbRkvpttu3HhNf7S3opnvtDSf+U1GSz46vECtSfSJohabKkfXbilji3wzxBOZdcq8ysnZkdTHgW7jIASbUIDy7eamYHAIcBuYQK+Eg6GLgHOMfMDiSUivq8pBPEpHckUE9Sq9IEJakmMB6438z2M7MjgPuAxpsd+jNgD+BQMzsE6AMsLd2lb/Xc/ryl2yGeoJxLnXf5X3HMs4B3zOxfALHq+6+AorWErgZuNrNZcf8GM7t/K597GvACoYp2aR8GPwt418xeKNpgZvlmtvlaPs2AuUU148ysoKgqeVwD6UNJ0yW9Hrc1iK25j2Nh2EPj9uGS/i7pHcLD640lPR1bZJMldSpl3K4S8wTlXApIyiGUuimqLnEQMDXxGDP7AqgjqS6hht8m+7ehP/BE/Ne/lO8p7ef/E+gVuynvjOWrkNQY+AvQ18wOA06Px98AfGRmhwJDgL8lfNaBQDcz6w+MBP5kZj8B+gJ/LWXcrhLzprdzyVVL0jRCy+k/wGvJ/PA4ZrQf8G8zM0nrYpXsTwgldTZXplIxZlYg6QCga/z3uqTTgV2At2PxV8ysaB2gowkJBzN7Q1LDmHAhFIxdFV93Aw5MGHKrK6mOmRWPkTm3OW9BOZdcq8ysHbA3YSXRy+L2TwnjRsXi+NGPZrYMmLn5/q04A9gN+CpWTG/J/1pRi+K+os9vACyMX5b28zGzNWb2spkNBkYAvUvzvhKsSHhdBTgqjs+1M7M9PTm57fEE5VwKxDGmgcCgOEngMeDouBxJ0aSJu4A/xLfcDgyRtH/cX0XSJSV8dH+gR0LF9CP53zhUPvCzWGEbwrpUb8bXjwO5knoWfZCkY+LkDBK2HSFpj6IYgEOBrwmV2Y8pmtEXkx/ARODsuC0PWBgT7ub+RcKifZLalXCMc5vwBOVcipjZR8DHQP/Y1XUqcL2kz4AZhGUb7onHfgxcATwh6T/AJ8AmM/QktSS0zIqnl8cut0JJPzWzFwkJY2rsZuwEXBOPWwWcDFwep5l/SphBuPkSELsDL0j6JMa+HrjHzH4ALgaekTQdGBOPHw4cKelj4Fb+t9zM5gYC7eNkik+BkpKvc5vwaubOOeeykregnHPOZSVPUM4557KSJyjnnHNZyROUc865rOQJyjnnXFbyBOWccy4reYJyzjmXlf4f8RnjEJWH8lQAAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" @@ -189,13 +205,7 @@ } ], "source": [ - "strategies = {\n", - " 'KNN' : KNNImputer(n_neighbors=3),\n", - " 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", - " 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=False),\n", - " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,\n", - " sample_posterior=True)\n", - " }\n", + "\n", "clf = LogisticRegression()\n", "cmp = ImputationSelector(clf=clf,strategies=strategies,cv=5)\n", "cmp.fit_compute(X_missing,y)\n", @@ -211,15 +221,15 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 36, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-11T14:24:25.689763\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \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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NyXVYYhIA7uoaFid63jttdfIzc2ld+/elJSUMHXqVFasWMGIESO46qqrWLlyJffccw+rVq2iW7duCderBCUiIofsmWeeYejQocyaNYu2bdty3nnnEYvFWLduHddeey0AvXr14u677671pAklKBEROSQbNmxg3LhxzJgxg/z8fEpKSsjKyuLcc88F2Pe86YknnqCoqIicnJxa1a8EJSIitVKReJo0aUK3bt3o378/69evZ9SoUWRlZdG5c2cuueQSOnfuzO9+9zumTZvGzJkzyc3NrVU7mmYuIiK1snHjRgCaNGnCJ598woQJE7jlllvo27cvAwYMYPfu3cycOROAE088kccee4zu3bvXuh0lKBERSVhhYSHt27ensLCQtLQ0xo8fz+rVq9myZQvDhg3jiiuuoFevXqxZswaAiy66iFNOOeWQ2lKCEhGRhBQWFjJmzBguvfRSVqxYgbvTqVMn8vPzWblyJXfddRcAW7duZfPmzWzbtq1O7ekZlIiI1Ojll19m9OjRTJ48mfT0dG666Sauv/56WrVqxWWXXUa7du0YO3Ysq1atYsmSJcydO5cWLVrUqU0lKBERqdHatWuZMmUKPXv2BKBr166MHDmShx56iOzsbM455xz69u3Lp59+SlZWFq1bt65zmxriExGRGl133XX07NmTvXv3AjB8+HAyMjIoLi4GYM+ePaSlpdG+ffukJCdQghIRkQRULPTaqFEw8NalSxfWrVvHpEmTAMjIyEh6m0pQIiJygNWrV7NkyRJKS0spKyvbt9ArQHl5OVlZWdx///08//zzLF26tF5i0DMoERHZz7x58ygoKCA3N5fc3Fzy8vIYMmQIzZs3p7y8nFgsRnl5OTk5OVxwwQWccMIJ9RKHelAiIrJPaWkpc+bMYdq0abzwwgsMHDiQoqIiJk6cyLZt24jFgrQRi8XIycmhoKCAVq1a1UssSlAiIrKf7du389FHHwEwaNAgLr74YkpLS5k9ezYAb7zxBsuXLwcgMzOz3uJQghIRkX3S09MZOXIk8+bNY9GiRcRiMXr37k2PHj1YuHAhJSUlLF68mLZt2wLU6vudaksJKsLMbGfc9oVm9qGZtTezsWa2y8xaV1PWzezuuNejzGxsgwUuIoe1Pn36MGDAAGbMmMHChQtJS0vj6quvpri4mOLiYkaMGMExxxxT73FoksRhwMzOBe4H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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-13T01:23:02.870254\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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\n" }, "metadata": { "needs_background": "light" diff --git a/probatus/missing_values/imputation.py b/probatus/missing_values/imputation.py index f16b8ed5..746141df 100644 --- a/probatus/missing_values/imputation.py +++ b/probatus/missing_values/imputation.py @@ -23,7 +23,7 @@ BaseFitComputePlotClass, get_single_scorer, ) -from sklearn.model_selection import cross_val_score +from sklearn.model_selection import cross_val_score,cross_validate from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.compose import ColumnTransformer @@ -31,6 +31,7 @@ import matplotlib.pyplot as plt import numpy as np import pandas as pd +import seaborn as sns class ImputationSelector(BaseFitComputePlotClass): @@ -146,20 +147,14 @@ def __init__( """ self.clf = clf self.model_na_support = model_na_support + self.cv = cv self.scorer = get_single_scorer(scoring) self.strategies = strategies - self.cv = cv self.verbose = verbose self.n_jobs = n_jobs self.random_state = random_state self.fitted = False - self.report_df = pd.DataFrame( - columns=[ - "strategy", - f"{self.scorer.metric_name} score", - f"{self.scorer.metric_name} std", - ] - ) + self.report_df = pd.DataFrame([]) def __repr__(self): return "Imputation comparision for {}".format(self.clf.__class__.__name__) @@ -191,13 +186,9 @@ def fit(self, X, y, column_names=None): self.y = preprocess_labels(y, index=self.X.index, verbose=self.verbose) # Identify categorical features. - X_cat = X.select_dtypes(include=["category", "object"]) - categorical_columns = X_cat.columns.to_list() - + categorical_columns = X.select_dtypes(include=["category", "object"]).columns # Identify the numeric columns.Numeric columns are all columns expect the categorical columns - - X_num = X.drop(columns=categorical_columns, inplace=False) - numeric_columns = X_num.columns.to_list() + numeric_columns = X.select_dtypes('number').columns for strategy in self.strategies: @@ -262,7 +253,10 @@ def fit(self, X, y, column_names=None): results.append(temp_results) self.report_df = pd.DataFrame(results) - self.report_df.sort_values(by=f"{self.scorer.metric_name} score", inplace=True) + #Set the index of the dataframe to the imputation methods. + self.report_df=self.report_df.set_index(self.report_df.strategy, 'strategy') + self.report_df.drop(columns=['strategy'],inplace=True) + self.report_df.sort_values(by="mean_test_score", inplace=True) self.fitted = True return self @@ -287,19 +281,20 @@ def _calculate_results(self, X, y, clf, strategy): temp_df(dict) : Dictionary containing the results of the evaluation. """ - imputation_results = cross_val_score( - clf, X, y, scoring=self.scorer.scorer, cv=self.cv, n_jobs=self.n_jobs - ) - temp_results = { - "strategy": strategy, - f"{self.scorer.metric_name} score": np.round( - np.mean(imputation_results), 3 - ), - f"{self.scorer.metric_name} std": np.round(np.std(imputation_results), 3), - } + imputation_cv_results = cross_validate( + clf, X, y, scoring=self.scorer.scorer, cv=self.cv, n_jobs=self.n_jobs , return_train_score=True + ) + #Calculate the mean of the results. + imp_agg_results = dict((k, np.mean(v)) for k, v in imputation_cv_results.items()) + imp_agg_results = {f'mean_' + str(key): val for key, val in imp_agg_results.items()} + imp_agg_results['test_score_std'] = np.std(imputation_cv_results['test_score']) + imp_agg_results['train_score_std'] = np.std(imputation_cv_results['train_score']) + #Round off all calculations to 3 decimal places + imp_agg_results = dict((k, np.round(v,3)) for k, v in imp_agg_results.items()) + imp_agg_results['strategy'] = strategy - return temp_results + return imp_agg_results def compute(self): """ @@ -336,7 +331,7 @@ def fit_compute(self, X, y, column_names=None): self.fit(X, y, column_names=column_names) return self.compute() - def plot(self, show=True, **figure_kwargs): + def plot(self, show=True,**figure_kwargs): """ Generates plot of the performance of various imputation strategies. @@ -352,33 +347,47 @@ def plot(self, show=True, **figure_kwargs): (plt.axis): Axis containing the performance plot. """ - plt.figure(**figure_kwargs) - - imp_methods = list(self.report_df["strategy"]) - performance = list(self.report_df[f"{self.scorer.metric_name} score"]) - std_error = list(self.report_df[f"{self.scorer.metric_name} std"]) - - y_pos = [i for i, _ in enumerate(imp_methods)] - x_spacing = 0.01 - y_spacing = 2 * x_spacing - plt.barh( - y_pos, - performance, - xerr=std_error, - align="center", - color=np.random.rand(len(performance), 3), - ) + fig, ax = plt.subplots(**figure_kwargs) + + report_df = self.compute() + imp_methods = list(report_df.index) + test_performance = list(report_df[f"mean_test_score"]) + test_std_error = list(report_df[f"test_score_std"]) + train_performance = list(report_df[f"mean_train_score"]) + train_std_error = list(report_df[f"train_score_std"]) + + y = np.arange(len(imp_methods))*3 # the label locations + width = 1 # the width of the bars + + def _autolabel(rects): + """ + Label the bars of the plot + """ + for rect in rects: + width = rect.get_width() + ax.annotate('{}'.format(width), + xy=((width + 0.05*width),rect.get_y() + rect.get_height() / 2 ), + xytext=(4,0), # 4 points horizontal offset + textcoords="offset points", + ha='center', va='bottom',fontsize='small') + + + train_rect = ax.barh(y - width/2, train_performance, width,xerr=train_std_error,align="center", label='Train') + test_rect = ax.barh(y + width/2, test_performance, width,xerr=test_std_error,align="center",label='Test') + _autolabel(train_rect) + _autolabel(test_rect) + + ax.set_xlabel(f'{self.scorer.metric_name.replace("_"," ").upper()} Score') + ax.set_title('Imputation Techniques Comparision') + ax.set_yticks(y) + ax.set_yticklabels(imp_methods,rotation=45) + plt.margins(0.3) + plt.legend(loc='best', bbox_to_anchor=(1,1)) + fig.tight_layout() - for index, value in enumerate(performance): - plt.text(value + x_spacing, index + y_spacing, str(value), rotation=45) - plt.yticks(y_pos, imp_methods) - plt.xlabel(f"Metric ({(self.scorer.metric_name).replace('_',' ').upper()})") - plt.title("Imputation Techniques") - plt.margins(0.1) - plt.tight_layout() - ax = plt.gca() if show: plt.show() else: plt.close() return ax + From 91d93891c38eb94b4b3d8921f32759a1d1661fac Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Mon, 15 Mar 2021 09:04:28 +0100 Subject: [PATCH 18/24] Updated the plots toshow cv train results as well. --- docs/tutorials/nb_imputation_comparison.ipynb | 36 +++--- probatus/missing_values/imputation.py | 109 +++++++++++------- 2 files changed, 89 insertions(+), 56 deletions(-) diff --git a/docs/tutorials/nb_imputation_comparison.ipynb b/docs/tutorials/nb_imputation_comparison.ipynb index 88e0693b..911891ea 100644 --- a/docs/tutorials/nb_imputation_comparison.ipynb +++ b/docs/tutorials/nb_imputation_comparison.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 52, "metadata": {}, "outputs": [], "source": [ @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -97,7 +97,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -116,7 +116,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
f_0f_1f_2f_3f_4f_5f_6f_7f_8f_9f_10f_11f_12f_13f_14f_15f_16f_17f_18f_19
Missing %0.1890.19750.19650.20950.18950.19550.2020.1980.20150.18850.1990.2080.20550.210.20450.20050.2090.20.21350.186
\n
" }, "metadata": {}, - "execution_count": 33 + "execution_count": 55 } ], "source": [ @@ -151,15 +151,15 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 56, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-13T01:22:27.109494\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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/hiAnJwcunXrBoTgdskll5CVlUWjRo2SMqryEZRzzrmtLFy4kKlTp5KRkcHKlSuZPHkyFStWZOLEiQwePJhnnnlmq9fMnz+fN998k1WrVnHYYYdx+eWXF/mep8J4gHLOObeVs88+m4yMDAByc3O5+OKL+fTTT5HE+vXrC31N165dqVKlClWqVGHfffdlyZIlHHjggbvcB5/ic845t5Xq1asXPL7pppvo0KEDH374IS+++OI272WqUqVKweOMjAw2bNhQrD54gHLOObddubm5HHDAAQA8+uijpdauT/E551wa2dGy8FS4/vrrufjii7nlllvo2rX0+iczK7XGyqpWrVqZFyx0zu2Kjz76iMMPPzzV3Sg1hZ2vpJlmttV6dZ/ic845l5Y8QDnnnEtLHqCcc86lJQ9Qzjnn0pIHKOecc2nJA5Rzzrm05PdBOedcOhlaM8nvl7vd3cUptwEhYWzlypVp3bp1cvqbwAOUc86VYzsqt7EjOTk51KhRo0QClE/xOeec28zMmTNp3749LVu25NRTT+Xbb78F4J577uGII47gqKOO4rzzzmPBggU88MAD/PWvf6VFixZMnjw5qf3wEZRzzrkCZsZVV13F888/T506dXjqqae48cYbGTNmDCNGjODLL7+kSpUqrFixglq1anHZZZft9KirqDxAOeecK7Bu3To+/PBDTjnlFAA2btxIvXr1ADjqqKO44IIL6NGjBz169CjxvniAcs45V8DMaNasGW+//fZW+15++WUmTZrEiy++yK233sqcOXNKtC9+Dco551yBKlWq8P333xcEqPXr1zN37lw2bdrE119/TYcOHbjjjjvIzc1l9erV7LnnnqxatapE+uIjKOecSyc7WBZe0ipUqEB2djb9+vUjNzeXDRs2cM0113DooYdy4YUXkpubi5nRr18/atWqRffu3enVqxfPP/889957L+3atUtaX7zcRhJ4uQ3n3K7ychtebsM559xuxgOUc865tOQByjnnUqy8XGrZ2fP0AOWccylUtWpVli5dWuaDlJmxdOlSqlatWuTX+Co+51y5MHDgQKZOnUrDhg0ZM2YMlSpVAmD8+PGMHDkSgC+++IL+/ftz9dVXc9999zF27NiC1/bs2ZNhw4YxYcIEAK688kouvPDCYvfrwAMPZOHChXz//ffFfq90V7VqVQ488MAiH++r+JLAV/E5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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T08:59:56.329312\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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T4RFZrOzs9m4cSNPPPEEo0aNAmDr1q1kZWUxe/ZsANq0acPChQsBuPjii+nduzf9+/ff5r23bNlClSrFf7X17duXvn37JqhV6SORn++uPP300/Tu3TsuCcqH+JxzSff6669TtWpVLr/88qJtxxxzDPfccw9PPvnTArdvvPEGTZo0oUmTJjt9v8zMTIYOHUq7du2YMGECzz33HCeeeCLHHnss3bt3Z8WKFQBMmTKFq6++GghfwNdeey0dO3akWbNmZGVlJaClqRHvz/eVV16hQ4cOHHfccZx33nmsX78egBEjRtCyZUuOPvporr/+eubMmcOzzz7LDTfcQNu2bfnss8/2qh3eg3LOJd0HH3zA8ccfv8P2Nm3aUKlSJbKzsznmmGN44oknGDhwYKneMz8/v2hOzNzcXN5++20k8eCDD/LHP/6RP/3pTzu85ttvv+XNN99k6dKl9O3bd7d7C+kqnp/vypUrueWWW5gxYwa1atXi9ttv56677uKqq65i2rRpLF26FEmsXr2aunXr0rdv3z3qeRXHE5RzLq0MHDiQJ554glatWvH0008zZsyYUr1uwIABRY9zcnIYMGAA3377Lfn5+SXed3P22WdTqVIlWrZsWdTLKu929/N9++23WbJkCZ06dQLCHwIdOnSgTp061KhRg0suuYTevXvTu3fvuMfqQ3zOuaRr1aoVCxYsKHbfBRdcwL/+9S9mzJjB0UcfTYMGDZg2bRpt27albdu2Ja4cUKtWraLH11xzDVdffTWLFi1i0qRJJd57U7169aLH5Wnx1nh+vmbGaaedxsKFC1m4cCFLlixh8uTJVKlShblz59K/f3+ef/55evbsGfd2eIJyziVdt27dyMvL44EHHija9v777zNr1iwOO+wwMjIyGDFiRNHw0znnnFP0BdmuXbtdvv+aNWto1KgRAI888khiGpHG4vn5nnTSScyePZtPP/0UgA0bNvDxxx+zfv161qxZw5lnnsmf//xnsrOzAdh3331Zt25dXNrhQ3zOVXClLQuPJ0lMmzaNoUOHcvvtt1OjRg2aNm3K3XffDYRhqBEjRnDuuefu0fuPHj2a8847j/33359u3brxxRdfxDH63Q2mdGXh8RTPz/eAAw5gypQpDBw4kLy8PABuueUW9t13X8466yw2bdqEmXHXXXcBoYd26aWXcs8995CVlcVhhx225+0oT93aVGnXrp35goWurPjwww856qijUh2Gq6CK+/2TtMDMduga+xCfc865tOQJyjnnXFryBOVcBeRD+y4Vdvf3zhOUcxVMjRo1+OGHHzxJuaQqXA+qRo0apX6NV/E5V8EcfPDB5OTk8P3336c6FFfBFK6oW1qeoJyrYKpWrVrqFU2dSyUf4nPOOZeWPEE555xLS56gnHPOpSVPUM4559KSJyjnnHNpyROUc865tOQJyjnn9sLw4cPp0qULgwcPZvPmzUXbp02bRmZmJpmZmTRu3JgJEyYAcN9999G+fXvat2/PU089laqwywSfzTwO2h1U2eZfVjvVYTjnEmEny2VkZ2dzxx138NhjjzFu3DiaNWtW7BLqp5xyClOmTKFJkya0atWK7Oxs8vPz6dKlS4kLC1YkPpu5c87F2Zw5c+jRowcAPXv2ZPbs2Tscs3z5cvLy8mjSpAkAzZo1Y+PGjaxbt466desmM9wyx2eScM65PZSbm0vDhg0BqFOnDqtWrdrhmKlTp9KvX7+i57169eKoo46ioKCAyZMnJy3WssgTlHPO7aG6deuydu1aICwzX69evR2OycrK4uGHHwZg7dq1TJw4kU8++YT8/Hy6devGGWecgaSkxl1W+BCfc87toY4dOzJjxgwAXn75ZTp16rTN/hUrVmwzvFepUiVq1qxJjRo1qFWrFvn5+T6r/E54gnLOuT3Utm1bGjRoQJcuXVi8eDH9+vVjyJAhRfu3H96rXbs25557Lh06dKBjx45cddVVVKrkX8Ml8Sq+OPAqPufKj8wpG7bd0LTzNk9nzpyZvGAqCK/ic845V6Z4kYRzzsWYeXGtbTeMnpmSOJz3oJxzzqUpT1DOOefSkico55xzackTFKDoLjlJNVIdi3POuaDCJyhJMjOTdDowVFL1VMfknHPOExRRcjoR6AXMMbO8VMfknHNQ8lIeGzdupE+fPnTt2pVTTz2VFStWANCiRYuiJT5effVVAC6++GJOOOEEMjMzueOOO1LSjj1VocvMJVUGKgP/ALYAvyncbmYFu3jtZcBlAJX3O4Cmmx5OcLTOuZQY8UJC337Zbb2K3Z6dnc3XX3/NrFmzGDduHFlZWUVLeUyfPp3WrVszfvx4Hn30USZPnszIkSOpU6dOsTcSP/zww7Ru3TqRzUiICtmD0k8zM1Y2s3ygA1ADuB3AzAok7fSzMbMHzKydmbWrvE+dxAbsnKtwdraUR/PmzdmwIcx4kZubS0ZGBgDr16+na9euDBo0qGhmdUlceumlnHbaaWRnZye5FXunwvWgYq45dQfOl7QQeANoB7wnKc/MfmdmW1MaqHOuQtvZUh4tWrRgyZIltGrVCjNj7ty5AMyePZv69evz97//nVGjRnHvvfdy5513Ur9+fZYuXcpFF13EO++8k5L27IkK14OKktOpwAQgCxgAXG1mKwlJ6gpJZWug1jlX7uxsKY9HHnmEzp07s3jxYm6++WbGjh0LQP369QHo379/UW+pcNuRRx6JJAoKdnr1Iq1UmASlbRdcaQv8CsgFagO3AJjZCqAlMD3Z8TnnXKydLeVhZkXDehkZGaxZs4b8/Hzy8kKN16xZs2jevDlAUZL77rvvyM/Pp3Llyslsxl4p90N8kvYFmprZoqha7ytgOfAAsBnoZWbLJfUBDjGz+4HlhUOBqYvcOVeRxS7l0bhxY66//nqGDBnCpEmTGDRoEAMGDCArK6toZd7c3FzOPPNMatWqRfXq1XnooYcAuPDCC1m1ahUFBQXceeedKW7V7in3y21IOhB4DlgAHAMMATYC44GFZnaLpPbAw8AwM3tpd89RvWELa3jR3fEL2jlX7ix/fESx209qVr/Y7RVpWY+Sltso1z2oqBe0XNJfgEnA/Wb2vqSqwL+BUyS9AxQAv92T5OSccy4xynWCigoiGgIrgAuBSZI+N7O/AE9Keo5wH1StKJH5sJ5zLiEOHHRbsdtnlnAflCvHRRKSKkk6AHgQONjMsoAewBhJF0o6CrgH2GxmyyEktNRF7JxzLla57UFF9zF9L+lB4JeStprZQ5J6An8H1gG3mtmmlAbqnHOuWOUyQUW9o77AHWY2TdJm4GpJNczsfkkdCcN6OT6s55xz6ancDfFF9zs1B44Crovm1XseeAK4XdIvgDVmlgM+rOecc+mqXCSomPWcDgIyzOw54J/AIcCw6LDZwFvAIp/GyDnn0l+5GOKLqvX6EiZ7zZX0EfBHYAYwQNIrhGR1tZm9F+/zt2lUh/leieOcc3FVLhKUpMMJUxddACwC/ka4Ife3hJ7TmcDnZjYnZUE655zbLWV6iE9BA+BWoCGwMRq+u5Qw8ev1ZrbKzB7z5OScc2VLmUxQhdecLFgB3EeYX6+rpEOiJFU4155zzrkyqEwO8UXXnHoDZwHvAv8C7gSuBDpLeptQHHFt6qJ0zjm3N8pqD6oxMBz4BGhM6EEtBe4CGgDHAdeY2YvbLbPhnHOujCgzCSqmlPwIoCvwiJn9EbgXWBL9NwcYDVQDGko6wO9zcs65sqlMJKiYZdpPA54lDN39QlIDM/uGcL3pM8Js5W8DLwPtgfyUBe2cc26vpHWCklQZiq45HQv8BugFnAisJMwUcUA02etfCMN+mNnjhAq+NamJ3Dnn3N5K2wQlKQN4T9Ih0aaTgS6E1XG3ApcDhwF/iJLUt2b2saRKAGa2PiWBO+eci4u0TVBmthJ4DXhD0oFmNoFQqfcbSSeZ2XfAVUBToH7M63waI+ecKwfSMkHF9IKGEiZ5nSepoZmNISSt4ZI6RfdAnWtmS1MXrXPOuURIywRlZltjktRvgceAd6Ke1J+AecDvJNUFvMfknEuo4cOH06VLFwYPHszmzT/d/z9t2jQyMzPJzMykcePGTJgwAYCcnBz69u3LKaecwqhRowAYPXo0bdq0ITMzk2HDhhV7HrettL1RtzBJmdlWM/ttVGU+R1JnM7tV0qFmtjrFYQbfvAej66Q6Cufc3hq9Y11VdnY2X3/9NbNmzWLcuHFkZWUxcOBAAM455xzOOeccAE455RTOPvtsAG644QYmTpxIo0aNtnmv8ePH07t378S2oRxJmx5UzH1OlQu3RUmqsJLvt8DTwAJJ1czsi5QE6pyrUObMmUOPHj0A6NmzJ7Nnz97hmOXLl5OXl0eTJk3YvHkzy5YtY9iwYXTr1o05c36aBvSmm26ia9euvPbaa0mLvyxLix5UzH1OPYBOkn4AnjKzr82sIKYndZ2kSWbm9zc555IiNzeXhg0bAlCnTh1WrVq1wzFTp06lX79+AKxcuZKFCxfy5JNPUq1aNfr06cO8efO49tprGT16NCtWrKB79+4sWLCAatWqJbUtZU1a9KCi5HQKcDfwEjACuFJSlWh/0TUp4OPUROmcq4jq1q3L2rVrAVizZg316tXb4ZisrCz69+9fdHzz5s1p3LgxBx54IFWrVmXLli1Fr2vQoAFHHXUUOTk5yWtEGZUWCSpyOmGy1wLga2CimW2JGeLbGv3Xpy5yziVNx44dmTFjBgAvv/wynTp12mb/ihUriob3AGrWrEn9+vVZvXo1GzZsIC8vjypVqhQluR9//JGlS5cW9cpcyVI+xCepKfAD8CFhCqODgf5mliNpMFAVeCh1ETrnKrK2bdvSoEEDunTpQuPGjbn++usZMmQIkyZNArYd3it066230qdPH/Lz8xkzZgwQCicWLVpEQUEBI0eOpGbNmklvS1mjVHZIJO0P3A/cA+QBk4DbzSxL0jGE8vIbzOyllAVZCu0OqmzzL6ud6jCcc3urmCo+l3iSFphZu+23J70HJamymRUAmFmupHeB8cBpwIPAmZIuA2oBv0/35OScK5syp2zYcePMzB03zZyZ8Fhc8ZKWoKKZx1dEVXmHAdXNbImZ3RHNt3eymU2SNB0QUMnMviis8EtWnM4559JDUhJUdI/TA5KGA58SqvQqSdoKXEO4BtUX+I+ZfRn7Wk9OzrlEmHlxrR03jp6Z9DhcyZJSxRclmX6EaYnGmNmlhKUx6gITojiukNQ3GfE455xLfwntQUmqBeSZ2RbC0uxfA0Mk1TSz64DzJPUCDiQsLvhdIuNxzjlXdiS6B9URyIp6RlMI9zi1AM6SdB+Amb1gZpMJ6zy9neB4nHPOlREJTVBm9iqwD5BFGNrbZGa5QDugu6QHYw5fBT/Nyeecc65iS1iCikk004DpwJ8k7QOhvJywbPvJklpFlXopmSkiZpLahpIabb/dOefKgpKWBNm4cSN9+vSha9eunHrqqaxYsQKA++67j/bt29O+fXueeuqpVIW9U3G/UTdm4tcWhFLxj6Ltk4GTzKxVdBNuI2B6OlTpSeoD3A58D8wzs+uj7SWWuEf3al0GUHm/A44/+IqHkxWuc64CWXZbr10ek52dzR133MFjjz3GuHHjaNasWdGSIFOnTmXevHmMHz+eRx99lK+++oqRI0fSqlUrsrOzyc/Pp0uXLixYsCDRTSlRSTfqxr0HFSWnPsBTwFhJz0lqamaXEJbKeB94nJAc0yE5tQAuBgYD5wPnSroLitpSbE/KzB4ws3Zm1q7yPr4WlHMudXa2JEjz5s3ZsCHclJybm0tGRgYAzZo1Y+PGjaxbt466desmPebSiHsVn6QTgJsJM0NkEqYvulXS783sF5IygVVm9n68z727oiG9WwnXyb40s+8ltQfeklTDzK5MhyTqnHM7s7MlQVq0aMGSJUto1aoVZsbcuXMB6NWrF0cddRQFBQVMnjw5JXHvSlx7UFFvZCFwCdAGGAYcA9QGnpDUxsxmpjI5xfaIzOxrwnx/BUA3SQeY2UqgE9BX0lF+Lco5l+52tiTII488QufOnVm8eDE333wzY8eOZe3atUycOJFPPvmEpUuXctNNN5GOf4vHLUFJ6gzMBBqa2btAF+DfZvY/4J+Em3RTutBgzPWxbpJuknQd8AZhstq+QKakn5nZd8ChZvah96Ccc+luZ0uCmFnRsF5GRgZr1qyhUqVK1KxZkxo1alCrVi3y8/PTMkHFZYhP0pGEIoP/i5mq6H3gmmjRwb7AsMKCiVSJklN34E7g70AzYAGholCEoofKkp4i9Kqccy7t7WxJkEGDBjFgwACysrKKhvNq167NueeeS4cOHdi6dStXXXUVlSql0/KAQVyq+CSdSJiJfImZDYi2HUzoRZ0F/N3MXtzrE+1ZbA2BFmb2RvT8ViDHzO6Pnv8O6AmcTCiWeNfMsnfnHNUbtrCGF90dz7Cdc47lj49g05eLUh1GwsW1ii/m3qEmkpqZ2TuEL/ctksYCmFmOmf0T+LmZvZiKaznRarwdge8kFZba/UiYdoloGfnbgM+BWmb28O4mJ+ecc4mxRwkqGio7C/gX8EdJjwCbCNdyDpF0R8yxhWs/Jf0G3OjcTwMrgDsk9QAeBgZLuiq6OfhEQiFHRjLjc865XTlw0G2pDiGl9rQHdQQwFOgOvEz4gl8GzCeUlR8i6fD4hLhH8dUgTKcE0BQ4AVhEuM/pQEKV3i8lPQz8FfidmS1LfqTOOedKUqoiCUnVzCw/elwdWAO8ClwE/Bw418w2SDrOzN6StMTMUrl2ckOgk6RrCcmzG6H8PR+4GriPMPS3L7C/mX3qCyM651x62WWCiqrwekoyYCWhoGAqcDTQHBhkZp8XVsdJOisqLU+l/wE1gAuAydG9TUh6kVDu/hsgy8ymERZL9IURnXMuzew0QUmqY2ZrJH1KmJ6oAdDDzBZJeh2oSlg640fgSmB4KpNTYS/IzLZKmkLo6R0q6bfA3Wb2laTZhJLyT1IVp3POuV0rMUFFQ3nvSrrHzCZIKgA+I1zbWWRmkyStAJoABwPXmtl/UjVUFnMT7imERLrezCZKOg04F7hc0ntAB0KvyhdHdM65NFZigjKzPEkXAs9K+trMjpfUDrhJ0v5mdhehKGKumX0T87qUDJXFTFI7DvgjYaLatmZ2i6QtwADC1EuXe3Jyzrn0t9MhvqjgoRfwiqR6ZvaAwkq4QyW1Bo4ErgC+2dn7JIOkAwnDjOcQenmbgLMl7Wtmw4HXo1nVl8W7l9emUR3ml2JKfOecc6W3yyIJM5sbDZO9ImmrmT0o6VtCMrg5VTe2RqXkLaLrYc2AWsAQwv1MI4GuhAq+5yXVMrOrCcUTXhDhnHNlQKnKzM1sXnST6wuSaprZvYSe004X9UuwxoTqwiuB44GzzeybKFm9ZGaro+to9wIvRe3wxOScc2VEqW/UNbN5QB/C2k5NommEUvml/xVQF/g/4I2Y62CVgZMkjSMspfGimb3hy2Y451zZsluzmZvZO5IamdnaRAW0G/YF7gbWAQ0kXWlm90eVhPtFx/zHzN4E7z0551xZsydTHa2DbRf+SzZJtQjrOF1qZrcBc4BjJV0s6XjgUMIw32upitE559ze2e31oAp7IqnskUTTKvUDHpO02czuiO7TOpewLtXFZrYxVfE555zbe3FZsDBZJB1HiPldM1ss6QLgKUkbzewvkl4AmqZ6YUTnnHN7L/2WUCxGzHBib8JNuMdKqhIlotuA8ZJ+a2Z5npycc658SOsEFZOYGgGY2c2EOQFvBo6N9n0FPAC8nfQAnXPOJUzaDvHFzK13JvAnSQuAAuCq6L+jJH1GuO50npm97UtmOOdc+ZG2CSpKTu0Iy3tcAXwNDAaeBc4APgIOAp4xs7cLX5OicJ1zzsWZ0vE7PboJuCbwBfCFmbWPtm0lrNg708weT2WMsdodVNnmX1Y71WE45/bW6B3XWR0+fDhz5syhadOmPPTQQ1StWhWAadOmMWHCBAA+//xzhg0bxq9//WtycnK48sorWbduHSeffDJjxowpeq+ePXvSunVr7rzzzuS0p4yQtMDM2m2/Pa2uQcXeW2Vm64EewBGSrjGzgqiH9APRNSnnnEuk7Oxsvv76a2bNmsWRRx5JVlZW0b5zzjmHmTNnMnPmTA477DDOPvtsAG644QYmTpzI66+/vk1ymj17drLDL/PSKkFFw3qnAvdK6mNm7wFdgNslTZR0OmG6pUUpDdQ5VyHMmTOHHj16AKH3U1ySWb58OXl5eTRp0oTNmzezbNkyhg0bRrdu3ZgzZ07Rcffccw9XX3110mIvD9LqGpSktsCdwDPAdZIOAyYA7YFZwFFATzPLkVTZzApSFqxzrtzLzc2lYcOGANSpU4dVq1btcMzUqVPp168fACtXrmThwoU8+eSTVKtWjT59+jBv3jzeeOMNjjnmGGrX9ksBuyPlPajCYT1JhwD1gT+a2WhgLHAc8GtgKXAicDjQF8CTk3Mu0erWrcvatWHq0TVr1lCvXr0djsnKyqJ///5Fxzdv3pzGjRtz4IEHUrVqVbZs2cKECRO897QHUpqgJFWKhvV6Elbn/T1ws6Sq0Tx6k4HOwG/M7GPCYoTXS9rfZyd3ziVax44dmTFjBgAvv/wynTp12mb/ihUriob3AGrWrEn9+vVZvXo1GzZsIC8vjypVqvDpp59y/vnnc+ONN/LUU0/x3HPPJb0tZVFKhvgk1TCzTWa2VVJLYBBwFvAe8FfgaUnnmtl/JVUCcqFoNvWjzCwvFXE75yqWtm3b0qBBA7p06ULjxo25/vrrGTJkCJMmTQK2Hd4rdOutt9KnTx/y8/OLiiSys8O6rjNnzuT555+nT58+yW1IGZX0MnNJ+xN6Ss+b2euS/g4cAQwzszejlXLvibadZmb50esKb9xNu5txvczcubIlc8qG4nc07bzDppkzZyY2GJdWZeZ1gdXAeVHvaQShKq+rpBZmtgm4FvicsGQ7kB6zqDvnnEuelNyoG1XnnUPoJf2ZsMbUzYTZIaaZ2Ufp2FMqifegnCsnirlR1yVeOvWgMLPPgKcJCek3QC3gD0Bb4HxJ+5SV5OSccy4xkp6gCqvvzOxTfkpSvwb2A24kzK33Y7Ljcs45l14SnqC2LwePCh2qRI8/BaYBOcB1wA9m9n6iY3LOOZf+ElpmHlN5lwm0BAQ8bGY/Rvc6bTazzyQ9CRSYWQmlNckhqQuw1My+T2UczjnnEtyDipJTD8J0RXWBDsA8SbXNbHM0Qzlm9qmZfZHIWHZFUkdCnI1TGYdzzhVn+PDhdOnShcGDB7N58+ai7Rs3bqRPnz507dqVU089lRUrVgCQk5ND3759OeWUUxg1ahQAo0ePpk2bNmRmZjJs2LCUtGN3xL0HJSkDOChmqK4vMMHMHor23wtMlXSmmW2J9/n3hKRDgZHAP8xsQWnm+ZN0GXAZQOX9DqDppoeTEKlzLqFGvJDS0y+7rVex22NnVR83bhxZWVkMHDgQgOnTp9O6dWvGjx/Po48+yuTJkxk5cmTRrOqNGm27+MP48ePp3bt3wtsSD3HtQUmqBlwCXCbpuGjzBmD/mMN+R7jmVD2e595L+wKrgH6SDi/NPH9m9oCZtTOzdpX3qZP4CJ1zFdbOZlVv3rw5GzaEqyO5ublkZGTsdFb1m266ia5du/Laa68ltxF7IK49KDPLlzSTsAruBZLWAk8AMyR9ambPAEdH//YjJK+ki7k21pqwMOLHwE2E5HqlpHuja2Nl5l4s51z5tbNZ1Vu0aMGSJUto1aoVZsbcuXNLnFX92muvZfTo0axYsYLu3buzYMECqlWrlqpm7VJcelCSDomuNWFm7wCPAJuBIcA3hGG+2yT9jTDX3igz+zYe594TUXI6A/gX0A9YAtQhLPORC9woqbknJ+dcOtjZrOqPPPIInTt3ZvHixdx8882MHTu2xFnVC1/XoEEDjjrqKHJyclLSntLa6wQVDeu9CbwkaZKksYQhveeB7wnTFn0EdAVuAc43sxdSORu5pIMJNwj3BF4hzGTxpZktAJ4iDPel758VzrkKZWezqpsZGRkZAGRkZLBmzZoSZ1UvTHI//vgjS5cuLeqVpau9HuKLhvX6As8CDYAXCL2kuYTS8h8IixCOM7NPYl6XtN6JpOpA5ai8ff8ophcJs6ifC/Qys9WSzom232xmG5MVn3PO7czOZlUfNGgQAwYMICsri4KCAiZPngwUP6v6DTfcwKJFiygoKGDkyJHUrFkzlc3apbjNxSfpGGAmcLGZPRPNt3cj0Aw4FTjazD6Iy8l2L67KQEdCslwHdALuJiyIeAzQ3cy+lnQCYWhykJkt3J1zVG/YwhpedHcco3bOVUQlVfGVdyXNxRe3Igkzy5Z0OvCKpN+a2URJV0RrPh2aqvuczKxA0veEntLRwBVm9omkW4GHgaslVQV6ACN2Nzk559zeWv74CAAy377Dl/eIEe8qvrmSugMvSqpuZndHu5bBT9Vz8TznzsSc7yPgU2Aj0FrSPDN7X9L5hJuHqxNmUZ/tlXvOOZceErLchqQTgRlAK+CrVH7hSzoWuMnMzpXUFBgKbDKzEZLqA02j4og95kN8zrl48CG+bSVkqqOo1LyRmX2ZBr2RhUA1SU+b2TJgMlBD0jPAO6Ro2XvnnHM7l8i5+NbBjrOZJ4ukgyTVihJkXyBP0nNmtoiwOOLTwJAomTrnnEszCUtQqVqiXVLlaD7AJ4BBUZLaSigprxMlqVVm9rCZ/SeV92M555wrWUpW1E2EmIUQC8xsJfB74ALgvGj29AJgKnCIpKKxzjQYgnTOOVeMcnP9JWb6ov6Eir3nCbNY3EvoOa0DegEDzOyj1EXqnHOuNBJSxZcKkloSZrCYBlQFLgSuAlZGj1sDU8xsWrzP3a5dO5s/f36839Y55yqEhN+om0rRkN00YKyZPRBtWwSMAgYQhvuqRIsk+n1OzjlXBpSLa1BmNh9YAVwZs/n1aFttCzZHx3pycs65MqBMJqjCgghJx0g6FSDqHuZLmi7pZ4SbhDsTFiN0zjlXxpTJIb6oIOI04B5gnaS5wJ1m1l7SbGAxMAUYnIoJap1zzu29MtWDiuk5VQHaEa4vdQAKgGujSWk7EZb6aGtmb8S+zjnnXNlRphJU1HM6G/gncA7QIrq/6VZCW26U1MLMegGNJf2j8HWpitk559yeKVMJKiolHwo8SVgYcYykTma2ArgN2ArUADCzI4DfpShU55xzeymtE5SkBpIGRY8bA2OAj80sy8zGEG7CvUdSVzNbDvzGzBZF6zsRTQ7rnHOuDErbBBVdN+oM9JJ0IfAVofjhIEldJFU2s0mEYoj7o6XcCwAKS8qdc86VXWlbxRddb3qNMCtEd2AToQc1Gjgf2CrpbTO7V9IzZpabumidc87FW1omqJiJX3MlTSf09HpGu8cQZob4FSDgTTP7MiWBOuecS5i0GuKTVE9So8Kqu2haojWEgojXCEnqbOAW4BvAe03OuYQYPnw4Xbp0YfDgwWze/NNVg2nTppGZmUlmZiaNGzdmwoQJALRo0aJo+6uvvgrAkCFDirbVrFmT3Fz/ytodaTNZrKSawI1ATeA+M/sqpidlkuoAZwB9gKfN7N+pi3Zb7Q6qbPMvq53qMJxze2L0mh02ZWdnc8cdd/DYY48xbtw4mjVrxsCBA3c47pRTTmHKlCk0adKEdu3aUdKk0cuWLeNXv/oVr732WtzDLw+SuuT7njCzjUDhT/diSY2L6Um9BEwHlqYoTOdcBTBnzhx69OgBQM+ePZk9e/YOxyxfvpy8vDyaNGkCwPr16+natSuDBg1i1apV2xz773//m/POOy/xgZczKU9QkhpKOh7AzF4AngL2JySpptslqdXAP6Nl251zLiFyc3PZb7/9AKhTp84OCQdg6tSp9OvXr+j57Nmz+e9//0vPnj0ZNWrUTo91pZOyBCWpkqT9gCXAPEmjJV0HfEboKW0GfhF7TQrCirmpidg5V1HUrVuXtWvXArBmzRrq1au3wzFZWVn079+/6Hn9+vUB6N+/P9nZ2UXbly1bxj777MPPfvazBEdd/qSyB2Vmthb4NZAPFP70ngV6A22Bw4ErJP3MpytyziVLx44dmTFjBgAvv/wynTp12mb/ihUrthney8/PJy8vD4BZs2bRvHnzomOzsrJ8eG8PpaTMXFID4HlJ3c3s75KMMDN5e+BhQnIaSlgyox/hZtzvUhGrc67iadu2LQ0aNKBLly40btyY66+/niFDhjBp0iRgxyG73NxczjzzTGrVqkX16tV56KGHivZNnTqVZ555JultKA9SVsUn6XHgWOBEM1sr6QrCpK99zOxNSbWBLcDhZvZ+SoIsJa/icy79ZU7ZUPyOpp1LfM3MmTMTE4zbRlpU8Unap/CxmQ0CZgHvSdrPzCYCw4GnJWWa2Xoz21SYnHzJDOecq1iSNsQn6WDgLUlPEyZ8vdfMLpM0lpCk2prZA9FEry9IagSsKbz25NegnHN7Y+bFtYrfMXpmUuNwpZeUBCWpBlAP+JxwXam7pFbRtt8DnYDpknqa2X2Sno1Kyp1zzlVQCU9QUUFEFqEybwxwCvAD8C7QAriBUABxPrAgWvPp2+i18p6Tc85VTAlLUDHJpSqQH80E8Vp0HeqU6Nz3Aw8BBwBvAYti73NKdnLyhOicc+kjkUUSdaL/GmF+vfDE7HlgBnAIMAQ41My+A+4xs9dSUQwRc879k31u55xzxUtIgpJUnTBcNxT4HjggKhsHwMymA88ARwD9o2tUhfuS3oOJJqM9HZgqqY5XDDrnXOolZIjPzPKiVXCfAfYD5gCHS9pMWHhwOWGKozeABWa2KRFxlFZ03WsYcL2ZrfEE5ZxLR8OHD2fOnDk0bdqUhx56iKpVqwKwceNGzj//fNauXUuVKlV4/PHHadCgATk5OVx55ZWsW7eOk08+mTFjxrB06VIuueQSKleuzKGHHsqUKVNI16+8hF2DMrO3JJ1BmFevPiExdYz+mw9kAD3N7ItExVAa0TIfZwBHA02B+aXpxUm6DLgMoPJ+B9B008OJDNM5lygjXkh1BNtYdluvYrdnZ2fz9ddfM2vWLMaNG0dWVlbREiDTp0+ndevWjB8/nkcffZTJkyczcuRIbrjhBiZOnEijRo2K3uf+++/nD3/4A6effjqXXHIJb731Fh07dkxK23ZXQm/UNbMFwMmEYb75ZtbGzE4gFEmcnqrkVNhDigo28oCJhKmWzpB0cmnew8weMLN2Ztau8j51dv0C55zbCztbAqR58+Zs2BBmysjNzSUjI4PNmzezbNkyhg0bRrdu3ZgzZw4ALVu2ZPXq1QCsXbu22Ilw00XCy8zN7ENJvYEXJdUxszvNLF9SypZpj645nQX8AqgOPEgohe8FXCCpspm9nqr4nHNue7m5uTRs2BDYcQmQFi1asGTJElq1aoWZMXfuXFauXMnChQt58sknqVatGn369GHevHn06NGD0047jVGjRnHcccdx5JFHpqpJu5SUqY7MbB7hPqhRkhpH5dxbk3Hu4kjqSJhW6XJgJfAbM/sYmAp8BVwoySv6nHNpY2dLgDzyyCN07tyZxYsXc/PNNzN27Fjq1q1L8+bNady4MQceeCBVq1Zly5YtjBw5ksmTJ7N06VLq1avH9OnTU9WkXUraXHxm9g7QyMy+TMH9TZW321SPMKR3MmFJj4uj7bnAX4FbzCw3aQE659wu7GwJEDMjIyMDgIyMDNasWUPNmjWpX78+q1evZsOGDeTl5VGlSpVij01XyV5uYx0k94bYqOS9o6R3CUUQDQnDer8k3J81yMyWSeoPDAQuTHXhhnPObW9nS4AMGjSIAQMGkJWVRUFBAZMnTwbg1ltvpU+fPuTn5zNmzBgARowYwZAhQ6hSpQr7778/I0aMSGWzdiply20ki6T6wOnARYTe0snAN4RrTiuAe4FGwF3AiOhG4t1SvWELa3jR3fEK2TlXAS1/PCSKk5rVr3DLfKTFchupYGY/EKoITyXM/7clmk7pkuiQa4FrgBvN7Hm/B8o559JDRehBnUiYRb0BcBphgtqHzGy+pIMIRRLVzWzdnp7De1DOuXgp6T6o8qzC9qCAswgT0a4E/kHoTV0s6UrgTqD+3iQn55xziVFuE5SkKgBmNhJ4DHiZ0N6/AJ8Qrkk9aWbfpixI55xzJSqXCUrS8cBISRkAZjYaeBZ4GqhiZhOA08zsGb/m5Jxz6alcJihgDdANuCKq4gO4j1Be/lI0e/oG8KXknXMuXSX7PqiEinpOVQmzQZwNPBo26z7CPVDTgadSPXu6c865XSvzCarwpl9JXQhFEG8QbsbNAgYBDxDuceoB/CqawDau2jSqw/wKWHnjnHOJVOYTVJScugHnAP3NbK6kw4EpwHfArwhLyt9uZktSF6lzzrndUaavQcUUOJwDXEWUcKOJXycAJ5rZxmj+P09OzjlXhpTJHlTMXH71gB/M7BpJlYB/SDrCzPIJbWsdzcWX78UQzjlXtpTJHlQ0rHcmME3Sw5JamtlVwAzgO0m/B84DHjSzPE9OzjlX9pSpHlRMQUQD4NfAHwgzRQyV9KiZXSppLWGtp0wzWyCpqpltTmXczjnndl+ZSlBRcuoE1AUWm9lMSf8Ffg8MllTFzIZJqgo8K6mFmf2Yypidc87tmTIxxFe44KCkzsC/CavzXi7pUgvGEir2fiFpXzO7llBm3jBlQTvnnNsrad2DklQPWG9m+ZLaAhcCl5vZs5KygDujUb8Hzez3kpoXTvxqZr9OYejOOef2Utr2oCTtA9wAjIomfj0GOA5oG/WS/gMMA0ZIGgJgZp+mLGDnnHNxlbYJCsgH3gb2Aa41s0eAPwOHASdLqmVmrwGXA36Pk3POlTNpO8RnZlskvUBIVL0lXWdmd0mqCfQDqkl6xcxmpDZS55xziZC2CQqKktSr0dPYJFWNkKRmE81K7pxzrnxJ6wQlqdJ2SeoMSSPM7DZJz5vZdykN0DnnXMKkTYKKuQm36MZaM9sqqXJMkqoC9JJ0qJl9kdqInXPOJVLaJKgoOfUChkiaCcw3szfMrCAmSU0H3jKzlamN1jnnXKKlTRWfpCOAIcB/CJV7l0g6HSA2SXlycs65iiEtEpSkowkLDT5jZhMICw/OBgZGvSrMrCCFITrnnEuytEhQZvY+8D5wY/T8C+AlYD7wc0kZKQzPOedcCqQkQRUuNCipqaQ2AGZ2GvCppDnR8y+B54DhPqznnHMVT0oSVFQQ0ReYCtwiaYqkDDPrBXwrKTs67n9m9lUqYnTOOZdaSUtQkmrEPO4I3AScDjxNWLJ9vKQDzKwf8FV0jHPOuQoqKQlK0v7APyXtG21aCVwFHE+YS68DcDjwuKSDzay3mc1JRmzOOefSU8ITlKRqZpYLXAkcJKmDmX1MKIA4FXjIzJYQKvf2A2omOibnnHPpL6EJKqq+e0jSCWb2LXAaMC16vhX4EDhP0jXAYOA3ZvZJImNyzjlXNiR0JgkzWynpS2CopDvM7C+SCoB/SBoITAOqAb2A231YzznnXKGE9aCiRQYhLNHenJCUjjWzicDdwCPA4Wb2V6C/mT1fWH7unHPOJSxBRXPndQceAsYQhvNuj5LU/cBkQuFEXaBwclhLVDzOOefKloQkqJie0CnAC2b2opn1BxYAf5fUzsz+DGSa2eroepRzzjlXJCEJKqYntASoXThVkZn9NjrnbyXtB/hNuM4554oVtyKJmPWcugCNgO8IPaaBwJmS5kXnWwrcaWZr43Vu55xz5U9celDRUhgmqQcwCTBgBnAooSCiM3AL4V6nh83srXic1znnXPmlvalLkFTPzFZFj/cHJhIS0X7R4zPM7BtJ1QlrPNUzs8/2Puz0Imkd8FGq40iRDMLMIBWVt7/itr8itx3i2/4mZnbA9hv3OEFJagq8DjwRXVtC0o3Az4BOwIVm9pmkS4APy/M9TpLmm1m7VMeRChW57eDtr8jtr8hth+S0f2+G+LZEr8+UdFe0bTPhmtMlUXI6GrgOqLp3YTrnnKto9rhIwsxyJN0LVAYOkHS7mQ2XdCQwWlI+0BL4rZn9N07xOuecqyB2K0FJaga0N7Mnok3ZhGtOvwX6SRprZkMkHQPUB1aZ2cLCCr+4Rp5eHkh1AClUkdsO3v6K3P6K3HZIQvtLfQ1KUjXgY6AxcBswF5gJ9AbqArOAXwMbzOyaBMTqnHOuAin1NSgzywfOAv5HKIIQ8DxhLafjzSybUFJeS1LL+IfqnHOuItmtIokoCZ0FtAb2JSyRAXCgpBbAB8Cvo/WdnHPOuT2221V8ZvY+0BO4F+hgZlcRKve+MLOtZrYuzjGmDUk9JX0k6VNJI4rZX13Sk9H+d6JS/HKhFG2/TtISSe9L+o+kJqmIM1F21f6Y4/pJMknlpvy4NG2XdH70818s6fFkx5hIpfjdbyzpdUnvRb//Z6YizkSQ9JCk7yR9UMJ+Sbon+mzel3RcXAMwsz36B5xAmM7o2j19j7L0j1Ct+BnQjLCGVTbQcrtjrgT+Gj2+AHgy1XEnse2nAPtEj68oL20vbfuj4/YF3gDeBtqlOu4k/uxbAO8B+0fPf5bquJPc/geAK6LHLYFlqY47ju0/GTgO+KCE/WcC0wmXfE4C3onn+ff4Pigzmwf0AcZFf0EkfPn4FGsPfGpmn1u4HvcEYbgz1lmEda4AsoBTy8kaV7tsu5m9bmY/Rk/fBg5OcoyJVJqfPcBY4HZgUzKDS7DStP1S4D4zywUws++SHGMilab9Rpg9B6AO8E0S40soM3sDWLWTQ84C/m7B20BdSQ3jdf69Sipm9g7QyMy+tPK/ZEYjtp19PSfaVuwxZrYFWEMoty/rStP2WJcQ/qoqL3bZ/mho4xAzeyGZgSVBaX72hwOHS5ot6W1JPZMWXeKVpv2jgQsl5QAvAhWpinl3vxt2SzxmM18HP81mHof3c2WYpAuBdkDXVMeSLNHowV3AxSkOJVWqEIb5Mgk95zcktTGz1akMKokGAlPM7E+SOgCPSmpdAf5oT7i9HpYrTEoVIDl9DRwS8/zgaFuxx0RL3tcBfkhKdIlVmrYTraD8O6CvmeUlKbZk2FX79yVUts6UtIwwFv9sOSmUKM3PPgd41sw2m9kXhPslWyQpvkQrTfsvAf4FYGGlhhqEiVQrglJ9N+yp8n7dKJ7mAS0kHRrdtHwB8Ox2xzwLXBQ97g+8Vk4S9y7bLulYwlIrfcvZNQjYRfvNbI2ZZZhZUzNrSrgG19fM5qcm3Lgqze/904TeE9HipIcDnycxxkQqTfu/BE4FkHQUIUF9n9QoU+dZ4BdRNd9JwBoz+zZebx63BQvLOzPbIulq4GVCZc9DZrZY0s3AfDN7FphM6N5/SriweEHqIo6fUrb9DqA28O+oLuRLM+ubsqDjqJTtL5dK2faXgR6SlgAFwA1mVh5GDkrb/mHA3yT9hlAwcXE5+cMUSf8k/PGREV1jG0U0+beZ/ZVwze1M4FPgR+CXcT1/OfkcnXPOlTM+xOeccy4teYJyzjmXljxBOeecS0ueoJxzzqUlT1DOOefSkico5+JIUoGkhZI+kPScpLox+1pJei2aGfsTSTfFztUo6QxJ86NZwd+T9KednOdpSW9vt22KpP7bbVsf8/hwSS9G535X0r8kNdju+ErR7NQfSFokaZ6kQ/fiI3Fuj3mCci6+NppZWzNrTbgX7ioASTUJNzXeZmZHAMcAHQkz4COpNfAX4EIza0mYLurT4k4QJb3jgTqSmpUmKEk1gBeAiWbWwsyOA+4HDtju0AHAQcDRZtYGOAdYXbqml3huv9/S7RFPUM4lzlv8NHHmIGC2mb0CEM38fjVQuL7QjcA4M1sa7S8ws4klvO+5wHOEmbVLezP4IOAtM3uucIOZzTSz7df5aQh8WziPnJnlFM5SHq2L9K6kbEn/ibbVi3pz70cTxR4dbR8t6VFJswk3rx8g6amoRzZPUqdSxu0qME9QziWApMqE6W8KZ5loBSyIPcbMPgNqS9qPMJffNvt3YiDwz+jfwFK+prTv/y+gTzRM+adoCiskHQD8DehnZscA50XHjwHeM7OjgZHA32PeqyXQ3cwGAhOAP5vZCUA/4MFSxu0qMO96OxdfNSUtJPScPgRejeebR9eMWgBvmplJ2hzNnP0BYZqd7e3WVDFmliPpCKBb9O8/ks4D9gHeiCaDxcwK1wjqTEg4mNlrkupHCRfCBLIbo8fdgZYxl9z2k1TbzIqukTm3Pe9BORdfG82sLdCEsMroVdH2JYTrRkWi60frzWwtsHj7/SU4H9gf+CKaOb0pP/Wifoj2Fb5/PWBl9LS074+Z5ZnZdDO7AbgVOLs0ryvGhpjHlYCToutzbc2skScntyueoJxLgOga07XAsKhI4B9A52hJksKiiXuAP0YvuQMYKenwaH8lSZcX89YDgZ4xM6cfz0/XoWYCA6JZtyGsT/V69PhxoKOkXoVvJOnkqDiDmG3HSTqoMAbgaOB/hBnaTy6s6IuSH8As4OfRtkxgZZRwt/cKMQv5SWpbzDHObcMTlHMJYmbvAe8DA6OhrrOA30v6CFhEWMrhL9Gx7wNDgX9K+hD4ANimQk9SU0LPrKi8PBpyWyPpRDN7npAwFkTDjJ2A4dFxG4HewDVRmfkSQgXh9stC/Ax4TtIHUexbgL+Y2ffAZcBUSdnAk9Hxo4HjJb0P3MZPy81s71qgXVRMsQQoLvk6tw2fzdw551xa8h6Uc865tOQJyjnnXFryBOWccy4teYJyzjmXljxBOeecS0ueoJxzzqUlT1DOOefS0v8DrNUhJMUru24AAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" @@ -170,7 +170,6 @@ "strategies = {\n", " 'KNN Imputer' : KNNImputer(n_neighbors=3),\n", " 'Median Imputer' : SimpleImputer(strategy='median',add_indicator=True),\n", - " 'Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=False),\n", " 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,sample_posterior=True)\n", " }\n", " \n", @@ -189,15 +188,15 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 57, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-13T01:22:45.032536\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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ye3CCy8kLy+PVq1aJaVV5S0o55xzWygoKGDSpEnk5OSwbNkyJk6cSNWqVZkwYQJDhgzh6aef3uI9s2bN4s0332T58uUccMABXHrppaV+5qkknqCcc85t4fTTTycnJweAwsJCzj//fGbPno0k1q1bV+J7evbsSY0aNahRowa777478+fPp3nz5jscg3fxOeec20Lt2rWLXw8dOpQuXbrwySef8MILL2z1WaYaNWoUv87JyWH9+vU7FYMnKOecc9tUWFjInnvuCcDo0aPTdl7v4nPOuSyyvWnhmXD11Vdz/vnnc9NNN9GzZ/rik5ml7WQVVfv27c0XLHTO7Yj//Oc/tG3bNtNhpE1J1ytpqpltMV/du/icc85lJU9QzjnnspInKOecc1nJE5Rzzrms5AnKOedcVvIE5ZxzLiv5c1DOOZdNhtdL8ucVbnP3ziy3AaFgbPXq1cnNzU1OvAk8QTnnXCW2veU2tic/P586deqkJEF5F59zzrlNTJ06lWOPPZYjjzySE044gblz5wJw1113ceCBB3LooYdy5plnMmfOHB544AH+9Kc/0a5dOyZOnJjUOLwF5ZxzrpiZcfnll/Pcc8/RuHFjxowZw29/+1seeeQRbr31Vr766itq1KjB0qVLqV+/PpdcckmZW12l5QnKOedcsTVr1vDJJ59w/PHHA7BhwwaaNWsGwKGHHsrZZ59N79696d27d8pj8QTlnHOumJlx0EEH8e67726xb/z48bz99tu88MIL3HzzzcyYMSOlsfgYlHPOuWI1atTghx9+KE5Q69atY+bMmWzcuJFvv/2WLl26cNttt1FYWMiPP/7IrrvuyvLly1MSi7egnHMum2xnWniqValShbFjxzJw4EAKCwtZv349V1xxBfvvvz/nnHMOhYWFmBkDBw6kfv369OrVi379+vHcc89x991307lz56TF4sttJIEvt+Gc21G+3IYvt+Gcc66c8QTlnHMuK3mCcs65DKssQy1lvU5PUM45l0E1a9Zk0aJFFT5JmRmLFi2iZs2apX6Pz+JzzrkMat68OQUFBfzwww+ZDiXlatasSfPmzUt9vCco55zLoGrVqrHPPvtkOoys5F18zjm3E6655ho6d+7Mueeey7p164q3jxs3jry8PPLy8mjRogUjR44EoKCggFNOOYUuXbowbNgwAGbMmEHnzp055phjGDNmTEauIyuZmf/byX9HHnmkOecqn2nTptnZZ59tZmY33XSTPf744yUel5eXZ3PmzDEzszPPPNMKCgo22d+zZ0+bPXu2rV+/3o499lhbtWpVagPPMsAUK+F3q3fxJcP3HyV/kTHnXPbYSnWHSZMm0b17dwB69OjBqFGj6N+//ybHzJs3jzVr1rD33nuzbt065syZw6BBg1iwYAE33XQTubm5zJ8/n9atWwNhTOqTTz6hffstnlutdDxBOefcDlqyZElxpe969eqxePHiLY555pln6Nu3LwALFy5k2rRpjBkzhurVq9OrVy8mT55MixYt+OCDDzjooIN47733WLJkSVqvI1t5gnLOuR1Uv359li1bBkBhYSENGjTY4pixY8cyatSo4uNbt25NixYtgDBBYv369dx+++386le/QhJt27aladOm6buILOaTJJxzbgfl5uYyYcIEAF599VU6deq0yf758+cXd+8B1KpVi4YNG7J06VJWrFjBmjVrqFq1Kq1ateKll17iqaeeokqVKhx00EFpv5Zs5AnKOed2ULt27WjSpAmdO3dm5syZ9O3blwEDBhTvT+zeKzJixAh69epF165dueGGGwAYPXo0Xbp04dRTT2Xo0KFUqeK/msGrmSdF+z1ybMrFdTIdhnMuCfJGr9hyY8ujSzw2Pz8/tcFUEl7N3DnnXLnikySccy5B/gW1t9w4PD/tcThvQTnnnMtSnqAASYr/LX2ZXeeccylV6ROUJJmZSToBuEJSjUzH5JyrGMpap+/OO++kU6dOnHDCCcydOxeAu+66i5YtW9KvX7+MXEMmVfoEFZPTT4GewCQzW5PpmJxz5d/06dP57rvvmDhxIm3atGHs2LHF+/r06UN+fj75+fnsu+++9O7dm3nz5jF+/Hj+/e9/c+ONN3LjjTcCcOaZZ/L6669n6jIyqlJPkpCUA+QAjwHrgd8UbTezDdt578XAxQA5dRvTcvWoFEfrnMuYa8dvc/ecW3tusa2sdfref/99DjroICRxxBFHcNFFFwGw++67s3LlyiRdSPlSKVtQRWNOQI6ZrQU6AjWB2wDMbIOkbd4bM3vIzNqbWfucXbxQrHNuU0uWLKFu3bpA6er07bvvvkyZMoU1a9YwYcKEEo+vbCpdCyphzKkbcIakacDbQHvgI0lrzOy3ZrYxo4E658q1stbpa9SoEZdeeindu3enXbt2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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T09:00:15.619928\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA3gElEQVR4nO3deXxU5dn/8c8XBEHAIEsRF0ARRRRFpaggNVJEKsgiuGCl+tQq7qWlFvSpP7Fal1ataNVqXdun1iWKolZR1FQEqUIFEcR9Aw0V2ZVNuX5/nJM4hC1Akpkk3/frlRcz55yZc507w1y5l3PfigjMzMxyTa1sB2BmZrYhTlBmZpaTnKDMzCwnOUGZmVlOcoIyM7Oc5ARlZmY5yQnKahxJP5b0bLbj2BxJIWmvrXzt05JOK++YaipJyyXtuZljukt6u7JiqgmcoGyrSPpIUs8snPd0SS9vwfFt0i/67Yq3RcTfI6JXOcf14/RLbLmkFZLWZjxfXp7nKouI+FFE3FfZ590USXtLeljSAklLJL0h6ZeSamc7ts2JiIYR8cFmjpkYEftUVkw1gROUWTlIk17DiGgI/Aj4rPh5uq1Gk9QW+DfwKdAxIvKAE4DOQKNsxrYpmX/YWOVzgrJtltZqJkn6o6TFkj6Q1DXd/qmk/2Y2N0m6V9KfJT0naZmkf0lqne5br8YjqVDSzyTtC/wZODytmSxO9/eR9Lqkpen5RmeE91L67+L0NYeXroWlsb6W/lX/mqSupc59RXp9yyQ9K6nZFpbPLpIekfSFpA8lXZixr7akSyS9n77/NEm7Z7y8p6R303K9RZIyyvxlSddJWpS+749Kl1nGOa5Lay4fSDovs4xL14YljZb0fxnPD5M0OY1hhqT8jH2np++5LI3hxxsphsuByRHxy4j4HCAi3o6IUyJicfpe/STNSs9TmP6+i8/zkaSL0lrXV5LuktRCSVPmMkkTJO2UHlv8GTpL0meSPpf0q4z36iLplfQ8n0v6k6S6GfsjLaN3gXcztu2VPj5W0uz0vPOK31tSvqS5Ge+zb3odi9Pr6pex79709/lU+j7/VpLELVNE+Mc/W/wDfAT0TB+fDnwD/A9QG7gS+AS4Bdge6AUsAxqmx9+bPv9Bun8M8HK6rw0QwHYZ5yoEfpZxrpdLxZIPdCT5g+sAYD4wYBPvd3rG+ZoAi4ChwHbAkPR504xzvw/sDdRPn1+zmbLJB+amj2sB04D/B9QF9gQ+AI5J918EzAT2AQQcmHHuAJ4EGgOtgC+A3hnXsAY4My3zc4DPAG2gzM4G5gC7p9f7YmaZZP4u0+ejgf9LH+8KfAkcm17L0enz5kADYCmwT3psS2C/jZRJEfA/myizvYGv0vevA/waeA+omxHjFKBFGtN/gf8ABwH1gBeAy0r9zv+RxtgxLbviz+shwGHp77sN8BYwPCOWAJ5Ly6p+xra90sefA93TxzsBB2/g914njf+S9Pfeg+QzX1xW96bl2CWN4+/AA9n+f51rP65BWXn5MCLuiYhvgQdJvgx/GxGrIuJZYDWQ2eH/VES8FBGrgP8lqRXtvv7bbl5EFEbEzIhYGxFvkHwxHVnGl/cB3o2Iv0XENxHxD5Iv8+MyjrknIt6JiBXAQ0CnLQjv+0DziPhtRKyOpB/jL8DJ6f6fAb+JpDYRETEjIr7MeP01EbE4Ij4hSSyZ5/44Iv6Slvl9JAmixQZiOBG4MSI+jYiFwNVbEP+pwD8j4p9p+T4HTCVJWABrgf0l1Y+IzyNi1kbepynJF/vGnETymXguItYA15H8QdA145ibI2J+RMwDJgL/jojXI2IlMJYkWWW6PCK+ioiZwD0kf3wQEdMiYkr6+/4IuJ31Py9XR8TC9Hde2hqgg6QdI2JRRPxnA8ccBjQk+f2tjogXSP7YGJJxzNiIeDUiviFJUJ02UT41khOUlZf5GY9XAERE6W2ZfTGfFj+IiOXAQmCXrTmxpEMlvZg2oS0hqTGUtRluF+DjUts+JvkrvVhRxuOvWfc6Nqc1sEvazLM4bZa8hO8Sye4kNbSN2dS5S/ZFxNfpww3FtgsZ5c3617sprYETSsV/BNAyIr4iSSxnA5+nzVXtN/I+X5Ik0I1Z5/cQEWvTmDN/D6U/T5v6fMH617wLlAzWeFJSkaSlwFWs/3n5lI0bRJKgP1bSPH34Rq7n0/Q6MmMor89VjeAEZdlSUluS1JCkOeUzkmYegB0yjt054/GGpt+/HxgH7B5J5/ufSZrLNnZ8ps9IvoQztQLmbeZ1ZfUpSe2yccZPo4g4NmN/Rfc9fE5GeZNcX6av2Hh5fwr8rVT8DSLiGoCIGB8RR5MknzkktcMNmUDyxb4x6/we0r623dm230Ppa/4sfXwbSaztImJHkj8YVOq1G/3cRMRrEdEf+B7wGEmturTPgN0lZX7HlufnqkZwgrJsOVbSEWnn9BXAlLQJ6guS/8Snpp37P2XdL/D5wG6Zndoko8AWRsRKSV2AUzL2fUHSDLWxe1j+Cewt6RRJ20k6CehA0hxTHl4FlkkaKal+ek37S/p+uv9O4ApJ7ZQ4QFLTcjp3sYeACyXtlg4kGFVq/3TgZEl1JHUGBmfs+z/gOEnHpLHXSwcD7JYOUugvqQGwClhOUtYbchnQVdIfJO0MIGkvSf8nqXEaYx9JP5RUBxiRvufkbbjuSyXtIGk/kv7RB9PtjUj6zpanNb5zyvqGkuoquaUgL22KXMqGr/nfJLWiX6flmk/SbPzAVl9NDeQEZdlyP8mX1kKSTutTM/adSTJ44EtgP9b9knoBmAUUSVqQbjsX+K2kZSSDEUr+ok2bvn4HTEqbqA7LDCLt7+lL8oX4JUnnfN+IWEA5SPuH+pL0L3wILCBJSnnpITek8T5L8mV3F0nfS3n6CzAemEEysODRUvsvJfkjYBHJaLv7M+L/FOhPUsv4gqRGdRHJd0ct4JcktYWFJP04G/yyj4j3gcNJBiXMSptiHyHpz1oWEW+TfAZuJimj44DjImL1Nlz3v0gGKjwPXJf2hQL8iuSPmGUkZfPghl++UUOBj9LmwbOB9UYupnEfR3LLwQLgVuAnETFnK66jxioe8WNWaSTdSzLa6TfZjqUmktSGJFnWSTvoq5Xqfn01iWtQZmaWk5ygzMwsJ7mJz8zMcpJrUGZmlpM8EWI5aNasWbRp0ybbYZiZVUnTpk1bEBHNS293gioHbdq0YerUqdkOw8ysSpK0wdlN3MRnZmY5yQnKzMxykhOUmZnlJPdBmdUwa9asYe7cuaxcuTLboVgNU69ePXbbbTfq1KlTpuOdoMxqmLlz59KoUSPatGlDMmm4WcWLCL788kvmzp3LHnvsUabXuInPrIZZuXIlTZs2dXKySiWJpk2bblHN3QnKrAZycrJs2NLPnROUmZnlJPdBmdVwbUY9Va7v99E1fcp0XFFREcOHD+e1116jcePGtGjRgmeeeYa33nqLffbZp+S44cOH07JlS0aOHMnMmTMZOnQoAJ988gl5eXnk5eXRrFkzJkyYsNlzjhs3jtmzZzNqVOk1GyvQ6LzNH7NF77ekTIdlo3wBHnvsMfbee286dOiw5ddWihOUmVW6iGDgwIGcdtppPPBAssjsjBkzWLFiBQ888ACXXXYZAGvXrqWgoIBJkyYB0LFjR6ZPnw7A6aefTt++fRk8ePA67/3NN9+w3XYb/mrr168f/fr1q6Cryh0VWb6b89hjj9G3b99ySVBu4jOzSvfiiy9Sp04dzj777JJtBx54IDfddBMPPvjdArcvvfQSrVu3pnXr1pt8v/z8fIYPH07nzp0ZM2YMTzzxBIceeigHHXQQPXv2ZP78+QDce++9nH/++UDyBXzhhRfStWtX9txzTwoKCirgSrOjvMv32Wef5fDDD+fggw/mhBNOYPny5QCMGjWKDh06cMABB/CrX/2KyZMnM27cOC666CI6derE+++/v03X4RqUmVW6N998k0MOOWS97R07dqRWrVrMmDGDAw88kAceeIAhQ4aU6T1Xr15dMifmokWLmDJlCpK48847+f3vf8/111+/3ms+//xzXn75ZebMmUO/fv22uLaQq8qzfBcsWMCVV17JhAkTaNCgAddeey033HAD5513HmPHjmXOnDlIYvHixTRu3Jh+/fptVc1rQ5ygzCynDBkyhAceeID99tuPxx57jMsvv7xMrzvppJNKHs+dO5eTTjqJzz//nNWrV2/0vpsBAwZQq1YtOnToUFLLqu62tHynTJnC7Nmz6datG5D8IXD44YeTl5dHvXr1OOOMM+jbty99+/Yt91jdxGdmlW6//fZj2rRpG9x38skn89BDDzFhwgQOOOAAWrRowdixY+nUqROdOnXa6MoBDRo0KHl8wQUXcP755zNz5kxuv/32jd57s/3225c8rk6Lt5Zn+UYERx99NNOnT2f69OnMnj2bu+66i+22245XX32VwYMH8+STT9K7d+9yvw4nKDOrdD169GDVqlXccccdJdveeOMNJk6cSNu2bWnWrBmjRo0qaX4aOHBgyRdk586dN/v+S5YsYddddwXgvvvuq5iLyGHlWb6HHXYYkyZN4r333gPgq6++4p133mH58uUsWbKEY489lj/+8Y/MmDEDgEaNGrFs2bJyuQ438ZnVcGUdFl6eJDF27FiGDx/OtddeS7169WjTpg033ngjkDRDjRo1iuOPP36r3n/06NGccMIJ7LTTTvTo0YMPP/ywHKPf0mDKNiy8PJVn+TZv3px7772XIUOGsGrVKgCuvPJKGjVqRP/+/Vm5ciURwQ033AAkNbQzzzyTm266iYKC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\n" }, "metadata": { "needs_background": "light" @@ -221,15 +220,15 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 58, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-13T01:23:02.870254\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T09:00:34.224731\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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": "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\n" }, "metadata": { "needs_background": "light" @@ -255,6 +254,13 @@ "You can also use any other scikit-learn compatible imputer as an imputing strategy.\n", "eg. [feature engine](https://feature-engine.readthedocs.io/en/latest/index.html) library provides a host of other imputing stratgies as well. You can pass them for comparision as well." ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/probatus/missing_values/imputation.py b/probatus/missing_values/imputation.py index 746141df..268f5000 100644 --- a/probatus/missing_values/imputation.py +++ b/probatus/missing_values/imputation.py @@ -23,7 +23,7 @@ BaseFitComputePlotClass, get_single_scorer, ) -from sklearn.model_selection import cross_val_score,cross_validate +from sklearn.model_selection import cross_validate from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.compose import ColumnTransformer @@ -31,7 +31,6 @@ import matplotlib.pyplot as plt import numpy as np import pandas as pd -import seaborn as sns class ImputationSelector(BaseFitComputePlotClass): @@ -188,7 +187,7 @@ def fit(self, X, y, column_names=None): # Identify categorical features. categorical_columns = X.select_dtypes(include=["category", "object"]).columns # Identify the numeric columns.Numeric columns are all columns expect the categorical columns - numeric_columns = X.select_dtypes('number').columns + numeric_columns = X.select_dtypes("number").columns for strategy in self.strategies: @@ -253,9 +252,9 @@ def fit(self, X, y, column_names=None): results.append(temp_results) self.report_df = pd.DataFrame(results) - #Set the index of the dataframe to the imputation methods. - self.report_df=self.report_df.set_index(self.report_df.strategy, 'strategy') - self.report_df.drop(columns=['strategy'],inplace=True) + # Set the index of the dataframe to the imputation methods. + self.report_df = self.report_df.set_index(self.report_df.strategy, "strategy") + self.report_df.drop(columns=["strategy"], inplace=True) self.report_df.sort_values(by="mean_test_score", inplace=True) self.fitted = True return self @@ -283,16 +282,28 @@ def _calculate_results(self, X, y, clf, strategy): """ imputation_cv_results = cross_validate( - clf, X, y, scoring=self.scorer.scorer, cv=self.cv, n_jobs=self.n_jobs , return_train_score=True + clf, + X, + y, + scoring=self.scorer.scorer, + cv=self.cv, + n_jobs=self.n_jobs, + return_train_score=True, ) - #Calculate the mean of the results. - imp_agg_results = dict((k, np.mean(v)) for k, v in imputation_cv_results.items()) - imp_agg_results = {f'mean_' + str(key): val for key, val in imp_agg_results.items()} - imp_agg_results['test_score_std'] = np.std(imputation_cv_results['test_score']) - imp_agg_results['train_score_std'] = np.std(imputation_cv_results['train_score']) - #Round off all calculations to 3 decimal places - imp_agg_results = dict((k, np.round(v,3)) for k, v in imp_agg_results.items()) - imp_agg_results['strategy'] = strategy + # Calculate the mean of the results. + imp_agg_results = dict( + (k, np.mean(v)) for k, v in imputation_cv_results.items() + ) + imp_agg_results = { + "mean_" + str(key): val for key, val in imp_agg_results.items() + } + imp_agg_results["test_score_std"] = np.std(imputation_cv_results["test_score"]) + imp_agg_results["train_score_std"] = np.std( + imputation_cv_results["train_score"] + ) + # Round off all calculations to 3 decimal places + imp_agg_results = dict((k, np.round(v, 3)) for k, v in imp_agg_results.items()) + imp_agg_results["strategy"] = strategy return imp_agg_results @@ -331,7 +342,7 @@ def fit_compute(self, X, y, column_names=None): self.fit(X, y, column_names=column_names) return self.compute() - def plot(self, show=True,**figure_kwargs): + def plot(self, show=True, **figure_kwargs): """ Generates plot of the performance of various imputation strategies. @@ -351,38 +362,55 @@ def plot(self, show=True,**figure_kwargs): report_df = self.compute() imp_methods = list(report_df.index) - test_performance = list(report_df[f"mean_test_score"]) - test_std_error = list(report_df[f"test_score_std"]) - train_performance = list(report_df[f"mean_train_score"]) - train_std_error = list(report_df[f"train_score_std"]) - - y = np.arange(len(imp_methods))*3 # the label locations - width = 1 # the width of the bars - + test_performance = list(report_df["mean_test_score"]) + test_std_error = list(report_df["test_score_std"]) + train_performance = list(report_df["mean_train_score"]) + train_std_error = list(report_df["train_score_std"]) + + y = np.arange(len(imp_methods)) # the label locations + width = 0.35 # the width of the bars + def _autolabel(rects): """ - Label the bars of the plot - """ + Label the bars of the plot. + """ for rect in rects: width = rect.get_width() - ax.annotate('{}'.format(width), - xy=((width + 0.05*width),rect.get_y() + rect.get_height() / 2 ), - xytext=(4,0), # 4 points horizontal offset - textcoords="offset points", - ha='center', va='bottom',fontsize='small') - - - train_rect = ax.barh(y - width/2, train_performance, width,xerr=train_std_error,align="center", label='Train') - test_rect = ax.barh(y + width/2, test_performance, width,xerr=test_std_error,align="center",label='Test') + ax.annotate( + "{}".format(width), + xy=((width + 0.05 * width), rect.get_y() + rect.get_height() / 2), + xytext=(4, 0), # 4 points horizontal offset + textcoords="offset points", + ha="center", + va="bottom", + fontsize="small", + ) + + train_rect = ax.barh( + y - width / 2, + train_performance, + width, + xerr=train_std_error, + align="center", + label="CV-Train", + ) + test_rect = ax.barh( + y + width / 2, + test_performance, + width, + xerr=test_std_error, + align="center", + label="CV-Test", + ) _autolabel(train_rect) _autolabel(test_rect) - + ax.set_xlabel(f'{self.scorer.metric_name.replace("_"," ").upper()} Score') - ax.set_title('Imputation Techniques Comparision') + ax.set_title("Imputation Techniques Comparision") ax.set_yticks(y) - ax.set_yticklabels(imp_methods,rotation=45) - plt.margins(0.3) - plt.legend(loc='best', bbox_to_anchor=(1,1)) + ax.set_yticklabels(imp_methods, rotation=45) + plt.margins(0.2) + plt.legend(loc="best",ncol=2) fig.tight_layout() if show: @@ -390,4 +418,3 @@ def _autolabel(rects): else: plt.close() return ax - From 8b73b8ddeb073be5b50bebc2d21cdbd72b240b08 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Mon, 15 Mar 2021 09:10:35 +0100 Subject: [PATCH 19/24] Running black on tests and removing ligm tests. --- tests/missing_values/test_imputation.py | 146 +++++++++++------------- 1 file changed, 68 insertions(+), 78 deletions(-) diff --git a/tests/missing_values/test_imputation.py b/tests/missing_values/test_imputation.py index 19b5f6ef..8870ac42 100644 --- a/tests/missing_values/test_imputation.py +++ b/tests/missing_values/test_imputation.py @@ -1,90 +1,80 @@ -#Code to test the imputation strategies. +# Code to test the imputation strategies. from probatus.missing_values.imputation import ImputationSelector from sklearn.ensemble import RandomForestClassifier from sklearn.linear_model import LogisticRegression -from sklearn.experimental import enable_iterative_imputer -from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer +from sklearn.experimental import enable_iterative_imputer +from sklearn.impute import KNNImputer, SimpleImputer, IterativeImputer import pandas as pd import numpy as np import pytest -import os -import lightgbm as lgb -@pytest.fixture(scope='function') + + +@pytest.fixture(scope="function") def X(): - return pd.DataFrame({'col_1': [1, np.nan, 1, 1, np.nan, 1, 1, 0,1,1], - 'col_2': [0, 0, 0, np.nan, 0, 0, 0, 1,0,0], - 'col_3': [1, 0, np.nan, 0, 1, np.nan, 1, 0,1,1], - 'col_4': ['A', 'B', 'A', np.nan, 'B', np.nan, 'C', 'A','B','C']}, index=[1, 2, 3, 4, 5, 6, 7, 8,9,10]) + return pd.DataFrame( + { + "col_1": [1, np.nan, 1, 1, np.nan, 1, 1, 0, 1, 1], + "col_2": [0, 0, 0, np.nan, 0, 0, 0, 1, 0, 0], + "col_3": [1, 0, np.nan, 0, 1, np.nan, 1, 0, 1, 1], + "col_4": ["A", "B", "A", np.nan, "B", np.nan, "C", "A", "B", "C"], + }, + index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + ) -@pytest.fixture(scope='function') + +@pytest.fixture(scope="function") def y(): - return pd.Series([1, 0, 1, 0, 1, 0, 1, 0,0,0], index=[1, 2, 3, 4, 5, 6, 7, 8,9,10]) + return pd.Series( + [1, 0, 1, 0, 1, 0, 1, 0, 0, 0], index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + ) + -@pytest.fixture(scope='function') +@pytest.fixture(scope="function") def strategies(): - return { - 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), - 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), - 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,sample_posterior=True), - 'KNN' : KNNImputer(n_neighbors=3), - } - - -def test_imputation_linear(X,y,strategies,capsys): - - #Initialize the classifier - clf = LogisticRegression() - cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) - report = cmp.fit_compute(X,y) - cmp.plot(show=False) - - assert cmp.fitted == True - cmp._check_if_fitted() - assert report.shape[0]==4 - - # Check if there is any prints - out, _ = capsys.readouterr() - assert len(out) == 0 - - -def test_imputation_bagging(X,y,strategies,capsys): - - #Initialize the classifier - clf = RandomForestClassifier() - cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) - report = cmp.fit_compute(X,y) - cmp.plot(show=False) - - assert cmp.fitted == True - cmp._check_if_fitted() - assert report.shape[0]==4 - - # Check if there is any prints - out, _ = capsys.readouterr() - assert len(out) == 0 - -@pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") -def test_imputation_boosting(X,y,capsys): - - #Create strategies for imputation. - strategies = { - 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), - 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), - 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5, - sample_posterior=True), - 'KNN' : KNNImputer(n_neighbors=3), - } - #Initialize the classifier - clf = lgb.LGBMClassifier() - cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=True) - report = cmp.fit_compute(X,y) - cmp.plot(show=False) - - assert cmp.fitted == True - cmp._check_if_fitted() - assert report.shape[0]==5 - - # Check if there is any prints - out, _ = capsys.readouterr() - assert len(out) == 0 \ No newline at end of file + return { + "Simple Median Imputer": SimpleImputer(strategy="median", add_indicator=True), + "Simple Mean Imputer": SimpleImputer(strategy="mean", add_indicator=True), + "Iterative Imputer": IterativeImputer( + add_indicator=True, n_nearest_features=5, sample_posterior=True + ), + "KNN": KNNImputer(n_neighbors=3), + } + + +def test_imputation_linear(X, y, strategies, capsys): + + # Initialize the classifier + clf = LogisticRegression() + cmp = ImputationSelector( + clf=clf, strategies=strategies, cv=3, model_na_support=False + ) + report = cmp.fit_compute(X, y) + cmp.plot(show=False) + + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0] == 4 + + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 + + +def test_imputation_bagging(X, y, strategies, capsys): + + # Initialize the classifier + clf = RandomForestClassifier() + cmp = ImputationSelector( + clf=clf, strategies=strategies, cv=3, model_na_support=False + ) + report = cmp.fit_compute(X, y) + cmp.plot(show=False) + + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0] == 4 + + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 From 5b9a7390f265edd2af79b38f57b1db8fe04e9e3a Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Mon, 15 Mar 2021 09:34:33 +0100 Subject: [PATCH 20/24] Adding lgbm tests back --- probatus/missing_values/imputation.py | 6 +- tests/missing_values/test_imputation.py | 138 ++++++++++++------------ 2 files changed, 73 insertions(+), 71 deletions(-) diff --git a/probatus/missing_values/imputation.py b/probatus/missing_values/imputation.py index 268f5000..251ec000 100644 --- a/probatus/missing_values/imputation.py +++ b/probatus/missing_values/imputation.py @@ -83,7 +83,7 @@ class ImputationSelector(BaseFitComputePlotClass): cmp.fit_compute(X_missing,y) #Plot the results. - cmp.plot() + cmp.plot(show=False) ``` @@ -379,7 +379,7 @@ def _autolabel(rects): ax.annotate( "{}".format(width), xy=((width + 0.05 * width), rect.get_y() + rect.get_height() / 2), - xytext=(4, 0), # 4 points horizontal offset + xytext=(4,0), # 4 points horizontal offset textcoords="offset points", ha="center", va="bottom", @@ -412,7 +412,7 @@ def _autolabel(rects): plt.margins(0.2) plt.legend(loc="best",ncol=2) fig.tight_layout() - + if show: plt.show() else: diff --git a/tests/missing_values/test_imputation.py b/tests/missing_values/test_imputation.py index 8870ac42..c8f26678 100644 --- a/tests/missing_values/test_imputation.py +++ b/tests/missing_values/test_imputation.py @@ -1,80 +1,82 @@ -# Code to test the imputation strategies. +#Code to test the imputation strategies. from probatus.missing_values.imputation import ImputationSelector from sklearn.ensemble import RandomForestClassifier from sklearn.linear_model import LogisticRegression -from sklearn.experimental import enable_iterative_imputer -from sklearn.impute import KNNImputer, SimpleImputer, IterativeImputer +from sklearn.experimental import enable_iterative_imputer +from sklearn.impute import KNNImputer,SimpleImputer,IterativeImputer import pandas as pd import numpy as np import pytest +import os +import lightgbm as lgb - - -@pytest.fixture(scope="function") +@pytest.fixture(scope='function') def X(): - return pd.DataFrame( - { - "col_1": [1, np.nan, 1, 1, np.nan, 1, 1, 0, 1, 1], - "col_2": [0, 0, 0, np.nan, 0, 0, 0, 1, 0, 0], - "col_3": [1, 0, np.nan, 0, 1, np.nan, 1, 0, 1, 1], - "col_4": ["A", "B", "A", np.nan, "B", np.nan, "C", "A", "B", "C"], - }, - index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], - ) + return pd.DataFrame({'col_1': [1, np.nan, 1, 1, np.nan, 1, 1, 0,1,1], + 'col_2': [0, 0, 0, np.nan, 0, 0, 0, 1,0,0], + 'col_3': [1, 0, np.nan, 0, 1, np.nan, 1, 0,1,1], + 'col_4': ['A', 'B', 'A', np.nan, 'B', np.nan, 'C', 'A','B','C']}, index=[1, 2, 3, 4, 5, 6, 7, 8,9,10]) - -@pytest.fixture(scope="function") +@pytest.fixture(scope='function') def y(): - return pd.Series( - [1, 0, 1, 0, 1, 0, 1, 0, 0, 0], index=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - ) - + return pd.Series([1, 0, 1, 0, 1, 0, 1, 0,0,0], index=[1, 2, 3, 4, 5, 6, 7, 8,9,10]) -@pytest.fixture(scope="function") +@pytest.fixture(scope='function') def strategies(): - return { - "Simple Median Imputer": SimpleImputer(strategy="median", add_indicator=True), - "Simple Mean Imputer": SimpleImputer(strategy="mean", add_indicator=True), - "Iterative Imputer": IterativeImputer( - add_indicator=True, n_nearest_features=5, sample_posterior=True - ), - "KNN": KNNImputer(n_neighbors=3), - } - - -def test_imputation_linear(X, y, strategies, capsys): - - # Initialize the classifier - clf = LogisticRegression() - cmp = ImputationSelector( - clf=clf, strategies=strategies, cv=3, model_na_support=False - ) - report = cmp.fit_compute(X, y) - cmp.plot(show=False) - - assert cmp.fitted == True - cmp._check_if_fitted() - assert report.shape[0] == 4 - - # Check if there is any prints - out, _ = capsys.readouterr() - assert len(out) == 0 - - -def test_imputation_bagging(X, y, strategies, capsys): - - # Initialize the classifier - clf = RandomForestClassifier() - cmp = ImputationSelector( - clf=clf, strategies=strategies, cv=3, model_na_support=False - ) - report = cmp.fit_compute(X, y) - cmp.plot(show=False) - - assert cmp.fitted == True - cmp._check_if_fitted() - assert report.shape[0] == 4 - - # Check if there is any prints - out, _ = capsys.readouterr() - assert len(out) == 0 + return { + 'Simple Median Imputer' : SimpleImputer(strategy='median',add_indicator=True), + 'Simple Mean Imputer' : SimpleImputer(strategy='mean',add_indicator=True), + 'Iterative Imputer' : IterativeImputer(add_indicator=True,n_nearest_features=5,sample_posterior=True), + 'KNN' : KNNImputer(n_neighbors=3), + } + + +def test_imputation_linear(X,y,strategies,capsys): + + #Initialize the classifier + clf = LogisticRegression() + cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) + report = cmp.fit_compute(X,y) + ax = cmp.plot(show=False) + + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0]==4 + + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 + + +def test_imputation_bagging(X,y,strategies,capsys): + + #Initialize the classifier + clf = RandomForestClassifier() + cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=False) + report = cmp.fit_compute(X,y) + ax=cmp.plot(show=False) + + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0]==4 + + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 + +@pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") +def test_imputation_boosting(X,y,strategies,capsys): + + #Initialize the classifier + clf = lgb.LGBMClassifier() + cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=True) + report = cmp.fit_compute(X,y) + ax=cmp.plot(show=False) + + assert cmp.fitted == True + cmp._check_if_fitted() + assert report.shape[0]==5 + + # Check if there is any prints + out, _ = capsys.readouterr() + assert len(out) == 0 \ No newline at end of file From 3b01af8f6e3d8c4bb41a2b7ea5ad97256a081f91 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Mon, 15 Mar 2021 09:38:11 +0100 Subject: [PATCH 21/24] Minor updates to code example in docstring --- docs/tutorials/nb_imputation_comparison.ipynb | 59 +++++++------------ probatus/missing_values/imputation.py | 2 +- 2 files changed, 23 insertions(+), 38 deletions(-) diff --git a/docs/tutorials/nb_imputation_comparison.ipynb b/docs/tutorials/nb_imputation_comparison.ipynb index 911891ea..ebda087e 100644 --- a/docs/tutorials/nb_imputation_comparison.ipynb +++ b/docs/tutorials/nb_imputation_comparison.ipynb @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -36,17 +36,9 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 2, "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "The autoreload extension is already loaded. To reload it, use:\n %reload_ext autoreload\n" - ] - } - ], + "outputs": [], "source": [ "%matplotlib inline\n", "%load_ext autoreload\n", @@ -77,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -97,26 +89,26 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 4, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - " f_0 f_1 f_2 f_3 f_4 f_5 f_6 f_7 \\\n", - "Missing % 0.189 0.1975 0.1965 0.2095 0.1895 0.1955 0.202 0.198 \n", + " f_0 f_1 f_2 f_3 f_4 f_5 f_6 f_7 f_8 \\\n", + "Missing % 0.226 0.1985 0.186 0.213 0.201 0.2045 0.196 0.1995 0.2095 \n", "\n", - " f_8 f_9 f_10 f_11 f_12 f_13 f_14 f_15 f_16 \\\n", - "Missing % 0.2015 0.1885 0.199 0.208 0.2055 0.21 0.2045 0.2005 0.209 \n", + " f_9 f_10 f_11 f_12 f_13 f_14 f_15 f_16 f_17 \\\n", + "Missing % 0.195 0.2015 0.201 0.1835 0.176 0.199 0.193 0.1965 0.212 \n", "\n", - " f_17 f_18 f_19 \n", - "Missing % 0.2 0.2135 0.186 " + " f_18 f_19 \n", + "Missing % 0.202 0.21 " ], - "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
f_0f_1f_2f_3f_4f_5f_6f_7f_8f_9f_10f_11f_12f_13f_14f_15f_16f_17f_18f_19
Missing %0.1890.19750.19650.20950.18950.19550.2020.1980.20150.18850.1990.2080.20550.210.20450.20050.2090.20.21350.186
\n
" + "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
f_0f_1f_2f_3f_4f_5f_6f_7f_8f_9f_10f_11f_12f_13f_14f_15f_16f_17f_18f_19
Missing %0.2260.19850.1860.2130.2010.20450.1960.19950.20950.1950.20150.2010.18350.1760.1990.1930.19650.2120.2020.21
\n
" }, "metadata": {}, - "execution_count": 55 + "execution_count": 4 } ], "source": [ @@ -151,15 +143,15 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 5, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T08:59:56.329312\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABBA0lEQVR4nO3de5yWc/7H8de7c4pSY5OopBw6EBKdNJJEB4citVp2/ch5W6G2XVtJYlkrljYrsqxld5RzDi2tFDrQSMm5ZVCk6ahmavr8/vheM+5qpqa6TzPzeT4ePdz3dV33fX2+94z7M9/v9bm+X5kZzjnnXLqplOoAnHPOueJ4gnLOOZeWPEE555xLS56gnHPOpSVPUM4559KSJyjnnHNpyROUq3Ak/VzSK6mOY1ckmaTme/ja6ZIuindMFZWk9ZKa7eKYLpI+SlZMFYEnKLdHJC2T1D0F571Y0pu7cXzT6Iu+SuE2M/uHmfWIc1w/j77E1kvaKGlrzPP18TxXaZjZGWb2SLLPuzOSDpf0b0krJa2R9L6k6yRVTnVsu2Jmtc3s810cM8vMjkhWTBWBJyjn4iBKerXNrDZwBvBN4fNoW4Um6TDgHeAroI2Z1QHOA9oB+6Yytp2J/cPGJZ8nKLfXol7NbEl/lrRa0ueSOkbbv5L0Xexwk6Qpkv4q6VVJ6yT9V1KTaN8OPR5JMyX9n6SjgL8CHaKeyepofy9J70laG51vdEx4b0T/XR29psP2vbAo1nnRX/XzJHXc7txjo/atk/SKpIzd/HwOkvSUpO8lfSHp2ph9lSWNlPRZ9P4LJB0S8/Lukj6JPtf7JCnmM39T0p2ScqP3PWP7zyzmHHdGPZfPJV0V+xlv3xuWNFrSYzHPT5I0J4ohW1JmzL6Lo/dcF8Xw8xI+hjHAHDO7zsy+BTCzj8xskJmtjt6rr6TF0XlmRj/vwvMsk3RD1OvaIGmypAYKQ5nrJM2QtH90bOHv0GWSvpH0raTrY96rvaS3ovN8K+kvkqrF7LfoM/oE+CRmW/Po8ZmSlkTn/brwvSVlSsqJeZ+jonasjtrVN2bflOjn+UL0Pu8oJHEXy8z8n//b7X/AMqB79PhiYAvwS6AycAvwJXAfUB3oAawDakfHT4menxztnwC8Ge1rChhQJeZcM4H/iznXm9vFkgm0IfzBdTSwAjh7J+93ccz56gG5wGCgCjAwel4/5tyfAYcDNaPnt+3is8kEcqLHlYAFwB+AakAz4HPg9Gj/DcAi4AhAwDEx5zbgeaAu0Bj4HugZ04bNwKXRZ34F8A2gYj6zy4GlwCFRe1+P/Uxif5bR89HAY9HjRsAPwJlRW06Lnh8A1ALWAkdExzYEWpXwmSwHfrmTz+xwYEP0/lWBG4FPgWoxMb4NNIhi+g54FzgWqAG8Boza7mf+zyjGNtFnV/j7ejxwUvTzbgp8CAyNicWAV6PPqmbMtubR42+BLtHj/YHjivm5V43iHxn93LsRfucLP6sp0efYPorjH8ATqf7/Ot3+eQ/KxcsXZvawmRUATxK+DG82szwzewXIB2Iv+L9gZm+YWR7wO0Kv6JAd33bXzGymmS0ys61m9j7hi6lrKV/eC/jEzB41sy1m9k/Cl3mfmGMeNrOPzWwj8C+g7W6EdwJwgJndbGb5Fq5j/A24INr/f8DvLfQmzMyyzeyHmNffZmarzexLQmKJPff/zOxv0Wf+CCFBNCgmhvOBu83sKzNbBYzfjfgvBF40sxejz/dVYD4hYQFsBVpLqmlm35rZ4hLepz7hi70kAwi/E6+a2WbgTsIfBB1jjrnXzFaY2dfALOAdM3vPzDYB0wjJKtYYM9tgZouAhwl/fGBmC8zs7ejnvQyYxI6/L+PNbFX0M9/eZqClpP3MLNfM3i3mmJOA2oSfX76ZvUb4Y2NgzDHTzGyumW0hJKi2O/l8KiRPUC5eVsQ83ghgZttvi70W81XhAzNbD6wCDtqTE0s6UdLr0RDaGkKPobTDcAcB/9tu2/8If6UXWh7z+Ee2bceuNAEOioZ5VkfDkiP5KZEcQuihlWRn5y7aZ2Y/Rg+Li+0gYj5vdmzvzjQBztsu/s5AQzPbQEgslwPfRsNVR5bwPj8QEmhJtvk5mNnWKObYn8P2v087+/2CHdt8EBQVazwvabmktcCt7Pj78hUl60dI0P9TGJ7uUEJ7voraERtDvH6vKgRPUC5VinpLkmoThlO+IQzzAOwTc+yBMY+Lm37/ceBZ4BALF9//ShguK+n4WN8QvoRjNQa+3sXrSusrQu+ybsy/fc3szJj9ib728C0xnzehfbE2UPLn/RXw6Hbx1zKz2wDM7GUzO42QfJYSeofFmUH4Yi/JNj+H6FrbIezdz2H7Nn8TPZ5IiLWFme1H+INB2722xN8bM5tnZmcBPwOeJvSqt/cNcIik2O/YeP5eVQieoFyqnCmpc3RxeizwdjQE9T3hf+ILo4v7v2LbL/AVwMGxF7UJVWCrzGyTpPbAoJh93xOGoUq6h+VF4HBJgyRVkTQAaEkYjomHucA6ScMl1Yza1FrSCdH+B4GxklooOFpS/Tidu9C/gGslHRwVEozYbv9C4AJJVSW1A/rH7HsM6CPp9Cj2GlExwMFRkcJZkmoBecB6wmddnFFAR0l3SDoQQFJzSY9JqhvF2EvSqZKqAsOi95yzF+2+SdI+kloRro8+GW3fl3DtbH3U47uitG8oqZrCLQV1oqHItRTf5ncIvaIbo881kzBs/MQet6YC8gTlUuVxwpfWKsJF6wtj9l1KKB74AWjFtl9SrwGLgeWSVkbbrgRulrSOUIxQ9BdtNPQ1DpgdDVGdFBtEdL2nN+EL8QfCxfneZraSOIiuD/UmXF/4AlhJSEp1okPuiuJ9hfBlN5lw7SWe/ga8DGQTCgumbrf/JsIfAbmEarvHY+L/CjiL0Mv4ntCjuoHw3VEJuI7QW1hFuI5T7Je9mX0GdCAUJSyOhmKfIlzPWmdmHxF+B+4lfEZ9gD5mlr8X7f4voVDhP8Cd0bVQgOsJf8SsI3w2Txb/8hINBpZFw4OXAztULkZx9yHccrASuB/4hZkt3YN2VFiFFT/OJY2kKYRqp9+nOpaKSFJTQrKsGl2gL1fKe/sqEu9BOeecS0ueoJxzzqUlH+JzzjmXlrwH5ZxzLi35RIhxkJGRYU2bNk11GM45VyYtWLBgpZkdsP12T1Bx0LRpU+bPn5/qMJxzrkySVOzsJj7E55xzLi15gnLOOZeWPEE555xLS34NyrkKZvPmzeTk5LBp06ZUh+IqmBo1anDwwQdTtWrVUh3vCcq5CiYnJ4d9992Xpk2bEiYNdy7xzIwffviBnJwcDj300FK9xof4nKtgNm3aRP369T05uaSSRP369Xer5+4JyrkKyJOTS4Xd/b3zBOWccy4t+TUo5yq4piNeiOv7LbutV6mOW758OUOHDmXevHnUrVuXBg0a8NJLL/Hhhx9yxBFHFB03dOhQGjZsyPDhw1m0aBGDBw8G4Msvv6ROnTrUqVOHjIwMZsyYsctzPvvssyxZsoQRI7ZfszGBRtfZ9TG79X5rSnVYKj5fgKeffprDDz+cli1b7n7btuMJyjmXdGbGOeecw0UXXcQTT4RFZrOzs9m4cSNPPPEEo0aNAmDr1q1kZWUxe/ZsANq0acPChQsBuPjii+nduzf9+/ff5r23bNlClSrFf7X17duXvn37JqhV6SORn++uPP300/Tu3TsuCcqH+JxzSff6669TtWpVLr/88qJtxxxzDPfccw9PPvnTArdvvPEGTZo0oUmTJjt9v8zMTIYOHUq7du2YMGECzz33HCeeeCLHHnss3bt3Z8WKFQBMmTKFq6++GghfwNdeey0dO3akWbNmZGVlJaClqRHvz/eVV16hQ4cOHHfccZx33nmsX78egBEjRtCyZUuOPvporr/+eubMmcOzzz7LDTfcQNu2bfnss8/2qh3eg3LOJd0HH3zA8ccfv8P2Nm3aUKlSJbKzsznmmGN44oknGDhwYKneMz8/v2hOzNzcXN5++20k8eCDD/LHP/6RP/3pTzu85ttvv+XNN99k6dKl9O3bd7d7C+kqnp/vypUrueWWW5gxYwa1atXi9ttv56677uKqq65i2rRpLF26FEmsXr2aunXr0rdv3z3qeRXHE5RzLq0MHDiQJ554glatWvH0008zZsyYUr1uwIABRY9zcnIYMGAA3377Lfn5+SXed3P22WdTqVIlWrZsWdTLKu929/N9++23WbJkCZ06dQLCHwIdOnSgTp061KhRg0suuYTevXvTu3fvuMfqQ3zOuaRr1aoVCxYsKHbfBRdcwL/+9S9mzJjB0UcfTYMGDZg2bRpt27albdu2Ja4cUKtWraLH11xzDVdffTWLFi1i0qRJJd57U7169aLH5Wnx1nh+vmbGaaedxsKFC1m4cCFLlixh8uTJVKlShblz59K/f3+ef/55evbsGfd2eIJyziVdt27dyMvL44EHHija9v777zNr1iwOO+wwMjIyGDFiRNHw0znnnFP0BdmuXbtdvv+aNWto1KgRAI888khiGpHG4vn5nnTSScyePZtPP/0UgA0bNvDxxx+zfv161qxZw5lnnsmf//xnsrOzAdh3331Zt25dXNrhQ3zOVXClLQuPJ0lMmzaNoUOHcvvtt1OjRg2aNm3K3XffDYRhqBEjRnDuuefu0fuPHj2a8847j/33359u3brxxRdfxDH63Q2mdGXh8RTPz/eAAw5gypQpDBw4kLy8PABuueUW9t13X8466yw2bdqEmXHXXXcBoYd26aWXcs8995CVlcVhhx225+0o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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T09:32:06.660519\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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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X7+eJ554gqFDhwKwZcsWxo8fz9SpUwE46qijmDNnDgDnnXce3bt3p0+fPlu996ZNmyhXLv+vtp49e9KzZ88kXVXmSObnuzPPPPMM3bt3L5IE5V18zrmUe/PNNylfvjwXXXRR3rZjjjmGO+64gyef/GWB27feeov69etTv379Hb5fVlYWAwcOpEWLFowZM4bnn3+e448/nmOPPZbOnTuzfPlyAMaOHctll10GhC/gK664gjZt2tCwYUPGjx+fhCtNj6L+fF999VVat27NcccdxxlnnMGPP/4IwODBgzniiCM4+uijueaaa5g2bRrPPfcc1157Lc2aNePzzz/fo+vwFpRzLuU++OADmjdvvt32o446ijJlyjB37lyOOeYYnnjiCfr27Vuo98zJycmriZmdnc306dORxAMPPMDf/vY3/v73v2/3mqVLl/LOO+/w0Ucf0bNnz11uLWSqovx8V6xYwQ033MDkyZOpUqUKN998M7fddhuXXnopEydO5KOPPkISq1atombNmvTs2XO3Wl758QTlnMsoffv25YknnqBp06Y888wzDB8+vFCvO+uss/IeL1myhLPOOoulS5eSk5NT4LybU089lTJlynDEEUfktbJKul39fKdPn87ChQtp27YtEP4QaN26NTVq1KBSpUqcf/75dO/ene7duxd5rN7F55xLuaZNmzJ79ux895199tn897//ZfLkyRx99NHUqVOHiRMn0qxZM5o1a1bgygFVqlTJe3z55Zdz2WWXMX/+fO67774C595UrFgx73FJWry1KD9fM+Okk05izpw5zJkzh4ULF/Lggw9Srlw5ZsyYQZ8+fZg0aRJdu3Yt8uvwBOWcS7lOnTqxYcMG7r///rxt8+bN4+233+aQQw6hdu3aDB48OK/76bTTTsv7gmzRosVO33/16tUccMABADzyyCPJuYgMVpSfb6tWrZg6dSqfffYZAOvWreOTTz7hxx9/ZPXq1Zxyyin84x//YO7cuQBUq1aNtWvXFsl1eBefc6VcYYeFFyVJTJw4kYEDB3LzzTdTqVIlGjRowO233w6EbqjBgwdz+umn79b7Dxs2jDPOOIO9996bTp068eWXXxZh9LsaTOGGhRelovx89913X8aOHUvfvn3ZsGEDADfccAPVqlWjV69e/Pzzz5gZt912GxBaaBdccAF33HEH48eP55BDDtn96yhJ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\n" }, "metadata": { "needs_background": "light" @@ -188,15 +180,15 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 6, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T09:00:15.619928\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n\n", - "image/png": "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PPBAssjsjBkzWLFiBQ888ACXXXYZAGvXrqWgoIBJkyYB0LFjR6ZPnw7A6aefTt++fRk8ePA67/3NN9+w3XYb/mrr168f/fr1q6Cryh0VWb6b89hjj9G3b99ySVBu4jOzSvfiiy9Sp04dzj777JJtBx54IDfddBMPPvjdArcvvfQSrVu3pnXr1pt8v/z8fIYPH07nzp0ZM2YMTzzxBIceeigHHXQQPXv2ZP78+QDce++9nH/++UDyBXzhhRfStWtX9txzTwoKCirgSrOjvMv32Wef5fDDD+fggw/mhBNOYPny5QCMGjWKDh06cMABB/CrX/2KyZMnM27cOC666CI6derE+++/v03X4RqUmVW6N998k0MOOWS97R07dqRWrVrMmDGDAw88kAceeIAhQ4aU6T1Xr15dMifmokWLmDJlCpK48847+f3vf8/111+/3ms+//xzXn75ZebMmUO/fv22uLaQq8qzfBcsWMCVV17JhAkTaNCgAddeey033HAD5513HmPHjmXOnDlIYvHixTRu3Jh+/fptVc1rQ5ygzCynDBkyhAceeID99tuPxx57jMsvv7xMrzvppJNKHs+dO5eTTjqJzz//nNWrV2/0vpsBAwZQq1YtOnToUFLLqu62tHynTJnC7Nmz6datG5D8IXD44YeTl5dHvXr1OOOMM+jbty99+/Yt91jdxGdmlW6//fZj2rRpG9x38skn89BDDzFhwgQOOOAAWrRowdixY+nUqROdOnXa6MoBDRo0KHl8wQUXcP755zNz5kxuv/32jd57s/3225c8rk6Lt5Zn+UYERx99NNOnT2f69OnMnj2bu+66i+22245XX32VwYMH8+STT9K7d+9yvw4nKDOrdD169GDVqlXccccdJdveeOMNJk6cSNu2bWnWrBmjRo0qaX4aOHBgyRdk586dN/v+S5YsYddddwXgvvvuq5iLyGHlWb6HHXYYkyZN4r333gPgq6++4p133mH58uUsWbKEY489lj/+8Y/MmDEDgEaNGrFs2bJyuQ438ZnVcGUdFl6eJDF27FiGDx/OtddeS7169WjTpg033ngjkDRDjRo1iuOPP36r3n/06NGccMIJ7LTTTvTo0YMPP/ywHKPf0mDKNiy8PJVn+TZv3px7772XIUOGsGrVKgCuvPJKGjVqRP/+/Vm5ciURwQ033AAkNbQzzzyTm266iYKC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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T09:32:25.260269\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n\n", + "image/png": "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e2+yyOyMGTNYsWIF9957LxdffDEAa9asoaCggClTpgCw11578frrrwNwyimnMGjQIIYNG7bWe69evZoGDdb/1TZ48GAGDx5cRVeVO6qyfDfmoYceYtCgQZWSoNzEZ2bV7tlnn6Vhw4acccYZpdv22WcfbrjhBu6777sFbp9//nk6dOhAhw4dNvh++fn5jBo1iu7duzNu3DgeeeQRDjjgAPbdd1/69evHggULABg/fjxnn302kHwBn3vuufTq1YtOnTpRUFBQBVeaHZVdvk8++SQHHngg++23H8cddxzLly8HYMyYMXTt2pW9996bCy64gKlTp/Lwww9z4YUX0q1bN95///0tug7XoMys2r3xxhvsv//+62zfa6+9qFevHjNmzGCfffbh3nvvZfjw4RV6z+Li4tI5MRcvXsxLL72EJP7yl7/whz/8gWuvvXad18ybN48XXniBt956i8GDB29ybSFXVWb5Lly4kMsuu4xJkybRrFkzrrrqKq677jrOOussJkyYwFtvvYUklixZQsuWLRk8ePBm1bzWxwnKzHLK8OHDuffee9ljjz146KGHuOSSSyr0uuOPP7708dy5czn++OOZN28excXF5d53c8wxx1CvXj26du1aWsuq7Ta1fF966SXmzJlD7969geQPgQMPPJC8vDyaNGnCqaeeyqBBgxg0aFClx+omPjOrdnvssQfTp09f774TTjiB+++/n0mTJrH33nvTtm1bJkyYQLdu3ejWrVu5Kwc0a9as9PE555zD2WefzaxZs7j11lvLvfemcePGpY9r0+KtlVm+EcFhhx3G66+/zuuvv86cOXO4/fbbadCgAS+//DLDhg3j0UcfZcCAAZV+HU5QZlbt+vbty8qVK7nttttKt82cOZPJkyfTuXNn2rRpw5gxY0qbn4YMGVL6Bdm9e/eNvn9RURHbb789AHfddVfVXEQOq8zy7dmzJ1OmTOG9994D4KuvvuKdd95h+fLlFBUVceSRR/LHP/6RGTNmANCiRQuWLVtWKdfhJj6zOq6iw8IrkyQmTJjAqFGjuOqqq2jSpAkdO3bk+uuvB5JmqDFjxnDsscdu1vuPHTuW4447jm222Ya+ffvy4YcfVmL0mxpMxYaFV6bKLN9tt92W8ePHM3z4cFauXAnAZZddRosWLTj66KP55ptviAiuu+46IKmhnXbaadxwww0UFBTQ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\n" }, "metadata": { "needs_background": "light" @@ -220,15 +212,15 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 7, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T09:00:34.224731\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2021-03-15T09:32:52.987873\n image/svg+xml\n \n \n Matplotlib v3.3.3, 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 \n \n \n \n \n \n\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA350lEQVR4nO3deXhV1dn+8e/NjIAgYCkOgCAOOKFSRBAbKSIKIghWsVJ9axXn0moLdvgJRX21DhWtWn2rUGut2ijWoYqiRhGkCiogOM8ooMhskYA8vz/2TjwEAgGSnJPk/lxXLs7Ze52zn71yOE/W2muvpYjAzMws19TKdgBmZmab4gRlZmY5yQnKzMxykhOUmZnlJCcoMzPLSU5QZmaWk5ygrMaR9CNJT2Y7ji2RFJL23MbXPi7p9PKOqaaStEpS+y2U6SnprcqKqSZwgrJtIulDSb2zcNwzJL2wFeXbpV/0dYq2RcTfI6JPOcf1o/RLbJWk1ZLWZzxfVZ7HKouIODYi/lrZx90cSXtJ+qekxZKWS5ot6ReSamc7ti2JiMYR8f4WykyJiL0rK6aawAnKrBykSa9xRDQGjgU+K3qebqvRJHUA/gN8AhwQEU2Bk4AuQJNsxrY5mX/YWOVzgrLtlrZqpkr6o6Rlkt6X1D3d/omkzzO7myRNkPRnSU9JWinpOUlt030btXgkFUj6qaR9gT8Dh6ctk2Xp/n6SXpW0Ij3e6Izwnk//XZa+5vCSrbA01pfTv+pfltS9xLHHpue3UtKTklpuZf3sIukBSV9I+kDSRRn7akv6taT30vefKWn3jJf3lvROWq83S1JGnb8g6VpJS9P3PbZknWUc49q05fK+pPMz67hka1jSaEl3ZzzvJmlaGsMsSXkZ+85I33NlGsOPSqmGMcC0iPhFRCwAiIi3IuLUiFiWvtcASXPT4xSkv++i43wo6Zdpq+srSXdIaqWkK3OlpMmSdkrLFn2Gzpb0maQFki7JeK+ukl5Mj7NA0p8k1cvYH2kdvQO8k7Ftz/TxcZLmpcf9tOi9JeVJmp/xPvum57EsPa8BGfsmpL/Px9L3+Y+SJG6ZIsI//tnqH+BDoHf6+AxgHfA/QG3gcuBj4GagPtAHWAk0TstPSJ8fme4fB7yQ7msHBFAn41gFwE8zjvVCiVjygANI/uA6EFgEDNzM+52RcbzmwFJgGFAHGJo+b5Fx7PeAvYCG6fOrtlA3ecD89HEtYCbw/4B6QHvgfeCYdP8vgTnA3oCAgzKOHcCjQDOgDfAF0DfjHNYCZ6V1fi7wGaBN1Nk5wJvA7un5PptZJ5m/y/T5aODu9PGuwJfAcem5HJ0+3xloBKwA9k7Ltgb2K6VOFgL/s5k62wv4Kn3/usCvgHeBehkxTgdapTF9DrwCHAw0AJ4BLivxO/9HGuMBad0VfV4PBbqlv+92wBvAiIxYAngqrauGGdv2TB8vAHqmj3cCDtnE771uGv+v0997L5LPfFFdTUjrsWsax9+Be7P9/zrXftyCsvLyQUSMj4hvgPtIvgx/HxFrIuJJoBDIvOD/WEQ8HxFrgN+QtIp23/httywiCiJiTkSsj4jZJF9M3y/jy/sB70TE3yJiXUT8g+TL/PiMMuMj4u2IWA3cD3TeivC+B+wcEb+PiMJIrmP8H3BKuv+nwG8jaU1ERMyKiC8zXn9VRCyLiI9JEkvmsT+KiP9L6/yvJAmi1SZi+CFwQ0R8EhFLgP/divhPA/4dEf9O6/cpYAZJwgJYD+wvqWFELIiIuaW8TwuSL/bSnEzymXgqItYC15L8QdA9o8xNEbEoIj4FpgD/iYhXI+JrYCJJsso0JiK+iog5wHiSPz6IiJkRMT39fX8I3MbGn5f/jYgl6e+8pLVAJ0k7RsTSiHhlE2W6AY1Jfn+FEfEMyR8bQzPKTIyIlyJiHUmC6ryZ+qmRnKCsvCzKeLwaICJKbsu8FvNJ0YOIWAUsAXbZlgNLOkzSs2kX2nKSFkNZu+F2AT4qse0jkr/SiyzMePxfNjyPLWkL7JJ28yxLuyV/zbeJZHeSFlppNnfs4n0R8d/04aZi24WM+mbj892ctsBJJeI/AmgdEV+RJJZzgAVpd9U+pbzPlyQJtDQb/B4iYn0ac+bvoeTnaXOfL9j4nHeB4sEaj0paKGkFcCUbf14+oXSDSRL0R0q6pw8v5Xw+Sc8jM4by+lzVCE5Qli3FrSVJjUm6Uz4j6eYB2CGj7HczHm9q+v17gIeB3SO5+P5nku6y0spn+ozkSzhTG+DTLbyurD4haV02y/hpEhHHZeyv6GsPC8iob5Lzy/QVpdf3J8DfSsTfKCKuAoiISRFxNEnyeZOkdbgpk0m+2Euzwe8hvda2O9v3eyh5zp+lj28libVjROxI8geDSry21M9NRLwcEScA3wEeImlVl/QZsLukzO/Y8vxc1QhOUJYtx0k6Ir04PRaYnnZBfUHyn/i09OL+T9jwC3wRsFvmRW2SUWBLIuJrSV2BUzP2fUHSDVXaPSz/BvaSdKqkOpJOBjqRdMeUh5eAlZJGSmqYntP+kr6X7v8LMFZSRyUOlNSinI5d5H7gIkm7pQMJRpXY/xpwiqS6kroAQzL23Q0cL+mYNPYG6WCA3dJBCidIagSsAVaR1PWmXAZ0l3SNpO8CSNpT0t2SmqUx9pP0A0l1gYvT95y2Hef9O0k7SNqP5Profen2JiTXzlalLb5zy/qGkuopuaWgadoVuYJNn/N/SFpFv0rrNY+k2/jebT6bGsgJyrLlHpIvrSUkF61Py9h3FsnggS+B/djwS+oZYC6wUNLidNt5wO8lrSQZjFD8F23a9XUFMDXtouqWGUR6vac/yRfilyQX5/tHxGLKQXp9qD/J9YUPgMUkSalpWuT6NN4nSb7s7iC59lKe/g+YBMwiGVjwYIn9vyP5I2ApyWi7ezLi/wQ4gaSV8QVJi+qXJN8dtYBfkLQWlpBcx9nkl31EvAccTjIoYW7aFfsAyfWslRHxFsln4CaSOjoeOD4iCrfjvJ8jGajwNHBtei0U4BKSP2JWktTNfZt+eamGAR+m3YPnABuNXEzjPp7kloPFwC3AjyPizW04jxqraMSPWaWRNIFktNNvsx1LTSSpHUmyrJteoK9Wqvv51SRuQZmZWU5ygjIzs5zkLj4zM8tJbkGZmVlO8kSI5aBly5bRrl27bIdhZlYlzZw5c3FE7FxyuxNUOWjXrh0zZszIdhhmZlWSpE3ObuIuPjMzy0lOUGZmlpOcoMzMLCf5GpRZDbN27Vrmz5/P119/ne1QrIZp0KABu+22G3Xr1i1TeScosxpm/vz5NGnShHbt2pFMGm5W8SKCL7/8kvnz57PHHnuU6TXu4jOrYb7++mtatGjh5GSVShItWrTYqpa7E5RZDeTkZNmwtZ87JygzM8tJvgZlVsO1G/VYub7fh1f1K1O5hQsXMmLECF5++WWaNWtGq1ateOKJJ3jjjTfYe++9i8uNGDGC1q1bM3LkSObMmcOwYcMA+Pjjj2natClNmzalZcuWTJ48eYvHfPjhh5k3bx6jRpVcs7ECjW665TJb9X7Ly1QsG/UL8NBDD7HXXnvRqVOnrT+3EpygzKzSRQSDBg3i9NNP5957k0VmZ82axerVq7n33nu57LLLAFi/fj35+flMnToVgAMOOIDXXnsNgDPOOIP+/fszZMiQDd573bp11Kmz6a+2AQMGMGDAgAo6q9xRkfW7JQ899BD9+/cvlwTlLj4zq3TPPvssdevW5ZxzzinedtBBB3HjjTdy333fLnD7/PPP07ZtW9q2bbvZ98vLy2PEiBF06dKFcePG8cgjj3DYYYdx8MEH07t3bxYtWgTAhAkTuOCCC4DkC/iiiy6ie/futG/fnvz8/Ao40+wo7/p98sknOfzwwznkkEM46aSTWLVqFQCjRo2iU6dOHHjggVxyySVMmzaNhx9+mF/+8pd07tyZ9957b7vOwy0oM6t0r7/+OoceeuhG2w844ABq1arFrFmzOOigg7j33nsZOnRomd6zsLCweE7MpUuXMn36dCTxl7/8hT/84Q9cd911G71mwYIFvPDCC7z55psMGDBgq1sLuao863fx4sVcfvnlTJ48mUaNGnH11Vdz/fXXc/755zNx4kTefPNNJLFs2TKaNWvGgAEDtqnltSlOUGaWU4YOHcq9997Lfvvtx0MPPcSYMWPK9LqTTz65+PH8+fM5+eSTWbBgAYWFhaXedzNw4EBq1apFp06diltZ1d3W1u/06dOZN28ePXr0AJI/BA4//HCaNm1KgwYNOPPMM+nfvz/9+/cv91jdxWdmlW6//fZj5syZm9x3yimncP/99zN58mQOPPBAWrVqxcSJE+ncuTOdO3cudeWARo0aFT++8MILueCCC5gzZw633XZbqffe1K9fv/hxdVq8tTzrNyI4+uijee2113jttdeYN28ed9xxB3Xq1OGll15iyJAhPProo/Tt27fcz8MJyswqXa9evVizZg2333578bbZs2czZcoUOnToQMuWLRk1alRx99OgQYOKvyC7dOmyxfdfvnw5u+66KwB//etfK+Ykclh51m+3bt2YOnUq7777LgBfffUVb7/9NqtWrWL58uUcd9xx/PGPf2TWrFkANGnShJUrV5bLebiLz6yGK+uw8PIkiYkTJzJixAiuvvpqGjRoQLt27bjhhhuApBtq1KhRnHjiidv0/qNHj+akk05ip512olevXnzwwQflGP3WBlO2YeHlqTzrd+edd2bChAkMHTqUNWvWAHD55ZfTpEkTTjjhBL7++msiguuvvx5IWmhnnXUWN954I/n5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\n" }, "metadata": { "needs_background": "light" @@ -254,13 +246,6 @@ "You can also use any other scikit-learn compatible imputer as an imputing strategy.\n", "eg. [feature engine](https://feature-engine.readthedocs.io/en/latest/index.html) library provides a host of other imputing stratgies as well. You can pass them for comparision as well." ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/probatus/missing_values/imputation.py b/probatus/missing_values/imputation.py index 251ec000..9662e57c 100644 --- a/probatus/missing_values/imputation.py +++ b/probatus/missing_values/imputation.py @@ -83,7 +83,7 @@ class ImputationSelector(BaseFitComputePlotClass): cmp.fit_compute(X_missing,y) #Plot the results. - cmp.plot(show=False) + performance_plot=cmp.plot() ``` From d45b1cf887de10294554ca067920457fe7f5face Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Mon, 15 Mar 2021 09:49:30 +0100 Subject: [PATCH 22/24] Updated lgbm test --- tests/missing_values/test_imputation.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/missing_values/test_imputation.py b/tests/missing_values/test_imputation.py index c8f26678..f669a817 100644 --- a/tests/missing_values/test_imputation.py +++ b/tests/missing_values/test_imputation.py @@ -8,7 +8,8 @@ import numpy as np import pytest import os -import lightgbm as lgb +from unittest.mock import patch + @pytest.fixture(scope='function') def X(): @@ -30,7 +31,6 @@ def strategies(): 'KNN' : KNNImputer(n_neighbors=3), } - def test_imputation_linear(X,y,strategies,capsys): #Initialize the classifier @@ -65,10 +65,10 @@ def test_imputation_bagging(X,y,strategies,capsys): assert len(out) == 0 @pytest.mark.skipif(os.environ.get("SKIP_LIGHTGBM") == 'true', reason="LightGBM tests disabled") -def test_imputation_boosting(X,y,strategies,capsys): +def test_imputation_boosting(X,y,strategies,complex_lightgbm,capsys): #Initialize the classifier - clf = lgb.LGBMClassifier() + clf = complex_lightgbm cmp = ImputationSelector(clf=clf,strategies=strategies,cv=3,model_na_support=True) report = cmp.fit_compute(X,y) ax=cmp.plot(show=False) From e1a210b0d645294f303a41fe0ce41fa060caf7a3 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Mon, 15 Mar 2021 10:13:56 +0100 Subject: [PATCH 23/24] Removed requirement.txt --- requirements.txt | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 4089a277..00000000 --- a/requirements.txt +++ /dev/null @@ -1,10 +0,0 @@ -scikit-learn>=0.22.2 -pandas>=1.0.0 -matplotlib>=3.1.1 -scipy>=1.4.0 -joblib>=0.13.2 -tqdm>=4.41.0 -shap>=0.38.1 -numpy>=1.19.0 -pytest -mkdocs \ No newline at end of file From 5064ce1baeec3d1f9d1ade511554c9f85400df80 Mon Sep 17 00:00:00 2001 From: "anilkumar.panda" Date: Mon, 15 Mar 2021 10:16:09 +0100 Subject: [PATCH 24/24] Adding new line to eof --- tests/missing_values/test_imputation.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/missing_values/test_imputation.py b/tests/missing_values/test_imputation.py index f669a817..2691c1b7 100644 --- a/tests/missing_values/test_imputation.py +++ b/tests/missing_values/test_imputation.py @@ -79,4 +79,5 @@ def test_imputation_boosting(X,y,strategies,complex_lightgbm,capsys): # Check if there is any prints out, _ = capsys.readouterr() - assert len(out) == 0 \ No newline at end of file + assert len(out) == 0 + \ No newline at end of file