From 5d060b0d90ef279cdd75da0f5b24352e8f8a8723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Thu, 3 Nov 2022 13:04:48 +0100 Subject: [PATCH 01/48] black --- docs/conf.py | 19 +- examples/ensemble/SOUPBagging.ipynb | 15 +- examples/ensemble/mrbbagging.ipynb | 4 +- examples/ensemble/mrbbagging_pipeline.ipynb | 2 +- examples/example_ecml_presentation.ipynb | 90 +++++--- examples/resampling/GlobalCS.ipynb | 34 ++- examples/resampling/MDO.ipynb | 42 ++-- examples/resampling/SOUP.ipynb | 35 ++- examples/resampling/spider3.ipynb | 55 +++-- examples/use_case.ipynb | 48 ++-- multi_imbalance/__init__.py | 2 +- multi_imbalance/datasets/__init__.py | 2 +- multi_imbalance/datasets/_data_loader.py | 31 ++- .../datasets/tests/test_data_loader.py | 34 +-- multi_imbalance/ensemble/ecoc.py | 197 ++++++++++++----- multi_imbalance/ensemble/mrbbagging.py | 63 ++++-- multi_imbalance/ensemble/ovo.py | 93 +++++--- multi_imbalance/ensemble/soup_bagging.py | 56 +++-- multi_imbalance/ensemble/tests/test_ecoc.py | 155 ++++++++----- .../ensemble/tests/test_mrbbagging.py | 92 +++++--- multi_imbalance/ensemble/tests/test_ovo.py | 137 +++++++----- .../ensemble/tests/test_soupbagging.py | 81 ++++--- multi_imbalance/resampling/global_cs.py | 16 +- multi_imbalance/resampling/mdo.py | 90 +++++--- multi_imbalance/resampling/soup.py | 70 ++++-- multi_imbalance/resampling/spider.py | 49 +++-- multi_imbalance/resampling/static_smote.py | 9 +- .../resampling/tests/test_globalcs.py | 46 ++-- multi_imbalance/resampling/tests/test_mdo.py | 85 ++++--- multi_imbalance/resampling/tests/test_soup.py | 208 +++++++++++++----- .../resampling/tests/test_spider.py | 36 ++- .../resampling/tests/test_static_smote.py | 10 +- multi_imbalance/utils/data.py | 46 ++-- multi_imbalance/utils/min_int_maj.py | 38 ++-- multi_imbalance/utils/plot.py | 44 +++- multi_imbalance/utils/tests/test_data.py | 85 ++++--- setup.py | 16 +- 37 files changed, 1398 insertions(+), 737 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 29a80d6..8079333 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -13,17 +13,18 @@ import os import sys import sphinx_rtd_theme -sys.path.insert(0, os.path.abspath('../')) + +sys.path.insert(0, os.path.abspath("../")) # -- Project information ----------------------------------------------------- -master_doc = 'index' -project = 'multi-imbalance' -copyright = '2020, Damian Horna, Jacek Grycza, Hanna Klimczak, Kamil Pluciński' -author = 'Damian Horna, Jacek Grycza, Hanna Klimczak, Kamil Pluciński' +master_doc = "index" +project = "multi-imbalance" +copyright = "2020, Damian Horna, Jacek Grycza, Hanna Klimczak, Kamil Pluciński" +author = "Damian Horna, Jacek Grycza, Hanna Klimczak, Kamil Pluciński" # The full version, including alpha/beta/rc tags -release = '0.0.4' +release = "0.0.4" # -- General configuration --------------------------------------------------- @@ -40,12 +41,12 @@ html_theme = "sphinx_rtd_theme" # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # -- Options for HTML output ------------------------------------------------- @@ -65,4 +66,4 @@ # for mod_name in MOCK_MODULES: # sys.modules[mod_name] = mock.Mock() -autoclass_content = 'both' # for including __init__ in docs +autoclass_content = "both" # for including __init__ in docs diff --git a/examples/ensemble/SOUPBagging.ipynb b/examples/ensemble/SOUPBagging.ipynb index 5daa2e5..9a31b1d 100644 --- a/examples/ensemble/SOUPBagging.ipynb +++ b/examples/ensemble/SOUPBagging.ipynb @@ -30,7 +30,7 @@ "from multi_imbalance.utils.min_int_maj import maj_int_min\n", "\n", "%matplotlib inline\n", - "sns.set_style('darkgrid')" + "sns.set_style(\"darkgrid\")" ], "metadata": { "collapsed": false, @@ -57,7 +57,7 @@ } ], "source": [ - "dataset = load_datasets()['new_ecoli']\n", + "dataset = load_datasets()[\"new_ecoli\"]\n", "\n", "X, y = dataset.data, dataset.target\n", "print(X[:5])\n", @@ -75,7 +75,7 @@ "execution_count": 6, "outputs": [], "source": [ - "X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.25)" + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)" ], "metadata": { "collapsed": false, @@ -99,7 +99,9 @@ ], "source": [ "clf = KNeighborsClassifier()\n", - "vote_classifier = SOUPBagging(clf, n_classifiers=50, maj_int_min=maj_int_min['new_ecoli'])\n", + "vote_classifier = SOUPBagging(\n", + " clf, n_classifiers=50, maj_int_min=maj_int_min[\"new_ecoli\"]\n", + ")\n", "vote_classifier.fit(X_train, y_train)\n", "y_pred = vote_classifier.predict(X_test)\n", "geometric_mean_score(y_test, y_pred, correction=0.001)" @@ -140,11 +142,10 @@ } ], "source": [ - "X, y = load_arff_dataset(f'{os.getcwd()}/../../data/arff/new_ecoli.arff')\n", + "X, y = load_arff_dataset(f\"{os.getcwd()}/../../data/arff/new_ecoli.arff\")\n", "clf = make_pipeline(StandardScaler(), SOUPBagging())\n", "cv = ShuffleSplit(n_splits=5, test_size=0.3, random_state=0)\n", - "print(cross_val_score(clf, X, y, cv=cv))\n", - "\n" + "print(cross_val_score(clf, X, y, cv=cv))" ], "metadata": { "collapsed": false, diff --git a/examples/ensemble/mrbbagging.ipynb b/examples/ensemble/mrbbagging.ipynb index 8a33abd..df9d53f 100644 --- a/examples/ensemble/mrbbagging.ipynb +++ b/examples/ensemble/mrbbagging.ipynb @@ -29,7 +29,9 @@ "# initialization of MEBBagging object\n", "mrbbagging = MRBBagging(30, tree.DecisionTreeClassifier())\n", "\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, test_size=0.33, random_state=42\n", + ")\n", "\n", "# train the MRBBagging classifier\n", "mrbbagging.fit(X_train, y_train)\n", diff --git a/examples/ensemble/mrbbagging_pipeline.ipynb b/examples/ensemble/mrbbagging_pipeline.ipynb index dfc6463..70cf341 100644 --- a/examples/ensemble/mrbbagging_pipeline.ipynb +++ b/examples/ensemble/mrbbagging_pipeline.ipynb @@ -43,7 +43,7 @@ "from multi_imbalance.utils.data import load_arff_dataset\n", "\n", "# an example of how mrbbagging can be used in sklearn pipeline\n", - "X, y = load_arff_dataset(f'{os.getcwd()}/../../data/arff/new_ecoli.arff')\n", + "X, y = load_arff_dataset(f\"{os.getcwd()}/../../data/arff/new_ecoli.arff\")\n", "clf = make_pipeline(StandardScaler(), MRBBagging(30, tree.DecisionTreeClassifier()))\n", "cv = ShuffleSplit(n_splits=5, test_size=0.3, random_state=0)\n", "print(cross_val_score(clf, X, y, cv=cv))" diff --git a/examples/example_ecml_presentation.ipynb b/examples/example_ecml_presentation.ipynb index e916873..e6d69eb 100644 --- a/examples/example_ecml_presentation.ipynb +++ b/examples/example_ecml_presentation.ipynb @@ -31,11 +31,11 @@ "import pandas as pd\n", "import seaborn as sns\n", "\n", - "seed=0\n", + "seed = 0\n", "np.random.seed(seed)\n", "\n", - "sns.set_style('white')\n", - "sns.set(rc={'figure.figsize':(12,7)})\n", + "sns.set_style(\"white\")\n", + "sns.set(rc={\"figure.figsize\": (12, 7)})\n", "sns.set_context(\"notebook\", font_scale=1.5)" ] }, @@ -72,12 +72,19 @@ "datasets = load_datasets_arff(return_non_cat_length=True)\n", "\n", "scores = defaultdict(lambda: defaultdict(dict))\n", - "datasets_to_compare = ['glass', 'flare', 'new_ecoli', 'new_winequality-red', 'new_yeast', 'balance-scale']\n", + "datasets_to_compare = [\n", + " \"glass\",\n", + " \"flare\",\n", + " \"new_ecoli\",\n", + " \"new_winequality-red\",\n", + " \"new_yeast\",\n", + " \"balance-scale\",\n", + "]\n", "for dataset_name in tqdm(datasets_to_compare):\n", " dataset_values = datasets[dataset_name]\n", " X, y = dataset_values.data, dataset_values.target\n", " non_cat_length = dataset_values.non_cat_length\n", - " for method in ['Tree', 'SOUP', 'MDO', 'OVO', 'MRBB']:\n", + " for method in [\"Tree\", \"SOUP\", \"MDO\", \"OVO\", \"MRBB\"]:\n", " k_fold_score = list()\n", " for i in range(10):\n", " skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=i)\n", @@ -86,23 +93,40 @@ " y_train, y_test = y[train_index], y[test_index]\n", " if non_cat_length > 0:\n", " normalizer = StandardScaler().fit(X_train[:, :non_cat_length])\n", - " X_train[:, :non_cat_length] = normalizer.transform(X_train[:, :non_cat_length])\n", - " X_test[:, :non_cat_length] = normalizer.transform(X_test[:, :non_cat_length])\n", + " X_train[:, :non_cat_length] = normalizer.transform(\n", + " X_train[:, :non_cat_length]\n", + " )\n", + " X_test[:, :non_cat_length] = normalizer.transform(\n", + " X_test[:, :non_cat_length]\n", + " )\n", "\n", - " if method == 'SOUP':\n", + " if method == \"SOUP\":\n", " soup = SOUP(k=7, maj_int_min=maj_int_min[dataset_name])\n", - " X_train_resampled, y_train_resampled = soup.fit_resample(np.copy(X_train), np.copy(y_train))\n", - " elif method == 'MDO':\n", - " mdo = MDO(k=5, k1_frac=0.4, maj_int_min=maj_int_min[dataset_name], seed=seed)\n", - " X_train_resampled, y_train_resampled = mdo.fit_resample(np.copy(X_train), np.copy(y_train))\n", + " X_train_resampled, y_train_resampled = soup.fit_resample(\n", + " np.copy(X_train), np.copy(y_train)\n", + " )\n", + " elif method == \"MDO\":\n", + " mdo = MDO(\n", + " k=5,\n", + " k1_frac=0.4,\n", + " maj_int_min=maj_int_min[dataset_name],\n", + " seed=seed,\n", + " )\n", + " X_train_resampled, y_train_resampled = mdo.fit_resample(\n", + " np.copy(X_train), np.copy(y_train)\n", + " )\n", " else:\n", " X_train_resampled, y_train_resampled = X_train, y_train\n", "\n", - " if method == 'OVO':\n", - " clf = OVO(binary_classifier=DecisionTreeClassifier(random_state=seed),\n", - " preprocessing=SOUP(maj_int_min=maj_int_min[dataset_name]))\n", - " elif method == 'MRBB':\n", - " clf = MRBBagging(k=100, learning_algorithm=DecisionTreeClassifier())\n", + " if method == \"OVO\":\n", + " clf = OVO(\n", + " binary_classifier=DecisionTreeClassifier(random_state=seed),\n", + " preprocessing=SOUP(maj_int_min=maj_int_min[dataset_name]),\n", + " )\n", + " elif method == \"MRBB\":\n", + " clf = MRBBagging(\n", + " k=100, learning_algorithm=DecisionTreeClassifier()\n", + " )\n", " else:\n", " clf = DecisionTreeClassifier(random_state=i)\n", "\n", @@ -137,7 +161,7 @@ "outputs": [], "source": [ "df = pd.DataFrame(scores).T\n", - "df.to_csv(f'results.csv')" + "df.to_csv(f\"results.csv\")" ] }, { @@ -160,11 +184,10 @@ } ], "source": [ - "\n", - "df = read_csv('results.csv')\n", - "df.columns = ['Dataset', 'Baseline', 'SOUP', 'MDO','OVO + SOUP', 'MRBBagging']\n", - "df = df.set_index('Dataset').T\n", - "df.columns = ['glass', 'flare', 'ecoli', 'winequality-red', 'yeast', 'balance-scale']\n", + "df = read_csv(\"results.csv\")\n", + "df.columns = [\"Dataset\", \"Baseline\", \"SOUP\", \"MDO\", \"OVO + SOUP\", \"MRBBagging\"]\n", + "df = df.set_index(\"Dataset\").T\n", + "df.columns = [\"glass\", \"flare\", \"ecoli\", \"winequality-red\", \"yeast\", \"balance-scale\"]\n", "df = df.T\n", "df" ] @@ -184,9 +207,12 @@ } ], "source": [ - "df_rank = df.rank(axis=1,ascending=True).astype(int)\n", - "df_meanrank = pd.DataFrame(df_rank.mean().sort_values(ascending=False),columns=['Mean ranking (the higher the better)']).round(2)\n", - "df_meanrank.index.name = 'Method'\n", + "df_rank = df.rank(axis=1, ascending=True).astype(int)\n", + "df_meanrank = pd.DataFrame(\n", + " df_rank.mean().sort_values(ascending=False),\n", + " columns=[\"Mean ranking (the higher the better)\"],\n", + ").round(2)\n", + "df_meanrank.index.name = \"Method\"\n", "df_meanrank" ], "metadata": { @@ -210,7 +236,13 @@ } ], "source": [ - "g = sns.barplot(x='Mean ranking (the higher the better)',y=df_meanrank.index, data=df_meanrank, palette=['grey'], dodge=True)\n", + "g = sns.barplot(\n", + " x=\"Mean ranking (the higher the better)\",\n", + " y=df_meanrank.index,\n", + " data=df_meanrank,\n", + " palette=[\"grey\"],\n", + " dodge=True,\n", + ")\n", "g.set(ylabel=None)\n", "g.set(xlabel=None)\n", "plt.show()" @@ -226,9 +258,7 @@ "cell_type": "code", "execution_count": 6, "outputs": [], - "source": [ - "\n" - ], + "source": [], "metadata": { "collapsed": false, "pycharm": { diff --git a/examples/resampling/GlobalCS.ipynb b/examples/resampling/GlobalCS.ipynb index cb468e0..db44f63 100644 --- a/examples/resampling/GlobalCS.ipynb +++ b/examples/resampling/GlobalCS.ipynb @@ -49,10 +49,10 @@ "from multi_imbalance.utils.data import construct_flat_2pc_df\n", "\n", "%matplotlib inline\n", - "sns.set_style('darkgrid')\n", + "sns.set_style(\"darkgrid\")\n", "\n", - "df = load_datasets()['new_ecoli']\n", - "X, y = df['data'], df['target']\n", + "df = load_datasets()[\"new_ecoli\"]\n", + "X, y = df[\"data\"], df[\"target\"]\n", "print(X[:5])\n", "print(y[:5])" ], @@ -131,21 +131,41 @@ "pca.fit(X)\n", "\n", "fig, axs = plt.subplots(ncols=2, nrows=2)\n", - "fig.set_size_inches( 16, 10)\n", + "fig.set_size_inches(16, 10)\n", "axs = axs.flatten()\n", "\n", "axs[1].set_title(\"Base\")\n", "sns.countplot(y, ax=axs[0], palette=p)\n", "X = pca.transform(X)\n", "df = construct_flat_2pc_df(X, y)\n", - "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[1], legend='full', palette=p)\n", + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[1],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")\n", "\n", "\n", "axs[3].set_title(\"MDO\")\n", - "sns.countplot(resampled_y, ax=axs[2],palette=p)\n", + "sns.countplot(resampled_y, ax=axs[2], palette=p)\n", "resampled_X = pca.transform(resampled_X)\n", "df = construct_flat_2pc_df(resampled_X, resampled_y)\n", - "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[3], legend='full', palette=p)" + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[3],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")" ], "metadata": { "collapsed": false, diff --git a/examples/resampling/MDO.ipynb b/examples/resampling/MDO.ipynb index 364c3fd..450a37a 100644 --- a/examples/resampling/MDO.ipynb +++ b/examples/resampling/MDO.ipynb @@ -49,12 +49,12 @@ "from multi_imbalance.utils.min_int_maj import maj_int_min\n", "\n", "%matplotlib inline\n", - "sns.set_style('darkgrid')\n", + "sns.set_style(\"darkgrid\")\n", "\n", "\n", "dataset = load_datasets()\n", "print(dataset.keys())\n", - "dataset = dataset['new_ecoli']\n", + "dataset = dataset[\"new_ecoli\"]\n", "X, y = dataset.data, dataset.target\n", "print(X[:5])\n", "print(y[:5])" @@ -77,7 +77,7 @@ }, "outputs": [], "source": [ - "clf = MDO(k=5, k1_frac=0.3, maj_int_min=maj_int_min['new_ecoli'])\n", + "clf = MDO(k=5, k1_frac=0.3, maj_int_min=maj_int_min[\"new_ecoli\"])\n", "resampled_X, resampled_y = clf.fit_resample(X, y)" ] }, @@ -122,21 +122,41 @@ "pca.fit(X)\n", "\n", "fig, axs = plt.subplots(ncols=2, nrows=2)\n", - "fig.set_size_inches( 16, 10)\n", + "fig.set_size_inches(16, 10)\n", "axs = axs.flatten()\n", "\n", "axs[1].set_title(\"Base\")\n", "sns.countplot(y, ax=axs[0], palette=p)\n", "X = pca.transform(X)\n", "df = construct_flat_2pc_df(X, y)\n", - "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[1], legend='full', palette=p)\n", + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[1],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")\n", "\n", "\n", "axs[3].set_title(\"MDO\")\n", - "sns.countplot(resampled_y, ax=axs[2],palette=p)\n", + "sns.countplot(resampled_y, ax=axs[2], palette=p)\n", "resampled_X = pca.transform(resampled_X)\n", "df = construct_flat_2pc_df(resampled_X, resampled_y)\n", - "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[3], legend='full', palette=p)" + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[3],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")" ] }, { @@ -163,14 +183,10 @@ } ], "source": [ - "X, y = load_arff_dataset(f'{os.getcwd()}/../../data/arff/new_ecoli.arff')\n", + "X, y = load_arff_dataset(f\"{os.getcwd()}/../../data/arff/new_ecoli.arff\")\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)\n", "\n", - "pipeline = Pipeline([\n", - " ('scaler', StandardScaler()),\n", - " ('mdo', MDO()),\n", - " ('knn', KNN())\n", - "])\n", + "pipeline = Pipeline([(\"scaler\", StandardScaler()), (\"mdo\", MDO()), (\"knn\", KNN())])\n", "\n", "pipeline.fit(X_train, y_train)\n", "y_hat = pipeline.predict(X_test)\n", diff --git a/examples/resampling/SOUP.ipynb b/examples/resampling/SOUP.ipynb index 9eadd0f..52d99b4 100644 --- a/examples/resampling/SOUP.ipynb +++ b/examples/resampling/SOUP.ipynb @@ -50,8 +50,8 @@ "from multi_imbalance.utils.min_int_maj import maj_int_min\n", "\n", "%matplotlib inline\n", - "sns.set_style('darkgrid')\n", - "dataset_name = 'new_ecoli'\n", + "sns.set_style(\"darkgrid\")\n", + "dataset_name = \"new_ecoli\"\n", "dataset = load_datasets()[dataset_name]\n", "\n", "X, y = dataset.data, dataset.target\n", @@ -91,7 +91,7 @@ ], "source": [ "clf = SOUP(maj_int_min=maj_int_min[dataset_name], shuffle=False)\n", - "print(maj_int_min['new_ecoli'])\n", + "print(maj_int_min[\"new_ecoli\"])\n", "resampled_X, resampled_y = clf.fit_resample(X, y)" ], "metadata": { @@ -135,7 +135,6 @@ } ], "source": [ - "\n", "n = len(Counter(y).keys())\n", "p = sns.color_palette(\"husl\", n)\n", "\n", @@ -143,21 +142,41 @@ "pca.fit(X)\n", "\n", "fig, axs = plt.subplots(ncols=2, nrows=2)\n", - "fig.set_size_inches( 16, 10)\n", + "fig.set_size_inches(16, 10)\n", "axs = axs.flatten()\n", "\n", "axs[1].set_title(\"Base\")\n", "sns.countplot(y, ax=axs[0], palette=p)\n", "X = pca.transform(X)\n", "df = construct_flat_2pc_df(X, y)\n", - "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[1], legend='full', palette=p)\n", + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[1],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")\n", "\n", "\n", "axs[3].set_title(\"SOUP\")\n", - "sns.countplot(resampled_y, ax=axs[2],palette=p)\n", + "sns.countplot(resampled_y, ax=axs[2], palette=p)\n", "resampled_X = pca.transform(resampled_X)\n", "df = construct_flat_2pc_df(resampled_X, resampled_y)\n", - "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[3], legend='full', palette=p)" + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[3],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")" ], "metadata": { "collapsed": false, diff --git a/examples/resampling/spider3.ipynb b/examples/resampling/spider3.ipynb index 3a5b407..b6c4400 100644 --- a/examples/resampling/spider3.ipynb +++ b/examples/resampling/spider3.ipynb @@ -55,12 +55,12 @@ "from multi_imbalance.utils.data import construct_flat_2pc_df\n", "\n", "%matplotlib inline\n", - "sns.set_style('darkgrid')\n", + "sns.set_style(\"darkgrid\")\n", "\n", "%matplotlib inline\n", - "sns.set_style('darkgrid')\n", + "sns.set_style(\"darkgrid\")\n", "\n", - "dataset = load_datasets()['new_ecoli']\n", + "dataset = load_datasets()[\"new_ecoli\"]\n", "\n", "X, y = dataset.data, dataset.target\n", "print(X[:5])\n", @@ -105,14 +105,10 @@ "cost = np.random.rand(64).reshape((8, 8)) # np.ones((8, 8))\n", "for i in range(8):\n", " cost[i][i] = 0\n", - " \n", - "maj_int_min = {\n", - " 'maj':[0,1],\n", - " 'int':[4],\n", - " 'min':[2,3]\n", - "}\n", "\n", - "clf = SPIDER3(k=1, maj_int_min = maj_int_min, cost=cost)\n", + "maj_int_min = {\"maj\": [0, 1], \"int\": [4], \"min\": [2, 3]}\n", + "\n", + "clf = SPIDER3(k=1, maj_int_min=maj_int_min, cost=cost)\n", "resampled_X, resampled_y = clf.fit_resample(X, y)" ] }, @@ -150,7 +146,6 @@ } ], "source": [ - "\n", "n = len(Counter(y).keys())\n", "p = sns.color_palette(\"husl\", n)\n", "\n", @@ -158,21 +153,41 @@ "pca.fit(X)\n", "\n", "fig, axs = plt.subplots(ncols=2, nrows=2)\n", - "fig.set_size_inches( 16, 10)\n", + "fig.set_size_inches(16, 10)\n", "axs = axs.flatten()\n", "\n", "axs[1].set_title(\"Base\")\n", "sns.countplot(y, ax=axs[0], palette=p)\n", "X = pca.transform(X)\n", "df = construct_flat_2pc_df(X, y)\n", - "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[1], legend='full', palette=p)\n", + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[1],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")\n", "\n", "\n", "axs[3].set_title(\"Spider\")\n", - "sns.countplot(resampled_y, ax=axs[2],palette=p)\n", + "sns.countplot(resampled_y, ax=axs[2], palette=p)\n", "resampled_X = pca.transform(resampled_X)\n", "df = construct_flat_2pc_df(resampled_X, resampled_y)\n", - "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[3], legend='full', palette=p)" + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[3],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")" ] }, { @@ -213,15 +228,13 @@ "from sklearn.neighbors import KNeighborsClassifier as KNN\n", "from sklearn.metrics import classification_report\n", "\n", - "dataset = load_datasets()['new_ecoli']\n", + "dataset = load_datasets()[\"new_ecoli\"]\n", "\n", "X, y = dataset.data, dataset.target\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)\n", - "pipeline = Pipeline([\n", - " ('scaler', StandardScaler()),\n", - " ('spider', SPIDER3(k=1)),\n", - " ('knn', KNN())\n", - "])\n", + "pipeline = Pipeline(\n", + " [(\"scaler\", StandardScaler()), (\"spider\", SPIDER3(k=1)), (\"knn\", KNN())]\n", + ")\n", "pipeline.fit(X_train, y_train)\n", "y_hat = pipeline.predict(X_test)\n", "print(classification_report(y_test, y_hat))" diff --git a/examples/use_case.ipynb b/examples/use_case.ipynb index 1d81824..5d95474 100644 --- a/examples/use_case.ipynb +++ b/examples/use_case.ipynb @@ -38,7 +38,7 @@ "\n", "%matplotlib inline\n", "\n", - "dataset_name = 'glass'\n", + "dataset_name = \"glass\"\n", "dir = os.getcwd()" ] }, @@ -86,7 +86,7 @@ "source": [ "from multi_imbalance.utils.data import load_arff_dataset\n", "\n", - "X, y = load_arff_dataset(f'{dir}/../data/arff/{dataset_name}.arff')\n", + "X, y = load_arff_dataset(f\"{dir}/../data/arff/{dataset_name}.arff\")\n", "\n", "print(X[:5])\n", "print(y[:5])" @@ -122,7 +122,8 @@ ], "source": [ "from multi_imbalance.utils.plot import plot_cardinality_and_2d_data\n", - "plot_cardinality_and_2d_data(X, y, 'Glass')" + "\n", + "plot_cardinality_and_2d_data(X, y, \"Glass\")" ] }, { @@ -151,7 +152,9 @@ "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import StandardScaler\n", "\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.35, stratify=y, random_state=seed)\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, test_size=0.35, stratify=y, random_state=seed\n", + ")\n", "\n", "scaler = StandardScaler()\n", "scaler.fit(X_train)\n", @@ -218,7 +221,7 @@ "from multi_imbalance.utils.metrics import gmean_score\n", "\n", "gmean = gmean_score(y_test, y_pred, correction=0.001)\n", - "f'Decision Tree: {round(gmean,3)}'" + "f\"Decision Tree: {round(gmean,3)}\"" ] }, { @@ -246,11 +249,8 @@ "source": [ "from multi_imbalance.resampling.mdo import MDO\n", "\n", - "mdo = MDO(k1_frac=.3, maj_int_min={\n", - " 'maj': [0, 1],\n", - " 'min': [2, 3, 4, 5]\n", - " })\n", - "X_train_res, y_train_res = mdo.fit_resample(X_train, y_train)\n" + "mdo = MDO(k1_frac=0.3, maj_int_min={\"maj\": [0, 1], \"min\": [2, 3, 4, 5]})\n", + "X_train_res, y_train_res = mdo.fit_resample(X_train, y_train)" ] }, { @@ -284,7 +284,10 @@ ], "source": [ "from multi_imbalance.utils.plot import plot_visual_comparision_datasets\n", - "plot_visual_comparision_datasets(X_train, y_train, X_train_res, y_train_res, 'Glass', 'Resampled Glass')" + "\n", + "plot_visual_comparision_datasets(\n", + " X_train, y_train, X_train_res, y_train_res, \"Glass\", \"Resampled Glass\"\n", + ")" ] }, { @@ -322,7 +325,7 @@ "y_pred = clf.predict(X_test)\n", "\n", "gmean = gmean_score(y_test, y_pred, correction=0.001)\n", - "f'Decision Tree + MDO: {round(gmean,3)}'\n" + "f\"Decision Tree + MDO: {round(gmean,3)}\"" ] }, { @@ -359,12 +362,11 @@ "source": [ "from multi_imbalance.resampling.soup import SOUP\n", "\n", - "soup = SOUP(maj_int_min={\n", - " 'maj': [0, 1],\n", - " 'min': [2, 3, 4, 5]\n", - " })\n", + "soup = SOUP(maj_int_min={\"maj\": [0, 1], \"min\": [2, 3, 4, 5]})\n", "X_train_res, y_train_res = soup.fit_resample(X_train, y_train)\n", - "plot_visual_comparision_datasets(X_train, y_train, X_train_res, y_train_res, 'Glass', 'Resampled Glass')" + "plot_visual_comparision_datasets(\n", + " X_train, y_train, X_train_res, y_train_res, \"Glass\", \"Resampled Glass\"\n", + ")" ] }, { @@ -398,7 +400,7 @@ "y_pred = clf.predict(X_test)\n", "\n", "gmean = gmean_score(y_test, y_pred, correction=0.001)\n", - "f'Decision Tree + SOUP: {round(gmean,3)}'" + "f\"Decision Tree + SOUP: {round(gmean,3)}\"" ] }, { @@ -439,21 +441,17 @@ "source": [ "from multi_imbalance.ensemble.ovo import OVO\n", "\n", - "soup = SOUP(maj_int_min={\n", - " 'maj': [0, 1],\n", - " 'min': [2, 3, 4, 5]\n", - " })\n", + "soup = SOUP(maj_int_min={\"maj\": [0, 1], \"min\": [2, 3, 4, 5]})\n", "\n", "clf = OVO(\n", - " binary_classifier=DecisionTreeClassifier(random_state=seed),\n", - " preprocessing=soup\n", + " binary_classifier=DecisionTreeClassifier(random_state=seed), preprocessing=soup\n", ")\n", "\n", "clf.fit(X_train, y_train)\n", "y_pred = clf.predict(X_test)\n", "\n", "gmean = gmean_score(y_test, y_pred, correction=0.001)\n", - "f'OVO with DecisionTree and SOUP: {round(gmean,3)}'" + "f\"OVO with DecisionTree and SOUP: {round(gmean,3)}\"" ] }, { diff --git a/multi_imbalance/__init__.py b/multi_imbalance/__init__.py index 853c793..a942444 100644 --- a/multi_imbalance/__init__.py +++ b/multi_imbalance/__init__.py @@ -3,4 +3,4 @@ from . import utils name = "multi_imbalance" -__all__ = ['ensemble', 'resampling', 'utils'] +__all__ = ["ensemble", "resampling", "utils"] diff --git a/multi_imbalance/datasets/__init__.py b/multi_imbalance/datasets/__init__.py index 0fcecfd..8aeb5ac 100644 --- a/multi_imbalance/datasets/__init__.py +++ b/multi_imbalance/datasets/__init__.py @@ -1,3 +1,3 @@ from ._data_loader import load_datasets -__all__ = ['load_datasets'] +__all__ = ["load_datasets"] diff --git a/multi_imbalance/datasets/_data_loader.py b/multi_imbalance/datasets/_data_loader.py index 9a63c7d..c4abe2e 100644 --- a/multi_imbalance/datasets/_data_loader.py +++ b/multi_imbalance/datasets/_data_loader.py @@ -26,14 +26,29 @@ from sklearn.datasets._base import Bunch -PRE_FILENAME = 'x' -POST_FILENAME = 'data.npz' +PRE_FILENAME = "x" +POST_FILENAME = "data.npz" DATA_HOME_BASIC = "./../../data/" -MAP_NAME_ID_KEYS = ['1czysty-cut', '2delikatne-cut', '3mocniej-cut', '4delikatne-bezover-cut', - 'balance-scale', 'cleveland', 'cleveland_v2', 'cmc', 'dermatology', - 'glass', 'hayes-roth', 'new_ecoli', 'new_led7digit', 'new_vehicle', - 'new_winequality-red', 'new_yeast', 'thyroid-newthyroid'] +MAP_NAME_ID_KEYS = [ + "1czysty-cut", + "2delikatne-cut", + "3mocniej-cut", + "4delikatne-bezover-cut", + "balance-scale", + "cleveland", + "cleveland_v2", + "cmc", + "dermatology", + "glass", + "hayes-roth", + "new_ecoli", + "new_led7digit", + "new_vehicle", + "new_winequality-red", + "new_yeast", + "thyroid-newthyroid", +] MAP_NAME_ID = OrderedDict() MAP_ID_NAME = OrderedDict() @@ -69,13 +84,13 @@ def load_datasets(data_home=DATA_HOME_BASIC): if not available: makedirs(extracted_dir, exist_ok=True) - with open(f'{data_home}data.tar.gz', 'rb') as fin: + with open(f"{data_home}data.tar.gz", "rb") as fin: f = BytesIO(fin.read()) tar = tarfile.open(fileobj=f) tar.extractall(path=extracted_dir) data = np.load(filename) - X, y = data['data'], data['label'] + X, y = data["data"], data["label"] datasets[it] = Bunch(data=X, target=y, DESCR=it) diff --git a/multi_imbalance/datasets/tests/test_data_loader.py b/multi_imbalance/datasets/tests/test_data_loader.py index 5f56a15..6c734ad 100644 --- a/multi_imbalance/datasets/tests/test_data_loader.py +++ b/multi_imbalance/datasets/tests/test_data_loader.py @@ -4,23 +4,23 @@ from multi_imbalance.datasets import load_datasets DATASET_SHAPE = { - '1czysty-cut': (1200, 2), - '2delikatne-cut': (1200, 2), - '3mocniej-cut': (1200, 2), - '4delikatne-bezover-cut': (1200, 2), - 'balance-scale': (625, 4), - 'cleveland': (303, 13), - 'cleveland_v2': (303, 13), - 'cmc': (1473, 9), - 'dermatology': (366, 34), - 'glass': (214, 9), - 'hayes-roth': (160, 4), - 'new_ecoli': (336, 7), - 'new_led7digit': (500, 7), - 'new_vehicle': (846, 18), - 'new_winequality-red': (1599, 11), - 'new_yeast': (1484, 8), - 'thyroid-newthyroid': (215, 5) + "1czysty-cut": (1200, 2), + "2delikatne-cut": (1200, 2), + "3mocniej-cut": (1200, 2), + "4delikatne-bezover-cut": (1200, 2), + "balance-scale": (625, 4), + "cleveland": (303, 13), + "cleveland_v2": (303, 13), + "cmc": (1473, 9), + "dermatology": (366, 34), + "glass": (214, 9), + "hayes-roth": (160, 4), + "new_ecoli": (336, 7), + "new_led7digit": (500, 7), + "new_vehicle": (846, 18), + "new_winequality-red": (1599, 11), + "new_yeast": (1484, 8), + "thyroid-newthyroid": (215, 5), } diff --git a/multi_imbalance/ensemble/ecoc.py b/multi_imbalance/ensemble/ecoc.py index 4b1161a..6b111cd 100644 --- a/multi_imbalance/ensemble/ecoc.py +++ b/multi_imbalance/ensemble/ecoc.py @@ -24,13 +24,19 @@ class ECOC(BaggingClassifier): which is closest to test instance in the sense of Hamming distance is chosen. """ - _allowed_encodings = ['dense', 'sparse', 'complete', 'OVA', 'OVO'] - _allowed_oversampling = [None, 'globalCS', 'SMOTE', 'SOUP'] - _allowed_classifiers = ['tree', 'NB', 'KNN'] - _allowed_weights = [None, 'acc', 'avg_tpr_min'] - - def __init__(self, binary_classifier='KNN', preprocessing='SOUP', encoding='OVO', n_neighbors=3, - weights=None): + _allowed_encodings = ["dense", "sparse", "complete", "OVA", "OVO"] + _allowed_oversampling = [None, "globalCS", "SMOTE", "SOUP"] + _allowed_classifiers = ["tree", "NB", "KNN"] + _allowed_weights = [None, "acc", "avg_tpr_min"] + + def __init__( + self, + binary_classifier="KNN", + preprocessing="SOUP", + encoding="OVO", + n_neighbors=3, + weights=None, + ): """ :param binary_classifier: binary classifier used by the algorithm. Possible classifiers: @@ -114,14 +120,17 @@ def fit(self, X, y, minority_classes=None): self.minority_classes = minority_classes if self.weights is not None: - X_train, X_for_weights, y_train, y_for_weights = train_test_split(X, y, test_size=0.2, stratify=y, - random_state=0) + X_train, X_for_weights, y_train, y_for_weights = train_test_split( + X, y, test_size=0.2, stratify=y, random_state=0 + ) else: X_train, y_train = X, y self._labels = np.unique(y) self._gen_code_matrix() - self._binary_classifiers = [self._get_classifier() for _ in range(self._code_matrix.shape[1])] + self._binary_classifiers = [ + self._get_classifier() for _ in range(self._code_matrix.shape[1]) + ] self._learn_binary_classifiers(X_train, y_train) if self.weights is not None: self._calc_weights(X_for_weights, y_for_weights) @@ -146,37 +155,57 @@ def predict(self, X): def _learn_binary_classifiers(self, X, y): for classifier_idx, classifier in enumerate(self._binary_classifiers): - excluded_classes_indices = [idx for idx in range(len(y)) if - self._code_matrix[self._labels.tolist().index(y[idx])][classifier_idx] == 0] + excluded_classes_indices = [ + idx + for idx in range(len(y)) + if self._code_matrix[self._labels.tolist().index(y[idx])][ + classifier_idx + ] + == 0 + ] X_filtered = np.delete(X, excluded_classes_indices, 0) y_filtered = np.delete(y, excluded_classes_indices) - binary_labels = np.array([self._code_matrix[self._labels.tolist().index(clazz)][classifier_idx] for clazz in - y_filtered]) + binary_labels = np.array( + [ + self._code_matrix[self._labels.tolist().index(clazz)][ + classifier_idx + ] + for clazz in y_filtered + ] + ) X_filtered, binary_labels = self._oversample(X_filtered, binary_labels) classifier.fit(X_filtered, binary_labels) def _gen_code_matrix(self): - if self.encoding == 'dense': + if self.encoding == "dense": self._code_matrix = self._encode_dense(self._labels.shape[0]) - elif self.encoding == 'sparse': + elif self.encoding == "sparse": self._code_matrix = self._encode_sparse(self._labels.shape[0]) - elif self.encoding == 'complete': + elif self.encoding == "complete": self._code_matrix = self._encode_complete(self._labels.shape[0]) - elif self.encoding == 'OVO': + elif self.encoding == "OVO": self._code_matrix = self._encode_ovo(self._labels.shape[0]) - elif self.encoding == 'OVA': + elif self.encoding == "OVA": self._code_matrix = self._encode_ova(self._labels.shape[0]) else: - raise ValueError("Unknown matrix generation encoding: %s, expected to be one of %s." - % (self.encoding, ECOC._allowed_encodings)) + raise ValueError( + "Unknown matrix generation encoding: %s, expected to be one of %s." + % (self.encoding, ECOC._allowed_encodings) + ) - def _encode_dense(self, number_of_classes, random_state=0, number_of_code_generations=10000): + def _encode_dense( + self, number_of_classes, random_state=0, number_of_code_generations=10000 + ): try: dirname = os.path.dirname(__file__) - matrix = np.load(dirname + f'/cached_matrices/dense_{number_of_classes}.npy') + matrix = np.load( + dirname + f"/cached_matrices/dense_{number_of_classes}.npy" + ) return matrix except IOError: - print(f'Could not find cached matrix for dense code for {number_of_classes} classes, generating matrix...') + print( + f"Could not find cached matrix for dense code for {number_of_classes} classes, generating matrix..." + ) number_of_columns = int(np.ceil(10 * np.log2(number_of_classes))) code_matrix = np.ones((number_of_classes, number_of_columns)) @@ -185,7 +214,7 @@ def _encode_dense(self, number_of_classes, random_state=0, number_of_code_genera max_min_dist = 0 for i in range(number_of_code_generations): tmp_code_matrix = np.ones((number_of_classes, number_of_columns)) - min_dist = float('inf') + min_dist = float("inf") for row in range(0, number_of_classes): for col in range(0, number_of_columns): @@ -193,7 +222,9 @@ def _encode_dense(self, number_of_classes, random_state=0, number_of_code_genera tmp_code_matrix[row, col] = -1 for compared_row in range(0, row): - dist = self._hamming_distance(tmp_code_matrix[compared_row], tmp_code_matrix[row]) + dist = self._hamming_distance( + tmp_code_matrix[compared_row], tmp_code_matrix[row] + ) if dist < min_dist: min_dist = dist @@ -202,13 +233,19 @@ def _encode_dense(self, number_of_classes, random_state=0, number_of_code_genera code_matrix = tmp_code_matrix return code_matrix - def _encode_sparse(self, number_of_classes, random_state=0, number_of_code_generations=10000): + def _encode_sparse( + self, number_of_classes, random_state=0, number_of_code_generations=10000 + ): try: dirname = os.path.dirname(__file__) - matrix = np.load(dirname + f'/cached_matrices/sparse_{number_of_classes}.npy') + matrix = np.load( + dirname + f"/cached_matrices/sparse_{number_of_classes}.npy" + ) return matrix except IOError: - print(f'Could not find cached matrix for sparse code for {number_of_classes} classes, generating matrix...') + print( + f"Could not find cached matrix for sparse code for {number_of_classes} classes, generating matrix..." + ) number_of_columns = int(np.ceil(15 * np.log2(number_of_classes))) code_matrix = np.ones((number_of_classes, number_of_columns)) @@ -217,7 +254,7 @@ def _encode_sparse(self, number_of_classes, random_state=0, number_of_code_gener max_min_dist = 0 for i in range(number_of_code_generations): tmp_code_matrix = np.ones((number_of_classes, number_of_columns)) - min_dist = float('inf') + min_dist = float("inf") for row in range(0, number_of_classes): for col in range(0, number_of_columns): @@ -231,7 +268,9 @@ def _encode_sparse(self, number_of_classes, random_state=0, number_of_code_gener break for compared_row in range(0, row): - dist = self._hamming_distance(tmp_code_matrix[compared_row], tmp_code_matrix[row]) + dist = self._hamming_distance( + tmp_code_matrix[compared_row], tmp_code_matrix[row] + ) if dist < min_dist: min_dist = dist @@ -277,7 +316,7 @@ def _encode_complete(self, number_of_classes): digit = -1 partial_code_len = 2 ** (number_of_classes - row_idx - 1) for idx in range(0, code_length, partial_code_len): - matrix[row_idx][idx:idx + partial_code_len] = digit + matrix[row_idx][idx : idx + partial_code_len] = digit digit *= -1 return matrix @@ -291,11 +330,21 @@ def _get_closest_class(self, row): if self.weights is not None: return self._labels[ np.argmin( - [sum(np.multiply(self.dich_weights, (encoded_class - row) ** 2)) for encoded_class in - self._code_matrix])] + [ + sum(np.multiply(self.dich_weights, (encoded_class - row) ** 2)) + for encoded_class in self._code_matrix + ] + ) + ] else: return self._labels[ - np.argmin([self._hamming_distance(row, encoded_class) for encoded_class in self._code_matrix])] + np.argmin( + [ + self._hamming_distance(row, encoded_class) + for encoded_class in self._code_matrix + ] + ) + ] def _oversample(self, X, y): if self.preprocessing is None: @@ -303,20 +352,22 @@ def _oversample(self, X, y): if isinstance(self.preprocessing, str): if self.preprocessing not in ECOC._allowed_oversampling: - raise ValueError("Unknown preprocessing method: %s, expected to be one of %s." - % (self.preprocessing, ECOC._allowed_oversampling)) + raise ValueError( + "Unknown preprocessing method: %s, expected to be one of %s." + % (self.preprocessing, ECOC._allowed_oversampling) + ) elif np.unique(y).size == 1: return X, y - elif self.preprocessing == 'globalCS': + elif self.preprocessing == "globalCS": gcs = GlobalCS() return gcs.fit_resample(X, y) - elif self.preprocessing == 'SMOTE': + elif self.preprocessing == "SMOTE": return self._smote_oversample(X, y) - elif self.preprocessing == 'SOUP': + elif self.preprocessing == "SOUP": soup = SOUP() return soup.fit_resample(X, y) else: - if not hasattr(self.preprocessing, 'fit_transform'): + if not hasattr(self.preprocessing, "fit_transform"): raise ValueError("Your resampler must implement fit_transform method") return self.preprocessing.fit_transform(X, y) @@ -325,58 +376,86 @@ def _get_classifier(self): if self.binary_classifier not in ECOC._allowed_classifiers: raise ValueError( "Unknown binary classifier: %s, expected to be one of %s." - % (self.binary_classifier, ECOC._allowed_classifiers)) - elif self.binary_classifier == 'tree': + % (self.binary_classifier, ECOC._allowed_classifiers) + ) + elif self.binary_classifier == "tree": decision_tree_classifier = DecisionTreeClassifier(random_state=42) return decision_tree_classifier - elif self.binary_classifier == 'NB': + elif self.binary_classifier == "NB": gnb = GaussianNB() return gnb - elif self.binary_classifier == 'KNN': + elif self.binary_classifier == "KNN": knn = KNeighborsClassifier(n_neighbors=self.n_neighbors) return knn else: - if not hasattr(self.binary_classifier, 'fit') or not hasattr(self.binary_classifier, 'predict'): - raise ValueError("Your classifier must implement fit and predict methods") + if not hasattr(self.binary_classifier, "fit") or not hasattr( + self.binary_classifier, "predict" + ): + raise ValueError( + "Your classifier must implement fit and predict methods" + ) return deepcopy(self.binary_classifier) def _smote_oversample(self, X, y): n_neighbors = min(3, min(np.unique(y, return_counts=True)[1]) - 1) if n_neighbors == 0: raise ValueError( - 'In order to use SMOTE preprocessing, the training set should contain at least 2 examples from each class') + "In order to use SMOTE preprocessing, the training set should contain at least 2 examples from each class" + ) smote = SMOTE(k_neighbors=n_neighbors, random_state=42) return smote.fit_resample(X, y) def _calc_weights(self, X_for_weights, y_for_weights): if self.weights not in ECOC._allowed_weights: - raise ValueError("Unknown weighting strategy: %s, expected to be one of %s." - % (self.weights, ECOC._allowed_weights)) + raise ValueError( + "Unknown weighting strategy: %s, expected to be one of %s." + % (self.weights, ECOC._allowed_weights) + ) dich_weights = np.ones(self._code_matrix.shape[1]) - if self.weights == 'acc': + if self.weights == "acc": for clf_idx, clf in enumerate(self._binary_classifiers): samples_no = 0 correct_no = 0 for sample, sample_label in zip(X_for_weights, y_for_weights): - if self._code_matrix[np.where(self._labels == sample_label)[0][0]][clf_idx] != 0: + if ( + self._code_matrix[np.where(self._labels == sample_label)[0][0]][ + clf_idx + ] + != 0 + ): samples_no += 1 - if clf.predict([sample])[0] == \ - self._code_matrix[np.where(self._labels == sample_label)[0][0]][clf_idx]: + if ( + clf.predict([sample])[0] + == self._code_matrix[ + np.where(self._labels == sample_label)[0][0] + ][clf_idx] + ): correct_no += 1 if samples_no != 0: acc = correct_no / samples_no dich_weights[clf_idx] = -1 + 2 * acc - elif self.weights == 'avg_tpr_min': - min_counter = Counter([y for y in y_for_weights if y in self.minority_classes]) + elif self.weights == "avg_tpr_min": + min_counter = Counter( + [y for y in y_for_weights if y in self.minority_classes] + ) for clf_idx, clf in enumerate(self._binary_classifiers): min_correct_pred = defaultdict(lambda: 0) for sample, sample_label in zip(X_for_weights, y_for_weights): - if clf.predict([sample])[0] == \ - self._code_matrix[np.where(self._labels == sample_label)[0][0]][clf_idx]: + if ( + clf.predict([sample])[0] + == self._code_matrix[ + np.where(self._labels == sample_label)[0][0] + ][clf_idx] + ): min_correct_pred[sample_label] += 1 - avg_tpr_min = np.mean([min_correct_pred[clazz] / min_counter[clazz] for clazz in min_counter.keys()]) + avg_tpr_min = np.mean( + [ + min_correct_pred[clazz] / min_counter[clazz] + for clazz in min_counter.keys() + ] + ) dich_weights[clf_idx] = avg_tpr_min self.dich_weights = dich_weights diff --git a/multi_imbalance/ensemble/mrbbagging.py b/multi_imbalance/ensemble/mrbbagging.py index 6197e20..6ac4bbc 100644 --- a/multi_imbalance/ensemble/mrbbagging.py +++ b/multi_imbalance/ensemble/mrbbagging.py @@ -21,8 +21,16 @@ class MRBBagging(BaggingClassifier): J. Intell Inf Syst (2018) 50: 97 """ - def __init__(self, k, learning_algorithm, undersampling=True, feature_selection=False, random_fs=False, - half_features=True, random_state=None): + def __init__( + self, + k, + learning_algorithm, + undersampling=True, + feature_selection=False, + random_fs=False, + half_features=True, + random_state=None, + ): """ :param k: number of classifiers (multiplied by 3 when choosing feature selection) @@ -114,7 +122,12 @@ def _resample(self, n, prob, classes, grouped_data): subset_x, subset_y = [], [] for no, j in enumerate(classes): data = grouped_data[j] - resample_class = resample(data, replace=True, n_samples=samples_no[no], random_state=self.random_state) + resample_class = resample( + data, + replace=True, + n_samples=samples_no[no], + random_state=self.random_state, + ) for sample in resample_class: subset_x.append(sample[0]) subset_y.append(sample[1]) @@ -137,7 +150,9 @@ def _find_random_features(self, labels_no, features_no, subset_x): def _get_features_array(self, subset_x, random_features_idx): random_features = np.array(subset_x[:, random_features_idx[0]]) for f in range(1, len(random_features_idx)): - random_features = np.vstack((random_features, subset_x[:, random_features_idx[f]])) + random_features = np.vstack( + (random_features, subset_x[:, random_features_idx[f]]) + ) if random_features.ndim == 1: return random_features[:, np.newaxis] return random_features.T @@ -160,14 +175,26 @@ def _train_with_feature_selection(self, la_list, n, prob, classes, grouped_data) subset_y = np.array(subset_y).astype(np.float) if self.all_random: - subset1, subset1_idx = self._find_random_features(labels_no, features_no, subset_x) - subset2, subset2_idx = self._find_random_features(labels_no, features_no, subset_x) - subset3, subset3_idx = self._find_random_features(labels_no, features_no, subset_x) + subset1, subset1_idx = self._find_random_features( + labels_no, features_no, subset_x + ) + subset2, subset2_idx = self._find_random_features( + labels_no, features_no, subset_x + ) + subset3, subset3_idx = self._find_random_features( + labels_no, features_no, subset_x + ) else: - subset1, subset1_idx = self._get_kbest_classifier(chi2, features_no, subset_x, subset_y) - subset2, subset2_idx = self._get_kbest_classifier(f_classif, features_no, subset_x, subset_y) - subset3, subset3_idx = self._find_random_features(labels_no, features_no, subset_x) + subset1, subset1_idx = self._get_kbest_classifier( + chi2, features_no, subset_x, subset_y + ) + subset2, subset2_idx = self._get_kbest_classifier( + f_classif, features_no, subset_x, subset_y + ) + subset3, subset3_idx = self._find_random_features( + labels_no, features_no, subset_x + ) self.feature_selection_methods[i] = subset1_idx self.feature_selection_methods[i + 1] = subset2_idx @@ -183,12 +210,18 @@ def _set_classes_dict(self, classes): def _select_data(self, classifier_id, data): if self.feature_selection: if self.all_random: - new_data = self._get_features_array(data, self.feature_selection_methods[classifier_id]) + new_data = self._get_features_array( + data, self.feature_selection_methods[classifier_id] + ) else: if (classifier_id % 3) - 2 == 0: - new_data = self._get_features_array(data, self.feature_selection_methods[classifier_id]) + new_data = self._get_features_array( + data, self.feature_selection_methods[classifier_id] + ) else: - new_data = self.feature_selection_methods[classifier_id].transform(data) + new_data = self.feature_selection_methods[classifier_id].transform( + data + ) return new_data return data @@ -199,7 +232,9 @@ def _count_votes(self, data): classes = self.classifiers[classifier_id].predict(new_data) probabilities = self.classifiers[classifier_id].predict_proba(new_data) for i, cl in enumerate(classes): - idx = list(self.classifier_classes.keys())[list(self.classifier_classes.values()).index(int(cl))] + idx = list(self.classifier_classes.keys())[ + list(self.classifier_classes.values()).index(int(cl)) + ] voting_matrix[i][idx] += max(probabilities[i]) return voting_matrix diff --git a/multi_imbalance/ensemble/ovo.py b/multi_imbalance/ensemble/ovo.py index 375ff26..c4ae5af 100644 --- a/multi_imbalance/ensemble/ovo.py +++ b/multi_imbalance/ensemble/ovo.py @@ -22,11 +22,17 @@ class OVO(BaggingClassifier): """ - _allowed_classifiers = ['tree', 'NB', 'KNN'] - _allowed_preprocessing = [None, 'globalCS', 'SMOTE', 'SOUP'] - _allowed_preprocessing_between = ['all', 'maj-min'] - - def __init__(self, binary_classifier='tree', n_neighbors=3, preprocessing='SOUP', preprocessing_between='all'): + _allowed_classifiers = ["tree", "NB", "KNN"] + _allowed_preprocessing = [None, "globalCS", "SMOTE", "SOUP"] + _allowed_preprocessing_between = ["all", "maj-min"] + + def __init__( + self, + binary_classifier="tree", + n_neighbors=3, + preprocessing="SOUP", + preprocessing_between="all", + ): """ :param binary_classifier: binary classifier. Possible classifiers: @@ -88,8 +94,9 @@ def fit(self, X, y, minority_classes=None): self._labels = np.unique(y) self._minority_classes = minority_classes num_of_classes = len(self._labels) - self._binary_classifiers = [[self._get_classifier() for _ in range(n)] for n in - range(0, num_of_classes)] + self._binary_classifiers = [ + [self._get_classifier() for _ in range(n)] for n in range(0, num_of_classes) + ] self._learn_binary_classifiers(X, y) return self @@ -103,7 +110,9 @@ def predict(self, X): num_of_classes = len(self._labels) predicted = list() for instance in X: - binary_outputs_matrix = self._construct_binary_outputs_matrix(instance, num_of_classes) + binary_outputs_matrix = self._construct_binary_outputs_matrix( + instance, num_of_classes + ) predicted.append(self._perform_max_voting(binary_outputs_matrix)) return np.array(predicted) @@ -112,15 +121,20 @@ def _construct_binary_outputs_matrix(self, instance, num_of_classes): binary_outputs_matrix = np.zeros((num_of_classes, num_of_classes)) for class_idx1 in range(len(self._labels)): for class_idx2 in range(class_idx1): - binary_outputs_matrix[class_idx1][class_idx2] = self._binary_classifiers[class_idx1][class_idx2] \ - .predict([instance]) + binary_outputs_matrix[class_idx1][ + class_idx2 + ] = self._binary_classifiers[class_idx1][class_idx2].predict([instance]) return binary_outputs_matrix def _learn_binary_classifiers(self, X, y): for row in range(len(self._labels)): for col in range(row): first_class, second_class = self._labels[row], self._labels[col] - filtered_indices = [idx for idx in range(len(y)) if y[idx] in (first_class, second_class)] + filtered_indices = [ + idx + for idx in range(len(y)) + if y[idx] in (first_class, second_class) + ] X_filtered, y_filtered = X[filtered_indices], y[filtered_indices] if self.should_perform_oversampling(first_class, second_class): X_filtered, y_filtered = self._oversample(X_filtered, y_filtered) @@ -131,26 +145,33 @@ def _get_classifier(self): if self.binary_classifier not in OVO._allowed_classifiers: raise ValueError( "Unknown binary classifier: %s, expected to be one of %s." - % (self.binary_classifier, OVO._allowed_classifiers)) - elif self.binary_classifier == 'tree': + % (self.binary_classifier, OVO._allowed_classifiers) + ) + elif self.binary_classifier == "tree": decision_tree_classifier = DecisionTreeClassifier(random_state=42) return decision_tree_classifier - elif self.binary_classifier == 'NB': + elif self.binary_classifier == "NB": gnb = GaussianNB() return gnb - elif self.binary_classifier == 'KNN': + elif self.binary_classifier == "KNN": knn = KNeighborsClassifier(n_neighbors=self.n_neighbors) return knn else: - if not hasattr(self.binary_classifier, 'fit') or not hasattr(self.binary_classifier, 'predict'): - raise ValueError("Your classifier must implement fit and predict methods") + if not hasattr(self.binary_classifier, "fit") or not hasattr( + self.binary_classifier, "predict" + ): + raise ValueError( + "Your classifier must implement fit and predict methods" + ) return deepcopy(self.binary_classifier) def _perform_max_voting(self, binary_outputs_matrix): scores = np.zeros(len(self._labels)) for clf_1 in range(len(binary_outputs_matrix)): for clf_2 in range(clf_1): - scores[self._labels.tolist().index(binary_outputs_matrix[clf_1][clf_2])] += 1 + scores[ + self._labels.tolist().index(binary_outputs_matrix[clf_1][clf_2]) + ] += 1 return self._labels[np.argmax(scores)] def _oversample(self, X, y): @@ -159,20 +180,22 @@ def _oversample(self, X, y): if isinstance(self.preprocessing, str): if self.preprocessing not in OVO._allowed_preprocessing: - raise ValueError("Unknown preprocessing: %s, expected to be one of %s." - % (self.preprocessing, OVO._allowed_preprocessing)) + raise ValueError( + "Unknown preprocessing: %s, expected to be one of %s." + % (self.preprocessing, OVO._allowed_preprocessing) + ) elif np.unique(y).size == 1: return X, y - elif self.preprocessing == 'globalCS': + elif self.preprocessing == "globalCS": gcs = GlobalCS() return gcs.fit_resample(X, y) - elif self.preprocessing == 'SMOTE': + elif self.preprocessing == "SMOTE": return self._smote_oversample(X, y) - elif self.preprocessing == 'SOUP': + elif self.preprocessing == "SOUP": soup = SOUP() return soup.fit_resample(X, y) else: - if not hasattr(self.preprocessing, 'fit_resample'): + if not hasattr(self.preprocessing, "fit_resample"): raise ValueError("Your resampler must implement fit_resample method") return self.preprocessing.fit_resample(X, y) @@ -180,16 +203,24 @@ def _smote_oversample(self, X, y): n_neighbors = min(3, min(np.unique(y, return_counts=True)[1]) - 1) if n_neighbors == 0: raise ValueError( - 'In order to use SMOTE preprocessing, the training set should contain at least 2 examples from each class') + "In order to use SMOTE preprocessing, the training set should contain at least 2 examples from each class" + ) smote = SMOTE(k_neighbors=n_neighbors, random_state=42) return smote.fit_resample(X, y) def should_perform_oversampling(self, first_class, second_class): if self.oversample_between not in OVO._allowed_preprocessing_between: - raise ValueError("Unknown strategy for oversampling: %s, expected to be one of %s." - % (self.oversample_between, OVO._allowed_preprocessing_between)) - elif self.oversample_between == 'all': + raise ValueError( + "Unknown strategy for oversampling: %s, expected to be one of %s." + % (self.oversample_between, OVO._allowed_preprocessing_between) + ) + elif self.oversample_between == "all": return True - elif self.oversample_between == 'maj-min': - return (first_class in self._minority_classes and second_class not in self._minority_classes) or \ - (second_class in self._minority_classes and first_class not in self._minority_classes) + elif self.oversample_between == "maj-min": + return ( + first_class in self._minority_classes + and second_class not in self._minority_classes + ) or ( + second_class in self._minority_classes + and first_class not in self._minority_classes + ) diff --git a/multi_imbalance/ensemble/soup_bagging.py b/multi_imbalance/ensemble/soup_bagging.py index 8073422..f2e8ed5 100644 --- a/multi_imbalance/ensemble/soup_bagging.py +++ b/multi_imbalance/ensemble/soup_bagging.py @@ -52,21 +52,30 @@ def fit_classifier(args): clf, X, y, resampled, maj_int_min = args x_sampled, y_sampled = resampled - out_of_bag = setdiff(np.hstack((X, y[:, np.newaxis])), np.hstack((x_sampled, y_sampled[:, np.newaxis]))) + out_of_bag = setdiff( + np.hstack((X, y[:, np.newaxis])), + np.hstack((x_sampled, y_sampled[:, np.newaxis])), + ) x_out, y_out = out_of_bag[:, :-1], out_of_bag[:, -1].astype(int) - x_resampled, y_resampled = SOUP(maj_int_min=maj_int_min).fit_resample(x_sampled, y_sampled) + x_resampled, y_resampled = SOUP(maj_int_min=maj_int_min).fit_resample( + x_sampled, y_sampled + ) clf.fit(x_resampled, y_resampled) result = clf.predict_proba(x_out) class_sum_prob = np.sum(result, axis=0) + 0.001 class_quantities = Counter(y_out) - expected_sum_prob = np.array([class_quantities[i] for i in range(len(Counter(y)))]) + expected_sum_prob = np.array( + [class_quantities[i] for i in range(len(Counter(y)))] + ) try: global_weights = expected_sum_prob / class_sum_prob except Exception: global_weights = np.ones(shape=len(Counter(y))) - print(f'Exc {Counter(y)} {Counter(y_out)} {result.shape} {expected_sum_prob.shape} {class_sum_prob.shape}') + print( + f"Exc {Counter(y)} {Counter(y_out)} {result.shape} {expected_sum_prob.shape} {class_sum_prob.shape}" + ) return clf, global_weights def fit(self, X, y, **kwargs): @@ -83,8 +92,19 @@ def fit(self, X, y, **kwargs): self.classes = np.unique(y) pool = multiprocessing.Pool(self.num_core) - results = pool.map(fit_clf, [(clf, X, y, resample(X, y, stratify=y, random_state=i), self.maj_int_min) - for i, clf in enumerate(self.classifiers)]) + results = pool.map( + fit_clf, + [ + ( + clf, + X, + y, + resample(X, y, stratify=y, random_state=i), + self.maj_int_min, + ) + for i, clf in enumerate(self.classifiers) + ], + ) pool.close() pool.join() for i, (clf, weights) in enumerate(results): @@ -93,7 +113,7 @@ def fit(self, X, y, **kwargs): self.clf_weights = np.array(self.clf_weights) - def predict(self, X, strategy: str = 'average'): + def predict(self, X, strategy: str = "average"): """ Predict class for X. The predicted class of an input sample is computed as the class with the highest sum of predicted probability. @@ -113,31 +133,35 @@ def predict(self, X, strategy: str = 'average'): array of shape = [n_samples]. The predicted classes. """ weights_sum = self.predict_proba(X) - if strategy == 'average': + if strategy == "average": p = np.sum(weights_sum, axis=0) - elif strategy == 'optimistic': + elif strategy == "optimistic": p = np.max(weights_sum, axis=0) - elif strategy == 'pessimistic': + elif strategy == "pessimistic": p = np.min(weights_sum, axis=0) - elif strategy == 'mixed': + elif strategy == "mixed": n_samples = X.shape[0] n_classes = self.classes.shape[0] p = np.zeros(shape=(n_samples, n_classes)) - 1 for i in range(n_classes): - two_dim_class_vector = weights_sum[:, :, i] # [:,:,1] -> [classifiers x samples] - if i in self.maj_int_min['min']: + two_dim_class_vector = weights_sum[ + :, :, i + ] # [:,:,1] -> [classifiers x samples] + if i in self.maj_int_min["min"]: squeeze_with_strategy = np.max(two_dim_class_vector, axis=0) else: - squeeze_with_strategy = np.min(two_dim_class_vector, axis=0) # [1, n_samples, 1] -> [n_samples] + squeeze_with_strategy = np.min( + two_dim_class_vector, axis=0 + ) # [1, n_samples, 1] -> [n_samples] p[:, i] = squeeze_with_strategy assert -1 not in p - elif strategy == 'global': + elif strategy == "global": for i, weight in enumerate(self.clf_weights): weights_sum[i] *= weight p = np.sum(weights_sum, axis=0) else: - raise KeyError(f'Incorrect strategy param: ${strategy}') + raise KeyError(f"Incorrect strategy param: ${strategy}") y_result = np.argmax(p, axis=1) return y_result diff --git a/multi_imbalance/ensemble/tests/test_ecoc.py b/multi_imbalance/ensemble/tests/test_ecoc.py index 7ffe21b..6acdadb 100644 --- a/multi_imbalance/ensemble/tests/test_ecoc.py +++ b/multi_imbalance/ensemble/tests/test_ecoc.py @@ -5,44 +5,79 @@ import multi_imbalance.ensemble.ecoc as ecoc -X = np.array([ - [1.8938566839198983, 0.7347724642028586, 1.5817290619305417], - [1.6893330472771877, 1.3729481360429043, 0.1779576959347715], - [1.1103882804642866, 0.2684931500114267, 0.24565717871603532], - [0.9635120154904986, 0.44338438370111577, 1.6559238383999697], - [0.6525827502237067, 0.8978087724631425, 1.5056794207545134], - [0.8232009732859464, 0.5270243940630088, 1.434695372722657], - [0.519304726338536, 0.4635228434262648, 0.014170648565480004], - [1.3938520002157688, 1.524670776643407, 0.9011189423913637], - [0.09993454781831534, 0.5991188594563008, 0.6462181194010983], - [1.5300019511124079, 0.08177359763506553, 1.7642527715349894], - [1.1770688242955876, 0.9604049547799067, 0.6989025594835503], - [1.5143651712498534, 1.4914673103908214, 1.3377704178955587], - [1.1299009013495136, 0.700540900007983, 1.071829181951729], - [1.530652133805449, 0.2992536048983532, 1.957731948975865], - [1.6236761570974148, 0.5919033806975751, 1.6334065904199757], - [0.9365056250644108, 1.526475631725099, 1.420298571686271], - [0.9063995770780813, 1.0248369545634513, 1.36911505163145], - [0.3861789635773656, 0.5758917834278445, 0.910187724154228], - [0.7165380621896438, 1.494299618627891, 0.521854931610239], - [1.3621939213912113, 0.387219837127391, 1.321376123618781], - [1.6764775993219296, 0.15364096535456317, 1.3219739817389], - [3.6764775993219296, 0.15364096535456317, 1.3789731273891], - [4.6764775993219296, 2.15364096535456317, 1.9830281123211], - [5.6764775993219296, 3.15364096535456317, 1.3213121322321], - [6.321312, 11.15364096535456317, 1.0998908320132], - [8.414132131, 2.15364096535456317, 5.0998908320132], - [10.6764775993219296, -2.15364096535456317, 3.0998908320132], - [4.6764775993219296, 0.15364096535456317, 2.0998908320132], - [-4.6764775993219296, -1.15364096535456317, 9.0998908320132], - [-6.6764775993219296, 11.15364096535456317, 5.0998908320132], -]) - -y = np.array([2, 0, 2, 3, 0, 3, 1, 0, 2, 0, 2, 3, 1, 2, 1, 3, 0, 3, 2, 0, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2]) +X = np.array( + [ + [1.8938566839198983, 0.7347724642028586, 1.5817290619305417], + [1.6893330472771877, 1.3729481360429043, 0.1779576959347715], + [1.1103882804642866, 0.2684931500114267, 0.24565717871603532], + [0.9635120154904986, 0.44338438370111577, 1.6559238383999697], + [0.6525827502237067, 0.8978087724631425, 1.5056794207545134], + [0.8232009732859464, 0.5270243940630088, 1.434695372722657], + [0.519304726338536, 0.4635228434262648, 0.014170648565480004], + [1.3938520002157688, 1.524670776643407, 0.9011189423913637], + [0.09993454781831534, 0.5991188594563008, 0.6462181194010983], + [1.5300019511124079, 0.08177359763506553, 1.7642527715349894], + [1.1770688242955876, 0.9604049547799067, 0.6989025594835503], + [1.5143651712498534, 1.4914673103908214, 1.3377704178955587], + [1.1299009013495136, 0.700540900007983, 1.071829181951729], + [1.530652133805449, 0.2992536048983532, 1.957731948975865], + [1.6236761570974148, 0.5919033806975751, 1.6334065904199757], + [0.9365056250644108, 1.526475631725099, 1.420298571686271], + [0.9063995770780813, 1.0248369545634513, 1.36911505163145], + [0.3861789635773656, 0.5758917834278445, 0.910187724154228], + [0.7165380621896438, 1.494299618627891, 0.521854931610239], + [1.3621939213912113, 0.387219837127391, 1.321376123618781], + [1.6764775993219296, 0.15364096535456317, 1.3219739817389], + [3.6764775993219296, 0.15364096535456317, 1.3789731273891], + [4.6764775993219296, 2.15364096535456317, 1.9830281123211], + [5.6764775993219296, 3.15364096535456317, 1.3213121322321], + [6.321312, 11.15364096535456317, 1.0998908320132], + [8.414132131, 2.15364096535456317, 5.0998908320132], + [10.6764775993219296, -2.15364096535456317, 3.0998908320132], + [4.6764775993219296, 0.15364096535456317, 2.0998908320132], + [-4.6764775993219296, -1.15364096535456317, 9.0998908320132], + [-6.6764775993219296, 11.15364096535456317, 5.0998908320132], + ] +) + +y = np.array( + [ + 2, + 0, + 2, + 3, + 0, + 3, + 1, + 0, + 2, + 0, + 2, + 3, + 1, + 2, + 1, + 3, + 0, + 3, + 2, + 0, + 0, + 1, + 2, + 3, + 0, + 1, + 2, + 3, + 1, + 2, + ] +) def test_random_oversampling(): - ecoc_clf = ecoc.ECOC(preprocessing='globalCS') + ecoc_clf = ecoc.ECOC(preprocessing="globalCS") X_oversampled, y_oversampled = ecoc_clf._oversample(X, y) assert len(X_oversampled) == len(y_oversampled) @@ -58,8 +93,10 @@ def test_no_oversampling(): assert y.shape == y_oversampled.shape -@pytest.mark.parametrize("encoding_strategy", ['dense', 'sparse', 'OVO', 'OVA', 'complete']) -@pytest.mark.parametrize("oversampling", [None, 'globalCS', 'SMOTE', 'SOUP']) +@pytest.mark.parametrize( + "encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"] +) +@pytest.mark.parametrize("oversampling", [None, "globalCS", "SMOTE", "SOUP"]) def test_encoding(encoding_strategy, oversampling): ecoc_clf = ecoc.ECOC(encoding=encoding_strategy, preprocessing=oversampling) ecoc_clf.fit(X, y) @@ -72,7 +109,7 @@ def test_encoding(encoding_strategy, oversampling): assert bool((~matrix.any(axis=0)).any()) is False -@pytest.mark.parametrize("encoding_strategy", ['dense', 'sparse']) +@pytest.mark.parametrize("encoding_strategy", ["dense", "sparse"]) def test_dense_and_sparse_with_not_cached_matrices(encoding_strategy): X1 = np.concatenate((X, 2 * X, 3 * X, 4 * X, 5 * X), axis=0) y1 = np.concatenate((y + 4, y + 8, y + 12, y + 16, y + 20)) @@ -124,10 +161,10 @@ def fit_transform(self, X, y): def test_unknown_classifier(): - ecoc_clf = ecoc.ECOC(binary_classifier='DUMMY_CLASSIFIER', preprocessing=None) + ecoc_clf = ecoc.ECOC(binary_classifier="DUMMY_CLASSIFIER", preprocessing=None) with pytest.raises(ValueError) as e: ecoc_clf.fit(X, y) - assert 'DUMMY_CLASSIFIER' in str(e.value) + assert "DUMMY_CLASSIFIER" in str(e.value) def test_own_classifier_without_predict_and_fit(): @@ -142,24 +179,26 @@ def bar(self, X): ecoc_clf = ecoc.ECOC(binary_classifier=dummy_clf, preprocessing=None) with pytest.raises(ValueError) as e: ecoc_clf.fit(X, y) - assert 'predict' in str(e.value) - assert 'fit' in str(e.value) + assert "predict" in str(e.value) + assert "fit" in str(e.value) -@pytest.mark.parametrize("classifier", ['tree', 'NB', 'KNN']) -@pytest.mark.parametrize("weights", [None, 'acc', 'avg_tpr_min']) +@pytest.mark.parametrize("classifier", ["tree", "NB", "KNN"]) +@pytest.mark.parametrize("weights", [None, "acc", "avg_tpr_min"]) def test_predefined_classifiers_and_weighting_without_exceptions(classifier, weights): ecoc_clf = ecoc.ECOC(binary_classifier=classifier, weights=weights) ecoc_clf.fit(X, y) - predicted = ecoc_clf.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]])) + predicted = ecoc_clf.predict( + np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]]) + ) assert len(predicted) == 3 def test_unknown_preprocessing(): - ecoc_clf = ecoc.ECOC(preprocessing='DUMMY_OVERSAMPLING') + ecoc_clf = ecoc.ECOC(preprocessing="DUMMY_OVERSAMPLING") with pytest.raises(ValueError) as e: ecoc_clf.fit(X, y) - assert 'DUMMY_OVERSAMPLING' in str(e.value) + assert "DUMMY_OVERSAMPLING" in str(e.value) def test_own_preprocessing_without_fit_transform(): @@ -174,16 +213,22 @@ def bar(self, X): ecoc_clf = ecoc.ECOC(preprocessing=dummy_oversampler) with pytest.raises(ValueError) as e: ecoc_clf.fit(X, y) - assert 'fit_transform' in str(e.value) + assert "fit_transform" in str(e.value) -@pytest.mark.parametrize("encoding_strategy", ['dense', 'sparse', 'OVO', 'OVA', 'complete']) -@pytest.mark.parametrize("oversampling", [None, 'globalCS', 'SMOTE', 'SOUP']) +@pytest.mark.parametrize( + "encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"] +) +@pytest.mark.parametrize("oversampling", [None, "globalCS", "SMOTE", "SOUP"]) def test_ecoc_with_sklearn_pipeline(encoding_strategy, oversampling): - pipeline = Pipeline([ - ('scaler', StandardScaler()), - ('ecoc', ecoc.ECOC(encoding=encoding_strategy, preprocessing=oversampling)) - ]) + pipeline = Pipeline( + [ + ("scaler", StandardScaler()), + ("ecoc", ecoc.ECOC(encoding=encoding_strategy, preprocessing=oversampling)), + ] + ) pipeline.fit(X, y) - y_hat = pipeline.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]])) + y_hat = pipeline.predict( + np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]]) + ) assert len(y_hat) == 3 diff --git a/multi_imbalance/ensemble/tests/test_mrbbagging.py b/multi_imbalance/ensemble/tests/test_mrbbagging.py index af15adf..c63c0dc 100644 --- a/multi_imbalance/ensemble/tests/test_mrbbagging.py +++ b/multi_imbalance/ensemble/tests/test_mrbbagging.py @@ -6,63 +6,88 @@ from multi_imbalance.ensemble.mrbbagging import MRBBagging import numpy as np -X_train = np.array([ - [0.05837771, 0.57543339], - [0.06153624, 0.99871925], - [0.14308529, 0.00681144], - [0.23401697, 0.21188708], - [0.2418553, 0.02137086], - [0.32480534, 0.81547632], - [0.42478482, 0.31995162], - [0.50726834, 0.72621157], - [0.54580968, 0.58025914], - [0.55748531, 0.71866238], - [0.69208769, 0.63759459], - [0.70797377, 0.16348051], - [0.76410615, 0.70451542], - [0.81680686, 0.50793884], - [0.8490789, 0.53826627], - [0.8847505, 0.96856011], -]) +X_train = np.array( + [ + [0.05837771, 0.57543339], + [0.06153624, 0.99871925], + [0.14308529, 0.00681144], + [0.23401697, 0.21188708], + [0.2418553, 0.02137086], + [0.32480534, 0.81547632], + [0.42478482, 0.31995162], + [0.50726834, 0.72621157], + [0.54580968, 0.58025914], + [0.55748531, 0.71866238], + [0.69208769, 0.63759459], + [0.70797377, 0.16348051], + [0.76410615, 0.70451542], + [0.81680686, 0.50793884], + [0.8490789, 0.53826627], + [0.8847505, 0.96856011], + ] +) y_train = np.array([0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0]) -X_test = np.array([[0.9287003, 0.97580299], - [0.9584236, 0.10536541], - [0.01, 0.87666093], - [0.97352367, 0.78807909], ]) +X_test = np.array( + [ + [0.9287003, 0.97580299], + [0.9584236, 0.10536541], + [0.01, 0.87666093], + [0.97352367, 0.78807909], + ] +) y_test = np.array([0, 0, 0, 0]) class TestMRBBagging(unittest.TestCase): def test_api(self): - mrbbagging = MRBBagging(1, DecisionTreeClassifier(random_state=0), random_state=0) + mrbbagging = MRBBagging( + 1, DecisionTreeClassifier(random_state=0), random_state=0 + ) mrbbagging.fit(X_train, y_train) y_pred = mrbbagging.predict(X_test) assert all(y_pred == y_test) def test_api_multiple_trees(self): - mrbbagging = MRBBagging(5, DecisionTreeClassifier(random_state=0), random_state=0) + mrbbagging = MRBBagging( + 5, DecisionTreeClassifier(random_state=0), random_state=0 + ) mrbbagging.fit(X_train, y_train) y_pred = mrbbagging.predict(X_test) assert all(y_pred == y_test) def test_api_with_feature_selection(self): - mrbbagging = MRBBagging(1, DecisionTreeClassifier(random_state=0), feature_selection=True, random_state=0) + mrbbagging = MRBBagging( + 1, + DecisionTreeClassifier(random_state=0), + feature_selection=True, + random_state=0, + ) mrbbagging.fit(X_train, y_train) y_pred = mrbbagging.predict(X_test) assert all(y_pred == y_test) def test_api_with_random_feature_selection(self): - mrbbagging = MRBBagging(1, DecisionTreeClassifier(random_state=0), feature_selection=True, random_fs=True, - random_state=0) + mrbbagging = MRBBagging( + 1, + DecisionTreeClassifier(random_state=0), + feature_selection=True, + random_fs=True, + random_state=0, + ) mrbbagging.fit(X_train, y_train) y_pred = mrbbagging.predict(X_test) assert all(y_pred == y_test) def test_api_with_feature_selection_sqrt_features(self): - mrbbagging = MRBBagging(1, DecisionTreeClassifier(random_state=0), feature_selection=True, - half_features=False, random_state=0) + mrbbagging = MRBBagging( + 1, + DecisionTreeClassifier(random_state=0), + feature_selection=True, + half_features=False, + random_state=0, + ) mrbbagging.fit(X_train, y_train) y_pred = mrbbagging.predict(X_test) assert all(y_pred == y_test) @@ -72,8 +97,11 @@ def test__group_data(self): x = [[1, 1, 1], [2, 2, 2], [3, 3, 3]] y = ["A", "B", "C"] classes, grouped_data = mrbbagging._group_data(x, y) - self.assertEqual(classes, {'A', 'B', 'C'}) - self.assertEqual(grouped_data, {'C': [[[3, 3, 3], 'C']], 'A': [[[1, 1, 1], 'A']], 'B': [[[2, 2, 2], 'B']]}) + self.assertEqual(classes, {"A", "B", "C"}) + self.assertEqual( + grouped_data, + {"C": [[[3, 3, 3], "C"]], "A": [[[1, 1, 1], "A"]], "B": [[[2, 2, 2], "B"]]}, + ) def test__group_data_with_none(self): mrbbagging = MRBBagging(1, DecisionTreeClassifier()) @@ -98,5 +126,5 @@ def test_with_invalid_k(self): MRBBagging(0, DecisionTreeClassifier()) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/multi_imbalance/ensemble/tests/test_ovo.py b/multi_imbalance/ensemble/tests/test_ovo.py index e7b09b4..9d337ce 100644 --- a/multi_imbalance/ensemble/tests/test_ovo.py +++ b/multi_imbalance/ensemble/tests/test_ovo.py @@ -5,35 +5,39 @@ import multi_imbalance.ensemble.ovo as ovo import numpy as np -X = np.array([ - [-0.5813674466943386, -0.37091887120486655, -0.4465813355321204], - [-0.630844420005455, 0.2871060228285258, 0.25613448374582437], - [-0.6714353752038125, -0.3537255703996809, -0.9687281557330454], - [0.48996953214789785, -0.09697447345439447, 0.5495667841083927], - [-0.8821146485100975, -0.7739441502933209, 0.34906417794620515], - [-0.6652132165510964, -0.8488383805882527, -0.030511639438375093], - [0.7846621478367604, -0.9231479370667406, 0.7262231362586529], - [0.7860907554630845, -0.33615224298146584, 0.6928271619140047], - [0.7630774674537872, -0.7753044382704197, -0.7570971821030896], - [-0.5843764899573332, -0.524996569658353, 0.9675951634125524], - [-33.5843764899573332, -0.303030303030303, 5.9292929292929290], - [22.5843764899573332, -2.020202022020202, 6.3213211113213211], - [11.5843764899573332, -22.110101010011010, 7.3213123131232111], - [2.5843764899573332, -1.010123211231232, 1.9675951634125524], - [-0.5843764899573332, 1.321321312112321, 2.3213123123123222], - [-0.2321312313211321, -412.321321312112321, 6.1010101010100101], - [-0.3921809321038213, -2.321321312112321, 3.1010101010100101], - [1.5843764899573332, -0.4324234243242342, 32.1010101010100101], - [2.5843764899573332, -0.321321312112321, 53.1010101010100101], - [42.5843764899573332, 66.321321312112321, 3242.1010101010100101], - [1.5843764899573332, 44.321321312112321, 2.999909909090909090], - [-2.5843764899573332, 12.321321312112321, 2112.342423], - [-5.5843764899573332, 3.321321312112321, 2212.1010101010100101], - [-8.5843764899573332, 1.321321312112321, 1222.1010101010100101], - [-2.3213123213211232, -2.321321312112321, 992.1010101010100101], -]) - -y = np.array([1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 1, 1, 2, 3, 2, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1]) +X = np.array( + [ + [-0.5813674466943386, -0.37091887120486655, -0.4465813355321204], + [-0.630844420005455, 0.2871060228285258, 0.25613448374582437], + [-0.6714353752038125, -0.3537255703996809, -0.9687281557330454], + [0.48996953214789785, -0.09697447345439447, 0.5495667841083927], + [-0.8821146485100975, -0.7739441502933209, 0.34906417794620515], + [-0.6652132165510964, -0.8488383805882527, -0.030511639438375093], + [0.7846621478367604, -0.9231479370667406, 0.7262231362586529], + [0.7860907554630845, -0.33615224298146584, 0.6928271619140047], + [0.7630774674537872, -0.7753044382704197, -0.7570971821030896], + [-0.5843764899573332, -0.524996569658353, 0.9675951634125524], + [-33.5843764899573332, -0.303030303030303, 5.9292929292929290], + [22.5843764899573332, -2.020202022020202, 6.3213211113213211], + [11.5843764899573332, -22.110101010011010, 7.3213123131232111], + [2.5843764899573332, -1.010123211231232, 1.9675951634125524], + [-0.5843764899573332, 1.321321312112321, 2.3213123123123222], + [-0.2321312313211321, -412.321321312112321, 6.1010101010100101], + [-0.3921809321038213, -2.321321312112321, 3.1010101010100101], + [1.5843764899573332, -0.4324234243242342, 32.1010101010100101], + [2.5843764899573332, -0.321321312112321, 53.1010101010100101], + [42.5843764899573332, 66.321321312112321, 3242.1010101010100101], + [1.5843764899573332, 44.321321312112321, 2.999909909090909090], + [-2.5843764899573332, 12.321321312112321, 2112.342423], + [-5.5843764899573332, 3.321321312112321, 2212.1010101010100101], + [-8.5843764899573332, 1.321321312112321, 1222.1010101010100101], + [-2.3213123213211232, -2.321321312112321, 992.1010101010100101], + ] +) + +y = np.array( + [1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 1, 1, 2, 3, 2, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1] +) def test_fit_predict(): @@ -43,7 +47,7 @@ def test_fit_predict(): assert predicted in (1, 2, 3) -@pytest.mark.parametrize("classifier", ['tree', 'NB', 'KNN']) +@pytest.mark.parametrize("classifier", ["tree", "NB", "KNN"]) def test_binary_classifiers(classifier): clf = ovo.OVO(binary_classifier=classifier, preprocessing=None) clf.fit(X[:-1], y[:-1]) @@ -57,11 +61,15 @@ def test_binary_classifiers(classifier): def test_max_voting(): labels = np.array([4, 3, 6, 5, 7]) - binary_outputs = np.array([[0, 0, 0, 0, 0], - [3, 0, 0, 0, 0], - [4, 3, 0, 0, 0], - [4, 5, 6, 0, 0], - [7, 7, 7, 5, 0]]) + binary_outputs = np.array( + [ + [0, 0, 0, 0, 0], + [3, 0, 0, 0, 0], + [4, 3, 0, 0, 0], + [4, 5, 6, 0, 0], + [7, 7, 7, 5, 0], + ] + ) clf = ovo.OVO() clf._labels = labels @@ -96,22 +104,29 @@ def fit_resample(self, X, y): assert len(y_oversampled) == 2 * len(y) -@pytest.mark.parametrize("preprocessing_btwn", ['all', 'maj-min']) -@pytest.mark.parametrize("classifier", ['tree', 'NB', 'KNN']) -@pytest.mark.parametrize("preprocessing", [None, 'globalCS', 'SMOTE', 'SOUP']) -def test_predefined_classifiers_and_preprocessings_without_errors(classifier, preprocessing, preprocessing_btwn): - ovo_clf = ovo.OVO(binary_classifier=classifier, preprocessing=preprocessing, - preprocessing_between=preprocessing_btwn) +@pytest.mark.parametrize("preprocessing_btwn", ["all", "maj-min"]) +@pytest.mark.parametrize("classifier", ["tree", "NB", "KNN"]) +@pytest.mark.parametrize("preprocessing", [None, "globalCS", "SMOTE", "SOUP"]) +def test_predefined_classifiers_and_preprocessings_without_errors( + classifier, preprocessing, preprocessing_btwn +): + ovo_clf = ovo.OVO( + binary_classifier=classifier, + preprocessing=preprocessing, + preprocessing_between=preprocessing_btwn, + ) ovo_clf.fit(X, y) - predicted = ovo_clf.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]])) + predicted = ovo_clf.predict( + np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]]) + ) assert len(predicted) == 3 def test_unknown_preprocessing(): - ovo_clf = ovo.OVO(preprocessing='DUMMY_OVERSAMPLING') + ovo_clf = ovo.OVO(preprocessing="DUMMY_OVERSAMPLING") with pytest.raises(ValueError) as e: ovo_clf.fit(X, y) - assert 'DUMMY_OVERSAMPLING' in str(e.value) + assert "DUMMY_OVERSAMPLING" in str(e.value) def test_own_preprocessing_without_fit_resample(): @@ -126,25 +141,35 @@ def bar(self, X): ovo_clf = ovo.OVO(preprocessing=dummy_oversampler) with pytest.raises(ValueError) as e: ovo_clf.fit(X, y) - assert 'fit_resample' in str(e.value) + assert "fit_resample" in str(e.value) def test_unknown_preprocessing_between_strategy_raises_exception(): - ovo_clf = ovo.OVO(preprocessing_between='min-intermediate') + ovo_clf = ovo.OVO(preprocessing_between="min-intermediate") with pytest.raises(ValueError) as e: ovo_clf.fit(X, y) - assert 'min-intermediate' in str(e.value) + assert "min-intermediate" in str(e.value) -@pytest.mark.parametrize("preprocessing_btwn", ['all', 'maj-min']) -@pytest.mark.parametrize("classifier", ['tree', 'NB', 'KNN']) -@pytest.mark.parametrize("preprocessing", [None, 'globalCS', 'SMOTE', 'SOUP']) +@pytest.mark.parametrize("preprocessing_btwn", ["all", "maj-min"]) +@pytest.mark.parametrize("classifier", ["tree", "NB", "KNN"]) +@pytest.mark.parametrize("preprocessing", [None, "globalCS", "SMOTE", "SOUP"]) def test_ecoc_with_sklearn_pipeline(preprocessing_btwn, classifier, preprocessing): - pipeline = Pipeline([ - ('scaler', StandardScaler()), - ('ecoc', ovo.OVO(binary_classifier=classifier, preprocessing=preprocessing, - preprocessing_between=preprocessing_btwn)) - ]) + pipeline = Pipeline( + [ + ("scaler", StandardScaler()), + ( + "ecoc", + ovo.OVO( + binary_classifier=classifier, + preprocessing=preprocessing, + preprocessing_between=preprocessing_btwn, + ), + ), + ] + ) pipeline.fit(X, y) - y_hat = pipeline.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.99]])) + y_hat = pipeline.predict( + np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.99]]) + ) assert len(y_hat) == 3 diff --git a/multi_imbalance/ensemble/tests/test_soupbagging.py b/multi_imbalance/ensemble/tests/test_soupbagging.py index d4ca00e..8360efc 100644 --- a/multi_imbalance/ensemble/tests/test_soupbagging.py +++ b/multi_imbalance/ensemble/tests/test_soupbagging.py @@ -7,62 +7,68 @@ from multi_imbalance.ensemble.soup_bagging import SOUPBagging -X_train = np.array([ - [0.05837771, 0.57543339], - [0.06153624, 0.99871925], - [0.14308529, 0.00681144], - [0.23401697, 0.21188708], - [0.2418553, 0.02137086], - [0.32480534, 0.81547632], - [0.42478482, 0.31995162], - [0.50726834, 0.72621157], - [0.54580968, 0.58025914], - [0.55748531, 0.71866238], - [0.69208769, 0.63759459], - [0.70797377, 0.16348051], - [0.76410615, 0.70451542], - [0.81680686, 0.50793884], - [0.8490789, 0.53826627], - [0.8847505, 0.96856011], -]) +X_train = np.array( + [ + [0.05837771, 0.57543339], + [0.06153624, 0.99871925], + [0.14308529, 0.00681144], + [0.23401697, 0.21188708], + [0.2418553, 0.02137086], + [0.32480534, 0.81547632], + [0.42478482, 0.31995162], + [0.50726834, 0.72621157], + [0.54580968, 0.58025914], + [0.55748531, 0.71866238], + [0.69208769, 0.63759459], + [0.70797377, 0.16348051], + [0.76410615, 0.70451542], + [0.81680686, 0.50793884], + [0.8490789, 0.53826627], + [0.8847505, 0.96856011], + ] +) y_train = np.array([0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0]) -X_test = np.array([[0.9287003, 0.97580299], - [0.9584236, 0.10536541], - [0.01, 0.87666093], - [0.97352367, 0.78807909], ]) +X_test = np.array( + [ + [0.9287003, 0.97580299], + [0.9584236, 0.10536541], + [0.01, 0.87666093], + [0.97352367, 0.78807909], + ] +) y_test = np.array([0, 1, 0, 0]) def test_soubagging(): clf = KNeighborsClassifier() - maj_int_min = {'maj': [0], 'int': [], 'min': [1]} + maj_int_min = {"maj": [0], "int": [], "min": [1]} clf = SOUPBagging(clf, n_classifiers=2, maj_int_min=maj_int_min) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) assert all(y_pred == y_test) - y_pred = clf.predict(X_test, strategy='mixed') + y_pred = clf.predict(X_test, strategy="mixed") assert all(y_pred == y_test) - y_pred = clf.predict(X_test, strategy='optimistic') + y_pred = clf.predict(X_test, strategy="optimistic") assert all(y_pred == y_test) - y_pred = clf.predict(X_test, strategy='pessimistic') + y_pred = clf.predict(X_test, strategy="pessimistic") assert all(y_pred == y_test) - y_pred = clf.predict(X_test, strategy='global') + y_pred = clf.predict(X_test, strategy="global") assert all(y_pred == y_test) def test_exception(): clf = KNeighborsClassifier() - maj_int_min = {'maj': [0], 'int': [], 'min': [1]} + maj_int_min = {"maj": [0], "int": [], "min": [1]} clf = SOUPBagging(clf, n_classifiers=2, maj_int_min=maj_int_min) clf.fit(X_train, y_train) with pytest.raises(KeyError): - clf.predict(X_test, 'incorrect') + clf.predict(X_test, "incorrect") def test_default_classifier(): - maj_int_min = {'maj': [0], 'int': [], 'min': [1]} + maj_int_min = {"maj": [0], "int": [], "min": [1]} clf = SOUPBagging(n_classifiers=2, maj_int_min=maj_int_min) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) @@ -70,14 +76,19 @@ def test_default_classifier(): def test_fit_classifier_classifier(): - maj_int_min = {'maj': [0], 'int': [], 'min': [1]} + maj_int_min = {"maj": [0], "int": [], "min": [1]} clf = KNeighborsClassifier() - clf, weights = SOUPBagging.fit_classifier([clf, X_train, y_train, - resample(X_train, y_train, stratify=y_train, random_state=0), - maj_int_min]) + clf, weights = SOUPBagging.fit_classifier( + [ + clf, + X_train, + y_train, + resample(X_train, y_train, stratify=y_train, random_state=0), + maj_int_min, + ] + ) y_pred = clf.predict(X_test) check_is_fitted(clf) assert all(y_pred == y_test) assert_array_almost_equal(weights, np.array([1.33288904, 0.66644452])) - diff --git a/multi_imbalance/resampling/global_cs.py b/multi_imbalance/resampling/global_cs.py index 8991e0b..b9b9b8f 100644 --- a/multi_imbalance/resampling/global_cs.py +++ b/multi_imbalance/resampling/global_cs.py @@ -13,7 +13,7 @@ class GlobalCS(BaseSampler): def __init__(self, shuffle: bool = True): super().__init__() - self._sampling_type = 'over-sampling' + self._sampling_type = "over-sampling" self.shuffle = shuffle self.quantities, self.max_quantity, self.X, self.y = [None] * 4 @@ -26,8 +26,10 @@ def _fit_resample(self, X, y): :return: Resampled X (max class quantity * number of unique classes), y (number of rows in X) as numpy array """ - assert len(X.shape) == 2, 'X should have 2 dimension' - assert X.shape[0] == y.shape[0], 'Number of labels must be equal to number of samples' + assert len(X.shape) == 2, "X should have 2 dimension" + assert ( + X.shape[0] == y.shape[0] + ), "Number of labels must be equal to number of samples" self.quantities = Counter(y) self.max_quantity = int(np.max(list(self.quantities.values()))) @@ -48,10 +50,14 @@ def _fit_resample(self, X, y): return np.array(result_X), np.array(result_y) def _equal_oversample(self, X, y, class_name): - indices_in_class = [i for i, class_label in enumerate(y) if class_label == class_name] + indices_in_class = [ + i for i, class_label in enumerate(y) if class_label == class_name + ] desired_quantity = self.max_quantity - len(indices_in_class) - oversampled_X, oversampled_y = list(X[indices_in_class]), list(y[indices_in_class]) + oversampled_X, oversampled_y = list(X[indices_in_class]), list( + y[indices_in_class] + ) for i in range(desired_quantity): sample_index_to_duplicate: int = i % self.quantities[class_name] diff --git a/multi_imbalance/resampling/mdo.py b/multi_imbalance/resampling/mdo.py index 941fa07..30288bf 100644 --- a/multi_imbalance/resampling/mdo.py +++ b/multi_imbalance/resampling/mdo.py @@ -17,7 +17,7 @@ class MDO(BaseSampler): """ - def __init__(self, k=5, k1_frac=.4, seed=0, prop=1, maj_int_min=None): + def __init__(self, k=5, k1_frac=0.4, seed=0, prop=1, maj_int_min=None): """ :param k: Number of neighbours considered during the neighbourhood analysis @@ -32,7 +32,7 @@ def __init__(self, k=5, k1_frac=.4, seed=0, prop=1, maj_int_min=None): dict {'maj': majority class labels, 'min': minority class labels} """ super().__init__() - self._sampling_type = 'over-sampling' + self._sampling_type = "over-sampling" self.knn = NearestNeighbors(n_neighbors=k) self.k2 = k self.k1 = int(k * k1_frac) @@ -60,48 +60,80 @@ def _fit_resample(self, X, y): quantities = Counter(self.y) goal_quantity = int(max(list(quantities.values()))) labels = list(set(self.y)) - minority_classes = self.class_balances['min'] + minority_classes = self.class_balances["min"] for class_label in labels: if minority_classes is not None and class_label not in minority_classes: continue - chosen_minor_class_samples_to_oversample, weights = self._choose_samples(class_label) + chosen_minor_class_samples_to_oversample, weights = self._choose_samples( + class_label + ) if len(chosen_minor_class_samples_to_oversample) == 0: continue - oversampling_rate = int((goal_quantity - quantities[class_label]) * self.prop) + oversampling_rate = int( + (goal_quantity - quantities[class_label]) * self.prop + ) if oversampling_rate > 0: if len(chosen_minor_class_samples_to_oversample) == 1: - oversampled_set = np.repeat(chosen_minor_class_samples_to_oversample, oversampling_rate, axis=0) + oversampled_set = np.repeat( + chosen_minor_class_samples_to_oversample, + oversampling_rate, + axis=0, + ) else: - chosen_samples_features_mean = np.mean(chosen_minor_class_samples_to_oversample, axis=0) - zero_mean_samples = chosen_minor_class_samples_to_oversample - chosen_samples_features_mean + chosen_samples_features_mean = np.mean( + chosen_minor_class_samples_to_oversample, axis=0 + ) + zero_mean_samples = ( + chosen_minor_class_samples_to_oversample + - chosen_samples_features_mean + ) n_components = min(zero_mean_samples.shape) pca = PCA(n_components=n_components).fit(zero_mean_samples) uncorrelated_samples = pca.transform(zero_mean_samples) - variables_variance = np.diag(np.cov(uncorrelated_samples, rowvar=False)) - - oversampled_set = self._MDO_oversampling(uncorrelated_samples, variables_variance, - oversampling_rate, - weights) - oversampled_set = pca.inverse_transform(oversampled_set) + chosen_samples_features_mean + variables_variance = np.diag( + np.cov(uncorrelated_samples, rowvar=False) + ) + + oversampled_set = self._MDO_oversampling( + uncorrelated_samples, + variables_variance, + oversampling_rate, + weights, + ) + oversampled_set = ( + pca.inverse_transform(oversampled_set) + + chosen_samples_features_mean + ) oversampled_X = np.vstack((oversampled_X, oversampled_set)) - oversampled_y = np.hstack((oversampled_y, np.array([class_label] * oversampling_rate))) + oversampled_y = np.hstack( + (oversampled_y, np.array([class_label] * oversampling_rate)) + ) return oversampled_X, oversampled_y def _choose_samples(self, class_label): - minor_class_indices = [i for i, value in enumerate(self.y) if value == class_label] + minor_class_indices = [ + i for i, value in enumerate(self.y) if value == class_label + ] minor_set = self.X[minor_class_indices] - quantity_same_class_neighbours = self.calculate_same_class_neighbour_quantities(minor_set, class_label) - chosen_minor_class_samples_to_oversample = minor_set[quantity_same_class_neighbours >= self.k1] - - weights = quantity_same_class_neighbours[quantity_same_class_neighbours >= self.k1] / self.k2 + quantity_same_class_neighbours = self.calculate_same_class_neighbour_quantities( + minor_set, class_label + ) + chosen_minor_class_samples_to_oversample = minor_set[ + quantity_same_class_neighbours >= self.k1 + ] + + weights = ( + quantity_same_class_neighbours[quantity_same_class_neighbours >= self.k1] + / self.k2 + ) weights_sum = np.sum(weights) if weights_sum != 0: @@ -127,12 +159,14 @@ def _MDO_oversampling(self, T, v, oversampling_rate, weights): for alpha_V_j in alpha_V[:-1]: sqrt_avj = np.sqrt(alpha_V_j) r = self.random_state.uniform(low=-sqrt_avj, high=sqrt_avj) - s += r ** 2 / alpha_V_j + s += r**2 / alpha_V_j features_vector.append(r) last = (1 - s) * alpha_V[-1] last_feature = np.sqrt(last) if last > 0 else 0 - random_last_feature = self.random_state.choice([-last_feature, last_feature], 1)[0] + random_last_feature = self.random_state.choice( + [-last_feature, last_feature], 1 + )[0] features_vector.append(random_last_feature) oversampled_set.append(features_vector) @@ -140,10 +174,16 @@ def _MDO_oversampling(self, T, v, oversampling_rate, weights): return np.array(oversampled_set) def calculate_same_class_neighbour_quantities(self, S_minor, S_minor_label): - minority_class_neighbours_indices = self.knn.kneighbors(S_minor, return_distance=False) + minority_class_neighbours_indices = self.knn.kneighbors( + S_minor, return_distance=False + ) quantity_with_same_label_in_neighbourhood = list() for i in range(len(S_minor)): sample_neighbours_indices = minority_class_neighbours_indices[i][1:] - quantity_sample_neighbours_indices_with_same_label = sum(self.y[sample_neighbours_indices] == S_minor_label) - quantity_with_same_label_in_neighbourhood.append(quantity_sample_neighbours_indices_with_same_label) + quantity_sample_neighbours_indices_with_same_label = sum( + self.y[sample_neighbours_indices] == S_minor_label + ) + quantity_with_same_label_in_neighbourhood.append( + quantity_sample_neighbours_indices_with_same_label + ) return np.array(quantity_with_same_label_in_neighbourhood) diff --git a/multi_imbalance/resampling/soup.py b/multi_imbalance/resampling/soup.py index a69e7aa..4141744 100644 --- a/multi_imbalance/resampling/soup.py +++ b/multi_imbalance/resampling/soup.py @@ -28,7 +28,7 @@ def __init__(self, k: int = 7, shuffle=False, maj_int_min=None) -> None: dict {'maj': majority class labels, 'min': minority class labels} """ super().__init__() - self._sampling_type = 'clean-sampling' + self._sampling_type = "clean-sampling" self.k = k self.shuffle = shuffle self.maj_int_min = maj_int_min @@ -54,15 +54,23 @@ def _fit_resample(self, X, y): self._X = deepcopy(X) self._y = deepcopy(y) - assert len(self._X.shape) == 2, 'X should have 2 dimension' - assert self._X.shape[0] == self._y.shape[0], 'Number of labels must be equal to number of samples' + assert len(self._X.shape) == 2, "X should have 2 dimension" + assert ( + self._X.shape[0] == self._y.shape[0] + ), "Number of labels must be equal to number of samples" self.quantities = Counter(self._y) self.goal_quantity = self._calculate_goal_quantity(self.maj_int_min) - self.dsc_maj_cls = sorted(((v, i) for v, i in self.quantities.items() if i >= self.goal_quantity), - key=itemgetter(1), reverse=True) - self.asc_min_cls = sorted(((v, i) for v, i in self.quantities.items() if i < self.goal_quantity), - key=itemgetter(1), reverse=False) + self.dsc_maj_cls = sorted( + ((v, i) for v, i in self.quantities.items() if i >= self.goal_quantity), + key=itemgetter(1), + reverse=True, + ) + self.asc_min_cls = sorted( + ((v, i) for v, i in self.quantities.items() if i < self.goal_quantity), + key=itemgetter(1), + reverse=False, + ) for class_name, class_quantity in self.dsc_maj_cls: self._X, self._y = self._undersample(self._X, self._y, class_name) @@ -80,13 +88,17 @@ def _construct_class_safe_levels(self, X, y, class_name) -> defaultdict: indices_in_class = [i for i, value in enumerate(y) if value == class_name] neigh_clf = NearestNeighbors(n_neighbors=self.k + 1).fit(X) - neighbour_indices = neigh_clf.kneighbors(X[indices_in_class], return_distance=False)[:, 1:] + neighbour_indices = neigh_clf.kneighbors( + X[indices_in_class], return_distance=False + )[:, 1:] neighbour_classes = y[neighbour_indices] class_safe_levels = defaultdict(float) for i, sample_id in enumerate(indices_in_class): neighbours_quantities = Counter(neighbour_classes[i]) - class_safe_levels[sample_id] = self._calculate_sample_safe_level(class_name, neighbours_quantities) + class_safe_levels[sample_id] = self._calculate_sample_safe_level( + class_name, neighbours_quantities + ) return class_safe_levels @@ -95,38 +107,54 @@ def _calculate_sample_safe_level(self, class_name, neighbours_quantities: Counte q: Counter = self.quantities for neigh_label, neigh_q in neighbours_quantities.items(): - similarity_between_classes = min(q[class_name], q[neigh_label]) / max(q[class_name], q[neigh_label]) + similarity_between_classes = min(q[class_name], q[neigh_label]) / max( + q[class_name], q[neigh_label] + ) safe_level += neigh_q * similarity_between_classes safe_level /= self.k if safe_level > 1: - raise ValueError(f'Safe level is bigger than 1: {safe_level}') + raise ValueError(f"Safe level is bigger than 1: {safe_level}") return safe_level def _undersample(self, X, y, class_name): - safe_levels_of_samples_in_class = self._construct_class_safe_levels(X, y, class_name) + safe_levels_of_samples_in_class = self._construct_class_safe_levels( + X, y, class_name + ) class_quantity = self.quantities[class_name] - safe_levels_list = sorted(safe_levels_of_samples_in_class.items(), key=itemgetter(1)) + safe_levels_list = sorted( + safe_levels_of_samples_in_class.items(), key=itemgetter(1) + ) samples_to_remove_quantity = max(0, int(class_quantity - self.goal_quantity)) if samples_to_remove_quantity > 0: - remove_indices = list(map(itemgetter(0), safe_levels_list[:samples_to_remove_quantity])) + remove_indices = list( + map(itemgetter(0), safe_levels_list[:samples_to_remove_quantity]) + ) X = np.delete(X, remove_indices, axis=0) y = np.delete(y, remove_indices, axis=0) return X, y def _oversample(self, X, y, class_name): - safe_levels_of_samples_in_class = self._construct_class_safe_levels(X, y, class_name) + safe_levels_of_samples_in_class = self._construct_class_safe_levels( + X, y, class_name + ) class_quantity = self.quantities[class_name] - safe_levels_list = list(sorted(safe_levels_of_samples_in_class.items(), key=itemgetter(1), reverse=True)) + safe_levels_list = list( + sorted( + safe_levels_of_samples_in_class.items(), key=itemgetter(1), reverse=True + ) + ) difference = self.goal_quantity - class_quantity while difference > 0: quantity_items_to_copy = min(difference, class_quantity) - indices_to_copy = list(map(itemgetter(0), safe_levels_list[:quantity_items_to_copy])) + indices_to_copy = list( + map(itemgetter(0), safe_levels_list[:quantity_items_to_copy]) + ) X = np.vstack((X, X[indices_to_copy])) y = np.hstack((y, y[indices_to_copy])) difference -= quantity_items_to_copy @@ -139,9 +167,13 @@ def _calculate_goal_quantity(self, maj_int_min=None): min_q = min(list(self.quantities.values())) return np.mean((min_q, maj_q), dtype=int) else: - maj_classes = {k: v for k, v in self.quantities.items() if k in maj_int_min['maj']} + maj_classes = { + k: v for k, v in self.quantities.items() if k in maj_int_min["maj"] + } maj_q = list(maj_classes.values()) - min_classes = {k: v for k, v in self.quantities.items() if k in maj_int_min['min']} + min_classes = { + k: v for k, v in self.quantities.items() if k in maj_int_min["min"] + } min_q = list(min_classes.values()) if len(maj_q) == 0: diff --git a/multi_imbalance/resampling/spider.py b/multi_imbalance/resampling/spider.py index df403d4..91f2075 100644 --- a/multi_imbalance/resampling/spider.py +++ b/multi_imbalance/resampling/spider.py @@ -4,7 +4,7 @@ from imblearn.base import BaseSampler from sklearn.neighbors import NearestNeighbors -from multi_imbalance.utils.array_util import (union, setdiff, contains) +from multi_imbalance.utils.array_util import union, setdiff, contains from multi_imbalance.utils.data import construct_maj_int_min @@ -30,7 +30,7 @@ def __init__(self, k, maj_int_min=None, cost=None): """ super().__init__() - self._sampling_type = 'clean-sampling' + self._sampling_type = "clean-sampling" self.k = k self.neigh_clf = NearestNeighbors(n_neighbors=self.k) self.maj_int_min = maj_int_min @@ -69,9 +69,9 @@ def _fit_resample(self, X, y): def _initialize_algorithm(self, X, y): if self.maj_int_min is None: self.maj_int_min = construct_maj_int_min(y) - self.majority_classes = self.maj_int_min['maj'] - self.intermediate_classes = self.maj_int_min['int'] - self.minority_classes = self.maj_int_min['min'] + self.majority_classes = self.maj_int_min["maj"] + self.intermediate_classes = self.maj_int_min["int"] + self.minority_classes = self.maj_int_min["min"] self.stds, self.means = [1] * X.shape[1], [0] * X.shape[1] if self.cost is None: @@ -105,8 +105,12 @@ def _estimate_cost_matrix(y): def _sort_by_cardinality(self, y): class_cardinality = Counter(y) # to ensure looping over classes with decreasing cardinality. - int_classes = sorted(self.intermediate_classes, key=lambda clazz: -class_cardinality[clazz]) - min_classes = sorted(self.minority_classes, key=lambda clazz: -class_cardinality[clazz]) + int_classes = sorted( + self.intermediate_classes, key=lambda clazz: -class_cardinality[clazz] + ) + min_classes = sorted( + self.minority_classes, key=lambda clazz: -class_cardinality[clazz] + ) return int_classes, min_classes def amplify(self, int_min_class): @@ -209,7 +213,9 @@ def _min_cost_classes(self, x, DS): for cj in C: s = 0 for ci in C: - s += ((kneighbors[:, -1] == ci).astype(int).sum() / self.k) * self.cost[C.index(ci), C.index(cj)] + s += ((kneighbors[:, -1] == ci).astype(int).sum() / self.k) * self.cost[ + C.index(ci), C.index(cj) + ] vals.append(s) C = np.array(C) vals = np.array(vals) @@ -225,8 +231,12 @@ def _relabel_nn(self, x): """ nearest_neighbors = self._knn(x, self._ds_as_rs_union()) for neighbor in nearest_neighbors: - if contains(self.RS, neighbor) and self._class_of(neighbor) in self.majority_classes and self._class_of( - neighbor) in self._min_cost_classes(x, self._ds_as_rs_union()): + if ( + contains(self.RS, neighbor) + and self._class_of(neighbor) in self.majority_classes + and self._class_of(neighbor) + in self._min_cost_classes(x, self._ds_as_rs_union()) + ): self.RS = setdiff(self.RS, np.array([neighbor])) neighbor[-1] = x[-1] self.AS = union(self.AS, np.array([neighbor])) @@ -240,8 +250,9 @@ def _clean_nn(self, x): """ nearest_neighbors = self._knn(x, self._ds_as_rs_union()) for neighbor in nearest_neighbors: - if self._class_of(neighbor) in self.majority_classes and \ - self._class_of(neighbor) in self._min_cost_classes(x, self._ds_as_rs_union()): + if self._class_of(neighbor) in self.majority_classes and self._class_of( + neighbor + ) in self._min_cost_classes(x, self._ds_as_rs_union()): self.DS = setdiff(self.DS, np.array([neighbor])) self.RS = setdiff(self.RS, np.array([neighbor])) @@ -267,9 +278,13 @@ def _knn(self, x, DS): self.neigh_clf.fit(DS[:, :-1]) - within_radius = self.neigh_clf.radius_neighbors([x[:-1]], radius= - self.neigh_clf.kneighbors([x[:-1]], return_distance=True)[0][0][-1] + 0.0001 * - self.neigh_clf.kneighbors([x[:-1]], return_distance=True)[0][0][-1], return_distance=True) + within_radius = self.neigh_clf.radius_neighbors( + [x[:-1]], + radius=self.neigh_clf.kneighbors([x[:-1]], return_distance=True)[0][0][-1] + + 0.0001 + * self.neigh_clf.kneighbors([x[:-1]], return_distance=True)[0][0][-1], + return_distance=True, + ) unique_distances = np.unique(sorted(within_radius[0][0])) all_distances = within_radius[0][0] @@ -289,7 +304,9 @@ def _amplify_nn(self, x): Single observation. """ - while self._class_of(x) not in self._min_cost_classes(x, self._ds_as_rs_union()): + while self._class_of(x) not in self._min_cost_classes( + x, self._ds_as_rs_union() + ): y = x.copy() self.AS = union(self.AS, np.asarray([y])) diff --git a/multi_imbalance/resampling/static_smote.py b/multi_imbalance/resampling/static_smote.py index a4b209f..6f05f78 100644 --- a/multi_imbalance/resampling/static_smote.py +++ b/multi_imbalance/resampling/static_smote.py @@ -14,9 +14,10 @@ class StaticSMOTE(BaseSampler): procedure based on sensitivity for multi-class problems. Pattern Recognit. 44, 1821–1833 (2011) """ + def __init__(self): super().__init__() - self._sampling_type = 'over-sampling' + self._sampling_type = "over-sampling" def _fit_resample(self, X, y): """ @@ -38,9 +39,11 @@ def _fit_resample(self, X, y): for _ in range(M): sm = SMOTE(sampling_strategy={min_class: cnt[min_class] * 2}) X_smote, y_smote = sm.fit_resample(X_original, y_original) - X_added_examples = X_smote[y_smote == min_class][cnt[min_class]:, :] + X_added_examples = X_smote[y_smote == min_class][cnt[min_class] :, :] X_resampled = np.vstack([X_resampled, X_added_examples]) - y_resampled = np.hstack([y_resampled, y_smote[y_smote == min_class][cnt[min_class]:]]) + y_resampled = np.hstack( + [y_resampled, y_smote[y_smote == min_class][cnt[min_class] :]] + ) cnt = Counter(y_resampled) min_class = min(cnt, key=cnt.get) diff --git a/multi_imbalance/resampling/tests/test_globalcs.py b/multi_imbalance/resampling/tests/test_globalcs.py index 6115f85..3502eef 100644 --- a/multi_imbalance/resampling/tests/test_globalcs.py +++ b/multi_imbalance/resampling/tests/test_globalcs.py @@ -5,28 +5,30 @@ from multi_imbalance.resampling.global_cs import GlobalCS -X = np.array([ - [0.05837771, 0.57543339], - [0.06153624, 0.99871925], - [0.14308529, 0.00681144], - [0.23401697, 0.21188708], - [0.2418553, 0.02137086], - [0.32480534, 0.81547632], - [0.42478482, 0.31995162], - [0.50726834, 0.72621157], - [0.54580968, 0.58025914], - [0.55748531, 0.71866238], - [0.69208769, 0.63759459], - [0.70797377, 0.16348051], - [0.76410615, 0.70451542], - [0.81680686, 0.50793884], - [0.8490789, 0.53826627], - [0.8847505, 0.96856011], - [0.9287003, 0.97580299], - [0.9584236, 0.10536541], - [0.96983103, 0.87666093], - [0.97352367, 0.78807909], -]) +X = np.array( + [ + [0.05837771, 0.57543339], + [0.06153624, 0.99871925], + [0.14308529, 0.00681144], + [0.23401697, 0.21188708], + [0.2418553, 0.02137086], + [0.32480534, 0.81547632], + [0.42478482, 0.31995162], + [0.50726834, 0.72621157], + [0.54580968, 0.58025914], + [0.55748531, 0.71866238], + [0.69208769, 0.63759459], + [0.70797377, 0.16348051], + [0.76410615, 0.70451542], + [0.81680686, 0.50793884], + [0.8490789, 0.53826627], + [0.8847505, 0.96856011], + [0.9287003, 0.97580299], + [0.9584236, 0.10536541], + [0.96983103, 0.87666093], + [0.97352367, 0.78807909], + ] +) y_balanced = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) y_imb_easy = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1]) diff --git a/multi_imbalance/resampling/tests/test_mdo.py b/multi_imbalance/resampling/tests/test_mdo.py index 349ad86..0e88012 100644 --- a/multi_imbalance/resampling/tests/test_mdo.py +++ b/multi_imbalance/resampling/tests/test_mdo.py @@ -6,17 +6,33 @@ from multi_imbalance.resampling.mdo import MDO -X = np.array([ - [0.05837771, 0.57543339], - [0.06153624, 0.99871925], - [0.14308529, 0.00681144], - [0.23401697, 0.21188708], - [0.2418553, 0.02137086], - [0.32480534, 0.81547632], - [0.42478482, 0.31995162], - [0.50726834, 0.72621157], - [0.54580968, 0.58025914], - [0.55748531, 0.71866238], +X = np.array( + [ + [0.05837771, 0.57543339], + [0.06153624, 0.99871925], + [0.14308529, 0.00681144], + [0.23401697, 0.21188708], + [0.2418553, 0.02137086], + [0.32480534, 0.81547632], + [0.42478482, 0.31995162], + [0.50726834, 0.72621157], + [0.54580968, 0.58025914], + [0.55748531, 0.71866238], + [0.69208769, 0.63759459], + [0.70797377, 0.16348051], + [0.76410615, 0.70451542], + [0.81680686, 0.50793884], + [0.8490789, 0.53826627], + [0.8847505, 0.96856011], + [0.9287003, 0.97580299], + [0.9584236, 0.10536541], + [0.96983103, 0.87666093], + [0.97352367, 0.78807909], + ] +) + +y_balanced = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) +y_balanced_SC_minor = [ [0.69208769, 0.63759459], [0.70797377, 0.16348051], [0.76410615, 0.70451542], @@ -27,26 +43,29 @@ [0.9584236, 0.10536541], [0.96983103, 0.87666093], [0.97352367, 0.78807909], -]) +] -y_balanced = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) -y_balanced_SC_minor = [[0.69208769, 0.63759459], - [0.70797377, 0.16348051], - [0.76410615, 0.70451542], - [0.81680686, 0.50793884], - [0.8490789, 0.53826627], - [0.8847505, 0.96856011], - [0.9287003, 0.97580299], - [0.9584236, 0.10536541], - [0.96983103, 0.87666093], - [0.97352367, 0.78807909]] - -y_balanced_weights = [0.058824, 0.088235, 0.088235, 0.088235, 0.117647, 0.117647, 0.117647, 0.088235, 0.117647, - 0.117647] +y_balanced_weights = [ + 0.058824, + 0.088235, + 0.088235, + 0.088235, + 0.117647, + 0.117647, + 0.117647, + 0.088235, + 0.117647, + 0.117647, +] y_imb_easy = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1]) -y_imb_easy_SC_minor = [[0.8490789, 0.53826627], [0.8847505, 0.96856011], [0.9287003, 0.97580299], - [0.96983103, 0.87666093], [0.97352367, 0.78807909]] +y_imb_easy_SC_minor = [ + [0.8490789, 0.53826627], + [0.8847505, 0.96856011], + [0.9287003, 0.97580299], + [0.96983103, 0.87666093], + [0.97352367, 0.78807909], +] y_imb_easy_weights = [0.142857, 0.214286, 0.214286, 0.214286, 0.214286] y_imb_hard = np.array([0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0]) @@ -63,7 +82,7 @@ @pytest.fixture() def mdo_mock(): def _get_parametrized_mdo(X, y): - clf = MDO(k1_frac=.5) + clf = MDO(k1_frac=0.5) clf.knn.fit(X) clf.X, clf.y = X, y return clf @@ -71,7 +90,9 @@ def _get_parametrized_mdo(X, y): return _get_parametrized_mdo -@pytest.mark.parametrize("X, y, sc_minor_expected, weights_expected", complete_test_data) +@pytest.mark.parametrize( + "X, y, sc_minor_expected, weights_expected", complete_test_data +) def test_choose_samples(X, y, sc_minor_expected, weights_expected, mdo_mock): clf = mdo_mock(X, y) SC_minor, weights = clf._choose_samples(1) @@ -116,8 +137,8 @@ def test_zero_variance(mdo_mock): def test_mdo_api(mdo_mock): clf = mdo_mock(X, y_imb_hard) - maj_int_min = {'maj': [0], 'int': [], 'min': [1]} + maj_int_min = {"maj": [0], "int": [], "min": [1]} clf.k1 = 0 clf.class_balances = maj_int_min X_r, y_r = clf.fit_resample(X, y_imb_hard) - assert X_r.shape == (28,2) \ No newline at end of file + assert X_r.shape == (28, 2) diff --git a/multi_imbalance/resampling/tests/test_soup.py b/multi_imbalance/resampling/tests/test_soup.py index 587ad62..16a3585 100644 --- a/multi_imbalance/resampling/tests/test_soup.py +++ b/multi_imbalance/resampling/tests/test_soup.py @@ -6,66 +6,141 @@ from multi_imbalance.resampling.soup import SOUP -X = np.array([ - [0.05837771, 0.57543339], - [0.06153624, 0.99871925], - [0.14308529, 0.00681144], - [0.23401697, 0.21188708], - [0.2418553, 0.02137086], - [0.32480534, 0.81547632], - [0.42478482, 0.31995162], - [0.50726834, 0.72621157], - [0.54580968, 0.58025914], - [0.55748531, 0.71866238], - [0.69208769, 0.63759459], - [0.70797377, 0.16348051], - [0.76410615, 0.70451542], - [0.81680686, 0.50793884], - [0.8490789, 0.53826627], - [0.8847505, 0.96856011], - [0.9287003, 0.97580299], - [0.9584236, 0.10536541], - [0.96983103, 0.87666093], - [0.97352367, 0.78807909], -]) +X = np.array( + [ + [0.05837771, 0.57543339], + [0.06153624, 0.99871925], + [0.14308529, 0.00681144], + [0.23401697, 0.21188708], + [0.2418553, 0.02137086], + [0.32480534, 0.81547632], + [0.42478482, 0.31995162], + [0.50726834, 0.72621157], + [0.54580968, 0.58025914], + [0.55748531, 0.71866238], + [0.69208769, 0.63759459], + [0.70797377, 0.16348051], + [0.76410615, 0.70451542], + [0.81680686, 0.50793884], + [0.8490789, 0.53826627], + [0.8847505, 0.96856011], + [0.9287003, 0.97580299], + [0.9584236, 0.10536541], + [0.96983103, 0.87666093], + [0.97352367, 0.78807909], + ] +) y_balanced = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) y_balanced_first_sample_safe_level = 0.8 -y_balanced_0_class_safe_levels = defaultdict(float, - {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 1.0, 5: 1.0, 6: 1.0, 7: 1.0, 8: 1.0, - 9: 1.0}) -y_balanced_1_class_safe_levels = defaultdict(float, - {10: 1.0, 11: 1.0, 12: 1.0, 13: 1.0, 14: 1.0, 15: 1.0, 16: 1.0, 17: 1.0, - 18: 1.0, 19: 1.0}) +y_balanced_0_class_safe_levels = defaultdict( + float, + {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 1.0, 5: 1.0, 6: 1.0, 7: 1.0, 8: 1.0, 9: 1.0}, +) +y_balanced_1_class_safe_levels = defaultdict( + float, + { + 10: 1.0, + 11: 1.0, + 12: 1.0, + 13: 1.0, + 14: 1.0, + 15: 1.0, + 16: 1.0, + 17: 1.0, + 18: 1.0, + 19: 1.0, + }, +) y_imb_easy = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1]) y_imb_easy_first_sample_safe_level = 0.685714 -y_imb_easy_0_class_safe_levels = defaultdict(float, {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 1.0, 5: 1.0, 6: 1.0, 7: 1.0, - 8: 0.8857142857142858, 9: 1.0, 10: 0.7714285714285714, - 11: 0.7714285714285714, 12: 0.6571428571428571, - 17: 0.7714285714285714}) -y_imb_easy_1_class_safe_levels = defaultdict(float, - {13: 0.6571428571428571, 14: 0.6571428571428571, 15: 0.7714285714285714, - 16: 0.7714285714285714, 18: 0.8857142857142858, 19: 0.8857142857142858}) +y_imb_easy_0_class_safe_levels = defaultdict( + float, + { + 0: 1.0, + 1: 1.0, + 2: 1.0, + 3: 1.0, + 4: 1.0, + 5: 1.0, + 6: 1.0, + 7: 1.0, + 8: 0.8857142857142858, + 9: 1.0, + 10: 0.7714285714285714, + 11: 0.7714285714285714, + 12: 0.6571428571428571, + 17: 0.7714285714285714, + }, +) +y_imb_easy_1_class_safe_levels = defaultdict( + float, + { + 13: 0.6571428571428571, + 14: 0.6571428571428571, + 15: 0.7714285714285714, + 16: 0.7714285714285714, + 18: 0.8857142857142858, + 19: 0.8857142857142858, + }, +) y_imb_hard = np.array([0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0]) y_imb_hard_first_sample_safe_level = 0.685714 -y_imb_hard_quantities_0_class_safe_levels = defaultdict(float, {0: 0.8857142857142858, 1: 0.7714285714285714, - 2: 0.8857142857142858, 3: 0.8857142857142858, - 4: 0.8857142857142858, 5: 0.7714285714285714, - 7: 0.7714285714285714, 10: 0.6571428571428571, - 11: 0.6571428571428571, 12: 0.7714285714285714, - 13: 0.7714285714285714, 15: 0.7714285714285714, - 17: 0.7714285714285714, 19: 0.6571428571428571}) -y_imb_hard_quantities_1_class_safe_levels = defaultdict(float, {6: 0.5428571428571429, 8: 0.5428571428571429, - 9: 0.5428571428571429, 14: 0.5428571428571429, - 16: 0.5428571428571429, 18: 0.6571428571428571}) +y_imb_hard_quantities_0_class_safe_levels = defaultdict( + float, + { + 0: 0.8857142857142858, + 1: 0.7714285714285714, + 2: 0.8857142857142858, + 3: 0.8857142857142858, + 4: 0.8857142857142858, + 5: 0.7714285714285714, + 7: 0.7714285714285714, + 10: 0.6571428571428571, + 11: 0.6571428571428571, + 12: 0.7714285714285714, + 13: 0.7714285714285714, + 15: 0.7714285714285714, + 17: 0.7714285714285714, + 19: 0.6571428571428571, + }, +) +y_imb_hard_quantities_1_class_safe_levels = defaultdict( + float, + { + 6: 0.5428571428571429, + 8: 0.5428571428571429, + 9: 0.5428571428571429, + 14: 0.5428571428571429, + 16: 0.5428571428571429, + 18: 0.6571428571428571, + }, +) complete_test_data = [ - (X, y_balanced, y_balanced_0_class_safe_levels, y_balanced_1_class_safe_levels, y_balanced_first_sample_safe_level), - (X, y_imb_easy, y_imb_easy_0_class_safe_levels, y_imb_easy_1_class_safe_levels, y_imb_easy_first_sample_safe_level), - (X, y_imb_hard, y_imb_hard_quantities_0_class_safe_levels, y_imb_hard_quantities_1_class_safe_levels, - y_imb_hard_first_sample_safe_level), + ( + X, + y_balanced, + y_balanced_0_class_safe_levels, + y_balanced_1_class_safe_levels, + y_balanced_first_sample_safe_level, + ), + ( + X, + y_imb_easy, + y_imb_easy_0_class_safe_levels, + y_imb_easy_1_class_safe_levels, + y_imb_easy_first_sample_safe_level, + ), + ( + X, + y_imb_hard, + y_imb_hard_quantities_0_class_safe_levels, + y_imb_hard_quantities_1_class_safe_levels, + y_imb_hard_first_sample_safe_level, + ), ] safe_levels_test_data = [ @@ -90,8 +165,12 @@ def _get_parametrized_soup(X, y): return _get_parametrized_soup -@pytest.mark.parametrize("X, y, zero_safe_levels, one_safe_levels, first_sample_safe", complete_test_data) -def test_calculating_safe_levels_for_sample(X, y, zero_safe_levels, one_safe_levels, first_sample_safe, soup_mock): +@pytest.mark.parametrize( + "X, y, zero_safe_levels, one_safe_levels, first_sample_safe", complete_test_data +) +def test_calculating_safe_levels_for_sample( + X, y, zero_safe_levels, one_safe_levels, first_sample_safe, soup_mock +): clf = soup_mock(X, y) neighbour_quantities = Counter({0: 3, 1: 1}) @@ -99,9 +178,12 @@ def test_calculating_safe_levels_for_sample(X, y, zero_safe_levels, one_safe_lev assert_array_almost_equal(safe_level, first_sample_safe) -@pytest.mark.parametrize("X, y, zero_safe_levels, one_safe_levels, first_sample_safe", complete_test_data) -def test_calculating_safe_levels_for_class(X, y, zero_safe_levels, one_safe_levels, first_sample_safe, - soup_mock): +@pytest.mark.parametrize( + "X, y, zero_safe_levels, one_safe_levels, first_sample_safe", complete_test_data +) +def test_calculating_safe_levels_for_class( + X, y, zero_safe_levels, one_safe_levels, first_sample_safe, soup_mock +): clf = soup_mock(X, y) zero_levels = clf._construct_class_safe_levels(X, y, 0) @@ -111,16 +193,26 @@ def test_calculating_safe_levels_for_class(X, y, zero_safe_levels, one_safe_leve one_levels == one_safe_levels -@pytest.mark.parametrize("X, y, class_name, expected_undersampling, expected_oversampling", safe_levels_test_data) -def test_oversample(X, y, class_name, expected_undersampling, expected_oversampling, soup_mock): +@pytest.mark.parametrize( + "X, y, class_name, expected_undersampling, expected_oversampling", + safe_levels_test_data, +) +def test_oversample( + X, y, class_name, expected_undersampling, expected_oversampling, soup_mock +): clf = soup_mock(X, y) oversampled_X, oversampled_y = clf._oversample(X, y, class_name) assert len(oversampled_X) == expected_oversampling assert len(oversampled_y) == expected_oversampling -@pytest.mark.parametrize("X, y, class_name, expected_undersampling, expected_oversampling", safe_levels_test_data) -def test_undersample(X, y, class_name, expected_undersampling, expected_oversampling, soup_mock): +@pytest.mark.parametrize( + "X, y, class_name, expected_undersampling, expected_oversampling", + safe_levels_test_data, +) +def test_undersample( + X, y, class_name, expected_undersampling, expected_oversampling, soup_mock +): clf = soup_mock(X, y) undersampled_X, undersampled_y = clf._undersample(X, y, class_name) assert len(undersampled_X) == expected_undersampling diff --git a/multi_imbalance/resampling/tests/test_spider.py b/multi_imbalance/resampling/tests/test_spider.py index 15484ce..5791f58 100644 --- a/multi_imbalance/resampling/tests/test_spider.py +++ b/multi_imbalance/resampling/tests/test_spider.py @@ -3,11 +3,13 @@ import numpy as np from multi_imbalance.resampling.spider import SPIDER3 -from multi_imbalance.utils.array_util import (union, intersect, setdiff) +from multi_imbalance.utils.array_util import union, intersect, setdiff cost = np.ones((3, 3)) np.fill_diagonal(cost, 0) -spider = SPIDER3(1, maj_int_min={'maj': ["MAJ"], 'int': ["INT"], 'min': ["MIN"]}, cost=cost) +spider = SPIDER3( + 1, maj_int_min={"maj": ["MAJ"], "int": ["INT"], "min": ["MIN"]}, cost=cost +) def test_union(): @@ -47,13 +49,7 @@ def test_setdiff(): def test_knn(): - X = np.array([ - [1, 1], - [1, -1], - [-1, 1], - [-1, -1], - [0, 0] - ]).astype(object) + X = np.array([[1, 1], [1, -1], [-1, 1], [-1, -1], [0, 0]]).astype(object) y = np.array(["MIN", "MIN", "MAJ", "MAJ", "MAJ"]) @@ -63,13 +59,7 @@ def test_knn(): def test_min_cost_classes(): - X = np.array([ - [1, 1], - [1, -1], - [-1, 1], - [-1, -1], - [0, 0] - ]).astype(object) + X = np.array([[1, 1], [1, -1], [-1, 1], [-1, -1], [0, 0]]).astype(object) y = np.array(["MIN", "MIN", "MAJ", "MAJ", "MAJ"]) @@ -79,7 +69,7 @@ def test_min_cost_classes(): assert (spider._min_cost_classes(DS[0], DS) == ["MAJ"]).all() assert (spider._min_cost_classes(DS[4], DS) == ["MIN", "MAJ"]).all() - + def test_estimate_cost_matrix(): y = [0, 1, 1, 2, 2, 2, 2, 2, 2] cost = SPIDER3._estimate_cost_matrix(y).ravel().tolist() @@ -88,9 +78,13 @@ def test_estimate_cost_matrix(): def test_fit_resample(): np.random.seed(7) - X = np.vstack([np.random.normal(0, 1, (100, 2)), - np.random.normal(3, 5, (30, 2)), - np.random.normal(-2, 2, (20, 2))]) + X = np.vstack( + [ + np.random.normal(0, 1, (100, 2)), + np.random.normal(3, 5, (30, 2)), + np.random.normal(-2, 2, (20, 2)), + ] + ) y = np.array([1] * 100 + [2] * 30 + [3] * 20) sp = SPIDER3(5) @@ -98,4 +92,4 @@ def test_fit_resample(): cnt = Counter(y_resampled) assert cnt[1] == 72 assert cnt[2] == 57 - assert cnt[3] == 30 \ No newline at end of file + assert cnt[3] == 30 diff --git a/multi_imbalance/resampling/tests/test_static_smote.py b/multi_imbalance/resampling/tests/test_static_smote.py index 687673e..e3a7adb 100644 --- a/multi_imbalance/resampling/tests/test_static_smote.py +++ b/multi_imbalance/resampling/tests/test_static_smote.py @@ -6,9 +6,13 @@ def test_static_smote(): - X = np.vstack([np.random.normal(0, 1, (100, 2)), - np.random.normal(3, 5, (30, 2)), - np.random.normal(-2, 2, (20, 2))]) + X = np.vstack( + [ + np.random.normal(0, 1, (100, 2)), + np.random.normal(3, 5, (30, 2)), + np.random.normal(-2, 2, (20, 2)), + ] + ) y = np.array([1] * 100 + [2] * 30 + [3] * 20) ssm = StaticSMOTE() diff --git a/multi_imbalance/utils/data.py b/multi_imbalance/utils/data.py index bbb53e4..522e479 100644 --- a/multi_imbalance/utils/data.py +++ b/multi_imbalance/utils/data.py @@ -21,8 +21,8 @@ def construct_flat_2pc_df(X, y) -> pd.DataFrame: :return: Data frame with 3 columns x1 x2 and y and with number of rows equal to number of rows in X """ - y = pd.DataFrame({'y': y}) - X_df = pd.DataFrame(data=X, columns=['x1', 'x2']) + y = pd.DataFrame({"y": y}) + X_df = pd.DataFrame(data=X, columns=["x1", "x2"]) df = pd.concat([X_df, y], axis=1) @@ -34,7 +34,9 @@ def get_project_root() -> Path: # pragma no cover return Path(__file__).parent.parent.parent -def load_arff_dataset(path: str, one_hot_encode: bool = True, return_non_cat_length: bool = False): +def load_arff_dataset( + path: str, one_hot_encode: bool = True, return_non_cat_length: bool = False +): """ Load and return the dataset saved in arff type file @@ -63,7 +65,7 @@ def load_arff_dataset(path: str, one_hot_encode: bool = True, return_non_cat_len categorical_cols = df.columns[categorical_feature_mask].tolist() non_categorical_cols = df.columns[~categorical_feature_mask].tolist() - df[categorical_cols] = df[categorical_cols].replace({b'?': np.NaN}) + df[categorical_cols] = df[categorical_cols].replace({b"?": np.NaN}) mode = df.mode().iloc[0] mean = df.filter(non_categorical_cols).mean() @@ -84,15 +86,19 @@ def load_arff_dataset(path: str, one_hot_encode: bool = True, return_non_cat_len def load_datasets_arff(return_non_cat_length=False, dataset_paths=None): if dataset_paths is None: - dataset_paths = glob.glob(f'{get_project_root()}/data/arff/*') + dataset_paths = glob.glob(f"{get_project_root()}/data/arff/*") datasets = OrderedDict() for path in sorted(dataset_paths): - dataset_file = path.split('/')[-1] - dataset_name = dataset_file.split('.')[0] + dataset_file = path.split("/")[-1] + dataset_name = dataset_file.split(".")[0] if return_non_cat_length: - X, y, cat_length = load_arff_dataset(path, return_non_cat_length=return_non_cat_length) - datasets[dataset_name] = Bunch(data=X, target=y, non_cat_length=cat_length, DESCR=dataset_name) + X, y, cat_length = load_arff_dataset( + path, return_non_cat_length=return_non_cat_length + ) + datasets[dataset_name] = Bunch( + data=X, target=y, non_cat_length=cat_length, DESCR=dataset_name + ) else: X, y = load_arff_dataset(path, return_non_cat_length=return_non_cat_length) datasets[dataset_name] = Bunch(data=X, target=y, DESCR=dataset_name) @@ -100,7 +106,7 @@ def load_datasets_arff(return_non_cat_length=False, dataset_paths=None): return datasets -def construct_maj_int_min(y: np.ndarray, strategy='median') -> OrderedDict: +def construct_maj_int_min(y: np.ndarray, strategy="median") -> OrderedDict: """ This function creates dictionary with information which classes are minority or majority @@ -120,25 +126,23 @@ def construct_maj_int_min(y: np.ndarray, strategy='median') -> OrderedDict: """ class_sizes = Counter(y) - if strategy == 'median': + if strategy == "median": middle_size = median(list(class_sizes.values())) - elif strategy == 'average': + elif strategy == "average": middle_size = np.mean(list(class_sizes.values())) else: - raise ValueError(f'Unrecognized {strategy}. Only "median" and "average" are allowed.') + raise ValueError( + f'Unrecognized {strategy}. Only "median" and "average" are allowed.' + ) - maj_int_min = OrderedDict({ - 'maj': list(), - 'int': list(), - 'min': list() - }) + maj_int_min = OrderedDict({"maj": list(), "int": list(), "min": list()}) for class_label, class_size in class_sizes.items(): if class_size == middle_size: - class_group = 'int' + class_group = "int" elif class_size < middle_size: - class_group = 'min' + class_group = "min" else: - class_group = 'maj' + class_group = "maj" maj_int_min[class_group].append(class_label) diff --git a/multi_imbalance/utils/min_int_maj.py b/multi_imbalance/utils/min_int_maj.py index e87e01f..434c6f6 100644 --- a/multi_imbalance/utils/min_int_maj.py +++ b/multi_imbalance/utils/min_int_maj.py @@ -1,21 +1,21 @@ maj_int_min = { # pragma no cover - "1czysty-cut": {'maj': [0], 'int': [2], 'min': [1]}, - "2delikatne-cut": {'maj': [0], 'int': [2], 'min': [1]}, - "3mocniej-cut": {'maj': [0], 'int': [2], 'min': [1]}, - "4delikatne-bezover-cut": {'maj': [0], 'int': [2], 'min': [1]}, - "balance-scale": {'maj': [2, 1], 'int': [], 'min': [0]}, - "cleveland": {'maj': [0], 'int': [], 'min': [1, 2, 3, 4]}, - "cleveland_v2": {'maj': [0], 'int': [], 'min': [1, 2, 3]}, - "car": {'maj': [2, 0], 'int': [], 'min': [1, 3]}, - "cmc": {'maj': [0, 2], 'int': [], 'min': [1]}, - "dermatology": {'maj': [0, 2, 1, 4, 3], 'int': [], 'min': [5]}, - "flare": {'maj': [1, 2, 3, 6], 'int': [], 'min': [4, 5]}, - "glass": {'maj': [1, 0, 3], 'int': [], 'min': [5, 2, 4]}, - "hayes-roth": {'maj': [0, 1], 'int': [], 'min': [2]}, - "new_ecoli": {'maj': [0, 1], 'int': [], 'min': [4, 2, 3]}, - "new_led7digit": {'maj': [3, 5, 0, 2], 'int': [], 'min': [4, 1]}, - "new_vehicle": {'maj': [1], 'int': [], 'min': [0, 2]}, - "new_winequality-red": {'maj': [0, 1], 'int': [], 'min': [2, 3]}, - "new_yeast": {'maj': [0, 1, 8, 7], 'int': [], 'min': [6, 5, 4, 3, 2]}, - "thyroid-newthyroid": {'maj': [0], 'int': [], 'min': [1, 2]} + "1czysty-cut": {"maj": [0], "int": [2], "min": [1]}, + "2delikatne-cut": {"maj": [0], "int": [2], "min": [1]}, + "3mocniej-cut": {"maj": [0], "int": [2], "min": [1]}, + "4delikatne-bezover-cut": {"maj": [0], "int": [2], "min": [1]}, + "balance-scale": {"maj": [2, 1], "int": [], "min": [0]}, + "cleveland": {"maj": [0], "int": [], "min": [1, 2, 3, 4]}, + "cleveland_v2": {"maj": [0], "int": [], "min": [1, 2, 3]}, + "car": {"maj": [2, 0], "int": [], "min": [1, 3]}, + "cmc": {"maj": [0, 2], "int": [], "min": [1]}, + "dermatology": {"maj": [0, 2, 1, 4, 3], "int": [], "min": [5]}, + "flare": {"maj": [1, 2, 3, 6], "int": [], "min": [4, 5]}, + "glass": {"maj": [1, 0, 3], "int": [], "min": [5, 2, 4]}, + "hayes-roth": {"maj": [0, 1], "int": [], "min": [2]}, + "new_ecoli": {"maj": [0, 1], "int": [], "min": [4, 2, 3]}, + "new_led7digit": {"maj": [3, 5, 0, 2], "int": [], "min": [4, 1]}, + "new_vehicle": {"maj": [1], "int": [], "min": [0, 2]}, + "new_winequality-red": {"maj": [0, 1], "int": [], "min": [2, 3]}, + "new_yeast": {"maj": [0, 1, 8, 7], "int": [], "min": [6, 5, 4, 3, 2]}, + "thyroid-newthyroid": {"maj": [0], "int": [], "min": [1, 2]}, } diff --git a/multi_imbalance/utils/plot.py b/multi_imbalance/utils/plot.py index fe1ad6f..3c66d22 100644 --- a/multi_imbalance/utils/plot.py +++ b/multi_imbalance/utils/plot.py @@ -6,10 +6,10 @@ from multi_imbalance.utils.data import construct_flat_2pc_df -sns.set_style('darkgrid') +sns.set_style("darkgrid") -def plot_cardinality_and_2d_data(X, y, dataset_name='') -> None: # pragma no cover +def plot_cardinality_and_2d_data(X, y, dataset_name="") -> None: # pragma no cover """ Plots cardinality of classes from y as well as scatter plot of X transformed to two dimensions using PCA @@ -35,13 +35,25 @@ def plot_cardinality_and_2d_data(X, y, dataset_name='') -> None: # pragma no co sns.countplot(y, ax=axs[0], palette=p) X = pca.transform(X) df = construct_flat_2pc_df(X, y) - sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[1], legend='full', palette=p) + sns.scatterplot( + x="x1", + y="x2", + hue="y", + style="y", + data=df, + alpha=0.7, + ax=axs[1], + legend="full", + palette=p, + ) axs[0].set_xlabel("class") axs[0].set_ylabel("cardinality") -def plot_visual_comparision_datasets(X1, y1, X2, y2, dataset_name1='', dataset_name2='') -> None: # pragma no cover +def plot_visual_comparision_datasets( + X1, y1, X2, y2, dataset_name1="", dataset_name2="" +) -> None: # pragma no cover """ Plots comparision of X1 y1 and X2 y2 using plot_cardinality_and_2d_data, which plots cardinality of classes from y as well as scatter plot of X transformed to two dimensions using PCA @@ -72,12 +84,32 @@ def plot_visual_comparision_datasets(X1, y1, X2, y2, dataset_name1='', dataset_n sns.countplot(y1, ax=axs[0], palette=p) transformed_X = pca.transform(X1) df = construct_flat_2pc_df(transformed_X, y1) - sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[1], legend='full', palette=p) + sns.scatterplot( + x="x1", + y="x2", + hue="y", + style="y", + data=df, + alpha=0.7, + ax=axs[1], + legend="full", + palette=p, + ) sns.countplot(y2, ax=axs[2], palette=p) transformed_X2 = pca.transform(X2) df = construct_flat_2pc_df(transformed_X2, y2) - sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[3], legend='full', palette=p) + sns.scatterplot( + x="x1", + y="x2", + hue="y", + style="y", + data=df, + alpha=0.7, + ax=axs[3], + legend="full", + palette=p, + ) axs[0].set_xlabel("class") axs[2].set_xlabel("class") diff --git a/multi_imbalance/utils/tests/test_data.py b/multi_imbalance/utils/tests/test_data.py index b55d368..459de9b 100644 --- a/multi_imbalance/utils/tests/test_data.py +++ b/multi_imbalance/utils/tests/test_data.py @@ -4,8 +4,12 @@ import numpy as np import pytest -from multi_imbalance.utils.data import construct_flat_2pc_df, load_arff_dataset, load_datasets_arff, \ - construct_maj_int_min +from multi_imbalance.utils.data import ( + construct_flat_2pc_df, + load_arff_dataset, + load_datasets_arff, + construct_maj_int_min, +) def test_2pc(): @@ -18,7 +22,7 @@ def test_2pc(): def test_preprocess(): dir_path = os.path.dirname(os.path.realpath(__file__)) - ds_path = os.path.join(dir_path, 'ds_example.arrf') + ds_path = os.path.join(dir_path, "ds_example.arrf") x, y, non_cat = load_arff_dataset(ds_path, return_non_cat_length=True) assert all(y == np.array([0, 0, 0, 0, 0, 0, 0])) assert non_cat == 2 @@ -27,29 +31,29 @@ def test_preprocess(): def test_load_arff_datasets(): dir_path = os.path.dirname(os.path.realpath(__file__)) - ds_paths = [os.path.join(dir_path, 'ds_example.arrf')] + ds_paths = [os.path.join(dir_path, "ds_example.arrf")] datasets = load_datasets_arff(return_non_cat_length=False, dataset_paths=ds_paths) keys = list(datasets.keys()) assert type(datasets) == OrderedDict - assert 'ds_example' in keys + assert "ds_example" in keys assert len(keys) == 1 - for k in ['data', 'target', 'DESCR']: - assert k in list(datasets['ds_example'].keys()) + for k in ["data", "target", "DESCR"]: + assert k in list(datasets["ds_example"].keys()) def test_load_arff_datasets_wth_non_cats(): dir_path = os.path.dirname(os.path.realpath(__file__)) - ds_paths = [os.path.join(dir_path, 'ds_example.arrf')] + ds_paths = [os.path.join(dir_path, "ds_example.arrf")] datasets = load_datasets_arff(return_non_cat_length=True, dataset_paths=ds_paths) keys = list(datasets.keys()) assert type(datasets) == OrderedDict - assert 'ds_example' in keys + assert "ds_example" in keys assert len(keys) == 1 - for k in ['data', 'target', 'DESCR', 'non_cat_length']: - assert k in list(datasets['ds_example'].keys()) + for k in ["data", "target", "DESCR", "non_cat_length"]: + assert k in list(datasets["ds_example"].keys()) def test_construct_maj_int_min_when_correct_and_median_strategy(): @@ -58,21 +62,27 @@ def test_construct_maj_int_min_when_correct_and_median_strategy(): 1: 6, 3: 7, # median 5: 10, - 8: 12 + 8: 12, } - y = np.array([class_label for class_label, class_size in class_sizes.items() for _ in range(class_size)]) + y = np.array( + [ + class_label + for class_label, class_size in class_sizes.items() + for _ in range(class_size) + ] + ) np.random.shuffle(y) - maj_int_dict = construct_maj_int_min(y, strategy='median') + maj_int_dict = construct_maj_int_min(y, strategy="median") - assert len(maj_int_dict['int']) == 1 - assert maj_int_dict['int'][0] == 3 + assert len(maj_int_dict["int"]) == 1 + assert maj_int_dict["int"][0] == 3 - assert len(maj_int_dict['min']) == 2 - assert all(i in maj_int_dict['min'] for i in [0, 1]) + assert len(maj_int_dict["min"]) == 2 + assert all(i in maj_int_dict["min"] for i in [0, 1]) - assert len(maj_int_dict['maj']) == 2 - assert all(i in maj_int_dict['maj'] for i in [5, 8]) + assert len(maj_int_dict["maj"]) == 2 + assert all(i in maj_int_dict["maj"] for i in [5, 8]) def test_construct_maj_int_min_when_correct_and_average_strategy(): @@ -81,20 +91,26 @@ def test_construct_maj_int_min_when_correct_and_average_strategy(): 1: 6, 3: 7, 5: 10, - 8: 2000 + 8: 2000, } - y = np.array([class_label for class_label, class_size in class_sizes.items() for _ in range(class_size)]) + y = np.array( + [ + class_label + for class_label, class_size in class_sizes.items() + for _ in range(class_size) + ] + ) np.random.shuffle(y) - maj_int_dict = construct_maj_int_min(y, strategy='average') + maj_int_dict = construct_maj_int_min(y, strategy="average") - assert len(maj_int_dict['int']) == 0 + assert len(maj_int_dict["int"]) == 0 - assert len(maj_int_dict['min']) == 4 - assert all(i in maj_int_dict['min'] for i in [0, 1, 3, 5]) + assert len(maj_int_dict["min"]) == 4 + assert all(i in maj_int_dict["min"] for i in [0, 1, 3, 5]) - assert len(maj_int_dict['maj']) == 1 - assert maj_int_dict['maj'][0] == 8 + assert len(maj_int_dict["maj"]) == 1 + assert maj_int_dict["maj"][0] == 8 def test_construct_maj_int_min_when_wrong_strategy(): @@ -103,11 +119,16 @@ def test_construct_maj_int_min_when_wrong_strategy(): 1: 6, 3: 7, 5: 10, - 8: 2000 + 8: 2000, } - y = np.array([class_label for class_label, class_size in class_sizes.items() for _ in range(class_size)]) + y = np.array( + [ + class_label + for class_label, class_size in class_sizes.items() + for _ in range(class_size) + ] + ) np.random.shuffle(y) with pytest.raises(ValueError): - construct_maj_int_min(y, strategy='WRONG_STRATEGY') - + construct_maj_int_min(y, strategy="WRONG_STRATEGY") diff --git a/setup.py b/setup.py index 80940c3..ac83413 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ -import setuptools # pragma no cover +import setuptools # pragma no cover -with open("README.md", "r", encoding='UTF8') as fh: # pragma no cover +with open("README.md", "r", encoding="UTF8") as fh: # pragma no cover long_description = fh.read() @@ -18,11 +18,11 @@ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", - 'Topic :: Software Development', - 'Topic :: Scientific/Engineering', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8' + "Topic :: Software Development", + "Topic :: Scientific/Engineering", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", ], install_requires=[ "numpy>=1.17.0", @@ -35,5 +35,5 @@ "IPython>=7.13.0", "seaborn>=0.10.1", "matplotlib>=3.2.1", - ] + ], ) From 1982753b29dff45b06a2dd0735e93446d239c640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Thu, 3 Nov 2022 13:37:42 +0100 Subject: [PATCH 02/48] new tests directory --- multi_imbalance/datasets/_data_loader.py | 4 ++-- multi_imbalance/utils/data.py | 7 ++++--- {multi_imbalance/datasets/tests => tests}/__init__.py | 0 .../ensemble/tests => tests/datasets}/__init__.py | 0 .../datasets/tests => tests/datasets}/test_data_loader.py | 3 ++- .../resampling/tests => tests/ensemble}/__init__.py | 0 .../ensemble/tests => tests/ensemble}/test_ecoc.py | 0 .../ensemble/tests => tests/ensemble}/test_mrbbagging.py | 0 .../ensemble/tests => tests/ensemble}/test_ovo.py | 0 .../ensemble/tests => tests/ensemble}/test_soupbagging.py | 0 tests/resampling/__init__.py | 0 .../resampling/tests => tests/resampling}/test_globalcs.py | 0 .../resampling/tests => tests/resampling}/test_mdo.py | 0 .../resampling/tests => tests/resampling}/test_soup.py | 0 .../resampling/tests => tests/resampling}/test_spider.py | 0 .../tests => tests/resampling}/test_static_smote.py | 0 tests/utils/__init__.py | 0 .../utils/tests => tests/utils}/ds_example.arrf | 0 {multi_imbalance/utils/tests => tests/utils}/test_data.py | 0 19 files changed, 8 insertions(+), 6 deletions(-) rename {multi_imbalance/datasets/tests => tests}/__init__.py (100%) rename {multi_imbalance/ensemble/tests => tests/datasets}/__init__.py (100%) rename {multi_imbalance/datasets/tests => tests/datasets}/test_data_loader.py (90%) rename {multi_imbalance/resampling/tests => tests/ensemble}/__init__.py (100%) rename {multi_imbalance/ensemble/tests => tests/ensemble}/test_ecoc.py (100%) rename {multi_imbalance/ensemble/tests => tests/ensemble}/test_mrbbagging.py (100%) rename {multi_imbalance/ensemble/tests => tests/ensemble}/test_ovo.py (100%) rename {multi_imbalance/ensemble/tests => tests/ensemble}/test_soupbagging.py (100%) create mode 100644 tests/resampling/__init__.py rename {multi_imbalance/resampling/tests => tests/resampling}/test_globalcs.py (100%) rename {multi_imbalance/resampling/tests => tests/resampling}/test_mdo.py (100%) rename {multi_imbalance/resampling/tests => tests/resampling}/test_soup.py (100%) rename {multi_imbalance/resampling/tests => tests/resampling}/test_spider.py (100%) rename {multi_imbalance/resampling/tests => tests/resampling}/test_static_smote.py (100%) create mode 100644 tests/utils/__init__.py rename {multi_imbalance/utils/tests => tests/utils}/ds_example.arrf (100%) rename {multi_imbalance/utils/tests => tests/utils}/test_data.py (100%) diff --git a/multi_imbalance/datasets/_data_loader.py b/multi_imbalance/datasets/_data_loader.py index c4abe2e..e6f1b6b 100644 --- a/multi_imbalance/datasets/_data_loader.py +++ b/multi_imbalance/datasets/_data_loader.py @@ -28,7 +28,7 @@ PRE_FILENAME = "x" POST_FILENAME = "data.npz" -DATA_HOME_BASIC = "./../../data/" +DATA_HOME_BASIC = join(".", "..", "..", "data") MAP_NAME_ID_KEYS = [ "1czysty-cut", @@ -84,7 +84,7 @@ def load_datasets(data_home=DATA_HOME_BASIC): if not available: makedirs(extracted_dir, exist_ok=True) - with open(f"{data_home}data.tar.gz", "rb") as fin: + with open(join(data_home, "data.tar.gz"), "rb") as fin: f = BytesIO(fin.read()) tar = tarfile.open(fileobj=f) tar.extractall(path=extracted_dir) diff --git a/multi_imbalance/utils/data.py b/multi_imbalance/utils/data.py index 522e479..9bd3b3d 100644 --- a/multi_imbalance/utils/data.py +++ b/multi_imbalance/utils/data.py @@ -8,6 +8,7 @@ from scipy.io import arff from sklearn.preprocessing import LabelEncoder from sklearn.utils import Bunch +import os def construct_flat_2pc_df(X, y) -> pd.DataFrame: @@ -86,12 +87,12 @@ def load_arff_dataset( def load_datasets_arff(return_non_cat_length=False, dataset_paths=None): if dataset_paths is None: - dataset_paths = glob.glob(f"{get_project_root()}/data/arff/*") + dataset_paths = glob.glob(os.path.join(get_project_root(), "data", "arff", "*")) datasets = OrderedDict() for path in sorted(dataset_paths): - dataset_file = path.split("/")[-1] - dataset_name = dataset_file.split(".")[0] + dataset_file = os.path.basename(path) + dataset_name = os.path.splitext(dataset_file)[0] if return_non_cat_length: X, y, cat_length = load_arff_dataset( path, return_non_cat_length=return_non_cat_length diff --git a/multi_imbalance/datasets/tests/__init__.py b/tests/__init__.py similarity index 100% rename from multi_imbalance/datasets/tests/__init__.py rename to tests/__init__.py diff --git a/multi_imbalance/ensemble/tests/__init__.py b/tests/datasets/__init__.py similarity index 100% rename from multi_imbalance/ensemble/tests/__init__.py rename to tests/datasets/__init__.py diff --git a/multi_imbalance/datasets/tests/test_data_loader.py b/tests/datasets/test_data_loader.py similarity index 90% rename from multi_imbalance/datasets/tests/test_data_loader.py rename to tests/datasets/test_data_loader.py index 6c734ad..2c9bde6 100644 --- a/multi_imbalance/datasets/tests/test_data_loader.py +++ b/tests/datasets/test_data_loader.py @@ -2,6 +2,7 @@ """ from multi_imbalance.datasets import load_datasets +from os.path import join DATASET_SHAPE = { "1czysty-cut": (1200, 2), @@ -26,7 +27,7 @@ def test_load_datasets(): print("Testing loading datasets") - datasets = load_datasets(data_home="./data/") + datasets = load_datasets(data_home=join(".", "data")) for k in DATASET_SHAPE.keys(): X = datasets[k].data assert DATASET_SHAPE[k] == X.shape diff --git a/multi_imbalance/resampling/tests/__init__.py b/tests/ensemble/__init__.py similarity index 100% rename from multi_imbalance/resampling/tests/__init__.py rename to tests/ensemble/__init__.py diff --git a/multi_imbalance/ensemble/tests/test_ecoc.py b/tests/ensemble/test_ecoc.py similarity index 100% rename from multi_imbalance/ensemble/tests/test_ecoc.py rename to tests/ensemble/test_ecoc.py diff --git a/multi_imbalance/ensemble/tests/test_mrbbagging.py b/tests/ensemble/test_mrbbagging.py similarity index 100% rename from multi_imbalance/ensemble/tests/test_mrbbagging.py rename to tests/ensemble/test_mrbbagging.py diff --git a/multi_imbalance/ensemble/tests/test_ovo.py b/tests/ensemble/test_ovo.py similarity index 100% rename from multi_imbalance/ensemble/tests/test_ovo.py rename to tests/ensemble/test_ovo.py diff --git a/multi_imbalance/ensemble/tests/test_soupbagging.py b/tests/ensemble/test_soupbagging.py similarity index 100% rename from multi_imbalance/ensemble/tests/test_soupbagging.py rename to tests/ensemble/test_soupbagging.py diff --git a/tests/resampling/__init__.py b/tests/resampling/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/multi_imbalance/resampling/tests/test_globalcs.py b/tests/resampling/test_globalcs.py similarity index 100% rename from multi_imbalance/resampling/tests/test_globalcs.py rename to tests/resampling/test_globalcs.py diff --git a/multi_imbalance/resampling/tests/test_mdo.py b/tests/resampling/test_mdo.py similarity index 100% rename from multi_imbalance/resampling/tests/test_mdo.py rename to tests/resampling/test_mdo.py diff --git a/multi_imbalance/resampling/tests/test_soup.py b/tests/resampling/test_soup.py similarity index 100% rename from multi_imbalance/resampling/tests/test_soup.py rename to tests/resampling/test_soup.py diff --git a/multi_imbalance/resampling/tests/test_spider.py b/tests/resampling/test_spider.py similarity index 100% rename from multi_imbalance/resampling/tests/test_spider.py rename to tests/resampling/test_spider.py diff --git a/multi_imbalance/resampling/tests/test_static_smote.py b/tests/resampling/test_static_smote.py similarity index 100% rename from multi_imbalance/resampling/tests/test_static_smote.py rename to tests/resampling/test_static_smote.py diff --git a/tests/utils/__init__.py b/tests/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/multi_imbalance/utils/tests/ds_example.arrf b/tests/utils/ds_example.arrf similarity index 100% rename from multi_imbalance/utils/tests/ds_example.arrf rename to tests/utils/ds_example.arrf diff --git a/multi_imbalance/utils/tests/test_data.py b/tests/utils/test_data.py similarity index 100% rename from multi_imbalance/utils/tests/test_data.py rename to tests/utils/test_data.py From 6cc9128604f10545cbd747c2c0bbfc48550d47a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Thu, 3 Nov 2022 13:58:02 +0100 Subject: [PATCH 03/48] fix warnings --- multi_imbalance/ensemble/ecoc.py | 11 +++++------ multi_imbalance/ensemble/mrbbagging.py | 8 ++++---- multi_imbalance/resampling/soup.py | 6 ++++-- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/multi_imbalance/ensemble/ecoc.py b/multi_imbalance/ensemble/ecoc.py index 6b111cd..a96e8d0 100644 --- a/multi_imbalance/ensemble/ecoc.py +++ b/multi_imbalance/ensemble/ecoc.py @@ -450,12 +450,11 @@ def _calc_weights(self, X_for_weights, y_for_weights): ][clf_idx] ): min_correct_pred[sample_label] += 1 - avg_tpr_min = np.mean( - [ - min_correct_pred[clazz] / min_counter[clazz] - for clazz in min_counter.keys() - ] - ) + tpr_min = [ + min_correct_pred[clazz] / min_counter[clazz] + for clazz in min_counter.keys() + ] + avg_tpr_min = np.mean(tpr_min) if tpr_min else np.nan dich_weights[clf_idx] = avg_tpr_min self.dich_weights = dich_weights diff --git a/multi_imbalance/ensemble/mrbbagging.py b/multi_imbalance/ensemble/mrbbagging.py index 6ac4bbc..64ac130 100644 --- a/multi_imbalance/ensemble/mrbbagging.py +++ b/multi_imbalance/ensemble/mrbbagging.py @@ -137,8 +137,8 @@ def _train(self, la_list, n, prob, classes, grouped_data): for i in range(len(la_list)): subset_x, subset_y = self._resample(n, prob, classes, grouped_data) - subset_x = np.array(subset_x).astype(np.float) - subset_y = np.array(subset_y).astype(np.float) + subset_x = np.array(subset_x).astype(np.float64) + subset_y = np.array(subset_y).astype(np.float64) self.classifiers[i] = la_list[i].fit(subset_x, subset_y) @@ -171,8 +171,8 @@ def _train_with_feature_selection(self, la_list, n, prob, classes, grouped_data) else: features_no = int(sqrt(labels_no)) - subset_x = np.array(subset_x).astype(np.float) - subset_y = np.array(subset_y).astype(np.float) + subset_x = np.array(subset_x).astype(np.float64) + subset_y = np.array(subset_y).astype(np.float64) if self.all_random: subset1, subset1_idx = self._find_random_features( diff --git a/multi_imbalance/resampling/soup.py b/multi_imbalance/resampling/soup.py index 4141744..12d3f99 100644 --- a/multi_imbalance/resampling/soup.py +++ b/multi_imbalance/resampling/soup.py @@ -176,9 +176,11 @@ def _calculate_goal_quantity(self, maj_int_min=None): } min_q = list(min_classes.values()) - if len(maj_q) == 0: + if len(min_q) == 0 and len(maj_q) == 0: + return np.nan + elif len(maj_q) == 0: return np.mean(min_q, dtype=int) - if len(min_q) == 0: + elif len(min_q) == 0: return np.mean(maj_q, dtype=int) return np.mean((max(min_q), min(maj_q)), dtype=int) From 88bb9b81bd99caafdb279e2bcd502a8d7b8f4859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Thu, 3 Nov 2022 16:45:53 +0100 Subject: [PATCH 04/48] add typing --- multi_imbalance/datasets/_data_loader.py | 2 +- multi_imbalance/ensemble/ecoc.py | 58 ++++++++++++++-------- multi_imbalance/ensemble/mrbbagging.py | 57 +++++++++++++-------- multi_imbalance/ensemble/ovo.py | 35 ++++++++----- multi_imbalance/ensemble/soup_bagging.py | 18 ++++--- multi_imbalance/resampling/global_cs.py | 9 +++- multi_imbalance/resampling/mdo.py | 24 +++++++-- multi_imbalance/resampling/soup.py | 29 ++++++++--- multi_imbalance/resampling/spider.py | 44 +++++++++------- multi_imbalance/resampling/static_smote.py | 5 +- multi_imbalance/utils/array_util.py | 10 ++-- multi_imbalance/utils/data.py | 11 ++-- multi_imbalance/utils/metrics.py | 5 +- multi_imbalance/utils/plot.py | 14 ++++-- 14 files changed, 213 insertions(+), 108 deletions(-) diff --git a/multi_imbalance/datasets/_data_loader.py b/multi_imbalance/datasets/_data_loader.py index e6f1b6b..3dd5b81 100644 --- a/multi_imbalance/datasets/_data_loader.py +++ b/multi_imbalance/datasets/_data_loader.py @@ -57,7 +57,7 @@ MAP_ID_NAME[v + 1] = k -def load_datasets(data_home=DATA_HOME_BASIC): +def load_datasets(data_home: str = DATA_HOME_BASIC) -> OrderedDict: """ Load the benchmark datasets. diff --git a/multi_imbalance/ensemble/ecoc.py b/multi_imbalance/ensemble/ecoc.py index a96e8d0..067f9a8 100644 --- a/multi_imbalance/ensemble/ecoc.py +++ b/multi_imbalance/ensemble/ecoc.py @@ -2,6 +2,7 @@ from collections import Counter from collections import defaultdict from copy import deepcopy +from typing import Tuple, Union import numpy as np from imblearn.over_sampling import SMOTE @@ -31,13 +32,14 @@ class ECOC(BaggingClassifier): def __init__( self, - binary_classifier="KNN", - preprocessing="SOUP", - encoding="OVO", - n_neighbors=3, - weights=None, + binary_classifier: str = "KNN", + preprocessing: str = "SOUP", + encoding: str = "OVO", + n_neighbors: int = 3, + weights: Union[None, str] = None, ): """ + :param binary_classifier: binary classifier used by the algorithm. Possible classifiers: @@ -104,7 +106,9 @@ def __init__( self._labels = None self._dich_weights = None - def fit(self, X, y, minority_classes=None): + def fit( + self, X: np.ndarray, y: np.ndarray, minority_classes: Union[list, None] = None + ): """ :param X: @@ -136,7 +140,7 @@ def fit(self, X, y, minority_classes=None): self._calc_weights(X_for_weights, y_for_weights) return self - def predict(self, X): + def predict(self, X: np.ndarray) -> np.ndarray: """ :param X: two dimensional numpy array (number of samples x number of features) with float numbers @@ -153,7 +157,7 @@ def predict(self, X): return predicted - def _learn_binary_classifiers(self, X, y): + def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray): for classifier_idx, classifier in enumerate(self._binary_classifiers): excluded_classes_indices = [ idx @@ -194,8 +198,11 @@ def _gen_code_matrix(self): ) def _encode_dense( - self, number_of_classes, random_state=0, number_of_code_generations=10000 - ): + self, + number_of_classes: int, + random_state: int = 0, + number_of_code_generations: int = 10000, + ) -> np.ndarray: try: dirname = os.path.dirname(__file__) matrix = np.load( @@ -234,8 +241,11 @@ def _encode_dense( return code_matrix def _encode_sparse( - self, number_of_classes, random_state=0, number_of_code_generations=10000 - ): + self, + number_of_classes: int, + random_state: int = 0, + number_of_code_generations: int = 10000, + ) -> np.ndarray: try: dirname = os.path.dirname(__file__) matrix = np.load( @@ -283,12 +293,12 @@ def _encode_sparse( return code_matrix - def _encode_ova(self, number_of_classes): + def _encode_ova(self, number_of_classes: int) -> np.ndarray: matrix = np.identity(number_of_classes) matrix[matrix == 0] = -1 return matrix - def _encode_ovo(self, number_of_classes): + def _encode_ovo(self, number_of_classes: int) -> np.ndarray: number_of_columns = int(number_of_classes * (number_of_classes - 1) / 2) matrix = np.zeros((number_of_classes, number_of_columns), dtype=int) indices_map = self._map_indices_to_class_pairs(number_of_classes) @@ -300,7 +310,7 @@ def _encode_ovo(self, number_of_classes): matrix[row, col] = -1 return matrix - def _map_indices_to_class_pairs(self, number_of_classes): + def _map_indices_to_class_pairs(self, number_of_classes: int) -> dict: indices_map = dict() idx = 0 for i in range(number_of_classes): @@ -309,7 +319,7 @@ def _map_indices_to_class_pairs(self, number_of_classes): idx += 1 return indices_map - def _encode_complete(self, number_of_classes): + def _encode_complete(self, number_of_classes: int) -> np.ndarray: code_length = 2 ** (number_of_classes - 1) - 1 matrix = np.ones((number_of_classes, code_length)) for row_idx in range(1, number_of_classes): @@ -320,13 +330,13 @@ def _encode_complete(self, number_of_classes): digit *= -1 return matrix - def _hamming_distance(self, v1, v2): + def _hamming_distance(self, v1: np.ndarray, v2: np.ndarray) -> int: return np.count_nonzero(v1 != v2) - def _has_matrix_all_zeros_column(self, matrix): + def _has_matrix_all_zeros_column(self, matrix: np.ndarray) -> bool: return (~matrix.any(axis=0)).any() - def _get_closest_class(self, row): + def _get_closest_class(self, row: np.ndarray) -> np.ndarray: if self.weights is not None: return self._labels[ np.argmin( @@ -346,7 +356,9 @@ def _get_closest_class(self, row): ) ] - def _oversample(self, X, y): + def _oversample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: if self.preprocessing is None: return X, y @@ -396,7 +408,9 @@ def _get_classifier(self): ) return deepcopy(self.binary_classifier) - def _smote_oversample(self, X, y): + def _smote_oversample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: n_neighbors = min(3, min(np.unique(y, return_counts=True)[1]) - 1) if n_neighbors == 0: raise ValueError( @@ -405,7 +419,7 @@ def _smote_oversample(self, X, y): smote = SMOTE(k_neighbors=n_neighbors, random_state=42) return smote.fit_resample(X, y) - def _calc_weights(self, X_for_weights, y_for_weights): + def _calc_weights(self, X_for_weights: np.ndarray, y_for_weights: np.ndarray): if self.weights not in ECOC._allowed_weights: raise ValueError( "Unknown weighting strategy: %s, expected to be one of %s." diff --git a/multi_imbalance/ensemble/mrbbagging.py b/multi_imbalance/ensemble/mrbbagging.py index 64ac130..ba12360 100644 --- a/multi_imbalance/ensemble/mrbbagging.py +++ b/multi_imbalance/ensemble/mrbbagging.py @@ -1,6 +1,7 @@ from collections import Counter from copy import deepcopy from math import sqrt +from typing import Any, Callable, Tuple, Union import numpy as np from scipy.stats import multinomial @@ -23,13 +24,13 @@ class MRBBagging(BaggingClassifier): def __init__( self, - k, - learning_algorithm, - undersampling=True, - feature_selection=False, - random_fs=False, - half_features=True, - random_state=None, + k: int, + learning_algorithm: Any, + undersampling: bool = True, + feature_selection: bool = False, + random_fs: bool = False, + half_features: bool = True, + random_state: Union[int, None] = None, ): """ :param k: @@ -62,7 +63,7 @@ def __init__( self.half_features = half_features self.random_state = random_state - def fit(self, x, y, **kwargs): + def fit(self, x: np.ndarray, y: np.ndarray, **kwargs): """ Build a MRBBagging ensemble of estimators from the training data. @@ -98,7 +99,7 @@ def fit(self, x, y, **kwargs): return self - def predict(self, data): + def predict(self, data: np.ndarray) -> list: """ Predict classes for examples in data. @@ -107,7 +108,7 @@ def predict(self, data): """ return self._select_classes(data) - def _group_data(self, x, y): + def _group_data(self, x: np.ndarray, y: np.ndarray) -> Tuple[set, dict]: classes = set(y) self.classes = {key: value for (key, value) in enumerate(classes)} data = [[x[i], y[i]] for i in range(len(x))] @@ -117,7 +118,9 @@ def _group_data(self, x, y): grouped_data[cl] = list(filter(lambda d: d[1] == cl, data)) return classes, grouped_data - def _resample(self, n, prob, classes, grouped_data): + def _resample( + self, n: int, prob: float, classes: set, grouped_data: dict + ) -> Tuple[np.ndarray, np.ndarray]: samples_no = multinomial.rvs(n=n, p=prob, random_state=self.random_state) subset_x, subset_y = [], [] for no, j in enumerate(classes): @@ -133,7 +136,9 @@ def _resample(self, n, prob, classes, grouped_data): subset_y.append(sample[1]) return np.array(subset_x), np.array(subset_y) - def _train(self, la_list, n, prob, classes, grouped_data): + def _train( + self, la_list: list, n: int, prob: float, classes: set, grouped_data: dict + ): for i in range(len(la_list)): subset_x, subset_y = self._resample(n, prob, classes, grouped_data) @@ -142,12 +147,16 @@ def _train(self, la_list, n, prob, classes, grouped_data): self.classifiers[i] = la_list[i].fit(subset_x, subset_y) - def _find_random_features(self, labels_no, features_no, subset_x): + def _find_random_features( + self, labels_no: int, features_no: int, subset_x: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: random_features_idx = sample_without_replacement(labels_no, features_no) random_features = self._get_features_array(subset_x, random_features_idx) return random_features, random_features_idx - def _get_features_array(self, subset_x, random_features_idx): + def _get_features_array( + self, subset_x: np.ndarray, random_features_idx: np.ndarray + ) -> np.ndarray: random_features = np.array(subset_x[:, random_features_idx[0]]) for f in range(1, len(random_features_idx)): random_features = np.vstack( @@ -157,12 +166,20 @@ def _get_features_array(self, subset_x, random_features_idx): return random_features[:, np.newaxis] return random_features.T - def _get_kbest_classifier(self, test, features_no, subset_x, subset_y): + def _get_kbest_classifier( + self, + test: Callable, + features_no: int, + subset_x: np.ndarray, + subset_y: np.ndarray, + ) -> Tuple[np.ndarray, SelectKBest]: kBest_estimator = SelectKBest(test, k=features_no) subset = kBest_estimator.fit_transform(subset_x, subset_y) return subset, kBest_estimator - def _train_with_feature_selection(self, la_list, n, prob, classes, grouped_data): + def _train_with_feature_selection( + self, la_list: list, n: int, prob: float, classes: set, grouped_data: dict + ): for i in range(0, len(la_list), 3): subset_x, subset_y = self._resample(n, prob, classes, grouped_data) labels_no = len(subset_x[0]) @@ -204,10 +221,10 @@ def _train_with_feature_selection(self, la_list, n, prob, classes, grouped_data) self.classifiers[i + 1] = la_list[i + 1].fit(subset2, subset_y) self.classifiers[i + 2] = la_list[i + 2].fit(subset3, subset_y) - def _set_classes_dict(self, classes): + def _set_classes_dict(self, classes: set): self.classifier_classes = dict(enumerate(classes)) - def _select_data(self, classifier_id, data): + def _select_data(self, classifier_id: int, data: np.ndarray) -> np.ndarray: if self.feature_selection: if self.all_random: new_data = self._get_features_array( @@ -225,7 +242,7 @@ def _select_data(self, classifier_id, data): return new_data return data - def _count_votes(self, data): + def _count_votes(self, data: np.ndarray) -> np.ndarray: voting_matrix = np.zeros((len(data), len(self.classes))) for classifier_id in range(len(self.classifiers)): new_data = self._select_data(classifier_id, data) @@ -238,7 +255,7 @@ def _count_votes(self, data): voting_matrix[i][idx] += max(probabilities[i]) return voting_matrix - def _select_classes(self, data): + def _select_classes(self, data: np.ndarray) -> list: voting_matrix = self._count_votes(data) selected_classes_ids = voting_matrix.argmax(axis=1) selected_classes = [] diff --git a/multi_imbalance/ensemble/ovo.py b/multi_imbalance/ensemble/ovo.py index c4ae5af..512fc61 100644 --- a/multi_imbalance/ensemble/ovo.py +++ b/multi_imbalance/ensemble/ovo.py @@ -1,4 +1,5 @@ from copy import deepcopy +from typing import Any, Tuple, Union import numpy as np from imblearn.over_sampling import SMOTE @@ -28,10 +29,10 @@ class OVO(BaggingClassifier): def __init__( self, - binary_classifier="tree", - n_neighbors=3, - preprocessing="SOUP", - preprocessing_between="all", + binary_classifier: str = "tree", + n_neighbors: int = 3, + preprocessing: str = "SOUP", + preprocessing_between: str = "all", ): """ :param binary_classifier: @@ -77,7 +78,9 @@ def __init__( self._labels = np.array([]) self._minority_classes = list() - def fit(self, X, y, minority_classes=None): + def fit( + self, X: np.ndarray, y: np.ndarray, minority_classes: Union[list, None] = None + ): """ :param X: two dimensional numpy array (number of samples x number of features) with float numbers @@ -100,7 +103,7 @@ def fit(self, X, y, minority_classes=None): self._learn_binary_classifiers(X, y) return self - def predict(self, X): + def predict(self, X: np.ndarray) -> np.ndarray: """ :param X: two dimensional numpy array (number of samples x number of features) with float numbers @@ -117,7 +120,9 @@ def predict(self, X): return np.array(predicted) - def _construct_binary_outputs_matrix(self, instance, num_of_classes): + def _construct_binary_outputs_matrix( + self, instance: np.ndarray, num_of_classes: int + ) -> np.ndarray: binary_outputs_matrix = np.zeros((num_of_classes, num_of_classes)) for class_idx1 in range(len(self._labels)): for class_idx2 in range(class_idx1): @@ -126,7 +131,7 @@ def _construct_binary_outputs_matrix(self, instance, num_of_classes): ] = self._binary_classifiers[class_idx1][class_idx2].predict([instance]) return binary_outputs_matrix - def _learn_binary_classifiers(self, X, y): + def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray): for row in range(len(self._labels)): for col in range(row): first_class, second_class = self._labels[row], self._labels[col] @@ -140,7 +145,7 @@ def _learn_binary_classifiers(self, X, y): X_filtered, y_filtered = self._oversample(X_filtered, y_filtered) self._binary_classifiers[row][col].fit(X_filtered, y_filtered) - def _get_classifier(self): + def _get_classifier(self) -> Any: if isinstance(self.binary_classifier, str): if self.binary_classifier not in OVO._allowed_classifiers: raise ValueError( @@ -165,7 +170,7 @@ def _get_classifier(self): ) return deepcopy(self.binary_classifier) - def _perform_max_voting(self, binary_outputs_matrix): + def _perform_max_voting(self, binary_outputs_matrix: np.ndarray) -> np.ndarray: scores = np.zeros(len(self._labels)) for clf_1 in range(len(binary_outputs_matrix)): for clf_2 in range(clf_1): @@ -174,7 +179,9 @@ def _perform_max_voting(self, binary_outputs_matrix): ] += 1 return self._labels[np.argmax(scores)] - def _oversample(self, X, y): + def _oversample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: if self.preprocessing is None: return X, y @@ -199,7 +206,9 @@ def _oversample(self, X, y): raise ValueError("Your resampler must implement fit_resample method") return self.preprocessing.fit_resample(X, y) - def _smote_oversample(self, X, y): + def _smote_oversample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: n_neighbors = min(3, min(np.unique(y, return_counts=True)[1]) - 1) if n_neighbors == 0: raise ValueError( @@ -208,7 +217,7 @@ def _smote_oversample(self, X, y): smote = SMOTE(k_neighbors=n_neighbors, random_state=42) return smote.fit_resample(X, y) - def should_perform_oversampling(self, first_class, second_class): + def should_perform_oversampling(self, first_class: int, second_class: int): if self.oversample_between not in OVO._allowed_preprocessing_between: raise ValueError( "Unknown strategy for oversampling: %s, expected to be one of %s." diff --git a/multi_imbalance/ensemble/soup_bagging.py b/multi_imbalance/ensemble/soup_bagging.py index f2e8ed5..0e6a2b5 100644 --- a/multi_imbalance/ensemble/soup_bagging.py +++ b/multi_imbalance/ensemble/soup_bagging.py @@ -1,6 +1,7 @@ import multiprocessing from collections import Counter from copy import deepcopy +from typing import Any, Tuple, Union import numpy as np from sklearn.ensemble import BaggingClassifier @@ -11,7 +12,7 @@ from multi_imbalance.utils.array_util import setdiff -def fit_clf(args): +def fit_clf(args: list): return SOUPBagging.fit_classifier(args) @@ -25,7 +26,12 @@ class SOUPBagging(BaggingClassifier): Inteligencji (2019). """ - def __init__(self, classifier=None, maj_int_min=None, n_classifiers=5): + def __init__( + self, + classifier: Union[Any, None] = None, + maj_int_min: Union[dict, None] = None, + n_classifiers: int = 5, + ): """ :param classifier: Instance of classifier @@ -48,7 +54,7 @@ def __init__(self, classifier=None, maj_int_min=None, n_classifiers=5): self.classifiers.append(KNeighborsClassifier()) @staticmethod - def fit_classifier(args): + def fit_classifier(args: list) -> Tuple[Any, np.ndarray]: clf, X, y, resampled, maj_int_min = args x_sampled, y_sampled = resampled @@ -78,7 +84,7 @@ def fit_classifier(args): ) return clf, global_weights - def fit(self, X, y, **kwargs): + def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): """ :param X: array-like, sparse matrix of shape = [n_samples, n_features] The training input samples. @@ -113,7 +119,7 @@ def fit(self, X, y, **kwargs): self.clf_weights = np.array(self.clf_weights) - def predict(self, X, strategy: str = "average"): + def predict(self, X: np.ndarray, strategy: str = "average") -> np.ndarray: """ Predict class for X. The predicted class of an input sample is computed as the class with the highest sum of predicted probability. @@ -166,7 +172,7 @@ def predict(self, X, strategy: str = "average"): y_result = np.argmax(p, axis=1) return y_result - def predict_proba(self, X): + def predict_proba(self, X: np.ndarray) -> np.ndarray: """ Predict class probabilities for X. diff --git a/multi_imbalance/resampling/global_cs.py b/multi_imbalance/resampling/global_cs.py index b9b9b8f..9c181a2 100644 --- a/multi_imbalance/resampling/global_cs.py +++ b/multi_imbalance/resampling/global_cs.py @@ -1,4 +1,5 @@ from collections import Counter +from typing import Tuple import numpy as np import sklearn @@ -17,7 +18,9 @@ def __init__(self, shuffle: bool = True): self.shuffle = shuffle self.quantities, self.max_quantity, self.X, self.y = [None] * 4 - def _fit_resample(self, X, y): + def _fit_resample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: """ :param X: two dimensional numpy array (number of samples x number of features) with float numbers @@ -49,7 +52,9 @@ def _fit_resample(self, X, y): return np.array(result_X), np.array(result_y) - def _equal_oversample(self, X, y, class_name): + def _equal_oversample( + self, X: np.ndarray, y: np.ndarray, class_name: str + ) -> Tuple[list, list]: indices_in_class = [ i for i, class_label in enumerate(y) if class_label == class_name ] diff --git a/multi_imbalance/resampling/mdo.py b/multi_imbalance/resampling/mdo.py index 30288bf..2f1ed31 100644 --- a/multi_imbalance/resampling/mdo.py +++ b/multi_imbalance/resampling/mdo.py @@ -1,4 +1,5 @@ from collections import Counter +from typing import Tuple, Union import numpy as np from imblearn.base import BaseSampler @@ -17,7 +18,14 @@ class MDO(BaseSampler): """ - def __init__(self, k=5, k1_frac=0.4, seed=0, prop=1, maj_int_min=None): + def __init__( + self, + k: int = 5, + k1_frac: float = 0.4, + seed: int = 0, + prop: int = 1, + maj_int_min: Union[dict, None] = None, + ): """ :param k: Number of neighbours considered during the neighbourhood analysis @@ -41,7 +49,9 @@ def __init__(self, k=5, k1_frac=0.4, seed=0, prop=1, maj_int_min=None): self.prop = prop self.class_balances = maj_int_min - def _fit_resample(self, X, y): + def _fit_resample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: """ :param X: two dimensional numpy array (number of samples x number of features) with float numbers @@ -117,7 +127,7 @@ def _fit_resample(self, X, y): return oversampled_X, oversampled_y - def _choose_samples(self, class_label): + def _choose_samples(self, class_label: str) -> Tuple[np.ndarray, np.ndarray]: minor_class_indices = [ i for i, value in enumerate(self.y) if value == class_label ] @@ -144,7 +154,9 @@ def _choose_samples(self, class_label): return chosen_minor_class_samples_to_oversample, weights - def _MDO_oversampling(self, T, v, oversampling_rate, weights): + def _MDO_oversampling( + self, T: np.ndarray, v: np.ndarray, oversampling_rate: int, weights: np.ndarray + ) -> np.ndarray: oversampled_set = list() V = np.clip(np.copy(v), a_min=0.001, a_max=None) for _ in range(oversampling_rate): @@ -173,7 +185,9 @@ def _MDO_oversampling(self, T, v, oversampling_rate, weights): return np.array(oversampled_set) - def calculate_same_class_neighbour_quantities(self, S_minor, S_minor_label): + def calculate_same_class_neighbour_quantities( + self, S_minor: np.ndarray, S_minor_label: str + ) -> np.ndarray: minority_class_neighbours_indices = self.knn.kneighbors( S_minor, return_distance=False ) diff --git a/multi_imbalance/resampling/soup.py b/multi_imbalance/resampling/soup.py index 12d3f99..04a493e 100644 --- a/multi_imbalance/resampling/soup.py +++ b/multi_imbalance/resampling/soup.py @@ -1,6 +1,7 @@ from collections import Counter, defaultdict from copy import deepcopy from operator import itemgetter +from typing import Tuple, Union import numpy as np import sklearn @@ -18,7 +19,9 @@ class SOUP(BaseSampler): which are in the safest area in space """ - def __init__(self, k: int = 7, shuffle=False, maj_int_min=None) -> None: + def __init__( + self, k: int = 7, shuffle: bool = False, maj_int_min: Union[dict, None] = None + ): """ :param k: number of neighbors @@ -36,7 +39,9 @@ def __init__(self, k: int = 7, shuffle=False, maj_int_min=None) -> None: self.dsc_maj_cls, self.asc_min_cls = None, None self._X, self._y = None, None - def _fit_resample(self, X, y): + def _fit_resample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: """ The method computes the metrics required for resampling based on the given set @@ -83,7 +88,9 @@ def _fit_resample(self, X, y): return np.array(self._X), np.array(self._y) - def _construct_class_safe_levels(self, X, y, class_name) -> defaultdict: + def _construct_class_safe_levels( + self, X: np.ndarray, y: np.ndarray, class_name: str + ) -> defaultdict: self.quantities = Counter(y) indices_in_class = [i for i, value in enumerate(y) if value == class_name] @@ -102,7 +109,9 @@ def _construct_class_safe_levels(self, X, y, class_name) -> defaultdict: return class_safe_levels - def _calculate_sample_safe_level(self, class_name, neighbours_quantities: Counter): + def _calculate_sample_safe_level( + self, class_name: str, neighbours_quantities: Counter + ) -> float: safe_level = 0 q: Counter = self.quantities @@ -119,7 +128,9 @@ def _calculate_sample_safe_level(self, class_name, neighbours_quantities: Counte return safe_level - def _undersample(self, X, y, class_name): + def _undersample( + self, X: np.ndarray, y: np.ndarray, class_name: str + ) -> Tuple[np.ndarray, np.ndarray]: safe_levels_of_samples_in_class = self._construct_class_safe_levels( X, y, class_name ) @@ -138,7 +149,9 @@ def _undersample(self, X, y, class_name): return X, y - def _oversample(self, X, y, class_name): + def _oversample( + self, X: np.ndarray, y: np.ndarray, class_name: str + ) -> Tuple[np.ndarray, np.ndarray]: safe_levels_of_samples_in_class = self._construct_class_safe_levels( X, y, class_name ) @@ -161,7 +174,9 @@ def _oversample(self, X, y, class_name): return X, y - def _calculate_goal_quantity(self, maj_int_min=None): + def _calculate_goal_quantity( + self, maj_int_min: Union[dict, None] = None + ) -> Union[int, float]: if maj_int_min is None: maj_q = max(list(self.quantities.values())) min_q = min(list(self.quantities.values())) diff --git a/multi_imbalance/resampling/spider.py b/multi_imbalance/resampling/spider.py index 91f2075..4b90041 100644 --- a/multi_imbalance/resampling/spider.py +++ b/multi_imbalance/resampling/spider.py @@ -1,4 +1,5 @@ from collections import Counter +from typing import Tuple, Union import numpy as np from imblearn.base import BaseSampler @@ -18,7 +19,12 @@ class SPIDER3(BaseSampler): on Computer Recognition Systems CORES 2017 """ - def __init__(self, k, maj_int_min=None, cost=None): + def __init__( + self, + k: int, + maj_int_min: Union[dict, None] = None, + cost: Union[np.ndarray, None] = None, + ): """ :param k: Number of nearest neighbors considered while resampling. @@ -37,7 +43,9 @@ def __init__(self, k, maj_int_min=None, cost=None): self.cost = cost self.AS, self.RS = np.array([]), np.array([]) - def _fit_resample(self, X, y): + def _fit_resample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: """ Performs resampling @@ -66,7 +74,7 @@ def _fit_resample(self, X, y): return self.DS[:, :-1], self.DS[:, -1] - def _initialize_algorithm(self, X, y): + def _initialize_algorithm(self, X: np.ndarray, y: np.ndarray): if self.maj_int_min is None: self.maj_int_min = construct_maj_int_min(y) self.majority_classes = self.maj_int_min["maj"] @@ -78,7 +86,7 @@ def _initialize_algorithm(self, X, y): self.cost = self._estimate_cost_matrix(y) @staticmethod - def _estimate_cost_matrix(y): + def _estimate_cost_matrix(y: Union[np.ndarray, list]) -> np.ndarray: """ Method that estimates cost matrix automatically. For example given imbalance ratios of 1:2:6, the estimated matrix will be: @@ -102,7 +110,7 @@ def _estimate_cost_matrix(y): np.fill_diagonal(cost, 0) return cost - def _sort_by_cardinality(self, y): + def _sort_by_cardinality(self, y: Union[list, np.ndarray]) -> Tuple[list, list]: class_cardinality = Counter(y) # to ensure looping over classes with decreasing cardinality. int_classes = sorted( @@ -113,14 +121,14 @@ def _sort_by_cardinality(self, y): ) return int_classes, min_classes - def amplify(self, int_min_class): + def amplify(self, int_min_class: str): self._restart_perspective() int_min_ds = self.DS[self.DS[:, -1] == int_min_class] for x in int_min_ds: self._amplify_nn(x) self._restore_perspective() - def clean(self, int_min_class): + def clean(self, int_min_class: str): self._restart_perspective() int_min_ds = self.DS[self.DS[:, -1] == int_min_class] int_min_as = self._calc_int_min_as(int_min_class) @@ -128,7 +136,7 @@ def clean(self, int_min_class): self._clean_nn(x) self._restore_perspective() - def relabel(self, int_min_class): + def relabel(self, int_min_class: str): self._restart_perspective() int_min_ds = self.DS[self.DS[:, -1] == int_min_class] for x in int_min_ds: @@ -159,15 +167,15 @@ def _restore_perspective(self): if dataset.shape[0] > 0: self._denormalize(dataset) - def _normalize(self, dataset): + def _normalize(self, dataset: np.ndarray): for col in range(dataset.shape[1] - 1): dataset[:, col] = (dataset[:, col] - self.means[col]) / (4 * self.stds[col]) - def _denormalize(self, dataset): + def _denormalize(self, dataset: np.ndarray): for col in range(dataset.shape[1] - 1): dataset[:, col] = dataset[:, col] * self.stds[col] * 4 + self.means[col] - def _calc_int_min_as(self, int_min_class): + def _calc_int_min_as(self, int_min_class: str) -> np.ndarray: """ Helper method to calculate examples form AS that belong to int_min_class parameter class. :param int_min_class: @@ -193,7 +201,7 @@ def _calculate_weak_majority_examples(self): if majority_class not in self._min_cost_classes(x, self.DS): self.RS = union(self.RS, np.array([x])) - def _min_cost_classes(self, x, DS): + def _min_cost_classes(self, x: np.ndarray, DS: np.ndarray) -> np.ndarray: """ Utility function that aims to identify minimum-cost classes, i.e. classes leading to the minimum cost after being (mis)classified as classes appearing in the neighborhood of x. @@ -222,7 +230,7 @@ def _min_cost_classes(self, x, DS): vals = np.round(vals, 6) return C[vals == vals[np.argmin(vals)]] - def _relabel_nn(self, x): + def _relabel_nn(self, x: np.ndarray): """ Performs relabeling in the nearest neighborhood of x. @@ -241,7 +249,7 @@ def _relabel_nn(self, x): neighbor[-1] = x[-1] self.AS = union(self.AS, np.array([neighbor])) - def _clean_nn(self, x): + def _clean_nn(self, x: np.ndarray): """ Performs cleaning in the nearest neighborhood of x. @@ -256,7 +264,7 @@ def _clean_nn(self, x): self.DS = setdiff(self.DS, np.array([neighbor])) self.RS = setdiff(self.RS, np.array([neighbor])) - def _knn(self, x, DS): + def _knn(self, x: np.ndarray, DS: np.ndarray) -> np.ndarray: """ Returns k nearest neighbors of x in DS that belong to c class if specified. @@ -296,7 +304,7 @@ def _knn(self, x, DS): return DS[indices] - def _amplify_nn(self, x): + def _amplify_nn(self, x: np.ndarray): """ Artificially amplifies example x by adding a copy of it to the AS. @@ -311,8 +319,8 @@ def _amplify_nn(self, x): self.AS = union(self.AS, np.asarray([y])) @staticmethod - def _class_of(example): + def _class_of(example: np.ndarray): return example[-1] - def _ds_as_rs_union(self): + def _ds_as_rs_union(self) -> np.ndarray: return union(self.DS, union(self.AS, self.RS)) diff --git a/multi_imbalance/resampling/static_smote.py b/multi_imbalance/resampling/static_smote.py index 6f05f78..c91ae62 100644 --- a/multi_imbalance/resampling/static_smote.py +++ b/multi_imbalance/resampling/static_smote.py @@ -1,4 +1,5 @@ from collections import Counter +from typing import Tuple import numpy as np from imblearn.over_sampling import SMOTE @@ -19,7 +20,9 @@ def __init__(self): super().__init__() self._sampling_type = "over-sampling" - def _fit_resample(self, X, y): + def _fit_resample( + self, X: np.ndarray, y: np.ndarray + ) -> Tuple[np.ndarray, np.ndarray]: """ Performs resampling diff --git a/multi_imbalance/utils/array_util.py b/multi_imbalance/utils/array_util.py index 078a33e..fdda76f 100644 --- a/multi_imbalance/utils/array_util.py +++ b/multi_imbalance/utils/array_util.py @@ -1,7 +1,7 @@ import numpy as np -def setdiff(arr1, arr2): +def setdiff(arr1: np.ndarray, arr2: np.ndarray) -> np.ndarray: """ Performs the difference over two numpy arrays. @@ -19,7 +19,7 @@ def setdiff(arr1, arr2): return arr1 -def union(arr1, arr2): +def union(arr1: np.ndarray, arr2: np.ndarray) -> np.ndarray: """ Performs the union over two numpy arrays (not removing duplicates, as it's how the algorithm SPIDER3 actually works). @@ -40,7 +40,7 @@ def union(arr1, arr2): return np.append(arr1, arr2, axis=0) -def contains(dataset, example): +def contains(dataset: np.ndarray, example: np.ndarray) -> bool: """ Returns if dataset contains the example. :param dataset: @@ -53,7 +53,7 @@ def contains(dataset, example): return False -def index_of(arr, example): +def index_of(arr: np.ndarray, example: np.ndarray) -> int: """ :return: Index of learning exmaple in arr. """ @@ -63,7 +63,7 @@ def index_of(arr, example): return -1 -def intersect(arr1, arr2): +def intersect(arr1: np.ndarray, arr2: np.ndarray) -> np.ndarray: """ Performs the intersection operation over two numpy arrays (not removing duplicates). diff --git a/multi_imbalance/utils/data.py b/multi_imbalance/utils/data.py index 9bd3b3d..892e317 100644 --- a/multi_imbalance/utils/data.py +++ b/multi_imbalance/utils/data.py @@ -2,6 +2,7 @@ from collections import OrderedDict, Counter from pathlib import Path from statistics import median +from typing import Tuple, Union import numpy as np import pandas as pd @@ -11,7 +12,7 @@ import os -def construct_flat_2pc_df(X, y) -> pd.DataFrame: +def construct_flat_2pc_df(X: np.ndarray, y: np.ndarray) -> pd.DataFrame: """ This function takes two dimensional X and one dimensional y arrays, concatenates and returns them as data frame @@ -37,7 +38,7 @@ def get_project_root() -> Path: # pragma no cover def load_arff_dataset( path: str, one_hot_encode: bool = True, return_non_cat_length: bool = False -): +) -> Union[Tuple[np.ndarray, np.ndarray, int], Tuple[np.ndarray, np.ndarray]]: """ Load and return the dataset saved in arff type file @@ -85,7 +86,9 @@ def load_arff_dataset( return X.to_numpy(), y -def load_datasets_arff(return_non_cat_length=False, dataset_paths=None): +def load_datasets_arff( + return_non_cat_length: bool = False, dataset_paths: Union[str, None] = None +) -> OrderedDict: if dataset_paths is None: dataset_paths = glob.glob(os.path.join(get_project_root(), "data", "arff", "*")) @@ -107,7 +110,7 @@ def load_datasets_arff(return_non_cat_length=False, dataset_paths=None): return datasets -def construct_maj_int_min(y: np.ndarray, strategy="median") -> OrderedDict: +def construct_maj_int_min(y: np.ndarray, strategy: str = "median") -> OrderedDict: """ This function creates dictionary with information which classes are minority or majority diff --git a/multi_imbalance/utils/metrics.py b/multi_imbalance/utils/metrics.py index bb4170b..ee260da 100644 --- a/multi_imbalance/utils/metrics.py +++ b/multi_imbalance/utils/metrics.py @@ -1,7 +1,10 @@ from imblearn.metrics import geometric_mean_score +import numpy as np -def gmean_score(y_test, y_pred, correction: float = 0.001) -> float: # pragma no cover +def gmean_score( + y_test: np.ndarray, y_pred: np.ndarray, correction: float = 0.001 +) -> float: # pragma no cover """ Calculate geometric mean score diff --git a/multi_imbalance/utils/plot.py b/multi_imbalance/utils/plot.py index 3c66d22..4501634 100644 --- a/multi_imbalance/utils/plot.py +++ b/multi_imbalance/utils/plot.py @@ -3,13 +3,16 @@ import matplotlib.pyplot as plt import seaborn as sns from sklearn.decomposition import PCA +import numpy as np from multi_imbalance.utils.data import construct_flat_2pc_df sns.set_style("darkgrid") -def plot_cardinality_and_2d_data(X, y, dataset_name="") -> None: # pragma no cover +def plot_cardinality_and_2d_data( + X: np.ndarray, y: np.ndarray, dataset_name: str = "" +): # pragma no cover """ Plots cardinality of classes from y as well as scatter plot of X transformed to two dimensions using PCA @@ -52,8 +55,13 @@ def plot_cardinality_and_2d_data(X, y, dataset_name="") -> None: # pragma no co def plot_visual_comparision_datasets( - X1, y1, X2, y2, dataset_name1="", dataset_name2="" -) -> None: # pragma no cover + X1: np.ndarray, + y1: np.ndarray, + X2: np.ndarray, + y2: np.ndarray, + dataset_name1: str = "", + dataset_name2: str = "", +): # pragma no cover """ Plots comparision of X1 y1 and X2 y2 using plot_cardinality_and_2d_data, which plots cardinality of classes from y as well as scatter plot of X transformed to two dimensions using PCA From 59d988d15e64aeab4c964fb57d7037216eb37538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Fri, 4 Nov 2022 18:25:38 +0100 Subject: [PATCH 05/48] add tests --- multi_imbalance/utils/array_util.py | 2 +- tests/datasets/test_data_loader.py | 6 +- tests/ensemble/test_ecoc.py | 29 ++++++- tests/ensemble/test_ovo.py | 20 +++++ tests/resampling/test_spider.py | 37 --------- tests/utils/test_array_util.py | 113 ++++++++++++++++++++++++++++ tests/utils/test_data.py | 11 +++ 7 files changed, 176 insertions(+), 42 deletions(-) create mode 100644 tests/utils/test_array_util.py diff --git a/multi_imbalance/utils/array_util.py b/multi_imbalance/utils/array_util.py index fdda76f..a7b26d1 100644 --- a/multi_imbalance/utils/array_util.py +++ b/multi_imbalance/utils/array_util.py @@ -55,7 +55,7 @@ def contains(dataset: np.ndarray, example: np.ndarray) -> bool: def index_of(arr: np.ndarray, example: np.ndarray) -> int: """ - :return: Index of learning exmaple in arr. + :return: Index of learning example in arr. """ for i, x in enumerate(arr): if all(x == example): diff --git a/tests/datasets/test_data_loader.py b/tests/datasets/test_data_loader.py index 2c9bde6..ff2bec4 100644 --- a/tests/datasets/test_data_loader.py +++ b/tests/datasets/test_data_loader.py @@ -1,6 +1,7 @@ """Test the datasets loader. """ +import shutil from multi_imbalance.datasets import load_datasets from os.path import join @@ -27,7 +28,10 @@ def test_load_datasets(): print("Testing loading datasets") - datasets = load_datasets(data_home=join(".", "data")) + data_home = join(".", "data") + datasets = load_datasets(data_home=data_home) for k in DATASET_SHAPE.keys(): X = datasets[k].data assert DATASET_SHAPE[k] == X.shape + + shutil.rmtree(join(data_home, "extracted")) diff --git a/tests/ensemble/test_ecoc.py b/tests/ensemble/test_ecoc.py index 6acdadb..edadf7d 100644 --- a/tests/ensemble/test_ecoc.py +++ b/tests/ensemble/test_ecoc.py @@ -96,10 +96,13 @@ def test_no_oversampling(): @pytest.mark.parametrize( "encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"] ) -@pytest.mark.parametrize("oversampling", [None, "globalCS", "SMOTE", "SOUP"]) -def test_encoding(encoding_strategy, oversampling): +@pytest.mark.parametrize( + "oversampling, minority_classes", + [(None, None), ("globalCS", None), ("SMOTE", None), ("SOUP", [0, 2])], +) +def test_encoding(encoding_strategy, oversampling, minority_classes): ecoc_clf = ecoc.ECOC(encoding=encoding_strategy, preprocessing=oversampling) - ecoc_clf.fit(X, y) + ecoc_clf.fit(X, y, minority_classes=minority_classes) matrix = ecoc_clf._code_matrix number_of_classes = len(np.unique(y)) @@ -167,6 +170,26 @@ def test_unknown_classifier(): assert "DUMMY_CLASSIFIER" in str(e.value) +def test_unknown_encoding(): + ecoc_clf = ecoc.ECOC(encoding="dummy") + with pytest.raises(ValueError) as e: + ecoc_clf.fit(X, y) + assert ( + e.value.args[0] + == "Unknown matrix generation encoding: dummy, expected to be one of ['dense', 'sparse', 'complete', 'OVA', 'OVO']." + ) + + +def test_unknown_weighting_strategy(): + ecoc_clf = ecoc.ECOC(weights="dummy") + with pytest.raises(ValueError) as e: + ecoc_clf.fit(X, y) + assert ( + e.value.args[0] + == "Unknown weighting strategy: dummy, expected to be one of [None, 'acc', 'avg_tpr_min']." + ) + + def test_own_classifier_without_predict_and_fit(): class DummyClassifier: def foo(self, X, y): diff --git a/tests/ensemble/test_ovo.py b/tests/ensemble/test_ovo.py index 9d337ce..6b127ba 100644 --- a/tests/ensemble/test_ovo.py +++ b/tests/ensemble/test_ovo.py @@ -122,6 +122,26 @@ def test_predefined_classifiers_and_preprocessings_without_errors( assert len(predicted) == 3 +@pytest.mark.parametrize( + "clf, expected_exception", + [ + ( + "dummy", + "Unknown binary classifier: dummy, expected to be one of ['tree', 'NB', 'KNN'].", + ), + ( + lambda x: x, + "Your classifier must implement fit and predict methods", + ), + ], +) +def test_unknown_classifier(clf, expected_exception): + ovo_clf = ovo.OVO(binary_classifier=clf) + with pytest.raises(ValueError) as e: + ovo_clf.fit(X, y) + assert e.value.args[0] == expected_exception + + def test_unknown_preprocessing(): ovo_clf = ovo.OVO(preprocessing="DUMMY_OVERSAMPLING") with pytest.raises(ValueError) as e: diff --git a/tests/resampling/test_spider.py b/tests/resampling/test_spider.py index 5791f58..276f31c 100644 --- a/tests/resampling/test_spider.py +++ b/tests/resampling/test_spider.py @@ -3,7 +3,6 @@ import numpy as np from multi_imbalance.resampling.spider import SPIDER3 -from multi_imbalance.utils.array_util import union, intersect, setdiff cost = np.ones((3, 3)) np.fill_diagonal(cost, 0) @@ -12,42 +11,6 @@ ) -def test_union(): - arr1 = np.array([[1, 2, 3]]) - arr2 = np.array([[4, 5, 6]]) - actual = union(arr1, arr2) - expected = np.array([[1, 2, 3], [4, 5, 6]]) - assert (actual == expected).all() - - arr1 = np.array([[1, 2, 3], [4, 5, 6]]) - arr2 = np.array([[1, 2, 3]]) - - actual = union(arr1, arr2) - expected = np.array([[1, 2, 3], [4, 5, 6], [1, 2, 3]]) - - assert (actual == expected).all() - - -def test_intersect(): - arr1 = np.array([[1, 2, 3], [4, 5, 6]]) - arr2 = np.array([[1, 2, 3]]) - - actual = intersect(arr1, arr2) - expected = np.array([[1, 2, 3]]) - - assert (actual == expected).all() - - -def test_setdiff(): - arr1 = np.array([[1, 2, 3], [4, 5, 6]]) - arr2 = np.array([[1, 2, 3]]) - - actual = setdiff(arr1, arr2) - expected = np.array([[4, 5, 6]]) - - assert (actual == expected).all() - - def test_knn(): X = np.array([[1, 1], [1, -1], [-1, 1], [-1, -1], [0, 0]]).astype(object) diff --git a/tests/utils/test_array_util.py b/tests/utils/test_array_util.py new file mode 100644 index 0000000..b34ba36 --- /dev/null +++ b/tests/utils/test_array_util.py @@ -0,0 +1,113 @@ +import pytest +import numpy as np + + +from multi_imbalance.utils.array_util import setdiff, union, intersect, index_of + + +@pytest.mark.parametrize( + "arr1, arr2, expected", + [ + ( + [[1, 2, 3]], + [[4, 5, 6]], + [[1, 2, 3], [4, 5, 6]], + ), + ( + [[1, 2, 3], [4, 5, 6]], + [[1, 2, 3]], + [[1, 2, 3], [4, 5, 6], [1, 2, 3]], + ), + ( + [[1, 2, 3]], + [], + [[1, 2, 3]], + ), + ], +) +def test_union(arr1, arr2, expected): + arr1 = np.array(arr1) + arr2 = np.array(arr2) + actual = union(arr1, arr2) + expected = np.array(expected) + assert (actual == expected).all() + + +@pytest.mark.parametrize( + "arr1, arr2, expected", + [ + ( + [[1, 2, 3], [4, 5, 6]], + [[1, 2, 3]], + [[1, 2, 3]], + ), + ( + [[1, 2, 3], [4, 5, 6]], + [], + [], + ), + ], +) +def test_intersect(arr1, arr2, expected): + arr1 = np.array(arr1) + arr2 = np.array(arr2) + + actual = intersect(arr1, arr2) + expected = np.array(expected) + + assert (actual == expected).all() + + +@pytest.mark.parametrize( + "arr1, arr2, expected", + [ + ( + [[1, 2, 3], [4, 5, 6]], + [[1, 2, 3]], + [[4, 5, 6]], + ), + ( + [[1, 2, 3], [4, 5, 6]], + [], + [[1, 2, 3], [4, 5, 6]], + ), + ], +) +def test_setdiff(arr1, arr2, expected): + arr1 = np.array(arr1) + arr2 = np.array(arr2) + + actual = setdiff(arr1, arr2) + expected = np.array(expected) + + assert (actual == expected).all() + + +@pytest.mark.parametrize( + "arr1, arr2, expected", + [ + ( + [[1, 2, 3], [4, 5, 6]], + [1, 2, 3], + 0, + ), + ( + [[1, 2, 3], [4, 5, 6]], + [4, 5, 6], + 1, + ), + ( + [[1, 2, 3], [4, 5, 6]], + [7, 8, 9], + -1, + ), + ], +) +def test_index_of(arr1, arr2, expected): + arr1 = np.array(arr1) + arr2 = np.array(arr2) + + actual = index_of(arr1, arr2) + expected = np.array(expected) + + assert (actual == expected).all() diff --git a/tests/utils/test_data.py b/tests/utils/test_data.py index 459de9b..6502972 100644 --- a/tests/utils/test_data.py +++ b/tests/utils/test_data.py @@ -29,6 +29,17 @@ def test_preprocess(): assert x.shape == (7, 2) +def test_preprocess_without_one_hot_encode(): + dir_path = os.path.dirname(os.path.realpath(__file__)) + ds_path = os.path.join(dir_path, "ds_example.arrf") + x, y, non_cat = load_arff_dataset( + ds_path, return_non_cat_length=True, one_hot_encode=False + ) + assert all(y == np.array([0, 0, 0, 0, 0, 0, 0])) + assert non_cat == 2 + assert x.shape == (7, 2) + + def test_load_arff_datasets(): dir_path = os.path.dirname(os.path.realpath(__file__)) ds_paths = [os.path.join(dir_path, "ds_example.arrf")] From 71a6e3507f6096b3de86f3b46dcb51ca82df1c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 5 Nov 2022 17:04:29 +0100 Subject: [PATCH 06/48] tox toml and fix bug with cross val --- .github/workflows/tests.yml | 25 +++ README.md | 36 ++-- examples/ensemble/ecoc_pipeline.ipynb | 61 ++++++ examples/ensemble/mrbbagging.ipynb | 33 +++- examples/ensemble/mrbbagging_pipeline.ipynb | 39 ++-- examples/ensemble/ovo_pipeline.ipynb | 61 ++++++ examples/resampling/GlobalCS.ipynb | 105 +++++----- examples/resampling/StaticSMOTE.ipynb | 209 ++++++++++++++++++++ multi_imbalance/ensemble/ecoc.py | 3 +- multi_imbalance/ensemble/mrbbagging.py | 6 +- multi_imbalance/ensemble/ovo.py | 10 +- multi_imbalance/ensemble/soup_bagging.py | 11 +- multi_imbalance/resampling/static_smote.py | 7 +- pyproject.toml | 70 +++++++ requirements.txt | 104 ++-------- setup.cfg | 2 + setup.py | 39 ---- tests/resampling/test_mdo.py | 4 +- tox.ini | 22 +++ 19 files changed, 600 insertions(+), 247 deletions(-) create mode 100644 .github/workflows/tests.yml create mode 100644 examples/ensemble/ecoc_pipeline.ipynb create mode 100644 examples/ensemble/ovo_pipeline.ipynb create mode 100644 examples/resampling/StaticSMOTE.ipynb create mode 100644 pyproject.toml create mode 100644 setup.cfg delete mode 100644 setup.py create mode 100644 tox.ini diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..eb0efaf --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,25 @@ +name: Tests and code analysis +on: + - push + - pull_request + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + python-version: [['3.9', 'py39']] + + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version[0] }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version[0] }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox tox-gh-actions + - name: Test ${{ matrix.python-version[1] }} with tox + run: tox -e ${{ matrix.python-version[1] }} \ No newline at end of file diff --git a/README.md b/README.md index 0c4fc55..861ad0b 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,16 @@ Multi-class imbalance is a common problem occurring in real-world supervised classifications tasks. While there has already been some research on the specialized methods aiming to tackle that challenging problem, most of them still lack coherent Python implementation that is simple, intuitive and easy to use. multi-imbalance is a python package tackling the problem of multi-class imbalanced datasets in machine learning. ## Requirements -Tha package has been tested under python 3.6, 3.7 and 3.8. It relies heavily on scikit-learn and typical scientific stack (numpy, scipy, pandas etc.). +Tha package has been tested under python 3.9. It relies heavily on scikit-learn and typical scientific stack (numpy, scipy, pandas etc.). Requirements include: -* numpy>=1.17.0, -* scikit-learn>=0.22.0, -* pandas>=0.25.1, -* pytest>=5.1.2, -* imbalanced-learn>=0.6.1 -* IPython>=7.13.0, -* seaborn>=0.10.1, -* matplotlib>=3.2.1 +* numpy>=1.23.4, +* scikit-learn>=1.1.3, +* pandas>=1.5.1, +* pytest>=7.2.0, +* imbalanced-learn>=0.9.1 +* IPython>=8.6.0, +* seaborn>=0.12.1, +* matplotlib>=3.6.2 ## Installation @@ -91,11 +91,23 @@ We use pytest as our unit tests framework. To use it, simply run: pytest ``` -If you would like to check the code coverage: +If you would like to check the code coverage just install and use tox: ```bash -coverage run -m pytest -coverage report -m # or coverage html +pip install tox +tox ``` +multi-imbalance uses flake8 as code linter. To use it, simply run: +```bash +pip install flake8 +flake8 multi_imbalance +``` +If you would use project for local tests (e.g. run `examples/` with your code changes) type: +``` +pip install -U -e ".[all]" +``` +After that you can use multi-imbalance as normal Python package. Your next changes will be automatically loaded. + +Our project uses GitHub actions on push and pull request. The action runs tox with configuration define in tox.ini. multi-imbalance uses reStructuredText markdown for docstrings. To build the documentation locally run: ```bash diff --git a/examples/ensemble/ecoc_pipeline.ipynb b/examples/ensemble/ecoc_pipeline.ipynb new file mode 100644 index 0000000..f51d7cc --- /dev/null +++ b/examples/ensemble/ecoc_pipeline.ipynb @@ -0,0 +1,61 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.88118812 0.81188119 0.77227723 0.8019802 0.86138614]\n" + ] + } + ], + "source": [ + "import os\n", + "\n", + "from sklearn.model_selection import cross_val_score, ShuffleSplit\n", + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "from multi_imbalance.ensemble.ecoc import ECOC\n", + "from multi_imbalance.utils.data import load_arff_dataset\n", + "\n", + "# an example of how ecoc can be used in sklearn pipeline\n", + "X, y = load_arff_dataset(f\"{os.getcwd()}/../../data/arff/new_ecoli.arff\")\n", + "clf = make_pipeline(StandardScaler(), ECOC())\n", + "cv = ShuffleSplit(n_splits=5, test_size=0.3, random_state=0)\n", + "print(cross_val_score(clf, X, y, cv=cv))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.2 ('.test')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "354fe7bbb08ce19365ae7e9dc9251db0b8655780cc27fe67a2a3ffff5cc90304" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/ensemble/mrbbagging.ipynb b/examples/ensemble/mrbbagging.ipynb index df9d53f..51b8812 100644 --- a/examples/ensemble/mrbbagging.ipynb +++ b/examples/ensemble/mrbbagging.ipynb @@ -2,14 +2,16 @@ "cells": [ { "cell_type": "code", - "execution_count": 9, + "execution_count": 2, "metadata": {}, "outputs": [ { "data": { - "text/plain": "0.9772648059188251" + "text/plain": [ + "1.0" + ] }, - "execution_count": 9, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -18,7 +20,7 @@ "from imblearn.metrics import geometric_mean_score\n", "from sklearn.datasets import load_wine\n", "from sklearn.model_selection import train_test_split\n", - "from sklearn.tree import tree\n", + "from sklearn import tree\n", "\n", "from multi_imbalance.ensemble.mrbbagging import MRBBagging\n", "\n", @@ -55,11 +57,28 @@ ], "metadata": { "kernelspec": { - "name": "python3", + "display_name": "Python 3.9.2 ('.project_venv')", "language": "python", - "display_name": "Python 3" + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "vscode": { + "interpreter": { + "hash": "23e9df2d9424db89a1bc7cf8b9f3a46204923f77702e66b6afb0e7a76a59f4cc" + } } }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} diff --git a/examples/ensemble/mrbbagging_pipeline.ipynb b/examples/ensemble/mrbbagging_pipeline.ipynb index 70cf341..de0dc2f 100644 --- a/examples/ensemble/mrbbagging_pipeline.ipynb +++ b/examples/ensemble/mrbbagging_pipeline.ipynb @@ -2,32 +2,16 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/plutasnyy/anaconda3/envs/multi-imbalance/lib/python3.7/site-packages/sklearn/base.py:197: FutureWarning: From version 0.24, get_params will raise an AttributeError if a parameter cannot be retrieved as an instance attribute. Previously it would return None.\n", - " FutureWarning)\n", - "/home/plutasnyy/anaconda3/envs/multi-imbalance/lib/python3.7/site-packages/sklearn/base.py:197: FutureWarning: From version 0.24, get_params will raise an AttributeError if a parameter cannot be retrieved as an instance attribute. Previously it would return None.\n", - " FutureWarning)\n", - "/home/plutasnyy/anaconda3/envs/multi-imbalance/lib/python3.7/site-packages/sklearn/base.py:197: FutureWarning: From version 0.24, get_params will raise an AttributeError if a parameter cannot be retrieved as an instance attribute. Previously it would return None.\n", - " FutureWarning)\n", - "/home/plutasnyy/anaconda3/envs/multi-imbalance/lib/python3.7/site-packages/sklearn/base.py:197: FutureWarning: From version 0.24, get_params will raise an AttributeError if a parameter cannot be retrieved as an instance attribute. Previously it would return None.\n", - " FutureWarning)\n", - "/home/plutasnyy/anaconda3/envs/multi-imbalance/lib/python3.7/site-packages/sklearn/base.py:197: FutureWarning: From version 0.24, get_params will raise an AttributeError if a parameter cannot be retrieved as an instance attribute. Previously it would return None.\n", - " FutureWarning)\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "[0.83168317 0.86138614 0.82178218 0.85148515 0.84158416]\n" + "[0.81188119 0.84158416 0.8019802 0.87128713 0.83168317]\n" ] } ], @@ -37,7 +21,7 @@ "from sklearn.model_selection import cross_val_score, ShuffleSplit\n", "from sklearn.pipeline import make_pipeline\n", "from sklearn.preprocessing import StandardScaler\n", - "from sklearn.tree import tree\n", + "from sklearn import tree\n", "\n", "from multi_imbalance.ensemble.mrbbagging import MRBBagging\n", "from multi_imbalance.utils.data import load_arff_dataset\n", @@ -52,23 +36,28 @@ ], "metadata": { "kernelspec": { - "name": "python3", + "display_name": "Python 3.9.2 ('.test')", "language": "python", - "display_name": "Python 3" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "vscode": { + "interpreter": { + "hash": "354fe7bbb08ce19365ae7e9dc9251db0b8655780cc27fe67a2a3ffff5cc90304" + } } }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} diff --git a/examples/ensemble/ovo_pipeline.ipynb b/examples/ensemble/ovo_pipeline.ipynb new file mode 100644 index 0000000..0f109b0 --- /dev/null +++ b/examples/ensemble/ovo_pipeline.ipynb @@ -0,0 +1,61 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.77227723 0.79207921 0.82178218 0.8019802 0.78217822]\n" + ] + } + ], + "source": [ + "import os\n", + "\n", + "from sklearn.model_selection import cross_val_score, ShuffleSplit\n", + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "from multi_imbalance.ensemble.ovo import OVO\n", + "from multi_imbalance.utils.data import load_arff_dataset\n", + "\n", + "# an example of how ovo can be used in sklearn pipeline\n", + "X, y = load_arff_dataset(f\"{os.getcwd()}/../../data/arff/new_ecoli.arff\")\n", + "clf = make_pipeline(StandardScaler(), OVO())\n", + "cv = ShuffleSplit(n_splits=5, test_size=0.3, random_state=0)\n", + "print(cross_val_score(clf, X, y, cv=cv))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.2 ('.test')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "354fe7bbb08ce19365ae7e9dc9251db0b8655780cc27fe67a2a3ffff5cc90304" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/resampling/GlobalCS.ipynb b/examples/resampling/GlobalCS.ipynb index db44f63..737a536 100644 --- a/examples/resampling/GlobalCS.ipynb +++ b/examples/resampling/GlobalCS.ipynb @@ -14,7 +14,13 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "name": "stdout", @@ -27,14 +33,6 @@ " [0.23 0.32 0.48 0.5 0.55 0.25 0.35]]\n", "[0 0 0 0 0]\n" ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/plutasnyy/anaconda3/envs/multi-imbalance/lib/python3.7/site-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.datasets.base module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.datasets. Anything that cannot be imported from sklearn.datasets is now part of the private API.\n", - " warnings.warn(message, FutureWarning)\n" - ] } ], "source": [ @@ -55,69 +53,73 @@ "X, y = df[\"data\"], df[\"target\"]\n", "print(X[:5])\n", "print(y[:5])" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "Resample data using Global CS algorithm" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "Resample data using Global CS algorithm" + ] }, { "cell_type": "code", - "execution_count": 2, - "outputs": [], - "source": [ - "clf = GlobalCS()\n", - "resampled_X, resampled_y = clf.fit_resample(X, y)" - ], + "execution_count": 5, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } - } + }, + "outputs": [], + "source": [ + "clf = GlobalCS()\n", + "resampled_X, resampled_y = clf.fit_resample(X, y)" + ] }, { "cell_type": "markdown", - "source": [ - "Compare results by plotting data in 2 dimensions" - ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } - } + }, + "source": [ + "Compare results by plotting data in 2 dimensions" + ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 7, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, "outputs": [ { "data": { - "text/plain": "" + "text/plain": [ + "" + ] }, - "execution_count": 3, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { - "text/plain": "
", - "image/png": "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iPSaRCRCYHRRi8fME4/DCYWyVJGIDAS6x1ZEREREek2MADlnTcUcuwf21mKMKiJROISEq70+RaTzFGxFREREpFc1BSwCo0cSGDMK1/XwlWlFpIsUbEVERESk13mej+cp0YpI99A9tiIiIiIiItKvKdiKiIiIiIhIv6ZgKyIiIiIiIv2agq2IiIiIiIj0awq2IiIiIiIi0q8p2IqIiIiIiEi/1ueC7erVq7nooouYNWsWDz30ULbLERERERERkT6uTwVb13VZunQpDz/8MCtWrGD58uV88MEH2S5LRERERERE+rA+FWzXr1/P2LFjKS0txbZt5s2bx8qVK7NdloiIiIiIiPRhhu/7fraLSHvhhRf405/+xO233w7AsmXLWL9+PUuWLMlyZSIiIiIiItJX9amObVsZ2zCMLFQiIiIiIiIi/UWfCrYlJSVUVlY2f19VVUVRUVEWKxIREREREZG+rk8F2ylTplBRUcG2bdtwHIcVK1ZQVlaW7bJERERERESkD7OyXcChLMtiyZIlLF68GNd1ueyyy5g4cWK2yxIREREREZE+rE8tHiUiIiIiIiLSUX1qKrKIiIiIiIhIRynYioiIiIiISL+mYNtDVq9ezUUXXcSsWbN46KGHsl1Ov3Tbbbcxffp0Lr744myX0m/t2rWLK6+8kjlz5jBv3jx+8YtfZLukficej7No0SIuueQS5s2bx09/+tNsl9Rvua7LggULuPbaa7NdivRTtbW1XH311cyePZurr76a/fv3t3nczp07+fKXv8ycOXOYO3cu27dv7+VKOybTcQE0NDRw3nnnsXTp0l6ssOMyGdPGjRv5zGc+w7x58ygvL+f555/PQqXta++aznEcvv71rzNr1iwuv/zyPv/zltbeuB555BHmzp1LeXk5X/rSl9ixY0cWquyYTK+/X3jhBSZNmsTbb7/di9V1Xibjev7555k7dy7z5s3j5ptv7uUKO669Me3cuZMrr7ySBQsWUF5eziuvvNL+SX3pdslk0r/wwgv9rVu3+vF43C8vL/c3bdqU7bL6nddff93fsGGDP2/evGyX0m9VVVX5GzZs8H3f9+vr6/3Zs2frZ7GDPM/zGxoafN/3fcdx/EWLFvlvvvlmlqvqn37+85/7N910k3/NNddkuxTpp+666y7/wQcf9H3f9x988EH/7rvvbvO4L3zhC/6f//xn3/d9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LbNmzeKRRx7p079wSMtkXHfffTdNTU3ceOONzJ8/n69+9atZrvroMhlTf5TJuM477zwKCgqYO3cuX/rSl7j11lsZMmRIlis/skzG9O1vf5tf//rXXHLJJdx000388Ic/bPcXRobf15dtExERERERETkKdWxFRERERESkX1OwFRERERERkX5NwVZERERERET6NQVbERERERER6dcUbEVERERERKRfU7AVEREREellX/nKVzjjjDO49tprs12KyIBgZbsAEREREZFjzeLFi4lGo/zv//5vtksRGRDUsRURERER6SHr16+nvLyceDxOU1MT8+bN4/3332f69Onk5uZmuzyRAUMdWxERERGRHnLqqadSVlbGT37yE2KxGJdccgknnHBCtssSGXDUsRURERER6UHXX389r776Khs2bGDx4sXZLkdkQFKwFRERERHpQfv376epqYnGxkbi8Xi2yxEZkBRsRURERER60L/+679y4403Ul5ezj333JPtckQGJN1jKyIiIiLSQ5YtW4ZlWZSXl+O6LldccQVr167lv/7rv/joo49oampixowZ3H777Zx33nnZLlek3zJ83/ezXYSIiIiIiIhIZ2kqsoiIiIiIiPRrCrYiIiIiIiLSrynYioiIiIiISL+mYCsiIiIiIiL9moKtiIiIiIiI9GsKtiIiIiIiXVBWVsYpp5xCTU1Ni8fnz5/PpEmT2L59O9/+9rc55ZRTOP300zn99NO5+OKL+dGPfkR9fX2L11RWVnLzzTdz1llnMXXqVBYtWsRLL73Um8MR6ZcUbEVEREREumjUqFGsWLGi+fv33nuPWCzW4pivfOUrvPnmm6xbt4477riDv//973z2s5+lqakJgNraWj73uc9h2zbLly9n3bp1XHXVVdx888288MILvToekf5GwVZEREREpIvmz5/PsmXLmr9ftmwZCxYsaPPYUCjEqaeeyv33309tbS1PP/00AI8++ig5OTncfvvtDB8+nHA4zMUXX8xXv/pV7rrrLnzf75WxiPRHCrYiIiIiIl00depUGhoa+PDDD3Fdl+eff55LLrnkqK8ZNGgQZ599Nm+88QYAa9asYfbs2QQCLS/R58yZw86dO9m8eXOP1S/S3ynYioiIiIh0g3TX9tVXX+W4446juLi43dcUFRWxf/9+APbt28fw4cPbPCb9vIi0zcp2ASIiIiIi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\n" + "image/png": "iVBORw0KGgoAAAANSUhEUgAABScAAANVCAYAAACK9ksgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXhcZ333//d9llm0r5Ys7/sex3H2lUA2tpYE+gAtCSQ0KS0JPLQsP0iBBAopCUtJSUhJoASSJ/SBEEppn1LWJM6OQ5w4jtfYiTfJ2vfZzrl/f4w1kizJlmxJI9uf13X5suacmTn3OZZGns987/trrLUWERERERERERERkUnm5HsAIiIiIiIiIiIicnJSOCkiIiIiIiIiIiJ5oXBSRERERERERERE8kLhpIiIiIiIiIiIiOSFwkkRERERERERERHJC4WTIiIiIiIiIiIikhcKJ0VERERERERERCQvFE6KiIiIiIiIiIhIXiicFBERERERERERkbzw8j0AERERERERERns6quv5tlnnx20rbi4mOXLl3PjjTdy5pln5mlkIiLjS+GkiIiIiIiIyBS0fPlyPv/5zwMQBAGtra089NBDfPCDH+SnP/0pixYtyvMIRUSOncJJERERERERkSmoqKiIU089ddC2c889l3POOYef/vSnfOpTn8rPwERExpHWnBQRERERERE5TsTjcaLRKMYYIFtR+Z3vfIe3ve1tnHLKKZx66qm85z3v4emnn849JpFIcMstt3DhhReycuVKrrjiCr773e8Oet62tjY+97nPce6557Jq1Sr+1//6Xzz11FOTem4icnJS5aSIiIiIiIjIFGStJZPJ5L5ua2vj/vvvJ5VK8c53vhOAr371qzz00EP83d/9HUuWLKGhoYG77rqLj370o/z+978nHo/z5S9/mXXr1vGpT32KqqoqHnvsMW6//XbKysp45zvfSTKZ5P3vfz9NTU187GMfY9q0aTz88MP85V/+Jffddx/nnHNOPi+DiJzgFE6KiIiIiIiITEHPPfccK1asGLL9b//2b1mwYAEABw4c4GMf+xhXX311bn80GuWmm25iy5YtnHrqqTz77LOcd955vPWtbwXgrLPOoqCggMrKSgD+/d//nc2bN/N//+//ZfXq1QBceOGFXH311Xz1q1/l4YcfnuhTFZGTmMJJERERERERkSloxYoV3HrrrUC2crKjo4PHHnuMb3zjG/T09PCxj32Mr33tawC0tLTw6quv8tprr/G73/0OgFQqBWTDyB/96EfU19dz0UUXcdFFF/HhD384d5ynnnqK6upqVqxYkavUBLj44ou5/fbbaW9vp7S0dLJOW0ROMgonRURERERERKagwsJCVq1aNWjb+eefT09PD/fddx/XXHMN+/bt49Zbb+Wll14iHo+zcOFC6urqgGygCXDzzTdTW1vLz3/+c774xS/yxS9+kTVr1nDLLbewdOlS2traaGxsHLZKE6CxsVHhpIhMGIWTIiIiIiIiIseRlStX8uMf/5gdO3Zw0003sWTJEv7zP/+T+fPn4zgOjz76KL/85S9z949EIvz1X/81f/3Xf82+ffv43e9+x913383f/d3f8Z//+Z8UFxczd+5cvvrVrw57vJkzZ07WqYnISUjdukVERERERESOIy+++CKu6xKNRmlra+Oaa65h4cKFOE72Lf5jjz0GQBiGJBIJLr/8cr73ve8BUFdXx1/8xV/w1re+lX379gFw5plnsn//fiorK1m1alXuzxNPPMF9992H67r5OVEROSmoclJERERERERkCurq6uKFF17I3U6lUvz2t7/l4Ycf5t3vfjfz58+nqKiIe+65B8/z8DyPX/7yl/zkJz8BoLe3l1gsxooVK/jWt76F7/ssWbKEnTt38sgjj3D55ZcDcNVVV/HAAw9w7bXX8qEPfYjp06fz5JNPcu+99/K+970P3/fzcfoicpIwtm8RChERERERERGZEq6++mqeffbZQdui0SizZ8/mbW97Gx/84AfxfZ9nnnmG22+/ne3bt1NYWMiyZcv4m7/5G66//nre85738MlPfpKuri7+6Z/+id/85jc0NjZSWVnJW97yFj760Y8Si8UAaG5u5mtf+xq///3v6ezsZMaMGbzrXe/iuuuuy1VkiohMBIWTIiIiIiIiIiIikhf6+ENERERERERERETyQuGkiIiIiIiIiIiI5IXCSREREREREREREckLhZMiIiIiIiIiIiKSFwonRUREREREREREJC/yGk6+9tprfPCDH2TNmjW84Q1v4L777svt+4d/+AeWLFky6M8DDzyQ2/+LX/yCSy65hNWrV/PhD3+YlpaWfJyCiIiIiIiIiIiIHCVjrbX5OHAYhrz5zW9m1apV3Hjjjbz22mv87d/+Lbfc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m950GalU8oSa0g2qnBQREREREZFJNFWmKUcyEfY8lcoFk31sAAeeSjPjsggJJ3lMx+irRlQlooiMh5aWJmprp7Nq1ep8D2VcqXJSREREREREJk08tNS6LrWum9fALuWmmHaWjzlkZqRxofpMn5SXOuZj9FUjTtVKxF7HUB8E1AcBTYl0bntTIp3b3nuSVZCKTEVNTU389re/5u677+Rtb/tTjDmxfi5VOSkiIiIiIiInndBanMo0Nef6NDyZndptXKg514eqqbPm5ETqC08P1dewCOD6FbP617wUkbzo6urkttu+wIoVK3nPe96X7+GMO4WTIiIiIiIiclIaGFAeeDrNtLOPPZgc2FimrxqxKZHONQLSFG8RGau5c+fxq189lu9hTBiFkyIiIiIiInLS6gsoZ14RIeWljrlicrhqxKlaiThw/c+mRDo3zisX1FIV83P3yde6oCJyclA4KSIiIiIiIie10Nps85swv+NwHIcgmLxBxEPbH5TG+rdXxXxq+7YrmBSRCaZwUkRERERERGScDFeNOJpKxExPSLDHw58ekmZqNtAREZkICidFRERERERExslw1YhHqkT0rUfT+oCWLWmKF7gUr/QmPaAcGKpqKreITCaFkyIiIiIiIiJ54luPjo2Q3BMA0LEjACY/oBwUqiqYFJFJ5OR7ACIiIiIiIiInor5qxFJ/+LqgvmCy89Vg0PaOHQGdG8GfhHqiXsdQHwTUBwG9jpnw44mIHEqVkyIiIiIiIiITIFeNOEIlogkd0m2Dg0kHgzWWVJvFBC5McGPvgd3Fp1IncRGZWMlkkq9//Ss8+uhviUajvOc9V/Pe974vL2NROCkiIiIiIiIyDnodQ3s6Q6nvER/F1OiUm6Lq3AhNT4LtAmMd0m2Workulec4pNzUJIxaRE5Gd9/9TTZvfoVvfvMe6uv386Uv3UJtbS0XX3zJpI9F07pFRERERERExkFfFWJ7evRrRWYDShe/BFKtFr/UUDDLIegCYyZmmvXAqdxNiXRue1MirendIvkQhriv7cV7eRvua3shDCf0cL29vfzHf/w7H/3o37FkyVIuuuhi/vzPr+bhh//vhB53JKqcFBEREREZIJlMcuutt/I///M/xGIxrrvuOq677rrDPmbPnj28/e1v55577uGss86apJGKTE0RM/mdpseDMeAnIljfknbSR37AOCue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k0Dq81gs1uHHKSrK7dK6eprCrx+f6RJEREQyqrAwO9MliOxVcXHP+Xm0J9XS02msOk5j1XEaq47TWHWcxqrjNFad01Xj1Wv7CPx+f5sQMvl5IBDIREkiIiIiIiIiIiLSCb02nCwvL2f79u0kEonUsaqqKgKBAHl5eRmsTERERERERERERDqi14aT48aNw+PxsHDhwtSxBQsWMHHiRMy+uLCUiIiIiIiIiIhIH9NrU7xgMMicOXO4+eabWbx4MW+99RYPP/wwF154YaZLExERERERERERkQ4wXLf37lUdDoe5+eabeeONN8jJyeHSSy/loosuynRZIiIiIiIiIiIi0gG9OpwUERERERERERGR3qvXTusWERERERERERGR3k3hpIiIiIiIiIiIiGSEwkkRERERERERERHJCIWTIiJdLBqN8qMf/Yjp06czc+ZMHn744UyXJCIi0orrutxzzz0cccQRHH744dx11104jrPH22/atInvfOc7TJ48mRNPPJHXXnstjdVmVmfHKqmhoYGjjz6a+fPnp6HKnqGzY7Vw4ULOPfdcpkyZwsknn8wzzzyTxmrTrzM/I37xxRecc845TJ48mbPOOoslS5aksdLM68xYvf3225xxxhlMmTKF008/nb/85S9prDTz9ue9x4YNG5gyZQoffvhhGirsOTozVsuWLeO8885j0qRJnH766XzwwQdprLRn6Mx4vfnmm8yePZspU6Zw3nnn8fnnn3fqWgonRUS62F133cWSJUt49NFHuemmm7j//vt5/fXXM12WiIhIyiOPPMIrr7zC/fffz3333cfLL7/MI4880u5tE4kEV1xxBR6Ph+eff55LL72Ua6+9luXLl6e56szozFi1dPfdd7Nt27Y0VNhzdGasqqqq+M53vsPhhx/O888/z9VXX82tt97K22+/nd6i06ijPyOGQiEuv/xypk+fzvz585kyZQpXXHEFoVAoA1VnRkfHaunSpVx55ZWcddZZvPDCC5x77rl8//vfZ+nSpRmoOjP2573HzTfffFC9npI6OlYNDQ1ccskljBw5kpdffpkTTzyRK6+8kpqamgxUnTkdHa8VK1bwgx/8gCuuuIIXX3yRcePGccUVVxAOhzt+MVdERLpMU1OTO3HiRPeDDz5IHXvggQfc888/P4NViYiItHbMMce4zz33XOrzF154wT3uuOPave1b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Vn88Hg/FxcUHTWDSmdfVs88+y4cffshtt91GXl4eVVVVVFVV9dkNBPf1M2JVVRWRSASAWbNmUV9fz7x581i5ciXz5s0jHA4ze/bsTD6FtOnMWP3617+msrIy1a2cfB0dLLt1d3SsAoFAm+9P0PxLhY6uCdjbdeZ1de6557Js2TL+93//l3Xr1vE///M/rF+/njPOOCOTTyGtOjNe3/jGN3j66ad54YUXWLduHffccw+bNm3izDPP7PgFXRER6VKhUMi99tpr3UMPPdSdOXOm+8gjj2S6JBERkVYSiYR7++23u9OnT3dnzJjh3n333a7jOKnzxx13nHvfffelPl+xYoX7rW99y50wYYJ70kknuX/+858zUXZGdHasWjruuOPc5557Ll2lZlxnxuqSSy5xR48e3ebP+eefn6nyu93efkYcPXp0q9fKokWL3Dlz5rgTJ050zz77bPfzzz/PQMWZ09GxOvnkk9t9HV133XUZqjz9OvO6amn06NHuBx98kKYqe4bOjNXHH3/snnnmme6ECRPcM844w/3oo48yUHFmdWa8nn76aXfWrFnuoYce6p533nnukiVLOnUtw3V39oqLiIiIiIiIiIiIpJGmdYuIiIiIiIiIiEhGKJwUERERERERERGRjFA4KSIiIiIiIiIiIhmhcFJEREREREREREQyQuGkiIiIiIiIiIiIZITCSREREREREREREckIhZMiIiIiIiIiIiKSEQonRUREREREREREJCMUToqIiIiIiIj0YbFYjNNOO40PP/ww06WIiLShcFJERERERESkj4pGo/z3f/83K1asyHQpIiLtUjgpIiIiIiIi0getXLmSb3zjG1RWVma6FBGRPVI4KSIiIiIiItJLPfPMM0yYMIF169YBsGrVKiZOnMhbb73FRx99xIwZM3jqqacyXKWIyJ4Zruu6mS5CRERERERERDrPdV0uvPBCsrOz+X//7/9x/vnn069fP+69995WtxszZgyPPfYYM2bMyFClIiLtU+ekiIiIiIiISC9lGAa33HIL//znP/nhD3/ImjVruOGGGzJdlohIhymcFBEREREREenFhg0bxuWXX84rr7zCtddeS1FRUaZLEhHpMIWTIiIiIiIiIr3c0qVLsSyLDz/8MNOliIh0isJJERERERERkV7srbfe4r333uPBBx/k5Zdf5v333890SSIiHaZwUkRERERERKSXamxs5NZbb+Xf//3f+epXv8r555/PTTfdRDQazXRpIiIdonBSREREREREpJf6xS9+QSAQ4OKLLwbgyiuvJBQK8cADD2S4MhGRjjFc13UzXYSIiIiIiIiIiIgcfNQ5KSIiIiIiIiIiIhmhcFJEREREREREREQyQuGkiIiIiIiIiIiIZITCSREREREREREREckIhZMiIiIiIiIiIiKSEQonRUREREREREREJCMUToqIiIiIiIiIiEhGKJwUERERERERERGRjFA4KSIiIiIiItJNVq1axa233srJJ5/M5MmTmTZtGueeey5/+MMfSCQSAGzYsIExY8Ywf/78Dj/u/txnTy644AIuuOCCNsfff/99rrzySo4++mgmT57MySefzJ133klNTU2b2y5YsIDvfve7zJgxgwkTJnDsscfyox/9iPXr1x9wfSLSt3kyXYCIiIiIiIhIX/Taa69x/fXXM2LECC6++GKGDRtGJBLhnXfe4fbbb+fdd9/lV7/6VabLbNc999zDb3/7W2bNmsUNN9xAQUEBy5Yt46GHHuKNN97g8ccfp3///kBziHnZZZdx4oknMm/ePHJzc6msrOThhx/m7LPP5plnnmHw4MEZfkYi0lMpnBQRERERERHpYqtWreL666/n6KOP5pe//CUez66338cccwwzZszg6quv5k9/+hOTJk3KYKVtvfrqqzz00ENcf/31XHTRRanjRxxxBMcccwxnnnkm8+bN4/777wfgwQcfZNKkSfzyl79M3XbGjBkcc8wxnHjiiTzyyCPcdNNNaX4WItJbKJwUERERERER6WK//e1vMU2Tn/70p62CyaSTTz6ZOXPm7PH+a9eu5ec//zkLFiygqamJiRMn8p//+Z9Mmzat1e22bt3KFVdcwfvvv09hYSFnnXUW3/ve97AsC4BIJMIDDzzAn//8ZzZt2oTP52Py5Mlce+21jBs3rt1r/+Y3v2HkyJF8+9vfbnNu6NChXHPNNYTDYVzXxTAMqquryc3NbXPbsrIybrzxRgoLC/c2VCJykNOakyIiIiIiIiJd7C9/+QtHHHEExcXFe7zNnXfeySmnnNLm+MqVK5k7dy4bNmzgxhtv5J577sEwDL797W/z0Ucftbrt//7v/1JcXMwDDzzAWWedxYMPPsidd96ZOn/ttdfy3HPPcfnll/Pwww9z/fXXs2LFCn7wgx/gum6ba1dVVbF06VKOPfZYDMNot+5vfvObXHrppanzxx57LJ9++ikXXHABzz77bKt1Js855xxOOOGEvQ+WiBzU1DkpIiIiIiIi0oXq6uqoq6tj6NChbc4lN8FJai8AvP/++/H5fDz22GPk5OQAzQHgaaedxl133cWzzz6buu3RRx/N7bffnvq4sbGRP/zhD/zHf/wHWVlZNDU1ceONN6ZC0MMPP5zGxkZ+9rOfUV1dTWlpaatrb968GYCBAwd2+Pl+//vfp6GhgWeffTYVnvbr149jjjmGiy66iOHDh3f4sUTk4KPOSREREREREZEu5DhOu8fXrVvH+PHjW/058cQT29zuo48+4rjjjksFkwAej4dTTz2VJUuW0NTUlDo+e/bsVvc96aSTiMfjLFq0CJ/Px+9+9ztOOeUUtm7dygcffMAf//hH/va3vwEQi8XaXDs5BX1Pz6E9Pp+PW265hXfeeYd58+Zx+umn4zgOTz31FF//+td54403OvxYInLwUeekiIiIiIiISBcqLCwkKyuLjRs3tjrev3//Vl2PDzzwAMuXL29z/7q6OkpKStocLykpwXVdGhsbU8d273wsKipKPQbAu+++y+23387q1avJzs5m7NixZGVlAbQ7rbt///4YhtGm9t3r83g8ZGdntzpeWlrK2Wefzdlnnw3ABx98wDXXXMPNN9/MCSecgGmqP0pE2tJ3BhEREREREZEu9rWvfY333nuvVZDo8/mYOHFi6k9BQUG7983Pz6e6urrN8aqqKoBWG8wkQ8ik5P2Ki4uprKzke9/7HuPGjePNN99kwYIF/OEPf+C4447bY92FhYWMHz+ed999t93wEpqnnR9xxBFUV1ezaNEijjzySP7xj3+0ud0RRxzBpZdeSk1NDdu3b9/jNUXk4KZwUkRERERERKSLXX755SQSCW688cZ2p09HIpFWG8e0dNhhh/G3v/2tVbBp2zavvvoqEydOxOfzpY6//fbbre776quvEgwGmTx5MkuWLCEajXL55ZczePDg1PqW7777LtB+5yTApZdeyvLly3n88cfbnFu5ciXPPfccRx55JCUlJQwdOpRwOMxjjz3W7lTwNWvWUFpamuroFBHZnaZ1i4iIiIiIiHSxMWPGcPfdd3P99dczd+5czj77bMaMGUMikeDTTz/l2Wefpbq6mssuu6zNfa+88kr+/ve/c+GFF3L55Zfj9Xp5/PHHWb9+Pb/97W9b3faNN96gvLycI488kvfee4+nnnqK73//++Tk5DB+/Hg8Hg933303l1xyCbFYjPnz56cCzVAo1G7tp5xyCv/85z+57bbbWLRoEbNmzSIrK4vFixfzyCOPUFhYyG233QY0d3led9113HTTTXzzm9/kG9/4BoMGDaKhoYE333yT559/PrXbuIhIewx3T78qEREREREREZEDsnHjRp588knefvttNm7ciOu6DBo0iKOOOopzzz2XoUOHsmHDBo4//njuuOMO5s6dC8CXX37Jz3/+cz7++GMMw2DSpElceeWVTJ8+HSB1n9tuu41XX32VBQsWUFpaykUXXcSFF16Yuv7rr7/O/fffT2VlJfn5+Rx66KFceOGFXHDBBfz4xz/mW9/6FhdccAEAv//971vV/vLLL/P000+zatUqmpqaqKio4Pjjj+fSSy9tNbUc4P333+exxx7js88+Y8eOHWRnZzNp0iQuu+wyZsyY0Z1DLCK9nMJJERERERERERERyQitOSkiIiIiIiIiIiIZoXBSREREREREREREMkLhpIiIiIiIiIiIiGSEwkkRERERERERERHJCIWTIiIiIiIiIiIikhEKJ0VERERERERERCQjFE6KiIiIiIiIiIhIRiicFBERERERERERkYzwZLqATKupacB1M12FiIiISOcYBhQX52a6DOkCPeHn0eTrqSfU0tNprDpOY9VxGquO01h1nMaq4zRWndNyvODAfyY96MNJ10UvPBERERHJmJ7082hPqqWn01h1nMaq4zRWHaex6jiNVcdprDqnq8ZK07pFREREREREREQkIxROioiIiIiIiIiISEYonBQREREREREREZGMOOjXnBQREREREREREdlfruviODaO42S6lC5nmiamaWEYRrddQ+GkiIiIiIiIiIjIfkgk4tTV1RKPRzJdSrfx+QLk5RXh8Xi75fEVToqIiIiIiIiIiHSS67rU1GzBNE3y80uwLE+3dhimm+u62HaCxsYd1NRsoaxsYLc8P4WTIiIiIiIiIiIinZRIxHFdh/z8Uny+QKbL6SZ+LMuitnYriUQcr9fX5VfQhjgiIiIiIiIiIiL7yTD6drzW3c+vb4+eiIiIiIiISDer8xisiMep8/Sd6ZwiIumicFJERERERETkAGwLx/jBe0vZFo51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U7xYLMZb3/pWPvWpT7Fhwwaef/55vvWtb3HbbbdluzQRERERERERERHpB8uY87dXdTKZ5FOf+hS//OUvyc3N5Y477uDd7353tssSERERERERERGRfjivw0kRERERERERERE5f523y7pFRERERERERETk/KZwUkRERERERERERLJC4aSIiIiIiIiIiIhkhcJJEZFBlkqleOCBB1iyZAkrVqzgW9/6VrZLEhER6cEYw6OPPsqyZcu49NJLefjhhwmCoM/r19TU8L73vY/58+dz7bXX8otf/GIYq82ugY7VcW1tbVxxxRX88Ic/HIYqR4aBjtX69et5+9vfzsKFC7nuuut45plnhrHa4TeQvxE3b97MX/zFXzB//nxuuukmNm7cOIyVZt9Axuq3v/0tb3nLW1i4cCF/9md/xq9//ethrDT7zua9x8GDB1m4cCGrV68ehgpHjoGM1bZt27j11luZN28ef/Znf8aqVauGsdKRYSDj9atf/Yo3velNLFy4kFtvvZVNmzYN6LEUToqIDLKHH36YjRs38uSTT/LJT36Sr3zlK/zv//5vtssSERHp9sQTT/Dcc8/xla98hS996Uv87Gc/44knnuj1up7ncdddd+G6Lj/60Y+44447+MhHPsL27duHuersGMhYneyRRx7h6NGjw1DhyDGQsaqrq+N973sfl156KT/60Y+49957+cxnPsNvf/vb4S16GPX3b8REIsGdd97JkiVL+OEPf8jChQu56667SCQSWag6O/o7Vlu3buXuu+/mpptu4sc//jFvf/vb+bu/+zu2bt2ahaqz42zee3zqU5+6qJ5Px/V3rNra2rj99tuZMmUKP/vZz7j22mu5++67aWhoyELV2dPf8dqxYwd///d/z1133cVPfvITZs6cyV133UUymez/gxkRERk0HR0dZu7cuWbVqlXdx7761a+ad77znVmsSkREpKerrrrKPPvss92Xf/zjH5urr7661+s+//zzZvHixaatra372N/+7d+ap59+esjrHAkGMlbHvfTSS+baa681l19+eY/bXugGMlbf+973zPXXX9/j2Mc//nHzoQ99aEhrzJaB/I34zDPPmNe//vUmCAJjjDFBEJhrr732onkuDWSsHnnkEXPHHXf0OHb77bebf/mXfxnyOkeCs3nv8ZOf/MS8/e1vN9OmTetxuwvdQMbqySefNG94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AwcO8Ja3vCWbX8KwGsh43XLLLfz3f/83P/7xj9m3bx+PPvooNTU13Hjjjf1/QCMiIoMqkUiYj3zkI2bBggVmxYoV5oknnsh2SSIiIj14nmceeughs2TJErN06VLzyCOPmCAIus9fffXV5ktf+lL35R07dph3vOMdZs6cOeaNb3yj+b//+79slJ0VAx2rk1199dXm2WefHa5Ss24gY3X77bebadOmnfbvne98Z7bKH3Jn+htx2rRpPZ4r1dXV5q1vfauZO3euufnmm82mTZuyUHH29Hesrrvuul6fRx/96EezVPnwG8jz6mTTpk0zq1atGqYqR4aBjNXLL79sbrzxRjNnzhzzlre8xaxZsyYLFWfXQMbrv//7v831119vFixYYG699VazcePGAT2WZcyxueIiIiIiIiIiIiIiw0jLukVERERERERERCQrFE6KiIiIiIiIiIhIViicFBERERERERERkaxQOCkiIiIiIiIiIiJZoXBSREREREREREREskLhpIiIiIiIiIiIiGSFwkkRERERERERERHJCoWTIiIiIiIiIiIikhUKJ0VEREREREQuYOl0mje/+c2sXr0626WIiJxG4aSIiIiIiIjIBSqVSvGhD32IHTt2ZLsUEZFeKZwUERERERERuQDt3LmTW265hf3792e7FBGRPimcFBERERERETlPPfPMM8yZM4d9+/YBsGvXLubOncvzzz/PmjVrWLp0Kd///vezXKWISN8sY4zJdhEiIiIiIiIiMnDGGG677TZycnL4+te/zjvf+U5GjRrFY4891uN606dP59vf/jZLly7NUqUiIr3TzEkRERERERGR85RlWXz605/mxRdf5MMf/jB79uzhYx/7WLbLEhHpN4WTIiIiIiIiIuexiRMncuedd/Lcc8/xkY98hOLi4myXJCLSbwonRURERERERM5zW7duxXEcVq9ene1SREQGROGkiIiIiIiIyHns+eef549//CPf+MY3+NnPfsbKlSuzXZKISL8pnBQRERERERE5T7W3t/OZz3yGv/3bv+XKK6/kne98J5/85CdJpVLZLk1EpF8UToqIiIiIiIicp77whS8QjUZ5z3veA8Ddd99NIpHgq1/9apYrExHpH8sYY7JdhIiIiIiIiIiIiFx8NHNSREREREREREREskLhpIiIiIiIiIiIiGSFwkkRERERERERERHJCoWTIiIiIiIiIiIikhUKJ0VERERERERERCQrFE6KiIiIiIiIiIhIViicFBERERERERERkaxQOCkiIiIiIiIiIiJZoXBSREREREREREREskLhpIiIiIiIiIiIiGSFwkkRERERERERERHJiv8fPZ+1du8eydEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] }, "metadata": {}, "output_type": "display_data" @@ -151,7 +153,7 @@ ")\n", "\n", "\n", - "axs[3].set_title(\"MDO\")\n", + "axs[3].set_title(\"GlobalCS\")\n", "sns.countplot(resampled_y, ax=axs[2], palette=p)\n", "resampled_X = pca.transform(resampled_X)\n", "df = construct_flat_2pc_df(resampled_X, resampled_y)\n", @@ -166,34 +168,33 @@ " legend=\"full\",\n", " palette=p,\n", ")" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } + ] } ], "metadata": { + "kernelspec": { + "display_name": "Python 3.9.2 ('.test')", + "language": "python", + "name": "python3" + }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" + "pygments_lexer": "ipython3", + "version": "3.9.2" }, - "kernelspec": { - "name": "python3", - "language": "python", - "display_name": "Python 3" + "vscode": { + "interpreter": { + "hash": "354fe7bbb08ce19365ae7e9dc9251db0b8655780cc27fe67a2a3ffff5cc90304" + } } }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} diff --git a/examples/resampling/StaticSMOTE.ipynb b/examples/resampling/StaticSMOTE.ipynb new file mode 100644 index 0000000..3aa6a11 --- /dev/null +++ b/examples/resampling/StaticSMOTE.ipynb @@ -0,0 +1,209 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "Unzip datasets and prepare data:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.49 0.29 0.48 0.5 0.56 0.24 0.35]\n", + " [0.07 0.4 0.48 0.5 0.54 0.35 0.44]\n", + " [0.56 0.4 0.48 0.5 0.49 0.37 0.46]\n", + " [0.59 0.49 0.48 0.5 0.52 0.45 0.36]\n", + " [0.23 0.32 0.48 0.5 0.55 0.25 0.35]]\n", + "[0 0 0 0 0]\n" + ] + } + ], + "source": [ + "from collections import Counter\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.decomposition import PCA\n", + "\n", + "from multi_imbalance.datasets import load_datasets\n", + "from multi_imbalance.resampling.static_smote import StaticSMOTE\n", + "from multi_imbalance.utils.data import construct_flat_2pc_df\n", + "\n", + "%matplotlib inline\n", + "sns.set_style(\"darkgrid\")\n", + "\n", + "df = load_datasets()[\"new_ecoli\"]\n", + "X, y = df[\"data\"], df[\"target\"]\n", + "print(X[:5])\n", + "print(y[:5])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "Resample data using StaticSMOTE algorithm" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (148) in class 2 will be larger than the number of samples in the majority class (class #0 -> 145)\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "clf = StaticSMOTE()\n", + "resampled_X, resampled_y = clf.fit_resample(X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "Compare results by plotting data in 2 dimensions" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABScAAANVCAYAAACK9ksgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXhcZ333//d9llm0r5Ys7/sex3H2lUA2tpYE+gAtCSQ0KS0JPLQsP0iBBAopCUtJSUhJoASSJ/SBEEppn1LWJM6OQ5w4jtfYiTfJ2vfZzrl/f4w1kizJlmxJI9uf13X5suacmTn3OZZGns987/trrLUWERERERERERERkUnm5HsAIiIiIiIiIiIicnJSOCkiIiIiIiIiIiJ5oXBSRERERERERERE8kLhpIiIiIiIiIiIiOSFwkkRERERERERERHJC4WTIiIiIiIiIiIikhcKJ0VERERERERERCQvFE6KiIiIiIiIiIhIXiicFBERERERERERkbzw8j0AERERERERERns6quv5tlnnx20rbi4mOXLl3PjjTdy5pln5mlkIiLjS+GkiIiIiIiIyBS0fPlyPv/5zwMQBAGtra089NBDfPCDH+SnP/0pixYtyvMIRUSOncJJERERERERkSmoqKiIU089ddC2c889l3POOYef/vSnfOpTn8rPwERExpHWnBQRERERERE5TsTjcaLRKMYYIFtR+Z3vfIe3ve1tnHLKKZx66qm85z3v4emnn849JpFIcMstt3DhhReycuVKrrjiCr773e8Oet62tjY+97nPce6557Jq1Sr+1//6Xzz11FOTem4icnJS5aSIiIiIiIjIFGStJZPJ5L5ua2vj/vvvJ5VK8c53vhOAr371qzz00EP83d/9HUuWLKGhoYG77rqLj370o/z+978nHo/z5S9/mXXr1vGpT32KqqoqHnvsMW6//XbKysp45zvfSTKZ5P3vfz9NTU187GMfY9q0aTz88MP85V/+Jffddx/nnHNOPi+DiJzgFE6KiIiIiIiITEHPPfccK1asGLL9b//2b1mwYAEABw4c4GMf+xhXX311bn80GuWmm25iy5YtnHrqqTz77LOcd955vPWtbwXgrLPOoqCggMrKSgD+/d//nc2bN/N//+//ZfXq1QBceOGFXH311Xz1q1/l4YcfnuhTFZGTmMJJERERERERkSloxYoV3HrrrUC2crKjo4PHHnuMb3zjG/T09PCxj32Mr33tawC0tLTw6quv8tprr/G73/0OgFQqBWTDyB/96EfU19dz0UUXcdFFF/HhD384d5ynnnqK6upqVqxYkavUBLj44ou5/fbbaW9vp7S0dLJOW0ROMgonRURERERERKagwsJCVq1aNWjb+eefT09PD/fddx/XXHMN+/bt49Zbb+Wll14iHo+zcOFC6urqgGygCXDzzTdTW1vLz3/+c774xS/yxS9+kTVr1nDLLbewdOlS2traaGxsHLZKE6CxsVHhpIhMGIWTIiIiIiIiIseRlStX8uMf/5gdO3Zw0003sWTJEv7zP/+T+fPn4zgOjz76KL/85S9z949EIvz1X/81f/3Xf82+ffv43e9+x913383f/d3f8Z//+Z8UFxczd+5cvvrVrw57vJkzZ07WqYnISUjdukVERERERESOIy+++CKu6xKNRmlra+Oaa65h4cKFOE72Lf5jjz0GQBiGJBIJLr/8cr73ve8BUFdXx1/8xV/w1re+lX379gFw5plnsn//fiorK1m1alXuzxNPPMF9992H67r5OVEROSmoclJERERERERkCurq6uKFF17I3U6lUvz2t7/l4Ycf5t3vfjfz58+nqKiIe+65B8/z8DyPX/7yl/zkJz8BoLe3l1gsxooVK/jWt76F7/ssWbKEnTt38sgjj3D55ZcDcNVVV/HAAw9w7bXX8qEPfYjp06fz5JNPcu+99/K+970P3/fzcfoicpIwtm8RChERERERERGZEq6++mqeffbZQdui0SizZ8/mbW97Gx/84AfxfZ9nnnmG22+/ne3bt1NYWMiyZcv4m7/5G66//nre85738MlPfpKuri7+6Z/+id/85jc0NjZSWVnJW97yFj760Y8Si8UAaG5u5mtf+xq///3v6ezsZMaMGbzrXe/iuuuuy1VkiohMBIWTIiIiIiIiIiIikhf6+ENERERERERERETyQuGkiIiIiIiIiIiI5IXCSREREREREREREckLhZMiIiIiIiIiIiKSFwonRUREREREREREJC/yGk6+9tprfPCDH2TNmjW84Q1v4L777svt+4d/+AeWLFky6M8DDzyQ2/+LX/yCSy65hNWrV/PhD3+YlpaWfJyCiIiIiIiIiIiIHCVjrbX5OHAYhrz5zW9m1apV3Hjjjbz22mv87d/+Lbfc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m950GalU8oSa0g2qnBQREREREZFJNFWmKUcyEfY8lcoFk31sAAeeSjPjsggJJ3lMx+irRlQlooiMh5aWJmprp7Nq1ep8D2VcqXJSREREREREJk08tNS6LrWum9fALuWmmHaWjzlkZqRxofpMn5SXOuZj9FUjTtVKxF7HUB8E1AcBTYl0bntTIp3b3nuSVZCKTEVNTU389re/5u677+Rtb/tTjDmxfi5VOSkiIiIiIiInndBanMo0Nef6NDyZndptXKg514eqqbPm5ETqC08P1dewCOD6FbP617wUkbzo6urkttu+wIoVK3nPe96X7+GMO4WTIiIiIiIiclIaGFAeeDrNtLOPPZgc2FimrxqxKZHONQLSFG8RGau5c+fxq189lu9hTBiFkyIiIiIiInLS6gsoZ14RIeWljrlicrhqxKlaiThw/c+mRDo3zisX1FIV83P3yde6oCJyclA4KSIiIiIiIie10Nps85swv+NwHIcgmLxBxEPbH5TG+rdXxXxq+7YrmBSRCaZwUkRERERERGScDFeNOJpKxExPSLDHw58ekmZqNtAREZkICidFRERERERExslw1YhHqkT0rUfT+oCWLWmKF7gUr/QmPaAcGKpqKreITCaFkyIiIiIiIiJ54luPjo2Q3BMA0LEjACY/oBwUqiqYFJFJ5OR7ACIiIiIiIiInor5qxFJ/+LqgvmCy89Vg0PaOHQGdG8GfhHqiXsdQHwTUBwG9jpnw44mIHEqVkyIiIiIiIiITIFeNOEIlogkd0m2Dg0kHgzWWVJvFBC5McGPvgd3Fp1IncRGZWMlkkq9//Ss8+uhviUajvOc9V/Pe974vL2NROCkiIiIiIiIyDnodQ3s6Q6nvER/F1OiUm6Lq3AhNT4LtAmMd0m2Workulec4pNzUJIxaRE5Gd9/9TTZvfoVvfvMe6uv386Uv3UJtbS0XX3zJpI9F07pFRERERERExkFfFWJ7evRrRWYDShe/BFKtFr/UUDDLIegCYyZmmvXAqdxNiXRue1MirendIvkQhriv7cV7eRvua3shDCf0cL29vfzHf/w7H/3o37FkyVIuuuhi/vzPr+bhh//vhB53JKqcFBEREREZIJlMcuutt/I///M/xGIxrrvuOq677rrDPmbPnj28/e1v55577uGss86apJGKTE0RM/mdpseDMeAnIljfknbSR37AOCue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6S5BZL8KC4fO69GhVMtQp7bqPbVV76mtek9t1Xtqq95TW/VNf7XXIduPIBwOdwshO29HIpF0lCQiIiIiIiIiIiJ9cMiGk6WlpdTX1+O6bmpbdXU1kUiEnJycNFYmIiIiIiIiIiIivXHIhpPTpk0jEAiwbNmy1LalS5cya9Ys7MNxYikREREREREREZHDzCGb4kWjUc4991xuu+023nvvPV588UUefPBBLr/88nSXJiIiIiIiIiIiIr1gGXPorlUdi8W47bbb+Nvf/kZWVhZXXXUVn//859NdloiIiIiIiIiIiPTCIR1OioiIiIiIiIiIyKHrkB3WLSIiIiIiIiIiIoc2hZMiIiIiIiIiIiKSFgonRUREREREREREJC0UToqI9LN4PM43v/lN5s+fz6JFi3jwwQfTXZKIiEgXxhjuuecejjvuOBYsWMBdd92F7/v7vP/OnTu55pprmDNnDqeffjrPP//8IFabXn1tq07Nzc2ceOKJPP3004NQ5dDQ17ZatmwZF110EXPnzuXMM8/kySefHMRqB19fXiOuWrWKT3/608yZM4cLLriAFStWDGKl6deXtnrppZf45Cc/ydy5c/n4xz/O3//+90GsNP0O5L3H9u3bmTt3LkuWLBmECoeOvrTV2rVrufjii5k9ezYf//jHeeONNwax0qGhL+31wgsvcNZZZzF37lwuvvhiVq5c2adrKZwUEelnd911FytWrODhhx/m1ltv5ac//Sl/+ctf0l2WiIhIykMPPcRzzz3HT3/6U+69916effZZHnrooR7v67ou1113HYFAgGeeeYarrrqKm2++mXXr1g1y1enRl7ba2913301VVdUgVDh09KWtqqurueaaa1iwYAHPPPMMN910E9/73vd46aWXBrfoQdTb14htbW1ce+21zJ8/n6effpq5c+dy3XXX0dbWloaq06O3bbVmzRpuvPFGLrjgAn7/+99z0UUX8aUvfYk1a9akoer0OJD3HrfddtsR9Xzq1Nu2am5u5sorr2TixIk8++yznH766dx4443U1tamoer06W17rV+/nv/7f/8v1113HX/4wx+YNm0a1113HbFYrPcXMyIi0m9aW1vNrFmzzBtvvJHa9rOf/cxceumlaaxKRESkq5NOOsk89dRTqdu///3vzSmnnNLjfV988UUzb94809zcnNr2hS98wTz22GMDXudQ0Je26vTWW2+Z008/3SxcuLDLsYe7vrTVb37zG7N48eIu27797W+br3zlKwNaY7r05TXik08+aT760Y8a3/eNMcb4vm9OP/30I+a51Je2uvvuu81VV13VZduVV15pfvzjHw94nUPBgbz3+MMf/mAuuugiM3ny5C7HHe760lYPP/ywOe2004zruqlt559/vnnppZcGpdahoC/t9dBDD5nzzjsvdbu5udlMnjzZvPfee72+nnpOioj0ozVr1uC6LnPnzk1tmzdvHsuXL+/VEDAREZGBtmvXLioqKjjmmGNS2+bNm8eOHTt67On35ptvcvzxx5OVlZXa9vOf/5zPfOYzg1JvOvW1rQASiQTf/va3+c53vkMoFBqsUtOur2114okncuedd3bb3tLSMqB1pktfXiMuX76cefPmYVkWAJZlcfTRR7Ns2bLBLDlt+tJW5513Hl/96le7naO5uXnA6xwK+vreo76+nrvvvpvbb799MMscEvrSVm+++SannnoqjuOktj311FOcdNJJg1ZvuvWlvfLy8tiwYQNLly7F932efvppsrKyGD16dK+vp3BSRKQfVVdXk5+f3+XNSFFREfF4nIaGhvQVJiIislt1dTUAJSUlqW1FRUUAVFZWdrt/eXk5ZWVl3HPPPZx44ol84hOf4MUXXxycYtOsr20FcN999zF9+nQWLVo08AUOIX1tq5EjR3LUUUelbtfW1vKnP/2J448/fmALTZO+vEasrq7u0o4AhYWF+3zOHW760lYTJkxg6tSpqdvr16/n9ddfP2yfRx/U1/ceP/jBDzjvvPOYNGnSIFY5NPSlrcrLyykoKODb3/42Cxcu5MILL2Tp0qWDXHF69aW9zj77bE4++WQ++9nPMnPmTO666y7uvfdecnNze329QH8VLiIiEIvFuvWS6LydSCTSUZKIiByB2tvb2bVrV4/7OucZ2/vv1f7+VrW1tfHMM89w9tlnc99997FkyRJuuukmHn/8cWbNmjUA1Q+u/myrDRs28Nhjj/HHP/5xACpNv/5sqw+e94tf/CJFRUWHbY/cvrxG3Nd9j5TXkgf6erquro4vfvGLHH300Zx66qkDWuNQ0Ze2eu2111i6dCnPPffcoNU3lPSlrdra2vjlL3/J5Zdfzv3338+f/vQnrrrqKv785z8zbNiwQas5nfrSXvX19VRXV/Od73yHOXPm8Nvf/pZvfOMbPPPMMxQWFvbqegonRUT6UTgc7vbLuvN2JBJJR0kiInIEWr58OZdffnmP+772ta8BHX+fwuFw6muAaDTa7f6O45CXl8dtt92GbdvMmDGDt99+myeeeOKwCCf7q62MMdxyyy3cdNNNqR6Dh5v+fF51am1t5d/+7d/YsmULv/nNb/Z730NZX14j7uu+R8pryQN5PV1TU8MVV1yBMYZ7770X2z4yBon2tq3a29v5zne+w6233nrEPI8+qC/PK8dxmDZtGjfddBMA06dP51//+hd/+MMfuP766wen4DTrS3vdc889TJ48mUsuuQSA733ve5x11lk89dRTXHvttb26nsJJEZF+VFpaSn19Pa7rEgh0/Iqtrq4mEomQk5OT5upERORIceyxx7J27doe9+3atYu7776b6upqRo4cCewZkltcXNzt/iUlJViW1eXN/rhx4/Z5/kNNf7XVzp07effdd1m7di0//OEPgY6eJ7feeivPP/88//M//zOAj2Jw9OfzCjrml7z66qvZtm0bDz/8MGPHjh2QuoeCvrxGLC0tpaampsu2mpqabkO9D1d9fT29a9euVGj+yCOPUFBQMKj1plNv2+q9996jvLw8FbZ1uuaaazj33HOPiDko+/K8Ki4uZvz48V22jR07loqKikGrN9360l4rV67ksssuS922bZupU6eyc+fOXl/vyPg4QURkkEybNo1AINBlwvKlS5cya9asI+YTXBERGdpKS0sZPnx4l/mzli5dyvDhw3sMP+bMmcP69evxPC+1bePGjYwYMWJQ6k2nvrRVaWkpf/vb3/j973+f+ldSUsJNN93EHXfcMdilD7q+Pq983+fGG29k+/bt/OpXvzrs58Dry2vEOXPm8O6772KMATp65b7zzjvMmTNnMEtOm760VVtbG1dffTW2bfPrX/+a0tLSQa42vXrbVrNnz+72+wng+9//Pl/60pcGuer06Mvz6qijjur2QcymTZuOiL97nfrSXiUlJWzcuLHLts2bN6c+qOoNvVMWEelH0WiUc889l9tuu4333nuPF198kQcffHCfQ6BERETS4eKLL+aee+5hyZIlLFmyhB/96Edd/lbV1dXR2toKwDnnnIPv+3z3u99l69atPProo7zyyitceOGF6Sp/UPW2rQKBAGPGjOnyLxAIUFhYeMQEJn15Xv3ud79jyZIlfP/73ycnJ4fq6mqqq6sP2wUEP+w1YnV1Ne3t7QAsXryYpqYm7rjjDjZs2MAdd9xBLBbjrLPOSudDGDR9aatf/OIXbNu2LdVbufN5dKSs1t3btopEIt1+P0HHhwq9nRPwUNeX59VFF13E2rVr+a//+i+2bt3Kf/7nf1JeXs4nP/nJdD6EQdWX9rrwwgt54okn+P3vf8/WrVu555572LlzJ+edd17vL2hERKRftbW1mZtvvtkcddRRZtGiReahhx5Kd0kiIiJduK5r/v3f/93Mnz/fHHvssebuu+82vu+n9p9yyinm3nvvTd1ev369ueSSS8zMmTPNGWecYf7617+mo+y06Gtb7e2UU04xTz311GCVmnZ9aasrr7zSTJ48udu/Sy+9NF3lD7j9vUacPHlyl+fK8uXLzbnnnmtmzZplPvWpT5mVK1emoeL06W1bnXnmmT0+j77+9a+nqfLB15fn1d4mT55s3njjjUGqcmjoS1u9/fbb5rzzzjMzZ840n/zkJ82bb76ZhorTqy/t9cQTT5jFixebo446ylx88cVmxYoVfbqWZczuvuIiIiIiIiIiIiIig0jDukVERERERERERCQtFE6KiIiIiIiIiIhIWiicFBERERERERERkbRQOCkiIiIiIiIiIiJpoXBSRERERERERERE0kLhpIiIiIiIiIiIiKSFwkkRERERERERERFJC4WTIiIiIiIiIiIikhYKJ0VEREREREQOY4lEgnPOOYclS5akuxQRkW4UToqIiIiIiIgcpuLxOF/5yldYv359uksREemRwkkRERERERGRw9CGDRu48MIL2bZtW7pLERHZJ4WTIiIiIiIiIoeoJ598kpkzZ7J161YANm7cyKxZs3jxxRd58803OfbYY3n88cfTXKWIyL5ZxhiT7iJEREREREREpO+MMVx++eVkZmby3//931x66aWUlZXxox/9qMv9pkyZwiOPPMKxxx6bpkpFRHqmnpMiIiIiIiIihyjLsrj99tt57bXX+OpXv8rmzZv51re+le6yRER6TeGkiIiIiIiIyCFs3LhxXHvttTz33HPcfPPNFBQUpLskEZFeUzgpIiIiIiIicohbs2YNjuOwZMmSdJciItInCidFREREREREDmEvvvgir776Kvfddx/PPvssr7/+erpLEhHpNYWTIiIiIiIiIoeolpYWvve97/GFL3yBj3zkI1x66aXceuutxOPxdJcmItIrCidFREREREREDlE/+clPiEQiXHHFFQDceOONtLW18bOf/SzNlYmI9I5ljDHpLkJERERERERERESOPOo5KSIiIiIiIiIiImmhcFJERERERERERETSQuGkiIiIiIiIiIiIpIXCSREREREREREREUkLhZMiIiIiIiIiIiKSFgonRUREREREREREJC0UToqIiIiIiIiIiEhaKJwUEREREREROUjGmEE9TkTkcBFIdwEiIiIiIiIiQ9W6dev47//+b958800aGxvJy8tj/vz5XH/99UydOhWApUuXct9993H//ff36dx///vf+etf/8pdd90FwJIlS7j88st55JFHOPbYY3t9nqeffponnniCdevW4XkeI0eO5IwzzuCqq64iKysrdb8pU6YAcN111/GVr3yl23l83+ekk06iqqqKO++8k/PPPz+1L5FI8Pjjj/PHP/6RjRs3AjBmzBg+/vGPc/HFFxONRgHYvn07p5566ofW3PkYO2val2uuuYavfvWrH94IInLIUjgpIiIiIiIi0oP169fzmc98hqOOOopbbrmFwsJCKisr+fWvf82FF17II488wlFHHcWTTz6ZCuz64n//93+73J4xYwaPP/44EydO7PU5fvrTn3Lfffdx5ZVX8oUvfIFgMMiKFSv4n//5H1555RV++9vfEgwGU/e3bZu//OUvPYaTb731FlVVVd22Nzc3c80117BmzRouvvhibrrpJizL4u233+a///u/eeaZZ7j//vspKyujpKSExx9/PHVsdXU1N954I1/4whc4+eSTU9v3foyf+tSn+PSnP93j4ystLe11W4jIoUnhpIiIiIiIiEgPHnroIfLz87n//vsJBPa8fT7ttNNYvHgxP//5z/nlL3/Zb9fLysriqKOO6vX9E4kE999/P1dddRVf/vKXU9tPOOEExo8fzw033MCLL77IWWedldp39NFH8/bbb7Nq1SqmT5/e5Xx/+tOfmDZtGqtXr+6y/Vvf+hbr16/nscceS/UWBVi0aBGf/OQnufjii/nqV7/Kr371K0KhUJfHsH37dgBGjx69z8dWVlbWp8ctIocXzTkpIiIiIiIi0oOamhqMMfi+32V7RkYG3/zmNznrrLP4//6//49nnnmGHTt2MGXKFJ5++mmgI5S7+eabWbRoETNmzOD444/n5ptvpr6+HoDLLruMN998kzfffJMpU6awZMkSlixZkvq607Jly7jyyis5+uijOe644/jKV77Crl27AGhpaaG9vb1bfQAnnXQSX/7ylxk1alSX7ccccwxFRUX85S9/6bLddV3+9re/8bGPfazL9vXr1/PXv/6V6667rksw2WncuHF86Utf4q233uKNN97obdOKiKQonBQRERERERHpwcknn8zOnTu56KKLePTRR9m4cWNqAZvFixdz3nnn8W//9m+cdNJJFBcX8/jjj3PyyScTi8W4/PLL2bhxI7feeisPPPAAl19+OX/605/4yU9+AsCtt97K9OnTmT59Oo8//jgzZszodv1Vq1Zx6aWXEo/Hueuuu/jud7/LihUruOqqq3Bdl4KCAubMmcMDDzzA17/+dV588UXq6uoACAaDXH/99cycObPLOR3H4cwzz+wWTr7++uvE43E++tGPdtn+yiuvAHTbvrezzz4by7L4+9//3scW7uD7Pq7r9vhPRA5/GtYtIiIiIiIi0oPPfvazVFdX88ADD3D77bcDkJ+fz6JFi7j88suZPXs2o0ePpqCgoMtw5tWrV1NWVsYPf/jDVM/F4447juXLl/Pmm28CHXMudi5Ws68hzffddx95eXk8+OCDhMNhAEpKSvi///f/sn79eqZNm8a9997LzTffzO9//3t+//vfY1kWkyZN4vTTT+dzn/scubm53c579tln8+ijj3YZ2v38889z6qmnpq7TqXNY9ogRI/bZTrm5ueTm5rJjx47eNGs3P//5z/n5z3/e477XX3+dgoKCAzqviBwaFE6KiIiIiIiI7MOXvvQlPv/5z/PKK6/w+uuvs2TJEp599lmee+45vvnNb3L55Zd3O2batGn85je/wfd9tmzZwtatW9mwYQObNm3qU2/ApUuXctJJJ3UJDOfOncs//vGP1O2ysjIeeeQRNmzYwD//+U+WLFnCW2+9xc9+9jOeeOIJfv3rXzN27Ngu5503bx6lpaX85S9/Yfr06SQSCV588UXuvvvubjV09hTde87NngQCgdR9++rCCy/kwgsv7HFfTk7OAZ1TRA4dCidFRERERERE9iM3N5dzzjmHc845B+gYbv21r32Nu+++m49//OM9HvPQQw9x33330dDQQFFRETNnziQajdLc3Nzr6zY0NFBYWNir+06cOJGJEydy5ZVXkkwmefrpp7n99tv58Y9/zL333tvlvpZlsXjx4tSq3a+88gq2bbNw4cLUfJadOntM7tixo1vI2amlpYW6urr99q7cn5KSEmbNmnVAx4rIoU9zToqIiIiIiIh8wK5du1i0aBFPPvlkt33Tp0/ny1/+MolEgvLy8m77n332WX7wgx9wzTXX8Prrr/Ovf/2LX/ziF/sM9/YlOzs7NYfk3l5++WWqqqp4+OGHOe6444jFYl32B4NBPvOZz3DSSSexYcOGHs999tlns3XrVlavXs3zzz/PGWecQTAY7Ha/zrkmPzhH5d5eeOEFfN/n1FNP7cvDExEBFE6KiIiIiIiIdFNUVEQgEOA3v/kN8Xi82/5NmzYRDocZM2YMtt31rfXSpUvJycnh6quvTs2X2NraytKlS7usrP3B4z5o/vz5/Otf/yKRSKS2rVq1imuvvZaVK1cyceJE6uvr+dWvftXtWM/zKC8vZ/LkyT2e+6ijjmLEiBH84Q9/4B//+Ee3Vbo7jR8/nnPOOYdf/OIXrFixotv+8vJy7rnnHubOnctxxx2338cjItITDesWERERERER+QDHcbjtttu44YYbuOCCC7jkkkuYMGECsViMf/3rXzz66KN86UtfIjc3l5ycHGpqanj55ZeZNm0as2fP5re//S0/+MEPOOWUU6iqquKBBx6gpqamywI1OTk5vPvuu7z++uuphWn29m//9m985jOf4brrruPyyy+nvb2d//iP/2D27NksXLiQUCjEOeecw49//GPWrl3LmWeeSUFBAZWVlTz22GNUVlbyH//xH/t8jIsXL+aRRx4hLy+PBQsW7PN+t912G1VVVVx66aV89rOfZeHChdi2zbvvvsvDDz9MUVERP/7xjz80bN2XyspKli1b1uO+aDTKlClTDui8InJoUDgpIiIiIiIi0oOTTz6ZJ554ggceeID77ruPuro6QqEQ06dP5yc/+QlnnHEGAOeffz4vv/wyN9xwAzfddBPXXHMN27dv56mnnuI3v/kNpaWlnHTSSXz2s5/l29/+Nhs3bmTChAlccsklrFixgmuuuYY777yTkpKSLtefPn06v/rVr/jRj37E//k//4esrCxOOukkvvrVrxIKhQC4++67WbBgAX/84x+55ZZbaGtro6CggIULF3LnnXemVgvvydlnn80DDzzAWWedtd9gMTs7m4ceeoinnnqKZ555hieffBLP8xg7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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n = len(Counter(y).keys())\n", + "p = sns.color_palette(\"husl\", n)\n", + "\n", + "pca = PCA(n_components=2)\n", + "pca.fit(X)\n", + "\n", + "fig, axs = plt.subplots(ncols=2, nrows=2)\n", + "fig.set_size_inches(16, 10)\n", + "axs = axs.flatten()\n", + "\n", + "axs[1].set_title(\"Base\")\n", + "sns.countplot(y, ax=axs[0], palette=p)\n", + "X = pca.transform(X)\n", + "df = construct_flat_2pc_df(X, y)\n", + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[1],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")\n", + "\n", + "\n", + "axs[3].set_title(\"StaticSMOTE\")\n", + "sns.countplot(resampled_y, ax=axs[2], palette=p)\n", + "resampled_X = pca.transform(resampled_X)\n", + "df = construct_flat_2pc_df(resampled_X, resampled_y)\n", + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[3],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.2 ('.test')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "vscode": { + "interpreter": { + "hash": "354fe7bbb08ce19365ae7e9dc9251db0b8655780cc27fe67a2a3ffff5cc90304" + } + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/multi_imbalance/ensemble/ecoc.py b/multi_imbalance/ensemble/ecoc.py index 067f9a8..cb01c3d 100644 --- a/multi_imbalance/ensemble/ecoc.py +++ b/multi_imbalance/ensemble/ecoc.py @@ -326,7 +326,8 @@ def _encode_complete(self, number_of_classes: int) -> np.ndarray: digit = -1 partial_code_len = 2 ** (number_of_classes - row_idx - 1) for idx in range(0, code_length, partial_code_len): - matrix[row_idx][idx : idx + partial_code_len] = digit + right_idx = idx + partial_code_len + matrix[row_idx][idx:right_idx] = digit digit *= -1 return matrix diff --git a/multi_imbalance/ensemble/mrbbagging.py b/multi_imbalance/ensemble/mrbbagging.py index ba12360..84161ba 100644 --- a/multi_imbalance/ensemble/mrbbagging.py +++ b/multi_imbalance/ensemble/mrbbagging.py @@ -59,7 +59,7 @@ def __init__( self.learning_algorithm = learning_algorithm self.undersampling = undersampling self.feature_selection = feature_selection - self.all_random = random_fs + self.random_fs = random_fs self.half_features = half_features self.random_state = random_state @@ -191,7 +191,7 @@ def _train_with_feature_selection( subset_x = np.array(subset_x).astype(np.float64) subset_y = np.array(subset_y).astype(np.float64) - if self.all_random: + if self.random_fs: subset1, subset1_idx = self._find_random_features( labels_no, features_no, subset_x ) @@ -226,7 +226,7 @@ def _set_classes_dict(self, classes: set): def _select_data(self, classifier_id: int, data: np.ndarray) -> np.ndarray: if self.feature_selection: - if self.all_random: + if self.random_fs: new_data = self._get_features_array( data, self.feature_selection_methods[classifier_id] ) diff --git a/multi_imbalance/ensemble/ovo.py b/multi_imbalance/ensemble/ovo.py index 512fc61..4729fb7 100644 --- a/multi_imbalance/ensemble/ovo.py +++ b/multi_imbalance/ensemble/ovo.py @@ -73,7 +73,7 @@ def __init__( self.binary_classifier = binary_classifier self.n_neighbors = n_neighbors self.preprocessing = preprocessing - self.oversample_between = preprocessing_between + self.preprocessing_between = preprocessing_between self._binary_classifiers = [] self._labels = np.array([]) self._minority_classes = list() @@ -218,14 +218,14 @@ def _smote_oversample( return smote.fit_resample(X, y) def should_perform_oversampling(self, first_class: int, second_class: int): - if self.oversample_between not in OVO._allowed_preprocessing_between: + if self.preprocessing_between not in OVO._allowed_preprocessing_between: raise ValueError( "Unknown strategy for oversampling: %s, expected to be one of %s." - % (self.oversample_between, OVO._allowed_preprocessing_between) + % (self.preprocessing_between, OVO._allowed_preprocessing_between) ) - elif self.oversample_between == "all": + elif self.preprocessing_between == "all": return True - elif self.oversample_between == "maj-min": + elif self.preprocessing_between == "maj-min": return ( first_class in self._minority_classes and second_class not in self._minority_classes diff --git a/multi_imbalance/ensemble/soup_bagging.py b/multi_imbalance/ensemble/soup_bagging.py index 0e6a2b5..427ac4e 100644 --- a/multi_imbalance/ensemble/soup_bagging.py +++ b/multi_imbalance/ensemble/soup_bagging.py @@ -12,10 +12,6 @@ from multi_imbalance.utils.array_util import setdiff -def fit_clf(args: list): - return SOUPBagging.fit_classifier(args) - - class SOUPBagging(BaggingClassifier): """ Version of Bagging that applies SOUP in each classifier @@ -42,6 +38,7 @@ def __init__( """ super().__init__() self.classifiers, self.clf_weights = list(), list() + self.classifier = classifier self.maj_int_min = maj_int_min self.num_core = multiprocessing.cpu_count() self.n_classifiers = n_classifiers @@ -84,6 +81,10 @@ def fit_classifier(args: list) -> Tuple[Any, np.ndarray]: ) return clf, global_weights + @staticmethod + def fit_clf(args: list): + return SOUPBagging.fit_classifier(args) + def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): """ :param X: @@ -99,7 +100,7 @@ def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): pool = multiprocessing.Pool(self.num_core) results = pool.map( - fit_clf, + self.fit_clf, [ ( clf, diff --git a/multi_imbalance/resampling/static_smote.py b/multi_imbalance/resampling/static_smote.py index c91ae62..8934bda 100644 --- a/multi_imbalance/resampling/static_smote.py +++ b/multi_imbalance/resampling/static_smote.py @@ -42,11 +42,10 @@ def _fit_resample( for _ in range(M): sm = SMOTE(sampling_strategy={min_class: cnt[min_class] * 2}) X_smote, y_smote = sm.fit_resample(X_original, y_original) - X_added_examples = X_smote[y_smote == min_class][cnt[min_class] :, :] + idx = cnt[min_class] + X_added_examples = X_smote[y_smote == min_class][idx:, :] X_resampled = np.vstack([X_resampled, X_added_examples]) - y_resampled = np.hstack( - [y_resampled, y_smote[y_smote == min_class][cnt[min_class] :]] - ) + y_resampled = np.hstack([y_resampled, y_smote[y_smote == min_class][idx:]]) cnt = Counter(y_resampled) min_class = min(cnt, key=cnt.get) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..eebb47a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,70 @@ +[build-system] +requires = [ + "setuptools>=42", + "wheel" +] +build-backend = "setuptools.build_meta" + +[project] +name = "multi-imbalance" +description = "Python package for tackling multiclass imbalance problems." +version = "0.1.0" +maintainers = [ + {name = "Damian Horna, Kamil Pluciński, Hanna Klimczak, Jacek Grycza", email = "horna.damian@gmail.com"} +] +readme = "README.md" +classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Topic :: Software Development", + "Topic :: Scientific/Engineering", + "Programming Language :: Python :: 3.9", + +] +dependencies = [ + "numpy~=1.23.4", + "scikit-learn~=1.1.3", + "pandas~=1.5.1", + "imbalanced-learn~=0.9.1", + "seaborn~=0.12.1", + "matplotlib~=3.6.2", +] + +[project.optional-dependencies] +test = [ + "pytest~=7.2.0", + "pytest-cov~=4.0.0", + "coverage~=6.5.0" +] +lint = [ + "flake8~=5.0.4" +] +dev = [ + "tox~=3.27.0" +] +notebooks = [ + "ipython~=8.6.0", + "ipykernel~=6.17.0", + "tqdm~=4.64.1", + "jupyter~=1.0.0" +] +all = [ + "multi-imbalance[test]", + "multi-imbalance[lint]", + "multi-imbalance[dev]", + "multi-imbalance[notebooks]" +] + +[project.urls] +homepage="https://github.com/damian-horna/multi-imbalance" +documentation="https://github.com/damian-horna/multi-imbalance/blob/master/README.md" + +[tool.pytest.ini_options] +addopts = "--cov=multi_imbalance" +testpaths = [ + "tests", +] + +[tool.setuptools] +py-modules = ["multi_imbalance"] \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 1370ff0..71e9137 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,91 +1,13 @@ -alabaster==0.7.12 -attrs==19.3.0 -Babel==2.8.0 -backcall==0.1.0 -bleach==3.1.4 -certifi==2020.4.5.1 -chardet==3.0.4 -commonmark==0.9.1 -coverage==5.1 -cycler==0.10.0 -decorator==4.4.2 -defusedxml==0.6.0 -docutils==0.16 -entrypoints==0.3 -idna==2.9 -imagesize==1.2.0 -imbalanced-learn==0.6.2 -importlib-metadata==1.6.0 -ipykernel==5.1.4 -ipython==7.13.0 -ipython-genutils==0.2.0 -ipywidgets==7.5.1 -jedi==0.16.0 -Jinja2==2.11.1 -joblib==0.14.1 -jsonschema==3.2.0 -jupyter==1.0.0 -jupyter-client==6.1.2 -jupyter-console==6.1.0 -jupyter-core==4.6.3 -kiwisolver==1.1.0 -MarkupSafe==1.1.1 -matplotlib==3.1.3 -mistune==0.8.4 -more-itertools==8.2.0 -multi-imbalance==0.0.8 -nbconvert==5.6.1 -nbformat==5.0.4 -notebook==6.0.3 -numpy==1.18.2 -packaging==20.3 -pandas==1.0.3 -pandocfilters==1.4.2 -parso==0.6.2 -pexpect==4.8.0 -pickleshare==0.7.5 -pluggy==0.13.1 -prometheus-client==0.7.1 -prompt-toolkit==3.0.4 -ptyprocess==0.6.0 -py==1.8.1 -Pygments==2.6.1 -pyparsing==2.4.7 -pyrsistent==0.16.0 -pytest==5.4.1 -pytest-cov==2.8.1 -python-dateutil==2.8.1 -pytz==2019.3 -pyzmq==18.1.1 -qtconsole==4.7.2 -QtPy==1.9.0 -recommonmark==0.6.0 -requests==2.23.0 -rinoh-typeface-dejavuserif==0.1.1 -rinoh-typeface-texgyrecursor==0.1.1 -rinoh-typeface-texgyreheros==0.1.1 -rinoh-typeface-texgyrepagella==0.1.1 -rinohtype==0.4.0 -scikit-learn==0.22.2.post1 -scipy==1.4.1 -seaborn==0.10.0 -Send2Trash==1.5.0 -six==1.14.0 -snowballstemmer==2.0.0 -Sphinx==3.0.1 -sphinx-rtd-theme==0.4.3 -sphinxcontrib-applehelp==1.0.2 -sphinxcontrib-devhelp==1.0.2 -sphinxcontrib-htmlhelp==1.0.3 -sphinxcontrib-jsmath==1.0.1 -sphinxcontrib-qthelp==1.0.3 -sphinxcontrib-serializinghtml==1.1.4 -terminado==0.8.3 -testpath==0.4.4 -tornado==6.0.4 -traitlets==4.3.3 -urllib3==1.25.9 -wcwidth==0.1.9 -webencodings==0.5.1 -widgetsnbextension==3.5.1 -zipp==3.1.0 +numpy~=1.23.4 +scikit-learn~=1.1.3 +pandas~=1.5.1 +imbalanced-learn~=0.9.1 +seaborn~=0.12.1 +matplotlib~=3.6.2 +IPython~=8.6.0 +ipykernel~=6.17.0 +tqdm~=4.64.1 +jupyter~=1.0.0 +pytest~=7.2.0 +pytest-cov~=4.0.0 +coverage~=6.5.0 \ No newline at end of file diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..905c8bb --- /dev/null +++ b/setup.cfg @@ -0,0 +1,2 @@ +[flake8] +max-line-length = 160 \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index ac83413..0000000 --- a/setup.py +++ /dev/null @@ -1,39 +0,0 @@ -import setuptools # pragma no cover - -with open("README.md", "r", encoding="UTF8") as fh: # pragma no cover - - long_description = fh.read() - -setuptools.setup( # pragma no cover - name="multi-imbalance", - version="0.0.14", - author="Damian Horna, Kamil Pluciński, Hanna Klimczak, Jacek Grycza", - author_email="horna.damian@gmail.com", - description="Python package for tackling multiclass imbalance problems.", - long_description=long_description, - long_description_content_type="text/markdown", - url="https://github.com/damian-horna/multi-imbalance", - packages=setuptools.find_packages(), - classifiers=[ - "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Topic :: Software Development", - "Topic :: Scientific/Engineering", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - ], - install_requires=[ - "numpy>=1.17.0", - "scikit-learn>=0.22", - "pandas>=0.25.1", - "pytest>=5.1.2", - "imbalanced-learn>=0.6.1", - "coverage>=5.1", - "pytest-cov>=2.8.1", - "IPython>=7.13.0", - "seaborn>=0.10.1", - "matplotlib>=3.2.1", - ], -) diff --git a/tests/resampling/test_mdo.py b/tests/resampling/test_mdo.py index 0e88012..551c794 100644 --- a/tests/resampling/test_mdo.py +++ b/tests/resampling/test_mdo.py @@ -1,8 +1,6 @@ -from collections import Counter, defaultdict - import numpy as np import pytest -from numpy.testing import assert_array_equal, assert_allclose, assert_array_almost_equal +from numpy.testing import assert_array_almost_equal from multi_imbalance.resampling.mdo import MDO diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..2a7842d --- /dev/null +++ b/tox.ini @@ -0,0 +1,22 @@ +[tox] +minversions = 3.9.0 +envlist = py39, flake8 +isolated_build = true + +[gh-actions] +python = + 3.9: py39, + flake8 + +[testenv] +setenv = + PYTHONPATH = {toxinidir} +deps = + -r{toxinidir}/requirements.txt +commands = + pytest --cov-report term-missing --basetemp={envtmpdir} + +[testenv:flake8] +basepython = python3.9 +deps = flake8 +commands = flake8 multi_imbalance tests From 86761c90b599933c7a8dbf27fe3126368cbb2b11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 5 Nov 2022 17:21:00 +0100 Subject: [PATCH 07/48] workflows --- .github/workflows/code_analysis.yml | 21 +++++++++++++++++++++ .github/workflows/tests.yml | 2 +- README.md | 3 +-- 3 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/code_analysis.yml diff --git a/.github/workflows/code_analysis.yml b/.github/workflows/code_analysis.yml new file mode 100644 index 0000000..663c44e --- /dev/null +++ b/.github/workflows/code_analysis.yml @@ -0,0 +1,21 @@ +name: Code analysis + +on: + - push + - pull_request + +jobs: + tools: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox tox-gh-actions + - name: Run flake8 with tox + run: tox -e flake8 \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index eb0efaf..272c2ca 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -name: Tests and code analysis +name: Tests on: - push - pull_request diff --git a/README.md b/README.md index 861ad0b..156797b 100644 --- a/README.md +++ b/README.md @@ -106,8 +106,7 @@ If you would use project for local tests (e.g. run `examples/` with your code ch pip install -U -e ".[all]" ``` After that you can use multi-imbalance as normal Python package. Your next changes will be automatically loaded. - -Our project uses GitHub actions on push and pull request. The action runs tox with configuration define in tox.ini. +Our project uses GitHub actions on push and pull request. The actions run tox with configuration define in tox.ini. multi-imbalance uses reStructuredText markdown for docstrings. To build the documentation locally run: ```bash From 17df20852c37374fe829fbe9ae421009c97a0697 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 5 Nov 2022 17:51:32 +0100 Subject: [PATCH 08/48] different python version --- .github/workflows/tests.yml | 2 +- tox.ini | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 272c2ca..9b42d9d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, windows-latest] - python-version: [['3.9', 'py39']] + python-version: [['3.8', 'py38'], ['3.9', 'py39']] steps: - uses: actions/checkout@v2 diff --git a/tox.ini b/tox.ini index 2a7842d..aa3ef17 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,11 @@ [tox] -minversions = 3.9.0 -envlist = py39, flake8 +minversions = 3.8.0 +envlist = py38, py39, flake8 isolated_build = true [gh-actions] python = + 3.8: py38 3.9: py39, flake8 From fe68a2ce5823340475b575e9208cde62f02d3c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 5 Nov 2022 18:35:11 +0100 Subject: [PATCH 09/48] ignore ovo tests --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index aa3ef17..11ec619 100644 --- a/tox.ini +++ b/tox.ini @@ -15,7 +15,7 @@ setenv = deps = -r{toxinidir}/requirements.txt commands = - pytest --cov-report term-missing --basetemp={envtmpdir} + pytest --cov-report term-missing --basetemp={envtmpdir} --ignore=tests/ensemble/test_ovo.py [testenv:flake8] basepython = python3.9 From 83d2cc3a60f4e2e9617548fcf33d608ebea44216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 5 Nov 2022 18:42:23 +0100 Subject: [PATCH 10/48] ignore soupbagging --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 11ec619..f159f3e 100644 --- a/tox.ini +++ b/tox.ini @@ -15,7 +15,7 @@ setenv = deps = -r{toxinidir}/requirements.txt commands = - pytest --cov-report term-missing --basetemp={envtmpdir} --ignore=tests/ensemble/test_ovo.py + pytest --cov-report term-missing --basetemp={envtmpdir} --ignore=tests/ensemble/test_soupbagging.py [testenv:flake8] basepython = python3.9 From ef256c4158d465f65b347dfcec606a8e32995e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sun, 6 Nov 2022 11:16:47 +0100 Subject: [PATCH 11/48] new typing + check soup bagging --- multi_imbalance/ensemble/ecoc.py | 24 ++++++++----- multi_imbalance/ensemble/mrbbagging.py | 41 +++++++++++++++------- multi_imbalance/ensemble/ovo.py | 16 +++++---- multi_imbalance/ensemble/soup_bagging.py | 35 +++++++++++++----- multi_imbalance/resampling/global_cs.py | 6 ++-- multi_imbalance/resampling/mdo.py | 6 ++-- multi_imbalance/resampling/soup.py | 11 +++--- multi_imbalance/resampling/spider.py | 36 ++++++++++--------- multi_imbalance/resampling/static_smote.py | 2 +- multi_imbalance/utils/data.py | 4 +-- tox.ini | 2 +- 11 files changed, 117 insertions(+), 66 deletions(-) diff --git a/multi_imbalance/ensemble/ecoc.py b/multi_imbalance/ensemble/ecoc.py index cb01c3d..9d09f22 100644 --- a/multi_imbalance/ensemble/ecoc.py +++ b/multi_imbalance/ensemble/ecoc.py @@ -2,7 +2,7 @@ from collections import Counter from collections import defaultdict from copy import deepcopy -from typing import Tuple, Union +from typing import Dict, List, Tuple, Union import numpy as np from imblearn.over_sampling import SMOTE @@ -12,6 +12,7 @@ from sklearn.neighbors import KNeighborsClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.utils import check_random_state +from sklearn.base import ClassifierMixin from multi_imbalance.resampling.global_cs import GlobalCS from multi_imbalance.resampling.soup import SOUP @@ -37,7 +38,7 @@ def __init__( encoding: str = "OVO", n_neighbors: int = 3, weights: Union[None, str] = None, - ): + ) -> None: """ :param binary_classifier: @@ -107,7 +108,10 @@ def __init__( self._dich_weights = None def fit( - self, X: np.ndarray, y: np.ndarray, minority_classes: Union[list, None] = None + self, + X: np.ndarray, + y: np.ndarray, + minority_classes: Union[List[int], None] = None, ): """ @@ -157,7 +161,7 @@ def predict(self, X: np.ndarray) -> np.ndarray: return predicted - def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray): + def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray) -> None: for classifier_idx, classifier in enumerate(self._binary_classifiers): excluded_classes_indices = [ idx @@ -180,7 +184,7 @@ def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray): X_filtered, binary_labels = self._oversample(X_filtered, binary_labels) classifier.fit(X_filtered, binary_labels) - def _gen_code_matrix(self): + def _gen_code_matrix(self) -> None: if self.encoding == "dense": self._code_matrix = self._encode_dense(self._labels.shape[0]) elif self.encoding == "sparse": @@ -310,7 +314,9 @@ def _encode_ovo(self, number_of_classes: int) -> np.ndarray: matrix[row, col] = -1 return matrix - def _map_indices_to_class_pairs(self, number_of_classes: int) -> dict: + def _map_indices_to_class_pairs( + self, number_of_classes: int + ) -> Dict[int, Tuple[int, int]]: indices_map = dict() idx = 0 for i in range(number_of_classes): @@ -384,7 +390,7 @@ def _oversample( raise ValueError("Your resampler must implement fit_transform method") return self.preprocessing.fit_transform(X, y) - def _get_classifier(self): + def _get_classifier(self) -> ClassifierMixin: if isinstance(self.binary_classifier, str): if self.binary_classifier not in ECOC._allowed_classifiers: raise ValueError( @@ -420,7 +426,9 @@ def _smote_oversample( smote = SMOTE(k_neighbors=n_neighbors, random_state=42) return smote.fit_resample(X, y) - def _calc_weights(self, X_for_weights: np.ndarray, y_for_weights: np.ndarray): + def _calc_weights( + self, X_for_weights: np.ndarray, y_for_weights: np.ndarray + ) -> None: if self.weights not in ECOC._allowed_weights: raise ValueError( "Unknown weighting strategy: %s, expected to be one of %s." diff --git a/multi_imbalance/ensemble/mrbbagging.py b/multi_imbalance/ensemble/mrbbagging.py index 84161ba..8b180b2 100644 --- a/multi_imbalance/ensemble/mrbbagging.py +++ b/multi_imbalance/ensemble/mrbbagging.py @@ -1,7 +1,7 @@ from collections import Counter from copy import deepcopy from math import sqrt -from typing import Any, Callable, Tuple, Union +from typing import Callable, Dict, List, Set, Tuple, Union import numpy as np from scipy.stats import multinomial @@ -9,6 +9,7 @@ from sklearn.feature_selection import SelectKBest, chi2, f_classif from sklearn.utils import resample from sklearn.utils.random import sample_without_replacement +from sklearn.base import ClassifierMixin class MRBBagging(BaggingClassifier): @@ -25,13 +26,13 @@ class MRBBagging(BaggingClassifier): def __init__( self, k: int, - learning_algorithm: Any, + learning_algorithm: ClassifierMixin, undersampling: bool = True, feature_selection: bool = False, random_fs: bool = False, half_features: bool = True, random_state: Union[int, None] = None, - ): + ) -> None: """ :param k: number of classifiers (multiplied by 3 when choosing feature selection) @@ -99,7 +100,7 @@ def fit(self, x: np.ndarray, y: np.ndarray, **kwargs): return self - def predict(self, data: np.ndarray) -> list: + def predict(self, data: np.ndarray) -> List[int]: """ Predict classes for examples in data. @@ -108,7 +109,9 @@ def predict(self, data: np.ndarray) -> list: """ return self._select_classes(data) - def _group_data(self, x: np.ndarray, y: np.ndarray) -> Tuple[set, dict]: + def _group_data( + self, x: np.ndarray, y: np.ndarray + ) -> Tuple[Set[int], Dict[int, List[Tuple[np.ndarray, int]]]]: classes = set(y) self.classes = {key: value for (key, value) in enumerate(classes)} data = [[x[i], y[i]] for i in range(len(x))] @@ -119,7 +122,11 @@ def _group_data(self, x: np.ndarray, y: np.ndarray) -> Tuple[set, dict]: return classes, grouped_data def _resample( - self, n: int, prob: float, classes: set, grouped_data: dict + self, + n: int, + prob: float, + classes: Set[int], + grouped_data: Dict[int, List[Tuple[np.ndarray, int]]], ) -> Tuple[np.ndarray, np.ndarray]: samples_no = multinomial.rvs(n=n, p=prob, random_state=self.random_state) subset_x, subset_y = [], [] @@ -137,8 +144,13 @@ def _resample( return np.array(subset_x), np.array(subset_y) def _train( - self, la_list: list, n: int, prob: float, classes: set, grouped_data: dict - ): + self, + la_list: List[ClassifierMixin], + n: int, + prob: float, + classes: Set[int], + grouped_data: Dict[int, List[Tuple[np.ndarray, int]]], + ) -> None: for i in range(len(la_list)): subset_x, subset_y = self._resample(n, prob, classes, grouped_data) @@ -178,8 +190,13 @@ def _get_kbest_classifier( return subset, kBest_estimator def _train_with_feature_selection( - self, la_list: list, n: int, prob: float, classes: set, grouped_data: dict - ): + self, + la_list: List[ClassifierMixin], + n: int, + prob: float, + classes: Set[int], + grouped_data: Dict[int, List[Tuple[np.ndarray, int]]], + ) -> None: for i in range(0, len(la_list), 3): subset_x, subset_y = self._resample(n, prob, classes, grouped_data) labels_no = len(subset_x[0]) @@ -221,7 +238,7 @@ def _train_with_feature_selection( self.classifiers[i + 1] = la_list[i + 1].fit(subset2, subset_y) self.classifiers[i + 2] = la_list[i + 2].fit(subset3, subset_y) - def _set_classes_dict(self, classes: set): + def _set_classes_dict(self, classes: Set[int]) -> None: self.classifier_classes = dict(enumerate(classes)) def _select_data(self, classifier_id: int, data: np.ndarray) -> np.ndarray: @@ -255,7 +272,7 @@ def _count_votes(self, data: np.ndarray) -> np.ndarray: voting_matrix[i][idx] += max(probabilities[i]) return voting_matrix - def _select_classes(self, data: np.ndarray) -> list: + def _select_classes(self, data: np.ndarray) -> List[int]: voting_matrix = self._count_votes(data) selected_classes_ids = voting_matrix.argmax(axis=1) selected_classes = [] diff --git a/multi_imbalance/ensemble/ovo.py b/multi_imbalance/ensemble/ovo.py index 4729fb7..96e9d46 100644 --- a/multi_imbalance/ensemble/ovo.py +++ b/multi_imbalance/ensemble/ovo.py @@ -1,5 +1,5 @@ from copy import deepcopy -from typing import Any, Tuple, Union +from typing import List, Tuple, Union import numpy as np from imblearn.over_sampling import SMOTE @@ -7,6 +7,7 @@ from sklearn.naive_bayes import GaussianNB from sklearn.neighbors import KNeighborsClassifier from sklearn.tree import DecisionTreeClassifier +from sklearn.base import ClassifierMixin from multi_imbalance.resampling.global_cs import GlobalCS from multi_imbalance.resampling.soup import SOUP @@ -33,7 +34,7 @@ def __init__( n_neighbors: int = 3, preprocessing: str = "SOUP", preprocessing_between: str = "all", - ): + ) -> None: """ :param binary_classifier: binary classifier. Possible classifiers: @@ -79,7 +80,10 @@ def __init__( self._minority_classes = list() def fit( - self, X: np.ndarray, y: np.ndarray, minority_classes: Union[list, None] = None + self, + X: np.ndarray, + y: np.ndarray, + minority_classes: Union[List[int], None] = None, ): """ :param X: @@ -131,7 +135,7 @@ def _construct_binary_outputs_matrix( ] = self._binary_classifiers[class_idx1][class_idx2].predict([instance]) return binary_outputs_matrix - def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray): + def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray) -> None: for row in range(len(self._labels)): for col in range(row): first_class, second_class = self._labels[row], self._labels[col] @@ -145,7 +149,7 @@ def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray): X_filtered, y_filtered = self._oversample(X_filtered, y_filtered) self._binary_classifiers[row][col].fit(X_filtered, y_filtered) - def _get_classifier(self) -> Any: + def _get_classifier(self) -> ClassifierMixin: if isinstance(self.binary_classifier, str): if self.binary_classifier not in OVO._allowed_classifiers: raise ValueError( @@ -217,7 +221,7 @@ def _smote_oversample( smote = SMOTE(k_neighbors=n_neighbors, random_state=42) return smote.fit_resample(X, y) - def should_perform_oversampling(self, first_class: int, second_class: int): + def should_perform_oversampling(self, first_class: int, second_class: int) -> None: if self.preprocessing_between not in OVO._allowed_preprocessing_between: raise ValueError( "Unknown strategy for oversampling: %s, expected to be one of %s." diff --git a/multi_imbalance/ensemble/soup_bagging.py b/multi_imbalance/ensemble/soup_bagging.py index 427ac4e..90dd006 100644 --- a/multi_imbalance/ensemble/soup_bagging.py +++ b/multi_imbalance/ensemble/soup_bagging.py @@ -1,17 +1,30 @@ import multiprocessing from collections import Counter from copy import deepcopy -from typing import Any, Tuple, Union +from typing import Dict, List, Tuple, Union import numpy as np from sklearn.ensemble import BaggingClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.utils import resample +from sklearn.base import ClassifierMixin from multi_imbalance.resampling.soup import SOUP from multi_imbalance.utils.array_util import setdiff +def fit_clf( + args: Tuple[ + ClassifierMixin, + np.ndarray, + np.ndarray, + Tuple[np.ndarray, np.ndarray], + Union[Dict[str, List[int]], None], + ] +): + return SOUPBagging.fit_classifier(args) + + class SOUPBagging(BaggingClassifier): """ Version of Bagging that applies SOUP in each classifier @@ -24,8 +37,8 @@ class SOUPBagging(BaggingClassifier): def __init__( self, - classifier: Union[Any, None] = None, - maj_int_min: Union[dict, None] = None, + classifier: Union[ClassifierMixin, None] = None, + maj_int_min: Union[Dict[str, List[int]], None] = None, n_classifiers: int = 5, ): """ @@ -51,7 +64,15 @@ def __init__( self.classifiers.append(KNeighborsClassifier()) @staticmethod - def fit_classifier(args: list) -> Tuple[Any, np.ndarray]: + def fit_classifier( + args: Tuple[ + ClassifierMixin, + np.ndarray, + np.ndarray, + Tuple[np.ndarray, np.ndarray], + Union[Dict[str, List[int]], None], + ] + ) -> Tuple[ClassifierMixin, np.ndarray]: clf, X, y, resampled, maj_int_min = args x_sampled, y_sampled = resampled @@ -81,10 +102,6 @@ def fit_classifier(args: list) -> Tuple[Any, np.ndarray]: ) return clf, global_weights - @staticmethod - def fit_clf(args: list): - return SOUPBagging.fit_classifier(args) - def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): """ :param X: @@ -100,7 +117,7 @@ def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): pool = multiprocessing.Pool(self.num_core) results = pool.map( - self.fit_clf, + fit_clf, [ ( clf, diff --git a/multi_imbalance/resampling/global_cs.py b/multi_imbalance/resampling/global_cs.py index 9c181a2..44578a1 100644 --- a/multi_imbalance/resampling/global_cs.py +++ b/multi_imbalance/resampling/global_cs.py @@ -1,5 +1,5 @@ from collections import Counter -from typing import Tuple +from typing import List, Tuple import numpy as np import sklearn @@ -12,7 +12,7 @@ class GlobalCS(BaseSampler): for each class to achieve majority class size """ - def __init__(self, shuffle: bool = True): + def __init__(self, shuffle: bool = True) -> None: super().__init__() self._sampling_type = "over-sampling" self.shuffle = shuffle @@ -54,7 +54,7 @@ def _fit_resample( def _equal_oversample( self, X: np.ndarray, y: np.ndarray, class_name: str - ) -> Tuple[list, list]: + ) -> Tuple[List[np.ndarray], List[np.ndarray]]: indices_in_class = [ i for i, class_label in enumerate(y) if class_label == class_name ] diff --git a/multi_imbalance/resampling/mdo.py b/multi_imbalance/resampling/mdo.py index 2f1ed31..6ccb85b 100644 --- a/multi_imbalance/resampling/mdo.py +++ b/multi_imbalance/resampling/mdo.py @@ -1,5 +1,5 @@ from collections import Counter -from typing import Tuple, Union +from typing import Dict, List, Tuple, Union import numpy as np from imblearn.base import BaseSampler @@ -24,8 +24,8 @@ def __init__( k1_frac: float = 0.4, seed: int = 0, prop: int = 1, - maj_int_min: Union[dict, None] = None, - ): + maj_int_min: Union[Dict[str, List[int]], None] = None, + ) -> None: """ :param k: Number of neighbours considered during the neighbourhood analysis diff --git a/multi_imbalance/resampling/soup.py b/multi_imbalance/resampling/soup.py index 04a493e..71e3842 100644 --- a/multi_imbalance/resampling/soup.py +++ b/multi_imbalance/resampling/soup.py @@ -1,7 +1,7 @@ from collections import Counter, defaultdict from copy import deepcopy from operator import itemgetter -from typing import Tuple, Union +from typing import Dict, List, Tuple, Union import numpy as np import sklearn @@ -20,8 +20,11 @@ class SOUP(BaseSampler): """ def __init__( - self, k: int = 7, shuffle: bool = False, maj_int_min: Union[dict, None] = None - ): + self, + k: int = 7, + shuffle: bool = False, + maj_int_min: Union[Dict[str, List[int]], None] = None, + ) -> None: """ :param k: number of neighbors @@ -175,7 +178,7 @@ def _oversample( return X, y def _calculate_goal_quantity( - self, maj_int_min: Union[dict, None] = None + self, maj_int_min: Union[Dict[str, List[int]], None] = None ) -> Union[int, float]: if maj_int_min is None: maj_q = max(list(self.quantities.values())) diff --git a/multi_imbalance/resampling/spider.py b/multi_imbalance/resampling/spider.py index 4b90041..9a57ee1 100644 --- a/multi_imbalance/resampling/spider.py +++ b/multi_imbalance/resampling/spider.py @@ -1,5 +1,5 @@ from collections import Counter -from typing import Tuple, Union +from typing import Dict, List, Tuple, Union import numpy as np from imblearn.base import BaseSampler @@ -22,9 +22,9 @@ class SPIDER3(BaseSampler): def __init__( self, k: int, - maj_int_min: Union[dict, None] = None, + maj_int_min: Union[Dict[str, List[int]], None] = None, cost: Union[np.ndarray, None] = None, - ): + ) -> None: """ :param k: Number of nearest neighbors considered while resampling. @@ -74,7 +74,7 @@ def _fit_resample( return self.DS[:, :-1], self.DS[:, -1] - def _initialize_algorithm(self, X: np.ndarray, y: np.ndarray): + def _initialize_algorithm(self, X: np.ndarray, y: np.ndarray) -> None: if self.maj_int_min is None: self.maj_int_min = construct_maj_int_min(y) self.majority_classes = self.maj_int_min["maj"] @@ -86,7 +86,7 @@ def _initialize_algorithm(self, X: np.ndarray, y: np.ndarray): self.cost = self._estimate_cost_matrix(y) @staticmethod - def _estimate_cost_matrix(y: Union[np.ndarray, list]) -> np.ndarray: + def _estimate_cost_matrix(y: Union[np.ndarray, List[int]]) -> np.ndarray: """ Method that estimates cost matrix automatically. For example given imbalance ratios of 1:2:6, the estimated matrix will be: @@ -110,7 +110,9 @@ def _estimate_cost_matrix(y: Union[np.ndarray, list]) -> np.ndarray: np.fill_diagonal(cost, 0) return cost - def _sort_by_cardinality(self, y: Union[list, np.ndarray]) -> Tuple[list, list]: + def _sort_by_cardinality( + self, y: Union[List[int], np.ndarray] + ) -> Tuple[List[int], List[int]]: class_cardinality = Counter(y) # to ensure looping over classes with decreasing cardinality. int_classes = sorted( @@ -121,14 +123,14 @@ def _sort_by_cardinality(self, y: Union[list, np.ndarray]) -> Tuple[list, list]: ) return int_classes, min_classes - def amplify(self, int_min_class: str): + def amplify(self, int_min_class: str) -> None: self._restart_perspective() int_min_ds = self.DS[self.DS[:, -1] == int_min_class] for x in int_min_ds: self._amplify_nn(x) self._restore_perspective() - def clean(self, int_min_class: str): + def clean(self, int_min_class: str) -> None: self._restart_perspective() int_min_ds = self.DS[self.DS[:, -1] == int_min_class] int_min_as = self._calc_int_min_as(int_min_class) @@ -136,14 +138,14 @@ def clean(self, int_min_class: str): self._clean_nn(x) self._restore_perspective() - def relabel(self, int_min_class: str): + def relabel(self, int_min_class: str) -> None: self._restart_perspective() int_min_ds = self.DS[self.DS[:, -1] == int_min_class] for x in int_min_ds: self._relabel_nn(x) self._restore_perspective() - def _restart_perspective(self): + def _restart_perspective(self) -> None: """ Performs normalization over resampled dataset. """ @@ -159,7 +161,7 @@ def _restart_perspective(self): if dataset.shape[0] > 0: self._normalize(dataset) - def _restore_perspective(self): + def _restore_perspective(self) -> None: """ Denormalizes for further processing. """ @@ -167,11 +169,11 @@ def _restore_perspective(self): if dataset.shape[0] > 0: self._denormalize(dataset) - def _normalize(self, dataset: np.ndarray): + def _normalize(self, dataset: np.ndarray) -> None: for col in range(dataset.shape[1] - 1): dataset[:, col] = (dataset[:, col] - self.means[col]) / (4 * self.stds[col]) - def _denormalize(self, dataset: np.ndarray): + def _denormalize(self, dataset: np.ndarray) -> None: for col in range(dataset.shape[1] - 1): dataset[:, col] = dataset[:, col] * self.stds[col] * 4 + self.means[col] @@ -190,7 +192,7 @@ def _calc_int_min_as(self, int_min_class: str) -> np.ndarray: int_min_as = np.array([]) return int_min_as - def _calculate_weak_majority_examples(self): + def _calculate_weak_majority_examples(self) -> None: """ Calculates weak majority examples and appends them to the RS set. """ @@ -230,7 +232,7 @@ def _min_cost_classes(self, x: np.ndarray, DS: np.ndarray) -> np.ndarray: vals = np.round(vals, 6) return C[vals == vals[np.argmin(vals)]] - def _relabel_nn(self, x: np.ndarray): + def _relabel_nn(self, x: np.ndarray) -> None: """ Performs relabeling in the nearest neighborhood of x. @@ -249,7 +251,7 @@ def _relabel_nn(self, x: np.ndarray): neighbor[-1] = x[-1] self.AS = union(self.AS, np.array([neighbor])) - def _clean_nn(self, x: np.ndarray): + def _clean_nn(self, x: np.ndarray) -> None: """ Performs cleaning in the nearest neighborhood of x. @@ -304,7 +306,7 @@ def _knn(self, x: np.ndarray, DS: np.ndarray) -> np.ndarray: return DS[indices] - def _amplify_nn(self, x: np.ndarray): + def _amplify_nn(self, x: np.ndarray) -> None: """ Artificially amplifies example x by adding a copy of it to the AS. diff --git a/multi_imbalance/resampling/static_smote.py b/multi_imbalance/resampling/static_smote.py index 8934bda..ddf437e 100644 --- a/multi_imbalance/resampling/static_smote.py +++ b/multi_imbalance/resampling/static_smote.py @@ -16,7 +16,7 @@ class StaticSMOTE(BaseSampler): (2011) """ - def __init__(self): + def __init__(self) -> None: super().__init__() self._sampling_type = "over-sampling" diff --git a/multi_imbalance/utils/data.py b/multi_imbalance/utils/data.py index 892e317..7e10a78 100644 --- a/multi_imbalance/utils/data.py +++ b/multi_imbalance/utils/data.py @@ -94,8 +94,8 @@ def load_datasets_arff( datasets = OrderedDict() for path in sorted(dataset_paths): - dataset_file = os.path.basename(path) - dataset_name = os.path.splitext(dataset_file)[0] + path = Path(path) + dataset_name = path.stem if return_non_cat_length: X, y, cat_length = load_arff_dataset( path, return_non_cat_length=return_non_cat_length diff --git a/tox.ini b/tox.ini index f159f3e..aa3ef17 100644 --- a/tox.ini +++ b/tox.ini @@ -15,7 +15,7 @@ setenv = deps = -r{toxinidir}/requirements.txt commands = - pytest --cov-report term-missing --basetemp={envtmpdir} --ignore=tests/ensemble/test_soupbagging.py + pytest --cov-report term-missing --basetemp={envtmpdir} [testenv:flake8] basepython = python3.9 From ded5cecda4b18461f222c1761324208ecb1209b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sun, 6 Nov 2022 12:03:59 +0100 Subject: [PATCH 12/48] black line length and delete pool close --- multi_imbalance/ensemble/ecoc.py | 138 +++++---------------- multi_imbalance/ensemble/mrbbagging.py | 56 +++------ multi_imbalance/ensemble/ovo.py | 62 +++------ multi_imbalance/ensemble/soup_bagging.py | 22 +--- multi_imbalance/resampling/global_cs.py | 20 +-- multi_imbalance/resampling/mdo.py | 77 +++--------- multi_imbalance/resampling/soup.py | 74 +++-------- multi_imbalance/resampling/spider.py | 36 ++---- multi_imbalance/resampling/static_smote.py | 4 +- multi_imbalance/utils/data.py | 16 +-- multi_imbalance/utils/metrics.py | 4 +- multi_imbalance/utils/plot.py | 4 +- pyproject.toml | 5 +- setup.cfg | 2 +- tests/ensemble/test_ecoc.py | 59 ++------- tests/ensemble/test_mrbbagging.py | 8 +- tests/ensemble/test_ovo.py | 16 +-- tests/resampling/test_mdo.py | 4 +- tests/resampling/test_soup.py | 24 +--- tests/resampling/test_spider.py | 4 +- tests/utils/test_data.py | 28 +---- 21 files changed, 152 insertions(+), 511 deletions(-) diff --git a/multi_imbalance/ensemble/ecoc.py b/multi_imbalance/ensemble/ecoc.py index 9d09f22..7113634 100644 --- a/multi_imbalance/ensemble/ecoc.py +++ b/multi_imbalance/ensemble/ecoc.py @@ -128,17 +128,13 @@ def fit( self.minority_classes = minority_classes if self.weights is not None: - X_train, X_for_weights, y_train, y_for_weights = train_test_split( - X, y, test_size=0.2, stratify=y, random_state=0 - ) + X_train, X_for_weights, y_train, y_for_weights = train_test_split(X, y, test_size=0.2, stratify=y, random_state=0) else: X_train, y_train = X, y self._labels = np.unique(y) self._gen_code_matrix() - self._binary_classifiers = [ - self._get_classifier() for _ in range(self._code_matrix.shape[1]) - ] + self._binary_classifiers = [self._get_classifier() for _ in range(self._code_matrix.shape[1])] self._learn_binary_classifiers(X_train, y_train) if self.weights is not None: self._calc_weights(X_for_weights, y_for_weights) @@ -164,23 +160,11 @@ def predict(self, X: np.ndarray) -> np.ndarray: def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray) -> None: for classifier_idx, classifier in enumerate(self._binary_classifiers): excluded_classes_indices = [ - idx - for idx in range(len(y)) - if self._code_matrix[self._labels.tolist().index(y[idx])][ - classifier_idx - ] - == 0 + idx for idx in range(len(y)) if self._code_matrix[self._labels.tolist().index(y[idx])][classifier_idx] == 0 ] X_filtered = np.delete(X, excluded_classes_indices, 0) y_filtered = np.delete(y, excluded_classes_indices) - binary_labels = np.array( - [ - self._code_matrix[self._labels.tolist().index(clazz)][ - classifier_idx - ] - for clazz in y_filtered - ] - ) + binary_labels = np.array([self._code_matrix[self._labels.tolist().index(clazz)][classifier_idx] for clazz in y_filtered]) X_filtered, binary_labels = self._oversample(X_filtered, binary_labels) classifier.fit(X_filtered, binary_labels) @@ -196,10 +180,7 @@ def _gen_code_matrix(self) -> None: elif self.encoding == "OVA": self._code_matrix = self._encode_ova(self._labels.shape[0]) else: - raise ValueError( - "Unknown matrix generation encoding: %s, expected to be one of %s." - % (self.encoding, ECOC._allowed_encodings) - ) + raise ValueError("Unknown matrix generation encoding: %s, expected to be one of %s." % (self.encoding, ECOC._allowed_encodings)) def _encode_dense( self, @@ -209,14 +190,10 @@ def _encode_dense( ) -> np.ndarray: try: dirname = os.path.dirname(__file__) - matrix = np.load( - dirname + f"/cached_matrices/dense_{number_of_classes}.npy" - ) + matrix = np.load(dirname + f"/cached_matrices/dense_{number_of_classes}.npy") return matrix except IOError: - print( - f"Could not find cached matrix for dense code for {number_of_classes} classes, generating matrix..." - ) + print(f"Could not find cached matrix for dense code for {number_of_classes} classes, generating matrix...") number_of_columns = int(np.ceil(10 * np.log2(number_of_classes))) code_matrix = np.ones((number_of_classes, number_of_columns)) @@ -233,9 +210,7 @@ def _encode_dense( tmp_code_matrix[row, col] = -1 for compared_row in range(0, row): - dist = self._hamming_distance( - tmp_code_matrix[compared_row], tmp_code_matrix[row] - ) + dist = self._hamming_distance(tmp_code_matrix[compared_row], tmp_code_matrix[row]) if dist < min_dist: min_dist = dist @@ -252,14 +227,10 @@ def _encode_sparse( ) -> np.ndarray: try: dirname = os.path.dirname(__file__) - matrix = np.load( - dirname + f"/cached_matrices/sparse_{number_of_classes}.npy" - ) + matrix = np.load(dirname + f"/cached_matrices/sparse_{number_of_classes}.npy") return matrix except IOError: - print( - f"Could not find cached matrix for sparse code for {number_of_classes} classes, generating matrix..." - ) + print(f"Could not find cached matrix for sparse code for {number_of_classes} classes, generating matrix...") number_of_columns = int(np.ceil(15 * np.log2(number_of_classes))) code_matrix = np.ones((number_of_classes, number_of_columns)) @@ -282,9 +253,7 @@ def _encode_sparse( break for compared_row in range(0, row): - dist = self._hamming_distance( - tmp_code_matrix[compared_row], tmp_code_matrix[row] - ) + dist = self._hamming_distance(tmp_code_matrix[compared_row], tmp_code_matrix[row]) if dist < min_dist: min_dist = dist @@ -314,9 +283,7 @@ def _encode_ovo(self, number_of_classes: int) -> np.ndarray: matrix[row, col] = -1 return matrix - def _map_indices_to_class_pairs( - self, number_of_classes: int - ) -> Dict[int, Tuple[int, int]]: + def _map_indices_to_class_pairs(self, number_of_classes: int) -> Dict[int, Tuple[int, int]]: indices_map = dict() idx = 0 for i in range(number_of_classes): @@ -346,34 +313,19 @@ def _has_matrix_all_zeros_column(self, matrix: np.ndarray) -> bool: def _get_closest_class(self, row: np.ndarray) -> np.ndarray: if self.weights is not None: return self._labels[ - np.argmin( - [ - sum(np.multiply(self.dich_weights, (encoded_class - row) ** 2)) - for encoded_class in self._code_matrix - ] - ) + np.argmin([sum(np.multiply(self.dich_weights, (encoded_class - row) ** 2)) for encoded_class in self._code_matrix]) ] else: - return self._labels[ - np.argmin( - [ - self._hamming_distance(row, encoded_class) - for encoded_class in self._code_matrix - ] - ) - ] + return self._labels[np.argmin([self._hamming_distance(row, encoded_class) for encoded_class in self._code_matrix])] - def _oversample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _oversample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: if self.preprocessing is None: return X, y if isinstance(self.preprocessing, str): if self.preprocessing not in ECOC._allowed_oversampling: raise ValueError( - "Unknown preprocessing method: %s, expected to be one of %s." - % (self.preprocessing, ECOC._allowed_oversampling) + "Unknown preprocessing method: %s, expected to be one of %s." % (self.preprocessing, ECOC._allowed_oversampling) ) elif np.unique(y).size == 1: return X, y @@ -394,8 +346,7 @@ def _get_classifier(self) -> ClassifierMixin: if isinstance(self.binary_classifier, str): if self.binary_classifier not in ECOC._allowed_classifiers: raise ValueError( - "Unknown binary classifier: %s, expected to be one of %s." - % (self.binary_classifier, ECOC._allowed_classifiers) + "Unknown binary classifier: %s, expected to be one of %s." % (self.binary_classifier, ECOC._allowed_classifiers) ) elif self.binary_classifier == "tree": decision_tree_classifier = DecisionTreeClassifier(random_state=42) @@ -407,33 +358,20 @@ def _get_classifier(self) -> ClassifierMixin: knn = KNeighborsClassifier(n_neighbors=self.n_neighbors) return knn else: - if not hasattr(self.binary_classifier, "fit") or not hasattr( - self.binary_classifier, "predict" - ): - raise ValueError( - "Your classifier must implement fit and predict methods" - ) + if not hasattr(self.binary_classifier, "fit") or not hasattr(self.binary_classifier, "predict"): + raise ValueError("Your classifier must implement fit and predict methods") return deepcopy(self.binary_classifier) - def _smote_oversample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _smote_oversample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: n_neighbors = min(3, min(np.unique(y, return_counts=True)[1]) - 1) if n_neighbors == 0: - raise ValueError( - "In order to use SMOTE preprocessing, the training set should contain at least 2 examples from each class" - ) + raise ValueError("In order to use SMOTE preprocessing, the training set should contain at least 2 examples from each class") smote = SMOTE(k_neighbors=n_neighbors, random_state=42) return smote.fit_resample(X, y) - def _calc_weights( - self, X_for_weights: np.ndarray, y_for_weights: np.ndarray - ) -> None: + def _calc_weights(self, X_for_weights: np.ndarray, y_for_weights: np.ndarray) -> None: if self.weights not in ECOC._allowed_weights: - raise ValueError( - "Unknown weighting strategy: %s, expected to be one of %s." - % (self.weights, ECOC._allowed_weights) - ) + raise ValueError("Unknown weighting strategy: %s, expected to be one of %s." % (self.weights, ECOC._allowed_weights)) dich_weights = np.ones(self._code_matrix.shape[1]) if self.weights == "acc": @@ -441,42 +379,22 @@ def _calc_weights( samples_no = 0 correct_no = 0 for sample, sample_label in zip(X_for_weights, y_for_weights): - if ( - self._code_matrix[np.where(self._labels == sample_label)[0][0]][ - clf_idx - ] - != 0 - ): + if self._code_matrix[np.where(self._labels == sample_label)[0][0]][clf_idx] != 0: samples_no += 1 - if ( - clf.predict([sample])[0] - == self._code_matrix[ - np.where(self._labels == sample_label)[0][0] - ][clf_idx] - ): + if clf.predict([sample])[0] == self._code_matrix[np.where(self._labels == sample_label)[0][0]][clf_idx]: correct_no += 1 if samples_no != 0: acc = correct_no / samples_no dich_weights[clf_idx] = -1 + 2 * acc elif self.weights == "avg_tpr_min": - min_counter = Counter( - [y for y in y_for_weights if y in self.minority_classes] - ) + min_counter = Counter([y for y in y_for_weights if y in self.minority_classes]) for clf_idx, clf in enumerate(self._binary_classifiers): min_correct_pred = defaultdict(lambda: 0) for sample, sample_label in zip(X_for_weights, y_for_weights): - if ( - clf.predict([sample])[0] - == self._code_matrix[ - np.where(self._labels == sample_label)[0][0] - ][clf_idx] - ): + if clf.predict([sample])[0] == self._code_matrix[np.where(self._labels == sample_label)[0][0]][clf_idx]: min_correct_pred[sample_label] += 1 - tpr_min = [ - min_correct_pred[clazz] / min_counter[clazz] - for clazz in min_counter.keys() - ] + tpr_min = [min_correct_pred[clazz] / min_counter[clazz] for clazz in min_counter.keys()] avg_tpr_min = np.mean(tpr_min) if tpr_min else np.nan dich_weights[clf_idx] = avg_tpr_min diff --git a/multi_imbalance/ensemble/mrbbagging.py b/multi_imbalance/ensemble/mrbbagging.py index 8b180b2..819fab6 100644 --- a/multi_imbalance/ensemble/mrbbagging.py +++ b/multi_imbalance/ensemble/mrbbagging.py @@ -109,9 +109,7 @@ def predict(self, data: np.ndarray) -> List[int]: """ return self._select_classes(data) - def _group_data( - self, x: np.ndarray, y: np.ndarray - ) -> Tuple[Set[int], Dict[int, List[Tuple[np.ndarray, int]]]]: + def _group_data(self, x: np.ndarray, y: np.ndarray) -> Tuple[Set[int], Dict[int, List[Tuple[np.ndarray, int]]]]: classes = set(y) self.classes = {key: value for (key, value) in enumerate(classes)} data = [[x[i], y[i]] for i in range(len(x))] @@ -159,21 +157,15 @@ def _train( self.classifiers[i] = la_list[i].fit(subset_x, subset_y) - def _find_random_features( - self, labels_no: int, features_no: int, subset_x: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _find_random_features(self, labels_no: int, features_no: int, subset_x: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: random_features_idx = sample_without_replacement(labels_no, features_no) random_features = self._get_features_array(subset_x, random_features_idx) return random_features, random_features_idx - def _get_features_array( - self, subset_x: np.ndarray, random_features_idx: np.ndarray - ) -> np.ndarray: + def _get_features_array(self, subset_x: np.ndarray, random_features_idx: np.ndarray) -> np.ndarray: random_features = np.array(subset_x[:, random_features_idx[0]]) for f in range(1, len(random_features_idx)): - random_features = np.vstack( - (random_features, subset_x[:, random_features_idx[f]]) - ) + random_features = np.vstack((random_features, subset_x[:, random_features_idx[f]])) if random_features.ndim == 1: return random_features[:, np.newaxis] return random_features.T @@ -209,26 +201,14 @@ def _train_with_feature_selection( subset_y = np.array(subset_y).astype(np.float64) if self.random_fs: - subset1, subset1_idx = self._find_random_features( - labels_no, features_no, subset_x - ) - subset2, subset2_idx = self._find_random_features( - labels_no, features_no, subset_x - ) - subset3, subset3_idx = self._find_random_features( - labels_no, features_no, subset_x - ) + subset1, subset1_idx = self._find_random_features(labels_no, features_no, subset_x) + subset2, subset2_idx = self._find_random_features(labels_no, features_no, subset_x) + subset3, subset3_idx = self._find_random_features(labels_no, features_no, subset_x) else: - subset1, subset1_idx = self._get_kbest_classifier( - chi2, features_no, subset_x, subset_y - ) - subset2, subset2_idx = self._get_kbest_classifier( - f_classif, features_no, subset_x, subset_y - ) - subset3, subset3_idx = self._find_random_features( - labels_no, features_no, subset_x - ) + subset1, subset1_idx = self._get_kbest_classifier(chi2, features_no, subset_x, subset_y) + subset2, subset2_idx = self._get_kbest_classifier(f_classif, features_no, subset_x, subset_y) + subset3, subset3_idx = self._find_random_features(labels_no, features_no, subset_x) self.feature_selection_methods[i] = subset1_idx self.feature_selection_methods[i + 1] = subset2_idx @@ -244,18 +224,12 @@ def _set_classes_dict(self, classes: Set[int]) -> None: def _select_data(self, classifier_id: int, data: np.ndarray) -> np.ndarray: if self.feature_selection: if self.random_fs: - new_data = self._get_features_array( - data, self.feature_selection_methods[classifier_id] - ) + new_data = self._get_features_array(data, self.feature_selection_methods[classifier_id]) else: if (classifier_id % 3) - 2 == 0: - new_data = self._get_features_array( - data, self.feature_selection_methods[classifier_id] - ) + new_data = self._get_features_array(data, self.feature_selection_methods[classifier_id]) else: - new_data = self.feature_selection_methods[classifier_id].transform( - data - ) + new_data = self.feature_selection_methods[classifier_id].transform(data) return new_data return data @@ -266,9 +240,7 @@ def _count_votes(self, data: np.ndarray) -> np.ndarray: classes = self.classifiers[classifier_id].predict(new_data) probabilities = self.classifiers[classifier_id].predict_proba(new_data) for i, cl in enumerate(classes): - idx = list(self.classifier_classes.keys())[ - list(self.classifier_classes.values()).index(int(cl)) - ] + idx = list(self.classifier_classes.keys())[list(self.classifier_classes.values()).index(int(cl))] voting_matrix[i][idx] += max(probabilities[i]) return voting_matrix diff --git a/multi_imbalance/ensemble/ovo.py b/multi_imbalance/ensemble/ovo.py index 96e9d46..6d9e83b 100644 --- a/multi_imbalance/ensemble/ovo.py +++ b/multi_imbalance/ensemble/ovo.py @@ -101,9 +101,7 @@ def fit( self._labels = np.unique(y) self._minority_classes = minority_classes num_of_classes = len(self._labels) - self._binary_classifiers = [ - [self._get_classifier() for _ in range(n)] for n in range(0, num_of_classes) - ] + self._binary_classifiers = [[self._get_classifier() for _ in range(n)] for n in range(0, num_of_classes)] self._learn_binary_classifiers(X, y) return self @@ -117,33 +115,23 @@ def predict(self, X: np.ndarray) -> np.ndarray: num_of_classes = len(self._labels) predicted = list() for instance in X: - binary_outputs_matrix = self._construct_binary_outputs_matrix( - instance, num_of_classes - ) + binary_outputs_matrix = self._construct_binary_outputs_matrix(instance, num_of_classes) predicted.append(self._perform_max_voting(binary_outputs_matrix)) return np.array(predicted) - def _construct_binary_outputs_matrix( - self, instance: np.ndarray, num_of_classes: int - ) -> np.ndarray: + def _construct_binary_outputs_matrix(self, instance: np.ndarray, num_of_classes: int) -> np.ndarray: binary_outputs_matrix = np.zeros((num_of_classes, num_of_classes)) for class_idx1 in range(len(self._labels)): for class_idx2 in range(class_idx1): - binary_outputs_matrix[class_idx1][ - class_idx2 - ] = self._binary_classifiers[class_idx1][class_idx2].predict([instance]) + binary_outputs_matrix[class_idx1][class_idx2] = self._binary_classifiers[class_idx1][class_idx2].predict([instance]) return binary_outputs_matrix def _learn_binary_classifiers(self, X: np.ndarray, y: np.ndarray) -> None: for row in range(len(self._labels)): for col in range(row): first_class, second_class = self._labels[row], self._labels[col] - filtered_indices = [ - idx - for idx in range(len(y)) - if y[idx] in (first_class, second_class) - ] + filtered_indices = [idx for idx in range(len(y)) if y[idx] in (first_class, second_class)] X_filtered, y_filtered = X[filtered_indices], y[filtered_indices] if self.should_perform_oversampling(first_class, second_class): X_filtered, y_filtered = self._oversample(X_filtered, y_filtered) @@ -153,8 +141,7 @@ def _get_classifier(self) -> ClassifierMixin: if isinstance(self.binary_classifier, str): if self.binary_classifier not in OVO._allowed_classifiers: raise ValueError( - "Unknown binary classifier: %s, expected to be one of %s." - % (self.binary_classifier, OVO._allowed_classifiers) + "Unknown binary classifier: %s, expected to be one of %s." % (self.binary_classifier, OVO._allowed_classifiers) ) elif self.binary_classifier == "tree": decision_tree_classifier = DecisionTreeClassifier(random_state=42) @@ -166,35 +153,24 @@ def _get_classifier(self) -> ClassifierMixin: knn = KNeighborsClassifier(n_neighbors=self.n_neighbors) return knn else: - if not hasattr(self.binary_classifier, "fit") or not hasattr( - self.binary_classifier, "predict" - ): - raise ValueError( - "Your classifier must implement fit and predict methods" - ) + if not hasattr(self.binary_classifier, "fit") or not hasattr(self.binary_classifier, "predict"): + raise ValueError("Your classifier must implement fit and predict methods") return deepcopy(self.binary_classifier) def _perform_max_voting(self, binary_outputs_matrix: np.ndarray) -> np.ndarray: scores = np.zeros(len(self._labels)) for clf_1 in range(len(binary_outputs_matrix)): for clf_2 in range(clf_1): - scores[ - self._labels.tolist().index(binary_outputs_matrix[clf_1][clf_2]) - ] += 1 + scores[self._labels.tolist().index(binary_outputs_matrix[clf_1][clf_2])] += 1 return self._labels[np.argmax(scores)] - def _oversample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _oversample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: if self.preprocessing is None: return X, y if isinstance(self.preprocessing, str): if self.preprocessing not in OVO._allowed_preprocessing: - raise ValueError( - "Unknown preprocessing: %s, expected to be one of %s." - % (self.preprocessing, OVO._allowed_preprocessing) - ) + raise ValueError("Unknown preprocessing: %s, expected to be one of %s." % (self.preprocessing, OVO._allowed_preprocessing)) elif np.unique(y).size == 1: return X, y elif self.preprocessing == "globalCS": @@ -210,14 +186,10 @@ def _oversample( raise ValueError("Your resampler must implement fit_resample method") return self.preprocessing.fit_resample(X, y) - def _smote_oversample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _smote_oversample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: n_neighbors = min(3, min(np.unique(y, return_counts=True)[1]) - 1) if n_neighbors == 0: - raise ValueError( - "In order to use SMOTE preprocessing, the training set should contain at least 2 examples from each class" - ) + raise ValueError("In order to use SMOTE preprocessing, the training set should contain at least 2 examples from each class") smote = SMOTE(k_neighbors=n_neighbors, random_state=42) return smote.fit_resample(X, y) @@ -230,10 +202,6 @@ def should_perform_oversampling(self, first_class: int, second_class: int) -> No elif self.preprocessing_between == "all": return True elif self.preprocessing_between == "maj-min": - return ( - first_class in self._minority_classes - and second_class not in self._minority_classes - ) or ( - second_class in self._minority_classes - and first_class not in self._minority_classes + return (first_class in self._minority_classes and second_class not in self._minority_classes) or ( + second_class in self._minority_classes and first_class not in self._minority_classes ) diff --git a/multi_imbalance/ensemble/soup_bagging.py b/multi_imbalance/ensemble/soup_bagging.py index 90dd006..79860c1 100644 --- a/multi_imbalance/ensemble/soup_bagging.py +++ b/multi_imbalance/ensemble/soup_bagging.py @@ -82,24 +82,18 @@ def fit_classifier( ) x_out, y_out = out_of_bag[:, :-1], out_of_bag[:, -1].astype(int) - x_resampled, y_resampled = SOUP(maj_int_min=maj_int_min).fit_resample( - x_sampled, y_sampled - ) + x_resampled, y_resampled = SOUP(maj_int_min=maj_int_min).fit_resample(x_sampled, y_sampled) clf.fit(x_resampled, y_resampled) result = clf.predict_proba(x_out) class_sum_prob = np.sum(result, axis=0) + 0.001 class_quantities = Counter(y_out) - expected_sum_prob = np.array( - [class_quantities[i] for i in range(len(Counter(y)))] - ) + expected_sum_prob = np.array([class_quantities[i] for i in range(len(Counter(y)))]) try: global_weights = expected_sum_prob / class_sum_prob except Exception: global_weights = np.ones(shape=len(Counter(y))) - print( - f"Exc {Counter(y)} {Counter(y_out)} {result.shape} {expected_sum_prob.shape} {class_sum_prob.shape}" - ) + print(f"Exc {Counter(y)} {Counter(y_out)} {result.shape} {expected_sum_prob.shape} {class_sum_prob.shape}") return clf, global_weights def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): @@ -129,8 +123,6 @@ def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): for i, clf in enumerate(self.classifiers) ], ) - pool.close() - pool.join() for i, (clf, weights) in enumerate(results): self.classifiers[i] = clf self.clf_weights[i] = weights @@ -169,15 +161,11 @@ def predict(self, X: np.ndarray, strategy: str = "average") -> np.ndarray: p = np.zeros(shape=(n_samples, n_classes)) - 1 for i in range(n_classes): - two_dim_class_vector = weights_sum[ - :, :, i - ] # [:,:,1] -> [classifiers x samples] + two_dim_class_vector = weights_sum[:, :, i] # [:,:,1] -> [classifiers x samples] if i in self.maj_int_min["min"]: squeeze_with_strategy = np.max(two_dim_class_vector, axis=0) else: - squeeze_with_strategy = np.min( - two_dim_class_vector, axis=0 - ) # [1, n_samples, 1] -> [n_samples] + squeeze_with_strategy = np.min(two_dim_class_vector, axis=0) # [1, n_samples, 1] -> [n_samples] p[:, i] = squeeze_with_strategy assert -1 not in p elif strategy == "global": diff --git a/multi_imbalance/resampling/global_cs.py b/multi_imbalance/resampling/global_cs.py index 44578a1..18b3483 100644 --- a/multi_imbalance/resampling/global_cs.py +++ b/multi_imbalance/resampling/global_cs.py @@ -18,9 +18,7 @@ def __init__(self, shuffle: bool = True) -> None: self.shuffle = shuffle self.quantities, self.max_quantity, self.X, self.y = [None] * 4 - def _fit_resample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _fit_resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: """ :param X: two dimensional numpy array (number of samples x number of features) with float numbers @@ -30,9 +28,7 @@ def _fit_resample( Resampled X (max class quantity * number of unique classes), y (number of rows in X) as numpy array """ assert len(X.shape) == 2, "X should have 2 dimension" - assert ( - X.shape[0] == y.shape[0] - ), "Number of labels must be equal to number of samples" + assert X.shape[0] == y.shape[0], "Number of labels must be equal to number of samples" self.quantities = Counter(y) self.max_quantity = int(np.max(list(self.quantities.values()))) @@ -52,17 +48,11 @@ def _fit_resample( return np.array(result_X), np.array(result_y) - def _equal_oversample( - self, X: np.ndarray, y: np.ndarray, class_name: str - ) -> Tuple[List[np.ndarray], List[np.ndarray]]: - indices_in_class = [ - i for i, class_label in enumerate(y) if class_label == class_name - ] + def _equal_oversample(self, X: np.ndarray, y: np.ndarray, class_name: str) -> Tuple[List[np.ndarray], List[np.ndarray]]: + indices_in_class = [i for i, class_label in enumerate(y) if class_label == class_name] desired_quantity = self.max_quantity - len(indices_in_class) - oversampled_X, oversampled_y = list(X[indices_in_class]), list( - y[indices_in_class] - ) + oversampled_X, oversampled_y = list(X[indices_in_class]), list(y[indices_in_class]) for i in range(desired_quantity): sample_index_to_duplicate: int = i % self.quantities[class_name] diff --git a/multi_imbalance/resampling/mdo.py b/multi_imbalance/resampling/mdo.py index 6ccb85b..aabe26a 100644 --- a/multi_imbalance/resampling/mdo.py +++ b/multi_imbalance/resampling/mdo.py @@ -49,9 +49,7 @@ def __init__( self.prop = prop self.class_balances = maj_int_min - def _fit_resample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _fit_resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: """ :param X: two dimensional numpy array (number of samples x number of features) with float numbers @@ -76,15 +74,11 @@ def _fit_resample( if minority_classes is not None and class_label not in minority_classes: continue - chosen_minor_class_samples_to_oversample, weights = self._choose_samples( - class_label - ) + chosen_minor_class_samples_to_oversample, weights = self._choose_samples(class_label) if len(chosen_minor_class_samples_to_oversample) == 0: continue - oversampling_rate = int( - (goal_quantity - quantities[class_label]) * self.prop - ) + oversampling_rate = int((goal_quantity - quantities[class_label]) * self.prop) if oversampling_rate > 0: if len(chosen_minor_class_samples_to_oversample) == 1: oversampled_set = np.repeat( @@ -93,21 +87,14 @@ def _fit_resample( axis=0, ) else: - chosen_samples_features_mean = np.mean( - chosen_minor_class_samples_to_oversample, axis=0 - ) - zero_mean_samples = ( - chosen_minor_class_samples_to_oversample - - chosen_samples_features_mean - ) + chosen_samples_features_mean = np.mean(chosen_minor_class_samples_to_oversample, axis=0) + zero_mean_samples = chosen_minor_class_samples_to_oversample - chosen_samples_features_mean n_components = min(zero_mean_samples.shape) pca = PCA(n_components=n_components).fit(zero_mean_samples) uncorrelated_samples = pca.transform(zero_mean_samples) - variables_variance = np.diag( - np.cov(uncorrelated_samples, rowvar=False) - ) + variables_variance = np.diag(np.cov(uncorrelated_samples, rowvar=False)) oversampled_set = self._MDO_oversampling( uncorrelated_samples, @@ -115,35 +102,21 @@ def _fit_resample( oversampling_rate, weights, ) - oversampled_set = ( - pca.inverse_transform(oversampled_set) - + chosen_samples_features_mean - ) + oversampled_set = pca.inverse_transform(oversampled_set) + chosen_samples_features_mean oversampled_X = np.vstack((oversampled_X, oversampled_set)) - oversampled_y = np.hstack( - (oversampled_y, np.array([class_label] * oversampling_rate)) - ) + oversampled_y = np.hstack((oversampled_y, np.array([class_label] * oversampling_rate))) return oversampled_X, oversampled_y def _choose_samples(self, class_label: str) -> Tuple[np.ndarray, np.ndarray]: - minor_class_indices = [ - i for i, value in enumerate(self.y) if value == class_label - ] + minor_class_indices = [i for i, value in enumerate(self.y) if value == class_label] minor_set = self.X[minor_class_indices] - quantity_same_class_neighbours = self.calculate_same_class_neighbour_quantities( - minor_set, class_label - ) - chosen_minor_class_samples_to_oversample = minor_set[ - quantity_same_class_neighbours >= self.k1 - ] - - weights = ( - quantity_same_class_neighbours[quantity_same_class_neighbours >= self.k1] - / self.k2 - ) + quantity_same_class_neighbours = self.calculate_same_class_neighbour_quantities(minor_set, class_label) + chosen_minor_class_samples_to_oversample = minor_set[quantity_same_class_neighbours >= self.k1] + + weights = quantity_same_class_neighbours[quantity_same_class_neighbours >= self.k1] / self.k2 weights_sum = np.sum(weights) if weights_sum != 0: @@ -154,9 +127,7 @@ def _choose_samples(self, class_label: str) -> Tuple[np.ndarray, np.ndarray]: return chosen_minor_class_samples_to_oversample, weights - def _MDO_oversampling( - self, T: np.ndarray, v: np.ndarray, oversampling_rate: int, weights: np.ndarray - ) -> np.ndarray: + def _MDO_oversampling(self, T: np.ndarray, v: np.ndarray, oversampling_rate: int, weights: np.ndarray) -> np.ndarray: oversampled_set = list() V = np.clip(np.copy(v), a_min=0.001, a_max=None) for _ in range(oversampling_rate): @@ -176,28 +147,18 @@ def _MDO_oversampling( last = (1 - s) * alpha_V[-1] last_feature = np.sqrt(last) if last > 0 else 0 - random_last_feature = self.random_state.choice( - [-last_feature, last_feature], 1 - )[0] + random_last_feature = self.random_state.choice([-last_feature, last_feature], 1)[0] features_vector.append(random_last_feature) oversampled_set.append(features_vector) return np.array(oversampled_set) - def calculate_same_class_neighbour_quantities( - self, S_minor: np.ndarray, S_minor_label: str - ) -> np.ndarray: - minority_class_neighbours_indices = self.knn.kneighbors( - S_minor, return_distance=False - ) + def calculate_same_class_neighbour_quantities(self, S_minor: np.ndarray, S_minor_label: str) -> np.ndarray: + minority_class_neighbours_indices = self.knn.kneighbors(S_minor, return_distance=False) quantity_with_same_label_in_neighbourhood = list() for i in range(len(S_minor)): sample_neighbours_indices = minority_class_neighbours_indices[i][1:] - quantity_sample_neighbours_indices_with_same_label = sum( - self.y[sample_neighbours_indices] == S_minor_label - ) - quantity_with_same_label_in_neighbourhood.append( - quantity_sample_neighbours_indices_with_same_label - ) + quantity_sample_neighbours_indices_with_same_label = sum(self.y[sample_neighbours_indices] == S_minor_label) + quantity_with_same_label_in_neighbourhood.append(quantity_sample_neighbours_indices_with_same_label) return np.array(quantity_with_same_label_in_neighbourhood) diff --git a/multi_imbalance/resampling/soup.py b/multi_imbalance/resampling/soup.py index 71e3842..3366d83 100644 --- a/multi_imbalance/resampling/soup.py +++ b/multi_imbalance/resampling/soup.py @@ -42,9 +42,7 @@ def __init__( self.dsc_maj_cls, self.asc_min_cls = None, None self._X, self._y = None, None - def _fit_resample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _fit_resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: """ The method computes the metrics required for resampling based on the given set @@ -63,9 +61,7 @@ def _fit_resample( self._y = deepcopy(y) assert len(self._X.shape) == 2, "X should have 2 dimension" - assert ( - self._X.shape[0] == self._y.shape[0] - ), "Number of labels must be equal to number of samples" + assert self._X.shape[0] == self._y.shape[0], "Number of labels must be equal to number of samples" self.quantities = Counter(self._y) self.goal_quantity = self._calculate_goal_quantity(self.maj_int_min) @@ -91,37 +87,27 @@ def _fit_resample( return np.array(self._X), np.array(self._y) - def _construct_class_safe_levels( - self, X: np.ndarray, y: np.ndarray, class_name: str - ) -> defaultdict: + def _construct_class_safe_levels(self, X: np.ndarray, y: np.ndarray, class_name: str) -> defaultdict: self.quantities = Counter(y) indices_in_class = [i for i, value in enumerate(y) if value == class_name] neigh_clf = NearestNeighbors(n_neighbors=self.k + 1).fit(X) - neighbour_indices = neigh_clf.kneighbors( - X[indices_in_class], return_distance=False - )[:, 1:] + neighbour_indices = neigh_clf.kneighbors(X[indices_in_class], return_distance=False)[:, 1:] neighbour_classes = y[neighbour_indices] class_safe_levels = defaultdict(float) for i, sample_id in enumerate(indices_in_class): neighbours_quantities = Counter(neighbour_classes[i]) - class_safe_levels[sample_id] = self._calculate_sample_safe_level( - class_name, neighbours_quantities - ) + class_safe_levels[sample_id] = self._calculate_sample_safe_level(class_name, neighbours_quantities) return class_safe_levels - def _calculate_sample_safe_level( - self, class_name: str, neighbours_quantities: Counter - ) -> float: + def _calculate_sample_safe_level(self, class_name: str, neighbours_quantities: Counter) -> float: safe_level = 0 q: Counter = self.quantities for neigh_label, neigh_q in neighbours_quantities.items(): - similarity_between_classes = min(q[class_name], q[neigh_label]) / max( - q[class_name], q[neigh_label] - ) + similarity_between_classes = min(q[class_name], q[neigh_label]) / max(q[class_name], q[neigh_label]) safe_level += neigh_q * similarity_between_classes safe_level /= self.k @@ -131,67 +117,43 @@ def _calculate_sample_safe_level( return safe_level - def _undersample( - self, X: np.ndarray, y: np.ndarray, class_name: str - ) -> Tuple[np.ndarray, np.ndarray]: - safe_levels_of_samples_in_class = self._construct_class_safe_levels( - X, y, class_name - ) + def _undersample(self, X: np.ndarray, y: np.ndarray, class_name: str) -> Tuple[np.ndarray, np.ndarray]: + safe_levels_of_samples_in_class = self._construct_class_safe_levels(X, y, class_name) class_quantity = self.quantities[class_name] - safe_levels_list = sorted( - safe_levels_of_samples_in_class.items(), key=itemgetter(1) - ) + safe_levels_list = sorted(safe_levels_of_samples_in_class.items(), key=itemgetter(1)) samples_to_remove_quantity = max(0, int(class_quantity - self.goal_quantity)) if samples_to_remove_quantity > 0: - remove_indices = list( - map(itemgetter(0), safe_levels_list[:samples_to_remove_quantity]) - ) + remove_indices = list(map(itemgetter(0), safe_levels_list[:samples_to_remove_quantity])) X = np.delete(X, remove_indices, axis=0) y = np.delete(y, remove_indices, axis=0) return X, y - def _oversample( - self, X: np.ndarray, y: np.ndarray, class_name: str - ) -> Tuple[np.ndarray, np.ndarray]: - safe_levels_of_samples_in_class = self._construct_class_safe_levels( - X, y, class_name - ) + def _oversample(self, X: np.ndarray, y: np.ndarray, class_name: str) -> Tuple[np.ndarray, np.ndarray]: + safe_levels_of_samples_in_class = self._construct_class_safe_levels(X, y, class_name) class_quantity = self.quantities[class_name] - safe_levels_list = list( - sorted( - safe_levels_of_samples_in_class.items(), key=itemgetter(1), reverse=True - ) - ) + safe_levels_list = list(sorted(safe_levels_of_samples_in_class.items(), key=itemgetter(1), reverse=True)) difference = self.goal_quantity - class_quantity while difference > 0: quantity_items_to_copy = min(difference, class_quantity) - indices_to_copy = list( - map(itemgetter(0), safe_levels_list[:quantity_items_to_copy]) - ) + indices_to_copy = list(map(itemgetter(0), safe_levels_list[:quantity_items_to_copy])) X = np.vstack((X, X[indices_to_copy])) y = np.hstack((y, y[indices_to_copy])) difference -= quantity_items_to_copy return X, y - def _calculate_goal_quantity( - self, maj_int_min: Union[Dict[str, List[int]], None] = None - ) -> Union[int, float]: + def _calculate_goal_quantity(self, maj_int_min: Union[Dict[str, List[int]], None] = None) -> Union[int, float]: if maj_int_min is None: maj_q = max(list(self.quantities.values())) min_q = min(list(self.quantities.values())) return np.mean((min_q, maj_q), dtype=int) else: - maj_classes = { - k: v for k, v in self.quantities.items() if k in maj_int_min["maj"] - } + maj_classes = {k: v for k, v in self.quantities.items() if k in maj_int_min["maj"]} maj_q = list(maj_classes.values()) - min_classes = { - k: v for k, v in self.quantities.items() if k in maj_int_min["min"] - } + min_classes = {k: v for k, v in self.quantities.items() if k in maj_int_min["min"]} min_q = list(min_classes.values()) if len(min_q) == 0 and len(maj_q) == 0: diff --git a/multi_imbalance/resampling/spider.py b/multi_imbalance/resampling/spider.py index 9a57ee1..d4de036 100644 --- a/multi_imbalance/resampling/spider.py +++ b/multi_imbalance/resampling/spider.py @@ -43,9 +43,7 @@ def __init__( self.cost = cost self.AS, self.RS = np.array([]), np.array([]) - def _fit_resample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _fit_resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: """ Performs resampling @@ -110,17 +108,11 @@ def _estimate_cost_matrix(y: Union[np.ndarray, List[int]]) -> np.ndarray: np.fill_diagonal(cost, 0) return cost - def _sort_by_cardinality( - self, y: Union[List[int], np.ndarray] - ) -> Tuple[List[int], List[int]]: + def _sort_by_cardinality(self, y: Union[List[int], np.ndarray]) -> Tuple[List[int], List[int]]: class_cardinality = Counter(y) # to ensure looping over classes with decreasing cardinality. - int_classes = sorted( - self.intermediate_classes, key=lambda clazz: -class_cardinality[clazz] - ) - min_classes = sorted( - self.minority_classes, key=lambda clazz: -class_cardinality[clazz] - ) + int_classes = sorted(self.intermediate_classes, key=lambda clazz: -class_cardinality[clazz]) + min_classes = sorted(self.minority_classes, key=lambda clazz: -class_cardinality[clazz]) return int_classes, min_classes def amplify(self, int_min_class: str) -> None: @@ -223,9 +215,7 @@ def _min_cost_classes(self, x: np.ndarray, DS: np.ndarray) -> np.ndarray: for cj in C: s = 0 for ci in C: - s += ((kneighbors[:, -1] == ci).astype(int).sum() / self.k) * self.cost[ - C.index(ci), C.index(cj) - ] + s += ((kneighbors[:, -1] == ci).astype(int).sum() / self.k) * self.cost[C.index(ci), C.index(cj)] vals.append(s) C = np.array(C) vals = np.array(vals) @@ -244,8 +234,7 @@ def _relabel_nn(self, x: np.ndarray) -> None: if ( contains(self.RS, neighbor) and self._class_of(neighbor) in self.majority_classes - and self._class_of(neighbor) - in self._min_cost_classes(x, self._ds_as_rs_union()) + and self._class_of(neighbor) in self._min_cost_classes(x, self._ds_as_rs_union()) ): self.RS = setdiff(self.RS, np.array([neighbor])) neighbor[-1] = x[-1] @@ -260,9 +249,9 @@ def _clean_nn(self, x: np.ndarray) -> None: """ nearest_neighbors = self._knn(x, self._ds_as_rs_union()) for neighbor in nearest_neighbors: - if self._class_of(neighbor) in self.majority_classes and self._class_of( - neighbor - ) in self._min_cost_classes(x, self._ds_as_rs_union()): + if self._class_of(neighbor) in self.majority_classes and self._class_of(neighbor) in self._min_cost_classes( + x, self._ds_as_rs_union() + ): self.DS = setdiff(self.DS, np.array([neighbor])) self.RS = setdiff(self.RS, np.array([neighbor])) @@ -291,8 +280,7 @@ def _knn(self, x: np.ndarray, DS: np.ndarray) -> np.ndarray: within_radius = self.neigh_clf.radius_neighbors( [x[:-1]], radius=self.neigh_clf.kneighbors([x[:-1]], return_distance=True)[0][0][-1] - + 0.0001 - * self.neigh_clf.kneighbors([x[:-1]], return_distance=True)[0][0][-1], + + 0.0001 * self.neigh_clf.kneighbors([x[:-1]], return_distance=True)[0][0][-1], return_distance=True, ) @@ -314,9 +302,7 @@ def _amplify_nn(self, x: np.ndarray) -> None: Single observation. """ - while self._class_of(x) not in self._min_cost_classes( - x, self._ds_as_rs_union() - ): + while self._class_of(x) not in self._min_cost_classes(x, self._ds_as_rs_union()): y = x.copy() self.AS = union(self.AS, np.asarray([y])) diff --git a/multi_imbalance/resampling/static_smote.py b/multi_imbalance/resampling/static_smote.py index ddf437e..f3f5ff6 100644 --- a/multi_imbalance/resampling/static_smote.py +++ b/multi_imbalance/resampling/static_smote.py @@ -20,9 +20,7 @@ def __init__(self) -> None: super().__init__() self._sampling_type = "over-sampling" - def _fit_resample( - self, X: np.ndarray, y: np.ndarray - ) -> Tuple[np.ndarray, np.ndarray]: + def _fit_resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: """ Performs resampling diff --git a/multi_imbalance/utils/data.py b/multi_imbalance/utils/data.py index 7e10a78..4a4212a 100644 --- a/multi_imbalance/utils/data.py +++ b/multi_imbalance/utils/data.py @@ -86,9 +86,7 @@ def load_arff_dataset( return X.to_numpy(), y -def load_datasets_arff( - return_non_cat_length: bool = False, dataset_paths: Union[str, None] = None -) -> OrderedDict: +def load_datasets_arff(return_non_cat_length: bool = False, dataset_paths: Union[str, None] = None) -> OrderedDict: if dataset_paths is None: dataset_paths = glob.glob(os.path.join(get_project_root(), "data", "arff", "*")) @@ -97,12 +95,8 @@ def load_datasets_arff( path = Path(path) dataset_name = path.stem if return_non_cat_length: - X, y, cat_length = load_arff_dataset( - path, return_non_cat_length=return_non_cat_length - ) - datasets[dataset_name] = Bunch( - data=X, target=y, non_cat_length=cat_length, DESCR=dataset_name - ) + X, y, cat_length = load_arff_dataset(path, return_non_cat_length=return_non_cat_length) + datasets[dataset_name] = Bunch(data=X, target=y, non_cat_length=cat_length, DESCR=dataset_name) else: X, y = load_arff_dataset(path, return_non_cat_length=return_non_cat_length) datasets[dataset_name] = Bunch(data=X, target=y, DESCR=dataset_name) @@ -135,9 +129,7 @@ def construct_maj_int_min(y: np.ndarray, strategy: str = "median") -> OrderedDic elif strategy == "average": middle_size = np.mean(list(class_sizes.values())) else: - raise ValueError( - f'Unrecognized {strategy}. Only "median" and "average" are allowed.' - ) + raise ValueError(f'Unrecognized {strategy}. Only "median" and "average" are allowed.') maj_int_min = OrderedDict({"maj": list(), "int": list(), "min": list()}) for class_label, class_size in class_sizes.items(): diff --git a/multi_imbalance/utils/metrics.py b/multi_imbalance/utils/metrics.py index ee260da..9431f54 100644 --- a/multi_imbalance/utils/metrics.py +++ b/multi_imbalance/utils/metrics.py @@ -2,9 +2,7 @@ import numpy as np -def gmean_score( - y_test: np.ndarray, y_pred: np.ndarray, correction: float = 0.001 -) -> float: # pragma no cover +def gmean_score(y_test: np.ndarray, y_pred: np.ndarray, correction: float = 0.001) -> float: # pragma no cover """ Calculate geometric mean score diff --git a/multi_imbalance/utils/plot.py b/multi_imbalance/utils/plot.py index 4501634..685474c 100644 --- a/multi_imbalance/utils/plot.py +++ b/multi_imbalance/utils/plot.py @@ -10,9 +10,7 @@ sns.set_style("darkgrid") -def plot_cardinality_and_2d_data( - X: np.ndarray, y: np.ndarray, dataset_name: str = "" -): # pragma no cover +def plot_cardinality_and_2d_data(X: np.ndarray, y: np.ndarray, dataset_name: str = ""): # pragma no cover """ Plots cardinality of classes from y as well as scatter plot of X transformed to two dimensions using PCA diff --git a/pyproject.toml b/pyproject.toml index eebb47a..010fee9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,4 +67,7 @@ testpaths = [ ] [tool.setuptools] -py-modules = ["multi_imbalance"] \ No newline at end of file +py-modules = ["multi_imbalance"] + +[tool.black] +line-length = 140 diff --git a/setup.cfg b/setup.cfg index 905c8bb..2b21f65 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,2 +1,2 @@ [flake8] -max-line-length = 160 \ No newline at end of file +max-line-length = 140 \ No newline at end of file diff --git a/tests/ensemble/test_ecoc.py b/tests/ensemble/test_ecoc.py index edadf7d..79c1895 100644 --- a/tests/ensemble/test_ecoc.py +++ b/tests/ensemble/test_ecoc.py @@ -40,40 +40,7 @@ ] ) -y = np.array( - [ - 2, - 0, - 2, - 3, - 0, - 3, - 1, - 0, - 2, - 0, - 2, - 3, - 1, - 2, - 1, - 3, - 0, - 3, - 2, - 0, - 0, - 1, - 2, - 3, - 0, - 1, - 2, - 3, - 1, - 2, - ] -) +y = np.array([2, 0, 2, 3, 0, 3, 1, 0, 2, 0, 2, 3, 1, 2, 1, 3, 0, 3, 2, 0, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2]) def test_random_oversampling(): @@ -93,9 +60,7 @@ def test_no_oversampling(): assert y.shape == y_oversampled.shape -@pytest.mark.parametrize( - "encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"] -) +@pytest.mark.parametrize("encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"]) @pytest.mark.parametrize( "oversampling, minority_classes", [(None, None), ("globalCS", None), ("SMOTE", None), ("SOUP", [0, 2])], @@ -175,8 +140,7 @@ def test_unknown_encoding(): with pytest.raises(ValueError) as e: ecoc_clf.fit(X, y) assert ( - e.value.args[0] - == "Unknown matrix generation encoding: dummy, expected to be one of ['dense', 'sparse', 'complete', 'OVA', 'OVO']." + e.value.args[0] == "Unknown matrix generation encoding: dummy, expected to be one of ['dense', 'sparse', 'complete', 'OVA', 'OVO']." ) @@ -184,10 +148,7 @@ def test_unknown_weighting_strategy(): ecoc_clf = ecoc.ECOC(weights="dummy") with pytest.raises(ValueError) as e: ecoc_clf.fit(X, y) - assert ( - e.value.args[0] - == "Unknown weighting strategy: dummy, expected to be one of [None, 'acc', 'avg_tpr_min']." - ) + assert e.value.args[0] == "Unknown weighting strategy: dummy, expected to be one of [None, 'acc', 'avg_tpr_min']." def test_own_classifier_without_predict_and_fit(): @@ -211,9 +172,7 @@ def bar(self, X): def test_predefined_classifiers_and_weighting_without_exceptions(classifier, weights): ecoc_clf = ecoc.ECOC(binary_classifier=classifier, weights=weights) ecoc_clf.fit(X, y) - predicted = ecoc_clf.predict( - np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]]) - ) + predicted = ecoc_clf.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]])) assert len(predicted) == 3 @@ -239,9 +198,7 @@ def bar(self, X): assert "fit_transform" in str(e.value) -@pytest.mark.parametrize( - "encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"] -) +@pytest.mark.parametrize("encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"]) @pytest.mark.parametrize("oversampling", [None, "globalCS", "SMOTE", "SOUP"]) def test_ecoc_with_sklearn_pipeline(encoding_strategy, oversampling): pipeline = Pipeline( @@ -251,7 +208,5 @@ def test_ecoc_with_sklearn_pipeline(encoding_strategy, oversampling): ] ) pipeline.fit(X, y) - y_hat = pipeline.predict( - np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]]) - ) + y_hat = pipeline.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]])) assert len(y_hat) == 3 diff --git a/tests/ensemble/test_mrbbagging.py b/tests/ensemble/test_mrbbagging.py index c63c0dc..d5121b1 100644 --- a/tests/ensemble/test_mrbbagging.py +++ b/tests/ensemble/test_mrbbagging.py @@ -42,17 +42,13 @@ class TestMRBBagging(unittest.TestCase): def test_api(self): - mrbbagging = MRBBagging( - 1, DecisionTreeClassifier(random_state=0), random_state=0 - ) + mrbbagging = MRBBagging(1, DecisionTreeClassifier(random_state=0), random_state=0) mrbbagging.fit(X_train, y_train) y_pred = mrbbagging.predict(X_test) assert all(y_pred == y_test) def test_api_multiple_trees(self): - mrbbagging = MRBBagging( - 5, DecisionTreeClassifier(random_state=0), random_state=0 - ) + mrbbagging = MRBBagging(5, DecisionTreeClassifier(random_state=0), random_state=0) mrbbagging.fit(X_train, y_train) y_pred = mrbbagging.predict(X_test) assert all(y_pred == y_test) diff --git a/tests/ensemble/test_ovo.py b/tests/ensemble/test_ovo.py index 6b127ba..512bf53 100644 --- a/tests/ensemble/test_ovo.py +++ b/tests/ensemble/test_ovo.py @@ -35,9 +35,7 @@ ] ) -y = np.array( - [1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 1, 1, 2, 3, 2, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1] -) +y = np.array([1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 1, 1, 2, 3, 2, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1]) def test_fit_predict(): @@ -107,18 +105,14 @@ def fit_resample(self, X, y): @pytest.mark.parametrize("preprocessing_btwn", ["all", "maj-min"]) @pytest.mark.parametrize("classifier", ["tree", "NB", "KNN"]) @pytest.mark.parametrize("preprocessing", [None, "globalCS", "SMOTE", "SOUP"]) -def test_predefined_classifiers_and_preprocessings_without_errors( - classifier, preprocessing, preprocessing_btwn -): +def test_predefined_classifiers_and_preprocessings_without_errors(classifier, preprocessing, preprocessing_btwn): ovo_clf = ovo.OVO( binary_classifier=classifier, preprocessing=preprocessing, preprocessing_between=preprocessing_btwn, ) ovo_clf.fit(X, y) - predicted = ovo_clf.predict( - np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]]) - ) + predicted = ovo_clf.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]])) assert len(predicted) == 3 @@ -189,7 +183,5 @@ def test_ecoc_with_sklearn_pipeline(preprocessing_btwn, classifier, preprocessin ] ) pipeline.fit(X, y) - y_hat = pipeline.predict( - np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.99]]) - ) + y_hat = pipeline.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.99]])) assert len(y_hat) == 3 diff --git a/tests/resampling/test_mdo.py b/tests/resampling/test_mdo.py index 551c794..3a15be1 100644 --- a/tests/resampling/test_mdo.py +++ b/tests/resampling/test_mdo.py @@ -88,9 +88,7 @@ def _get_parametrized_mdo(X, y): return _get_parametrized_mdo -@pytest.mark.parametrize( - "X, y, sc_minor_expected, weights_expected", complete_test_data -) +@pytest.mark.parametrize("X, y, sc_minor_expected, weights_expected", complete_test_data) def test_choose_samples(X, y, sc_minor_expected, weights_expected, mdo_mock): clf = mdo_mock(X, y) SC_minor, weights = clf._choose_samples(1) diff --git a/tests/resampling/test_soup.py b/tests/resampling/test_soup.py index 16a3585..3ebe122 100644 --- a/tests/resampling/test_soup.py +++ b/tests/resampling/test_soup.py @@ -165,12 +165,8 @@ def _get_parametrized_soup(X, y): return _get_parametrized_soup -@pytest.mark.parametrize( - "X, y, zero_safe_levels, one_safe_levels, first_sample_safe", complete_test_data -) -def test_calculating_safe_levels_for_sample( - X, y, zero_safe_levels, one_safe_levels, first_sample_safe, soup_mock -): +@pytest.mark.parametrize("X, y, zero_safe_levels, one_safe_levels, first_sample_safe", complete_test_data) +def test_calculating_safe_levels_for_sample(X, y, zero_safe_levels, one_safe_levels, first_sample_safe, soup_mock): clf = soup_mock(X, y) neighbour_quantities = Counter({0: 3, 1: 1}) @@ -178,12 +174,8 @@ def test_calculating_safe_levels_for_sample( assert_array_almost_equal(safe_level, first_sample_safe) -@pytest.mark.parametrize( - "X, y, zero_safe_levels, one_safe_levels, first_sample_safe", complete_test_data -) -def test_calculating_safe_levels_for_class( - X, y, zero_safe_levels, one_safe_levels, first_sample_safe, soup_mock -): +@pytest.mark.parametrize("X, y, zero_safe_levels, one_safe_levels, first_sample_safe", complete_test_data) +def test_calculating_safe_levels_for_class(X, y, zero_safe_levels, one_safe_levels, first_sample_safe, soup_mock): clf = soup_mock(X, y) zero_levels = clf._construct_class_safe_levels(X, y, 0) @@ -197,9 +189,7 @@ def test_calculating_safe_levels_for_class( "X, y, class_name, expected_undersampling, expected_oversampling", safe_levels_test_data, ) -def test_oversample( - X, y, class_name, expected_undersampling, expected_oversampling, soup_mock -): +def test_oversample(X, y, class_name, expected_undersampling, expected_oversampling, soup_mock): clf = soup_mock(X, y) oversampled_X, oversampled_y = clf._oversample(X, y, class_name) assert len(oversampled_X) == expected_oversampling @@ -210,9 +200,7 @@ def test_oversample( "X, y, class_name, expected_undersampling, expected_oversampling", safe_levels_test_data, ) -def test_undersample( - X, y, class_name, expected_undersampling, expected_oversampling, soup_mock -): +def test_undersample(X, y, class_name, expected_undersampling, expected_oversampling, soup_mock): clf = soup_mock(X, y) undersampled_X, undersampled_y = clf._undersample(X, y, class_name) assert len(undersampled_X) == expected_undersampling diff --git a/tests/resampling/test_spider.py b/tests/resampling/test_spider.py index 276f31c..39ff068 100644 --- a/tests/resampling/test_spider.py +++ b/tests/resampling/test_spider.py @@ -6,9 +6,7 @@ cost = np.ones((3, 3)) np.fill_diagonal(cost, 0) -spider = SPIDER3( - 1, maj_int_min={"maj": ["MAJ"], "int": ["INT"], "min": ["MIN"]}, cost=cost -) +spider = SPIDER3(1, maj_int_min={"maj": ["MAJ"], "int": ["INT"], "min": ["MIN"]}, cost=cost) def test_knn(): diff --git a/tests/utils/test_data.py b/tests/utils/test_data.py index 6502972..4d959fb 100644 --- a/tests/utils/test_data.py +++ b/tests/utils/test_data.py @@ -32,9 +32,7 @@ def test_preprocess(): def test_preprocess_without_one_hot_encode(): dir_path = os.path.dirname(os.path.realpath(__file__)) ds_path = os.path.join(dir_path, "ds_example.arrf") - x, y, non_cat = load_arff_dataset( - ds_path, return_non_cat_length=True, one_hot_encode=False - ) + x, y, non_cat = load_arff_dataset(ds_path, return_non_cat_length=True, one_hot_encode=False) assert all(y == np.array([0, 0, 0, 0, 0, 0, 0])) assert non_cat == 2 assert x.shape == (7, 2) @@ -75,13 +73,7 @@ def test_construct_maj_int_min_when_correct_and_median_strategy(): 5: 10, 8: 12, } - y = np.array( - [ - class_label - for class_label, class_size in class_sizes.items() - for _ in range(class_size) - ] - ) + y = np.array([class_label for class_label, class_size in class_sizes.items() for _ in range(class_size)]) np.random.shuffle(y) maj_int_dict = construct_maj_int_min(y, strategy="median") @@ -104,13 +96,7 @@ def test_construct_maj_int_min_when_correct_and_average_strategy(): 5: 10, 8: 2000, } - y = np.array( - [ - class_label - for class_label, class_size in class_sizes.items() - for _ in range(class_size) - ] - ) + y = np.array([class_label for class_label, class_size in class_sizes.items() for _ in range(class_size)]) np.random.shuffle(y) maj_int_dict = construct_maj_int_min(y, strategy="average") @@ -132,13 +118,7 @@ def test_construct_maj_int_min_when_wrong_strategy(): 5: 10, 8: 2000, } - y = np.array( - [ - class_label - for class_label, class_size in class_sizes.items() - for _ in range(class_size) - ] - ) + y = np.array([class_label for class_label, class_size in class_sizes.items() for _ in range(class_size)]) np.random.shuffle(y) with pytest.raises(ValueError): From 36edd37aaaa5f15aca863040b137920582d76b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sun, 6 Nov 2022 12:35:48 +0100 Subject: [PATCH 13/48] new authors and joblib instead of multiprocessing --- multi_imbalance/ensemble/soup_bagging.py | 13 ++++++------- pyproject.toml | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/multi_imbalance/ensemble/soup_bagging.py b/multi_imbalance/ensemble/soup_bagging.py index 79860c1..8f7ad92 100644 --- a/multi_imbalance/ensemble/soup_bagging.py +++ b/multi_imbalance/ensemble/soup_bagging.py @@ -2,6 +2,7 @@ from collections import Counter from copy import deepcopy from typing import Dict, List, Tuple, Union +from joblib import Parallel, delayed import numpy as np from sklearn.ensemble import BaggingClassifier @@ -108,11 +109,9 @@ def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): self object """ self.classes = np.unique(y) - - pool = multiprocessing.Pool(self.num_core) - results = pool.map( - fit_clf, - [ + parallel = Parallel(n_jobs=self.num_core) + results = parallel( + delayed(fit_clf)( ( clf, X, @@ -120,8 +119,8 @@ def fit(self, X: np.ndarray, y: np.ndarray, **kwargs): resample(X, y, stratify=y, random_state=i), self.maj_int_min, ) - for i, clf in enumerate(self.classifiers) - ], + ) + for i, clf in enumerate(self.classifiers) ) for i, (clf, weights) in enumerate(results): self.classifiers[i] = clf diff --git a/pyproject.toml b/pyproject.toml index 010fee9..59165d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ name = "multi-imbalance" description = "Python package for tackling multiclass imbalance problems." version = "0.1.0" maintainers = [ - {name = "Damian Horna, Kamil Pluciński, Hanna Klimczak, Jacek Grycza", email = "horna.damian@gmail.com"} + {name = "Damian Horna, Kamil Pluciński, Hanna Klimczak, Jacek Grycza, Jan Kozłowski, Maciej Falbogowski, Adam Wojciechowski, Mateusz Woźny", email = "horna.damian@gmail.com"} ] readme = "README.md" classifiers=[ From 17514c4362065c285b17b03b31b64dd00a1a07bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sun, 4 Dec 2022 10:16:29 +0100 Subject: [PATCH 14/48] first version --- .gitignore | 1 + examples/datasets/analysis.ipynb | 457 +++++++++++++++++++++++ multi_imbalance/datasets/_data_loader.py | 13 +- multi_imbalance/datasets/analysis.py | 176 +++++++++ tests/conftest.py | 45 +++ tests/datasets/test_analysis.py | 196 ++++++++++ tests/ensemble/test_ecoc.py | 107 ++---- 7 files changed, 921 insertions(+), 74 deletions(-) create mode 100644 examples/datasets/analysis.ipynb create mode 100644 multi_imbalance/datasets/analysis.py create mode 100644 tests/conftest.py create mode 100644 tests/datasets/test_analysis.py diff --git a/.gitignore b/.gitignore index 00de997..6b66379 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,7 @@ venv # Datasets data/extracted/ +data/csv/ docs/_build htmlcov \ No newline at end of file diff --git a/examples/datasets/analysis.ipynb b/examples/datasets/analysis.ipynb new file mode 100644 index 0000000..77c3583 --- /dev/null +++ b/examples/datasets/analysis.ipynb @@ -0,0 +1,457 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from imblearn.metrics import geometric_mean_score\n", + "from multi_imbalance.datasets.analysis import AnalysisPipeline, Config\n", + "from pathlib import Path\n", + "from sklearn.metrics import accuracy_score\n", + "from multi_imbalance.datasets import load_datasets" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "load_datasets(save_to_csv=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "Path(\"results.csv\").unlink()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "cwd = Path.cwd()\n", + "\n", + "config = {\n", + " \"datasets\": [cwd.parents[1] / \"data\" / \"csv\" / \"glass.csv\"],\n", + " \"classifiers\": {\n", + " \"tree\": [{\"max_depth\" : 100}, {\"max_depth\" : 20}, {\"max_depth\" : None}],\n", + " },\n", + " \"resample_methods\": {\n", + " \"globalCS\": {\"shuffle\": True},\n", + " \"MDO\": dict(k1_frac=0.3, maj_int_min={\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}),\n", + " \"StaticSMOTE\": {},\n", + " \"SOUP\": {\"shuffle\": True},\n", + " },\n", + " \"metrics\": {geometric_mean_score: {\"correction\": 0.001}},\n", + " \"n_repeats\": 10,\n", + " \"train_test_split_kwargs\": dict(test_size=0.35),\n", + "}\n", + "\n", + "config2 = {\n", + " \"datasets\": [cwd.parents[1] / \"data\" / \"csv\" / \"new_ecoli.csv\"],\n", + " \"classifiers\": {\n", + " \"tree\": [{\"max_depth\" : 100}, {\"max_depth\" : 20}, {\"max_depth\" : None}],\n", + " },\n", + " \"resample_methods\": {\n", + " \"globalCS\": {\"shuffle\": True},\n", + " \"MDO\": dict(k1_frac=0.3, maj_int_min={\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}),\n", + " \"StaticSMOTE\": {},\n", + " \"SOUP\": {\"shuffle\": True},\n", + " },\n", + " \"metrics\": {geometric_mean_score: {\"correction\": 0.001}},\n", + " \"n_repeats\": 10,\n", + " \"train_test_split_kwargs\": dict(test_size=0.35),\n", + "}\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "c = Config.from_dict(config)\n", + "c2 = Config.from_dict(config2)\n", + "pipeline = AnalysisPipeline([c, c2])\n", + "pipeline.run_analysis(\"results.csv\", explode_clf_kwargs = False, train_without_resampling = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "df=pd.read_csv(\"results.csv\")\n", + "df.fillna(0, inplace=True)\n", + "group_df = df[[\"dataset_name\", \"classifier\", \"resampling_method\", \"metric_value\", \"metric_name\", \"kwargs\"]].groupby(by=[\"classifier\",\"metric_name\" ,\"dataset_name\", \"resampling_method\", \"kwargs\"]).agg({'metric_value': ['mean', 'std']})" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metric_value
meanstd
dataset_nameresampling_methodkwargs
glassMDO{'max_depth': 100}0.6438550.070864
{'max_depth': 20}0.5946530.158337
{'max_depth': None}0.6364540.094362
Not defined{'max_depth': 100}0.5347180.175402
{'max_depth': 20}0.5729390.147061
{'max_depth': None}0.6315420.062332
SOUP{'max_depth': 100}0.6602340.052351
{'max_depth': 20}0.6194250.095159
{'max_depth': None}0.6560910.073783
StaticSMOTE{'max_depth': 100}0.6216950.147462
{'max_depth': 20}0.6499090.053088
{'max_depth': None}0.5319510.171160
globalCS{'max_depth': 100}0.6327910.070711
{'max_depth': 20}0.5066500.160718
{'max_depth': None}0.5801050.099831
new_ecoliMDO{'max_depth': 100}0.7777600.052380
{'max_depth': 20}0.7560260.041473
{'max_depth': None}0.7542410.050392
Not defined{'max_depth': 100}0.6965990.043062
{'max_depth': 20}0.7067520.076627
{'max_depth': None}0.7205470.062143
SOUP{'max_depth': 100}0.7498570.028518
{'max_depth': 20}0.7471580.046176
{'max_depth': None}0.7397590.075347
StaticSMOTE{'max_depth': 100}0.7194960.048702
{'max_depth': 20}0.7211930.050183
{'max_depth': None}0.6940620.066351
globalCS{'max_depth': 100}0.6671230.049824
{'max_depth': 20}0.6943780.075182
{'max_depth': None}0.6714510.058819
\n", + "
" + ], + "text/plain": [ + " metric_value \n", + " mean std\n", + "dataset_name resampling_method kwargs \n", + "glass MDO {'max_depth': 100} 0.643855 0.070864\n", + " {'max_depth': 20} 0.594653 0.158337\n", + " {'max_depth': None} 0.636454 0.094362\n", + " Not defined {'max_depth': 100} 0.534718 0.175402\n", + " {'max_depth': 20} 0.572939 0.147061\n", + " {'max_depth': None} 0.631542 0.062332\n", + " SOUP {'max_depth': 100} 0.660234 0.052351\n", + " {'max_depth': 20} 0.619425 0.095159\n", + " {'max_depth': None} 0.656091 0.073783\n", + " StaticSMOTE {'max_depth': 100} 0.621695 0.147462\n", + " {'max_depth': 20} 0.649909 0.053088\n", + " {'max_depth': None} 0.531951 0.171160\n", + " globalCS {'max_depth': 100} 0.632791 0.070711\n", + " {'max_depth': 20} 0.506650 0.160718\n", + " {'max_depth': None} 0.580105 0.099831\n", + "new_ecoli MDO {'max_depth': 100} 0.777760 0.052380\n", + " {'max_depth': 20} 0.756026 0.041473\n", + " {'max_depth': None} 0.754241 0.050392\n", + " Not defined {'max_depth': 100} 0.696599 0.043062\n", + " {'max_depth': 20} 0.706752 0.076627\n", + " {'max_depth': None} 0.720547 0.062143\n", + " SOUP {'max_depth': 100} 0.749857 0.028518\n", + " {'max_depth': 20} 0.747158 0.046176\n", + " {'max_depth': None} 0.739759 0.075347\n", + " StaticSMOTE {'max_depth': 100} 0.719496 0.048702\n", + " {'max_depth': 20} 0.721193 0.050183\n", + " {'max_depth': None} 0.694062 0.066351\n", + " globalCS {'max_depth': 100} 0.667123 0.049824\n", + " {'max_depth': 20} 0.694378 0.075182\n", + " {'max_depth': None} 0.671451 0.058819" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "group_df.loc[\"tree\", \"geometric_mean_score\", :, :]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.9.2 ('.test')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "354fe7bbb08ce19365ae7e9dc9251db0b8655780cc27fe67a2a3ffff5cc90304" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/multi_imbalance/datasets/_data_loader.py b/multi_imbalance/datasets/_data_loader.py index 3dd5b81..fa9f29a 100644 --- a/multi_imbalance/datasets/_data_loader.py +++ b/multi_imbalance/datasets/_data_loader.py @@ -23,7 +23,7 @@ from os.path import join, isfile import numpy as np - +import pandas as pd from sklearn.datasets._base import Bunch PRE_FILENAME = "x" @@ -57,7 +57,7 @@ MAP_ID_NAME[v + 1] = k -def load_datasets(data_home: str = DATA_HOME_BASIC) -> OrderedDict: +def load_datasets(data_home: str = DATA_HOME_BASIC, save_to_csv: bool = False) -> OrderedDict: """ Load the benchmark datasets. @@ -73,6 +73,7 @@ def load_datasets(data_home: str = DATA_HOME_BASIC) -> OrderedDict: string Description of the each dataset. """ extracted_dir = join(data_home, "extracted") + csv_dir = join(data_home, "csv") datasets = OrderedDict() filter_data_ = MAP_NAME_ID.keys() @@ -92,6 +93,14 @@ def load_datasets(data_home: str = DATA_HOME_BASIC) -> OrderedDict: data = np.load(filename) X, y = data["data"], data["label"] + if save_to_csv: + csv_filename = it + ".csv" + csv_filename = join(csv_dir, csv_filename) + df = pd.DataFrame(X) + df.rename(columns=lambda x: f"X{x}", inplace=True) + df["y"] = y + df.to_csv(csv_filename, index=False) + datasets[it] = Bunch(data=X, target=y, DESCR=it) return datasets diff --git a/multi_imbalance/datasets/analysis.py b/multi_imbalance/datasets/analysis.py new file mode 100644 index 0000000..74947a2 --- /dev/null +++ b/multi_imbalance/datasets/analysis.py @@ -0,0 +1,176 @@ +from copy import deepcopy +from dataclasses import dataclass +import json +from pathlib import Path +from typing import Callable, Dict, List, Tuple, Union +import pandas as pd +from sklearn.base import ClassifierMixin +from sklearn.model_selection import train_test_split +from sklearn.naive_bayes import GaussianNB +from sklearn.neighbors import KNeighborsClassifier +from sklearn.tree import DecisionTreeClassifier +from imblearn.base import BaseSampler +from sklearn.pipeline import _name_estimators +import logging + +from multi_imbalance.resampling.global_cs import GlobalCS +from multi_imbalance.resampling.soup import SOUP +from multi_imbalance.resampling.spider import SPIDER3 +from multi_imbalance.resampling.mdo import MDO +from multi_imbalance.resampling.static_smote import StaticSMOTE + +logging.basicConfig(level=logging.INFO, format="[%(asctime)s] %(levelname)s %(name)s %(message)s", datefmt="%d.%m.%Y %H:%M:%S") + + +@dataclass +class Config: + datasets: List[str] + classifiers: Dict[Union[str, ClassifierMixin], List[Dict]] + resample_methods: Dict[Union[str, BaseSampler], Dict] + metrics: Dict[Callable, Dict] + n_repeats: int + train_test_split_kwargs: Dict + + @classmethod + def from_dict(cls, config: Dict) -> "Config": + return cls(**config) + + +@dataclass +class Result: + dataset_name: str + classifier: str + resampling_method: str + metric_name: str + metric_value: float + no_repeat: int + kwargs: Dict + + +class AnalysisPipeline: + _allowed_resampling = ["globalCS", "StaticSMOTE", "SOUP", "spider3", "MDO"] + _allowed_classifiers = ["tree", "NB", "KNN"] + + def __init__(self, configs: List[Config]) -> None: + self.__logger = logging.getLogger("AnalysisPipeline") + self._configs = configs + self.__resampling_methods = {"globalCS": GlobalCS, "StaticSMOTE": StaticSMOTE, "SOUP": SOUP, "spider3": SPIDER3, "MDO": MDO} + self.__classifiers = {"tree": DecisionTreeClassifier, "NB": GaussianNB, "KNN": KNeighborsClassifier} + + def run_analysis(self, output_path: str, explode_clf_kwargs: bool, train_without_resampling: bool): + self._output_path = Path(output_path) + for config in self._configs: + self._config = config + self.__metrics = self._config.metrics + self.__n_repeats = self._config.n_repeats + self.__tts_kwargs = self._config.train_test_split_kwargs + for clf_name, clf, clf_kwargs in self._get_classifier(): + for n in range(1, self.__n_repeats + 1): + for dataset_name, dataset in self._get_dataset(): + for resampler_name, resampler in self._get_resampler(): + tmp_clf = deepcopy(clf) + X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] + X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, **self.__tts_kwargs) + + try: + X_train_res, y_train_res = resampler.fit_resample(X_train, y_train) + results = [] + tmp_clf.fit(X_train_res, y_train_res) + y_pred = tmp_clf.predict(X_test) + + for metric, kwargs in self.__metrics.items(): + results.append( + Result( + dataset_name, + clf_name, + resampler_name, + metric.__name__, + metric(y_test, y_pred, **kwargs), + n, + clf_kwargs, + ) + ) + df_results = pd.DataFrame(results) + if self._output_path.exists(): + df_results.to_csv(output_path, mode="a", index=False, header=False) + else: + df_results.to_csv(output_path, index=False) + except Exception as e: + self.__logger.error(f"Raised exception '{e}' for {dataset_name=}, {resampler_name=} and {clf_name=}") + + if train_without_resampling: + tmp_clf = deepcopy(clf) + results = [] + X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] + X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, **self.__tts_kwargs) + tmp_clf.fit(X_train, y_train) + y_pred = tmp_clf.predict(X_test) + + for metric, kwargs in self.__metrics.items(): + results.append( + Result( + dataset_name, + clf_name, + "Not defined", + metric.__name__, + metric(y_test, y_pred, **kwargs), + n, + clf_kwargs, + ) + ) + df_results = pd.DataFrame(results) + if self._output_path.exists(): + df_results.to_csv(output_path, mode="a", index=False, header=False) + else: + df_results.to_csv(output_path, index=False) + + if explode_clf_kwargs: + df_results = pd.read_csv(output_path) + df_results = pd.concat( + [df_results.drop(columns="kwargs"), df_results["kwargs"].apply(lambda x: dict(eval(x))).apply(pd.Series)], axis=1 + ) + df_results.to_csv(output_path, index=False) + + def _get_dataset(self) -> Tuple[str, pd.DataFrame]: + for dataset_path in self._config.datasets: + path = Path(dataset_path) + + if path.is_file() and path.suffix == ".csv": + yield path.stem, pd.read_csv(str(path)) + elif path.is_dir(): + dataset_dir = path + for path in dataset_dir.glob("**/*.csv"): + yield path.stem, pd.read_csv(str(path)) + else: + raise Exception("Wrong dataset path, should be csv file or dir with csv files") + + def _get_resampler(self) -> List[Tuple[str, BaseSampler]]: + for resampler, kwargs in self._config.resample_methods.items(): + if isinstance(resampler, str): + if resampler not in AnalysisPipeline._allowed_resampling: + raise ValueError( + "Unknown resample method: %s, expected to be one of %s" % (resampler, AnalysisPipeline._allowed_resampling) + ) + yield resampler, self.__resampling_methods[resampler](**kwargs) + else: + if not hasattr(resampler, "fit_resample"): + raise ValueError("Your resampler must implement fit_resample method") + yield self._get_name(resampler(**kwargs)) + + def _get_classifier(self) -> List[Tuple[str, ClassifierMixin, Dict]]: + for classifier, kwargs_list in self._config.classifiers.items(): + if isinstance(classifier, str): + if classifier not in AnalysisPipeline._allowed_classifiers: + raise ValueError( + "Unknown classifier: %s, expected to be one of %s" % (classifier, AnalysisPipeline._allowed_classifiers) + ) + for kwargs in kwargs_list: + yield classifier, self.__classifiers[classifier](**kwargs), kwargs + else: + if not hasattr(classifier, "fit") or not hasattr(classifier, "predict"): + raise ValueError("Your classifier must implement fit and predict methods") + for kwargs in kwargs_list: + yield *self._get_name(classifier(**kwargs)), kwargs + + def _get_name(self, estimator: Union[ClassifierMixin, BaseSampler]) -> Tuple[str, Union[ClassifierMixin, BaseSampler]]: + return _name_estimators([estimator])[0] diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..1421117 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,45 @@ +import numpy as np +import pytest + + +@pytest.fixture +def X_ecoc(): + return np.array( + [ + [1.8938566839198983, 0.7347724642028586, 1.5817290619305417], + [1.6893330472771877, 1.3729481360429043, 0.1779576959347715], + [1.1103882804642866, 0.2684931500114267, 0.24565717871603532], + [0.9635120154904986, 0.44338438370111577, 1.6559238383999697], + [0.6525827502237067, 0.8978087724631425, 1.5056794207545134], + [0.8232009732859464, 0.5270243940630088, 1.434695372722657], + [0.519304726338536, 0.4635228434262648, 0.014170648565480004], + [1.3938520002157688, 1.524670776643407, 0.9011189423913637], + [0.09993454781831534, 0.5991188594563008, 0.6462181194010983], + [1.5300019511124079, 0.08177359763506553, 1.7642527715349894], + [1.1770688242955876, 0.9604049547799067, 0.6989025594835503], + [1.5143651712498534, 1.4914673103908214, 1.3377704178955587], + [1.1299009013495136, 0.700540900007983, 1.071829181951729], + [1.530652133805449, 0.2992536048983532, 1.957731948975865], + [1.6236761570974148, 0.5919033806975751, 1.6334065904199757], + [0.9365056250644108, 1.526475631725099, 1.420298571686271], + [0.9063995770780813, 1.0248369545634513, 1.36911505163145], + [0.3861789635773656, 0.5758917834278445, 0.910187724154228], + [0.7165380621896438, 1.494299618627891, 0.521854931610239], + [1.3621939213912113, 0.387219837127391, 1.321376123618781], + [1.6764775993219296, 0.15364096535456317, 1.3219739817389], + [3.6764775993219296, 0.15364096535456317, 1.3789731273891], + [4.6764775993219296, 2.15364096535456317, 1.9830281123211], + [5.6764775993219296, 3.15364096535456317, 1.3213121322321], + [6.321312, 11.15364096535456317, 1.0998908320132], + [8.414132131, 2.15364096535456317, 5.0998908320132], + [10.6764775993219296, -2.15364096535456317, 3.0998908320132], + [4.6764775993219296, 0.15364096535456317, 2.0998908320132], + [-4.6764775993219296, -1.15364096535456317, 9.0998908320132], + [-6.6764775993219296, 11.15364096535456317, 5.0998908320132], + ] + ) + + +@pytest.fixture +def y_ecoc(): + return np.array([2, 0, 2, 3, 0, 3, 1, 0, 2, 0, 2, 3, 1, 2, 1, 3, 0, 3, 2, 0, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2]) diff --git a/tests/datasets/test_analysis.py b/tests/datasets/test_analysis.py new file mode 100644 index 0000000..5d726d2 --- /dev/null +++ b/tests/datasets/test_analysis.py @@ -0,0 +1,196 @@ +import pytest +from sklearn.metrics import accuracy_score +from sklearn.tree import DecisionTreeClassifier +from sklearn.linear_model import LinearRegression +import pandas as pd +from imblearn.metrics import geometric_mean_score +import numpy as np + + +from multi_imbalance.datasets.analysis import AnalysisPipeline, Config +from multi_imbalance.resampling.global_cs import GlobalCS +from multi_imbalance.resampling.soup import SOUP + + +def get_dummy_config(): + return { + "datasets": [], + "classifiers": {}, + "resample_methods": {}, + "metrics": {}, + "n_repeats": 2, + "train_test_split_kwargs": {}, + } + + +@pytest.fixture +def dataset_file(tmp_path): + filename = tmp_path / "dataset.csv" + filename.touch() + + return str(filename) + + +@pytest.fixture +def output_file(tmp_path): + filename = tmp_path / "output.csv" + + return str(filename) + + +@pytest.mark.parametrize( + "config_dict", + [ + { + "datasets": ["path/to/data"], + "classifiers": { + "tree": [{}], + }, + "resample_methods": { + "globalCS": {}, + }, + "metrics": {lambda x, y: (x, y): {}}, + "n_repeats": 2, + "train_test_split_kwargs": dict(test_size=0.2), + } + ], +) +def test_config_from_dict(config_dict): + config = Config.from_dict(config_dict) + + assert config.datasets == config_dict["datasets"] + assert config.classifiers == config_dict["classifiers"] + assert config.resample_methods == config_dict["resample_methods"] + assert config.metrics == config_dict["metrics"] + assert config.n_repeats == config_dict["n_repeats"] + assert config.train_test_split_kwargs == config_dict["train_test_split_kwargs"] + + +@pytest.mark.parametrize( + "classifier, expected_name, expected_clf", + [("tree", "tree", DecisionTreeClassifier), (LinearRegression, "linearregression", LinearRegression)], +) +def test_get_classifier(classifier, expected_name, expected_clf): + config_dict = get_dummy_config() + config_dict["classifiers"].update({classifier: [{}]}) + + config = Config.from_dict(config_dict) + + pipeline = AnalysisPipeline(config) + + clf_name, clf = next(pipeline._get_classifier()) + assert clf_name == expected_name + assert isinstance(clf, expected_clf) + + +@pytest.mark.parametrize( + "resampler, expected_name, expected_resampler", + [("globalCS", "globalCS", GlobalCS), (SOUP, "soup", SOUP)], +) +def test_get_resampler(resampler, expected_name, expected_resampler): + config_dict = get_dummy_config() + config_dict["resample_methods"].update({resampler: {}}) + + config = Config.from_dict(config_dict) + + pipeline = AnalysisPipeline(config) + + resampler_name, resampler = next(pipeline._get_resampler()) + assert resampler_name == expected_name + assert isinstance(resampler, expected_resampler) + + +@pytest.mark.parametrize("data, columns", [([[1, 2, 0]], ["X1", "X2", "y"]), ([[1, 2, 0], [4, 2, 1]], ["X1", "X2", "y"])]) +def test_get_dataset(data, columns, tmp_path, dataset_file): + config_dict = get_dummy_config() + config_dict["datasets"].append(str(tmp_path)) + + config = Config.from_dict(config_dict) + expected_df = pd.DataFrame(data, columns=columns) + expected_df.to_csv(dataset_file, index=False) + + pipeline = AnalysisPipeline(config) + + dataset_name, df = next(pipeline._get_dataset()) + assert dataset_name == "dataset" + pd.testing.assert_frame_equal(df, expected_df) + + +def test_run_analysis(X_ecoc, y_ecoc, dataset_file, output_file): + df = pd.DataFrame(X_ecoc, columns=["X1", "X2", "X3"]) + df["y"] = y_ecoc + df.to_csv(dataset_file, index=False) + config_dict = { + "datasets": [dataset_file], + "classifiers": dict(tree=[{"max_depth": 30}]), + "resample_methods": dict(globalCS={"shuffle": True}), + "metrics": {geometric_mean_score: {"correction": 0.005}, accuracy_score: {}}, + "n_repeats": 2, + "train_test_split_kwargs": dict(test_size=0.2, random_state=42), + } + config = Config.from_dict(config_dict) + + pipeline = AnalysisPipeline(config) + pipeline.run_analysis(output_file) + + result_df = pd.read_csv(output_file) + assert (result_df["dataset_name"] == "dataset").all() + assert (result_df["classifier"] == "tree").all() + np.testing.assert_array_equal(result_df["metric_name"].unique(), ["geometric_mean_score", "accuracy_score"]) + np.testing.assert_array_almost_equal(result_df["metric_value"].unique(), [0.018803, 0.166667]) + + +def test_get_dataset_wrong_path(): + config_dict = get_dummy_config() + config_dict["datasets"].append("bad/path/to/file.ext") + + config = Config.from_dict(config_dict) + + pipeline = AnalysisPipeline(config) + + with pytest.raises(Exception) as ex: + next(pipeline._get_dataset()) + + assert ex.value.args[0] == "Wrong dataset path, should be csv file or dir with csv files" + + +@pytest.mark.parametrize( + "wrong_resampler, expected_exception", + [ + ("wrong", "Unknown resample method: wrong, expected to be one of ['globalCS', 'StaticSMOTE', 'SOUP', 'spider3', 'MDO']"), + (lambda x: x, "Your resampler must implement fit_resample method"), + ], +) +def test_get_resampler_wrong(wrong_resampler, expected_exception): + config_dict = get_dummy_config() + config_dict["resample_methods"].update({wrong_resampler: {}}) + + config = Config.from_dict(config_dict) + + pipeline = AnalysisPipeline(config) + + with pytest.raises(ValueError) as ex: + next(pipeline._get_resampler()) + + assert ex.value.args[0] == expected_exception + + +@pytest.mark.parametrize( + "wrong_clf, expected_exception", + [ + ("wrong", "Unknown classifier: wrong, expected to be one of ['tree', 'NB', 'KNN']"), + (lambda x: x, "Your classifier must implement fit and predict methods"), + ], +) +def test_get_classifier_wrong(wrong_clf, expected_exception): + config_dict = get_dummy_config() + config_dict["classifiers"].update({wrong_clf: {}}) + + config = Config.from_dict(config_dict) + + pipeline = AnalysisPipeline(config) + + with pytest.raises(ValueError) as ex: + next(pipeline._get_classifier()) + + assert ex.value.args[0] == expected_exception diff --git a/tests/ensemble/test_ecoc.py b/tests/ensemble/test_ecoc.py index 79c1895..9f8718b 100644 --- a/tests/ensemble/test_ecoc.py +++ b/tests/ensemble/test_ecoc.py @@ -5,59 +5,22 @@ import multi_imbalance.ensemble.ecoc as ecoc -X = np.array( - [ - [1.8938566839198983, 0.7347724642028586, 1.5817290619305417], - [1.6893330472771877, 1.3729481360429043, 0.1779576959347715], - [1.1103882804642866, 0.2684931500114267, 0.24565717871603532], - [0.9635120154904986, 0.44338438370111577, 1.6559238383999697], - [0.6525827502237067, 0.8978087724631425, 1.5056794207545134], - [0.8232009732859464, 0.5270243940630088, 1.434695372722657], - [0.519304726338536, 0.4635228434262648, 0.014170648565480004], - [1.3938520002157688, 1.524670776643407, 0.9011189423913637], - [0.09993454781831534, 0.5991188594563008, 0.6462181194010983], - [1.5300019511124079, 0.08177359763506553, 1.7642527715349894], - [1.1770688242955876, 0.9604049547799067, 0.6989025594835503], - [1.5143651712498534, 1.4914673103908214, 1.3377704178955587], - [1.1299009013495136, 0.700540900007983, 1.071829181951729], - [1.530652133805449, 0.2992536048983532, 1.957731948975865], - [1.6236761570974148, 0.5919033806975751, 1.6334065904199757], - [0.9365056250644108, 1.526475631725099, 1.420298571686271], - [0.9063995770780813, 1.0248369545634513, 1.36911505163145], - [0.3861789635773656, 0.5758917834278445, 0.910187724154228], - [0.7165380621896438, 1.494299618627891, 0.521854931610239], - [1.3621939213912113, 0.387219837127391, 1.321376123618781], - [1.6764775993219296, 0.15364096535456317, 1.3219739817389], - [3.6764775993219296, 0.15364096535456317, 1.3789731273891], - [4.6764775993219296, 2.15364096535456317, 1.9830281123211], - [5.6764775993219296, 3.15364096535456317, 1.3213121322321], - [6.321312, 11.15364096535456317, 1.0998908320132], - [8.414132131, 2.15364096535456317, 5.0998908320132], - [10.6764775993219296, -2.15364096535456317, 3.0998908320132], - [4.6764775993219296, 0.15364096535456317, 2.0998908320132], - [-4.6764775993219296, -1.15364096535456317, 9.0998908320132], - [-6.6764775993219296, 11.15364096535456317, 5.0998908320132], - ] -) - -y = np.array([2, 0, 2, 3, 0, 3, 1, 0, 2, 0, 2, 3, 1, 2, 1, 3, 0, 3, 2, 0, 0, 1, 2, 3, 0, 1, 2, 3, 1, 2]) - -def test_random_oversampling(): +def test_random_oversampling(X_ecoc, y_ecoc): ecoc_clf = ecoc.ECOC(preprocessing="globalCS") - X_oversampled, y_oversampled = ecoc_clf._oversample(X, y) + X_oversampled, y_oversampled = ecoc_clf._oversample(X_ecoc, y_ecoc) assert len(X_oversampled) == len(y_oversampled) assert len(set(np.unique(y_oversampled, return_counts=True)[1])) == 1 - assert set(y_oversampled).issubset(set(y)) + assert set(y_oversampled).issubset(set(y_ecoc)) -def test_no_oversampling(): +def test_no_oversampling(X_ecoc, y_ecoc): ecoc_clf = ecoc.ECOC(preprocessing=None) - X_oversampled, y_oversampled = ecoc_clf._oversample(X, y) + X_oversampled, y_oversampled = ecoc_clf._oversample(X_ecoc, y_ecoc) - assert X.shape == X_oversampled.shape - assert y.shape == y_oversampled.shape + assert X_ecoc.shape == X_oversampled.shape + assert y_ecoc.shape == y_oversampled.shape @pytest.mark.parametrize("encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"]) @@ -65,12 +28,12 @@ def test_no_oversampling(): "oversampling, minority_classes", [(None, None), ("globalCS", None), ("SMOTE", None), ("SOUP", [0, 2])], ) -def test_encoding(encoding_strategy, oversampling, minority_classes): +def test_encoding(encoding_strategy, oversampling, minority_classes, X_ecoc, y_ecoc): ecoc_clf = ecoc.ECOC(encoding=encoding_strategy, preprocessing=oversampling) - ecoc_clf.fit(X, y, minority_classes=minority_classes) + ecoc_clf.fit(X_ecoc, y_ecoc, minority_classes=minority_classes) matrix = ecoc_clf._code_matrix - number_of_classes = len(np.unique(y)) + number_of_classes = len(np.unique(y_ecoc)) assert matrix.shape[0] == number_of_classes assert len(np.unique(matrix, axis=0)) == number_of_classes @@ -78,9 +41,9 @@ def test_encoding(encoding_strategy, oversampling, minority_classes): @pytest.mark.parametrize("encoding_strategy", ["dense", "sparse"]) -def test_dense_and_sparse_with_not_cached_matrices(encoding_strategy): - X1 = np.concatenate((X, 2 * X, 3 * X, 4 * X, 5 * X), axis=0) - y1 = np.concatenate((y + 4, y + 8, y + 12, y + 16, y + 20)) +def test_dense_and_sparse_with_not_cached_matrices(encoding_strategy, X_ecoc, y_ecoc): + X1 = np.concatenate((X_ecoc, 2 * X_ecoc, 3 * X_ecoc, 4 * X_ecoc, 5 * X_ecoc), axis=0) + y1 = np.concatenate((y_ecoc + 4, y_ecoc + 8, y_ecoc + 12, y_ecoc + 16, y_ecoc + 20)) ecoc_clf = ecoc.ECOC(encoding=encoding_strategy) ecoc_clf.fit(X1, y1) @@ -101,7 +64,7 @@ def test_hamming_distance(): assert distance == 5 -def test_with_own_classifier(): +def test_with_own_classifier(X_ecoc, y_ecoc): class DummyClassifier: def fit(self, X, y): pass @@ -111,47 +74,47 @@ def predict(self, X): dummy_clf = DummyClassifier() ecoc_clf = ecoc.ECOC(binary_classifier=dummy_clf, preprocessing=None) - ecoc_clf.fit(X, y) + ecoc_clf.fit(X_ecoc, y_ecoc) predicted = ecoc_clf.predict(np.array([[1.0, 2.0], [4.0, 5.5], [6.7, 8.8]])) assert np.all(predicted == 0) -def test_with_own_preprocessing(): +def test_with_own_preprocessing(X_ecoc, y_ecoc): class DummyResampler: def fit_transform(self, X, y): return np.concatenate((X, X), axis=0), np.concatenate((y, y), axis=None) dummy_resampler = DummyResampler() ecoc_clf = ecoc.ECOC(preprocessing=dummy_resampler) - X_oversampled, y_oversampled = ecoc_clf._oversample(X, y) - assert len(X_oversampled) == 2 * len(X) - assert len(y_oversampled) == 2 * len(y) + X_oversampled, y_oversampled = ecoc_clf._oversample(X_ecoc, y_ecoc) + assert len(X_oversampled) == 2 * len(X_ecoc) + assert len(y_oversampled) == 2 * len(y_ecoc) -def test_unknown_classifier(): +def test_unknown_classifier(X_ecoc, y_ecoc): ecoc_clf = ecoc.ECOC(binary_classifier="DUMMY_CLASSIFIER", preprocessing=None) with pytest.raises(ValueError) as e: - ecoc_clf.fit(X, y) + ecoc_clf.fit(X_ecoc, y_ecoc) assert "DUMMY_CLASSIFIER" in str(e.value) -def test_unknown_encoding(): +def test_unknown_encoding(X_ecoc, y_ecoc): ecoc_clf = ecoc.ECOC(encoding="dummy") with pytest.raises(ValueError) as e: - ecoc_clf.fit(X, y) + ecoc_clf.fit(X_ecoc, y_ecoc) assert ( e.value.args[0] == "Unknown matrix generation encoding: dummy, expected to be one of ['dense', 'sparse', 'complete', 'OVA', 'OVO']." ) -def test_unknown_weighting_strategy(): +def test_unknown_weighting_strategy(X_ecoc, y_ecoc): ecoc_clf = ecoc.ECOC(weights="dummy") with pytest.raises(ValueError) as e: - ecoc_clf.fit(X, y) + ecoc_clf.fit(X_ecoc, y_ecoc) assert e.value.args[0] == "Unknown weighting strategy: dummy, expected to be one of [None, 'acc', 'avg_tpr_min']." -def test_own_classifier_without_predict_and_fit(): +def test_own_classifier_without_predict_and_fit(X_ecoc, y_ecoc): class DummyClassifier: def foo(self, X, y): pass @@ -162,28 +125,28 @@ def bar(self, X): dummy_clf = DummyClassifier() ecoc_clf = ecoc.ECOC(binary_classifier=dummy_clf, preprocessing=None) with pytest.raises(ValueError) as e: - ecoc_clf.fit(X, y) + ecoc_clf.fit(X_ecoc, y_ecoc) assert "predict" in str(e.value) assert "fit" in str(e.value) @pytest.mark.parametrize("classifier", ["tree", "NB", "KNN"]) @pytest.mark.parametrize("weights", [None, "acc", "avg_tpr_min"]) -def test_predefined_classifiers_and_weighting_without_exceptions(classifier, weights): +def test_predefined_classifiers_and_weighting_without_exceptions(classifier, weights, X_ecoc, y_ecoc): ecoc_clf = ecoc.ECOC(binary_classifier=classifier, weights=weights) - ecoc_clf.fit(X, y) + ecoc_clf.fit(X_ecoc, y_ecoc) predicted = ecoc_clf.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]])) assert len(predicted) == 3 -def test_unknown_preprocessing(): +def test_unknown_preprocessing(X_ecoc, y_ecoc): ecoc_clf = ecoc.ECOC(preprocessing="DUMMY_OVERSAMPLING") with pytest.raises(ValueError) as e: - ecoc_clf.fit(X, y) + ecoc_clf.fit(X_ecoc, y_ecoc) assert "DUMMY_OVERSAMPLING" in str(e.value) -def test_own_preprocessing_without_fit_transform(): +def test_own_preprocessing_without_fit_transform(X_ecoc, y_ecoc): class DummyOversampler: def foo(self, X, y): pass @@ -194,19 +157,19 @@ def bar(self, X): dummy_oversampler = DummyOversampler() ecoc_clf = ecoc.ECOC(preprocessing=dummy_oversampler) with pytest.raises(ValueError) as e: - ecoc_clf.fit(X, y) + ecoc_clf.fit(X_ecoc, y_ecoc) assert "fit_transform" in str(e.value) @pytest.mark.parametrize("encoding_strategy", ["dense", "sparse", "OVO", "OVA", "complete"]) @pytest.mark.parametrize("oversampling", [None, "globalCS", "SMOTE", "SOUP"]) -def test_ecoc_with_sklearn_pipeline(encoding_strategy, oversampling): +def test_ecoc_with_sklearn_pipeline(encoding_strategy, oversampling, X_ecoc, y_ecoc): pipeline = Pipeline( [ ("scaler", StandardScaler()), ("ecoc", ecoc.ECOC(encoding=encoding_strategy, preprocessing=oversampling)), ] ) - pipeline.fit(X, y) + pipeline.fit(X_ecoc, y_ecoc) y_hat = pipeline.predict(np.array([[1.1, 2.2, 3.3], [4.4, 5.5, 6.6], [7.7, 8.8, 9.9]])) assert len(y_hat) == 3 From 2f6c2557f833ede40a3e2ef2ed02a2133dd3bca8 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Sun, 4 Dec 2022 19:37:49 +0100 Subject: [PATCH 15/48] Change dtype of resampled_y to match the dtype of original y in SPIDER3 --- multi_imbalance/resampling/spider.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multi_imbalance/resampling/spider.py b/multi_imbalance/resampling/spider.py index df403d4..4e69e9d 100644 --- a/multi_imbalance/resampling/spider.py +++ b/multi_imbalance/resampling/spider.py @@ -64,7 +64,7 @@ def _fit_resample(self, X, y): self.DS = union(self.DS, self.AS) - return self.DS[:, :-1], self.DS[:, -1] + return self.DS[:, :-1], self.DS[:, -1].astype(y.dtype) def _initialize_algorithm(self, X, y): if self.maj_int_min is None: From b7d8d7cdc14a6dbd0b2ee6faacb43728b2a08ee7 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Sun, 4 Dec 2022 19:45:38 +0100 Subject: [PATCH 16/48] Add "threshold" strategy to utils.construct_maj_int_min Add a new "threshold" strategy which separates minority and majority classes based on the given threshold value --- multi_imbalance/utils/data.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/multi_imbalance/utils/data.py b/multi_imbalance/utils/data.py index bbb53e4..6733e6a 100644 --- a/multi_imbalance/utils/data.py +++ b/multi_imbalance/utils/data.py @@ -2,6 +2,7 @@ from collections import OrderedDict, Counter from pathlib import Path from statistics import median +from typing import Optional import numpy as np import pandas as pd @@ -100,7 +101,7 @@ def load_datasets_arff(return_non_cat_length=False, dataset_paths=None): return datasets -def construct_maj_int_min(y: np.ndarray, strategy='median') -> OrderedDict: +def construct_maj_int_min(y: np.ndarray, strategy='median', threshold: Optional[float] = None) -> OrderedDict: """ This function creates dictionary with information which classes are minority or majority @@ -114,8 +115,13 @@ def construct_maj_int_min(y: np.ndarray, strategy='median') -> OrderedDict: * 'average': The average class size will be calculated, all classes that are smaller will be considered as minority and the rest will be considered majority + * 'threshold': + All classes that are smaller than given threshold value will be considered as minority and + the rest will be considered majority. + :param threshold: + A mandatory threshold value for the "threshold" strategy :return: - dictionary with keys 'maj', 'int', 'min. The value for each key is a list containing the class labels belonging + dictionary with keys 'maj', 'int', 'min'. The value for each key is a list containing the class labels belonging to the given group """ class_sizes = Counter(y) @@ -124,8 +130,12 @@ def construct_maj_int_min(y: np.ndarray, strategy='median') -> OrderedDict: middle_size = median(list(class_sizes.values())) elif strategy == 'average': middle_size = np.mean(list(class_sizes.values())) + elif strategy == 'threshold': + if threshold is None: + raise ValueError('Missing threshold value for "threshold" strategy') + middle_size = threshold else: - raise ValueError(f'Unrecognized {strategy}. Only "median" and "average" are allowed.') + raise ValueError(f'Unrecognized {strategy}. Only "median", "average" or "threshold" are allowed.') maj_int_min = OrderedDict({ 'maj': list(), From b941eb561fb007d2b4c14ffa0d2671ca55d7f537 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Sun, 4 Dec 2022 19:55:05 +0100 Subject: [PATCH 17/48] Add shuffle function to utils.array_utils which shuffles many arrays at once --- multi_imbalance/utils/array_util.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/multi_imbalance/utils/array_util.py b/multi_imbalance/utils/array_util.py index 078a33e..5910ac7 100644 --- a/multi_imbalance/utils/array_util.py +++ b/multi_imbalance/utils/array_util.py @@ -1,4 +1,6 @@ import numpy as np +from typing import Optional, Tuple +import sklearn def setdiff(arr1, arr2): @@ -83,3 +85,24 @@ def intersect(arr1, arr2): if contains(arr2, x): result = union(result, np.array([x])) return result + + +def shuffle(*arrs: np.ndarray, + state: Optional[np.random.RandomState] = None) -> Tuple[ + np.ndarray, ...]: + """ + Shuffles rows of many arrays at once. + + Shuffles given arrays using a shuffled matrix of row indices. + The number of rows in the given arrays should be the same. + + :param arrs: + Numpy arrays to shuffle. + :param state: + Optional RandomState used to shuffle. + :return: + A tuple of shuffled copies of given arrays. + """ + indices = np.arange(arrs[0].shape[0]) + sklearn.utils.check_random_state(state).shuffle(indices) + return tuple(arr[indices] for arr in arrs) From 30e12297f1c7e51be12489c1c494b24147581449 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Sun, 4 Dec 2022 21:16:56 +0100 Subject: [PATCH 18/48] Add initial implementation of SMOM algorithm --- multi_imbalance/resampling/smom.py | 341 +++++++++++++++++++++++++++++ 1 file changed, 341 insertions(+) create mode 100644 multi_imbalance/resampling/smom.py diff --git a/multi_imbalance/resampling/smom.py b/multi_imbalance/resampling/smom.py new file mode 100644 index 0000000..a7962b9 --- /dev/null +++ b/multi_imbalance/resampling/smom.py @@ -0,0 +1,341 @@ +from collections import Counter, defaultdict + +import numpy as np + +from typing import List, Dict, Optional, Sequence + +from sklearn import neighbors +from multi_imbalance.utils import array_util +from imblearn.base import BaseSampler + + +def _expand_cluster(self, sfSc, i, curId): + sfC = {i} + self._xcl[i] = curId + while sfC: + j = next(iter(sfC)) + for L in self._hck[j]: + self._xcl[L] = curId + if L in sfSc: + sfC.add(L) + sfC.remove(j) + +def _nbdos(Sc: List[int], k: int, + sNk: Dict[int, List[int]], rTh: float, + nTh: int): + """ + NBDOS clustering algorithm implementation. + + Reference: + Zhu, Tuanfei, Yaping Lin, and Yonghe Liu. "Synthetic minority oversampling + technique for multiclass imbalance problems." Pattern Recognition 72 + (2017): 327-340. + + :param Sc: + Indices of items to perform clustering on + :param k: + The number of nearest neighbors + :param sNk: + The k-nearest neighbors lists + :param rTh: + The minimal proportion of c class instances which should be + achieved for the soft core instances in their k-nearest neighbors + :param nTh: + The minimal number of members required for the discovered clusters + """ + xcl = defaultdict(int) + hck = dict() + sfSc = set() + + for i in Sc: + Tem = sNk[i] + if round(Tem.size / k) >= rTh: + sfSc.add(i) + hck[i] = set(Tem) + + for i in sfSc: + Tem = set((j for j, tem in hck.items() if i in tem)) + hck[i].update(Tem & sfSc) + + curId = 0 + for i in sfSc: + if xcl[i] == 0: + curId += 1 + _expand_cluster(sfSc, i, curId) + for i in range(1, curId + 1): + ci = [j for j, cluster in xcl.items() if cluster == i] + if len(ci) < nTh: + for j in ci: + xcl[j] = 0 + Scl = np.array([xcl[i] for i in Sc]) + return Scl + + + + +def _dpn(X, i, j, Ss): + N_pn = [i, j] + mid_ij = (X[i] + X[j]) * 0.5 + dis_ij = np.linalg.norm(X[i] - X[j]) + for l in Ss: + dis_lm = np.linalg.norm(X[l] - mid_ij) + if 2 * dis_lm <= dis_ij: + N_pn.append(l) + return N_pn + + +def _compute_ss(Fs_i, Fs_d, i, dst): + Ss = [] + for i_, d_ in zip(Fs_i[i], Fs_d[i]): + if d_ <= dst: + Ss.append(i_) + return np.array(Ss, dtype=np.int64) + + +def _normalized_entropy(classes_counts: Sequence[int]): + if len(classes_counts) <= 1: + E = 0 + else: + total = sum(classes_counts) + E_min = np.log(1. / total) + E = sum(count / total * np.log(count / total) for count in + classes_counts) / E_min + assert 0 <= E <= 1, f'{E=} not in range [0, 1]' + return E + + +class SMOM(BaseSampler): + """ + SMOM technique implementation for synthetic minority oversampling for multiclass imbalanced problems. + + Reference: + Zhu, Tuanfei, Yaping Lin, and Yonghe Liu. "Synthetic minority oversampling + technique for multiclass imbalance problems." Pattern Recognition 72 + (2017): 327-340. + """ + + def __init__(self, c: int, zeta: int, k1: int = 12, k2: int = 8, + rTh: float = 5 / 8, + nTh: int = 10, w1: float = 0.2, w2: float = 0.5, + r1: float = 1 / 3, r2: float = 0.2, + maj_int_min: Optional[Dict[str, List[int]]] = None, + shuffle: bool = False, + metric: str = 'minkowski', + p: int = 2) -> None: + """ + :param maj_int_min: + dict {'maj': majority class labels, 'min': minority class labels} + :param c: + The minority class under consideration + :param zeta: + Number of synthetic instances to be generated + :param k1: + Number of nearest neighbors used to generate the synthetic instances + :params k2, rTh, nTh: + The parameters used in clustering algorithm NBDOS + :params w1, w2, r1, r2: + The parameters used for calculating the selection weights + :param maj_int_min: + Dict that contains lists of majority, intermediate and minority classes labels. + :param shuffle: + Shuffle resampled data + :param metric: + Metric to use for distance computation. + :param p: + Power parameter for Minkowski metric. + """ + super().__init__() + self._sampling_type = 'over-sampling' + self.maj_int_min = maj_int_min + self.c = c + self.zeta = zeta + self.k1 = k1 + self.k2 = k2 + self.rTh = rTh + self.nTh = nTh + self.w1 = w1 + self.w2 = w2 + self.r1 = r1 + self.r2 = r2 + self.shuffle = shuffle + if metric == 'minkowski': + self._metric = neighbors.DistanceMetric.get_metric(metric, p=p) + else: + self._metric = neighbors.metrics.DistanceMetric.get_metric(metric) + + def _pairwise_distance(self, x1, x2): + return self._metric.pairwise([x1], [x2])[0, 0] + + def _fit_resample(self, X, y): + """ + Performs resampling + + :param X: + Numpy array of examples that is the subject of resampling. + :param y: + Numpy array of labels corresponding to examples from X. + :return: + Resampled X along with accordingly modified labels, resampled y + """ + self.k1, self.k2, self.r1, self.r2 + k3 = max(self.k1, self.k2) + + # 1 + Sc = np.array([i for i, _ in enumerate(X) if y[i] == self.c]) + Sct = np.array([i for i, _ in enumerate(X) if y[i] != self.c]) + + if self.maj_int_min is None: + M = y.size + L = len(set(y)) + cnt = Counter(y[y != self.c]) + y_maj_classes = {k: v for k, v in cnt.items() if v >= M / L} + y_min_classes = {k: v for k, v in cnt.items() if v < M / L} + else: + cnt = Counter(y) + if 'int' not in self.maj_int_min: + self.maj_int_min['int'] = [] + y_maj_classes = {cls: cnt[cls] for cls in + self.maj_int_min['maj'] + self.maj_int_min['int']} + y_min_classes = {cls: cnt[cls] for cls in self.maj_int_min['min']} + + # nearest k3 instances from x_i in Sc + N_c_k3_i = dict() + N_c_k3_d = dict() + # nearest k1 instances from x_i in Sc + N_c_k1_i = dict() + N_c_k1_d = dict() + # nearest k3 instances from x_i in Sct + N_ct_k3_i = dict() + N_ct_k3_d = dict() + # nearest k2 instances from x_i in union of N_c_k3[i] and N_ct_k3[i] + N_k2_i = dict() + N_k2_d = dict() + + r_k1_d = dict() + r_k1_i = dict() + + Fs_i = dict() + Fs_d = dict() + + kdt_c = neighbors.KDTree(X[Sc]) + kdt_ct = neighbors.KDTree(X[Sct]) + for i in Sc: + # 2: 1) + dist_, ind_ = kdt_c.query([X[i]], k3 + 1) + ind, dist = ind_[0][1:], dist_[0][1:] + N_c_k3_i[i] = ind + N_c_k3_d[i] = dist + N_c_k1_i[i] = ind[:self.k1] + N_c_k1_d[i] = dist[:self.k1] + r_k1_i[i] = ind[self.k1 - 1] + r_k1_d[i] = dist[self.k1 - 1] + + # 2: 2) + dist_, ind_ = kdt_ct.query([X[i]], k3) + ind, dist = ind_[0], dist_[0] + N_ct_k3_i[i] = ind + N_ct_k3_d[i] = dist + T_ind, T_dist = [], [] + for t_ind, t_dist in zip(ind, dist): + if t_dist <= r_k1_d[i]: + T_ind.append(t_ind) + T_dist.append(t_dist) + Fs_i[i] = np.concatenate([T_ind, N_c_k1_i[i]], axis=0) + Fs_d[i] = np.concatenate([T_dist, N_c_k1_d[i]], axis=0) + + # 2: 3) + nc_nct_union_i = np.concatenate([N_c_k3_i[i], N_ct_k3_i[i]], + axis=0) + nc_nct_union_d = np.concatenate([N_c_k3_d[i], N_ct_k3_d[i]], + axis=0) + dist_, ind_ = neighbors.KDTree(X[nc_nct_union_i]).query([X[i]]) + ind, dist = ind_[0], dist_[0] + N_k2_i[i] = nc_nct_union_i[ind[0]] + N_k2_d[i] = nc_nct_union_d[ind[0]] + + # 3: + N_k2_dct = {index: neighbors for index, neighbors in N_k2_i.items()} + Sc_cl = _nbdos(Sc, self.k2, N_k2_dct, self.rTh, self.nTh) + + # 4: + OiC = Sc[Sc_cl != 0] + TiC = Sc[Sc_cl == 0] + + # 5: + Sw = defaultdict(dict) + for i in TiC: + for j in N_c_k1_i[i]: + # 5: 1) + if j in OiC and j in N_c_k1_i and i in N_c_k1_i[j]: + Sw[i][j] = 1 + self.w1 / np.e + # 5: 2) + elif j in N_c_k1_i and i in N_c_k1_i[j] and j in Sw and i in \ + Sw[j]: + Sw[i][j] = Sw[j][i] + # 5: 3) + else: + dis_ij = self._pairwise_distance(X[i], X[j]) + Ss = _compute_ss(Fs_i, Fs_d, i, dis_ij) + N_pn = _dpn(X, i, j, Ss) + y_mi_pn = {k: v for k, v in y_min_classes.items() if + k in N_pn} + y_ma_pn = {k: v for k, v in y_maj_classes.items() if + k in N_pn} + y_mi = sum(y_mi_pn.values()) + y_ma = sum(y_ma_pn.values()) + E_mi = _normalized_entropy(y_mi_pn.values()) + E_ma = _normalized_entropy(y_ma_pn.values()) + + y_c = len(Sc) + exponent1 = self.r1 * y_mi / y_c + self.r2 * E_mi + self.w2 * ( + self.r1 * y_ma / y_c + self.r2 * E_ma) + exponent2 = -y_c / (y_ma + y_mi + y_c) + Sw[i][j] = 1.0 / np.exp(exponent1) + self.w1 * np.exp( + exponent2) + + # 6: + P = defaultdict(dict) + for i in TiC: + # 6: 1) + for j in Sw[i]: + dis_ij = self._pairwise_distance(X[i], X[j]) + Ss = _compute_ss(Fs_i, Fs_d, i, dis_ij) + PN = _dpn(X, i, j, Ss) + if (y[PN] == self.c).all(): + break + else: + if i not in N_c_k1_i[i]: + N_c_k1_i[i] = np.append(N_c_k1_i[i], i) + N_c_k1_d[i] = np.append(N_c_k1_d[i], 0.) + Sw[i][i] = 1 + self.w1 / np.e + # 6: 2) + for j in Sw[i]: + P[i][j] = Sw[i][j] / sum(Sw[i][l] for l in N_c_k1_i[i]) + + # 7: + N_syn = dict() + div, mod = divmod(self.zeta, Sc.shape[0]) + for i in Sc: + N_syn[i] = div + (mod > 0) + mod -= 1 + + # 8: + SI = [] + for i in Sc: + # 8: 3) + for _ in range(N_syn[i]): + # 8: 1) + if i in TiC: + p = [P[i][j] for j in N_c_k1_i[i]] + j = np.random.choice(N_c_k1_i[i], size=1, p=p) + else: + j = np.random.choice(N_c_k1_i, size=1) + # 8: 2) + si = X[i] + (X[j] - X[i]) * np.random.rand(*X[j].shape) + SI.append(si) + X_resampled = np.concatenate([X, np.concatenate(SI, 0)], 0) + y_resampled = np.concatenate([y, [self.c] * len(SI)], 0) + if self.shuffle: + X_resampled, y_resampled = array_util.shuffle(X_resampled, + y_resampled) + return X_resampled, y_resampled From 1ea29c7a619725809bccf8afa1a8a54bbe1abb49 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Sun, 4 Dec 2022 21:45:00 +0100 Subject: [PATCH 19/48] Refactor initial implementation of SMOM algorithm --- multi_imbalance/resampling/smom.py | 396 ++++++++++++++++------------- 1 file changed, 219 insertions(+), 177 deletions(-) diff --git a/multi_imbalance/resampling/smom.py b/multi_imbalance/resampling/smom.py index a7962b9..68fdb3a 100644 --- a/multi_imbalance/resampling/smom.py +++ b/multi_imbalance/resampling/smom.py @@ -1,28 +1,20 @@ +"""Implementations of SMOM tqchnique and DBOS clustering algorithm.""" + from collections import Counter, defaultdict import numpy as np from typing import List, Dict, Optional, Sequence +import sklearn.utils from sklearn import neighbors from multi_imbalance.utils import array_util from imblearn.base import BaseSampler -def _expand_cluster(self, sfSc, i, curId): - sfC = {i} - self._xcl[i] = curId - while sfC: - j = next(iter(sfC)) - for L in self._hck[j]: - self._xcl[L] = curId - if L in sfSc: - sfC.add(L) - sfC.remove(j) - def _nbdos(Sc: List[int], k: int, - sNk: Dict[int, List[int]], rTh: float, - nTh: int): + sNk: Dict[int, List[int]], rTh: float, + nTh: int): """ NBDOS clustering algorithm implementation. @@ -32,21 +24,35 @@ def _nbdos(Sc: List[int], k: int, (2017): 327-340. :param Sc: - Indices of items to perform clustering on + Indices of items to perform clustering on. :param k: - The number of nearest neighbors + The number of nearest neighbors. :param sNk: - The k-nearest neighbors lists + The k-nearest neighbors lists. :param rTh: The minimal proportion of c class instances which should be - achieved for the soft core instances in their k-nearest neighbors + achieved for the soft core instances in their k-nearest neighbors. :param nTh: - The minimal number of members required for the discovered clusters + The minimal number of members required for the discovered clusters. """ + + # Naming of variables follows the pseudo code of nbdos xcl = defaultdict(int) hck = dict() sfSc = set() + def _expand_cluster(j, cur_id): + sfC = {j} + xcl[j] = cur_id + while sfC: + j = next(iter(sfC)) + for L in hck[j]: + if xcl[L] == 0: + xcl[L] = cur_id + if L in sfSc: + sfC.add(L) + sfC.remove(j) + for i in Sc: Tem = sNk[i] if round(Tem.size / k) >= rTh: @@ -61,7 +67,7 @@ def _nbdos(Sc: List[int], k: int, for i in sfSc: if xcl[i] == 0: curId += 1 - _expand_cluster(sfSc, i, curId) + _expand_cluster(i, curId) for i in range(1, curId + 1): ci = [j for j, cluster in xcl.items() if cluster == i] if len(ci) < nTh: @@ -71,28 +77,16 @@ def _nbdos(Sc: List[int], k: int, return Scl - - -def _dpn(X, i, j, Ss): - N_pn = [i, j] - mid_ij = (X[i] + X[j]) * 0.5 - dis_ij = np.linalg.norm(X[i] - X[j]) - for l in Ss: - dis_lm = np.linalg.norm(X[l] - mid_ij) - if 2 * dis_lm <= dis_ij: - N_pn.append(l) - return N_pn - - def _compute_ss(Fs_i, Fs_d, i, dst): Ss = [] - for i_, d_ in zip(Fs_i[i], Fs_d[i]): - if d_ <= dst: - Ss.append(i_) + for idx, dst_ in zip(Fs_i[i], Fs_d[i]): + if dst_ <= dst: + Ss.append(idx) return np.array(Ss, dtype=np.int64) def _normalized_entropy(classes_counts: Sequence[int]): + # TODO: compare with the pseudo code in the article (falbogowski) if len(classes_counts) <= 1: E = 0 else: @@ -114,35 +108,43 @@ class SMOM(BaseSampler): (2017): 327-340. """ - def __init__(self, c: int, zeta: int, k1: int = 12, k2: int = 8, + def __init__(self, + c: int, + zeta: int, + k1: int = 12, + k2: int = 8, rTh: float = 5 / 8, - nTh: int = 10, w1: float = 0.2, w2: float = 0.5, - r1: float = 1 / 3, r2: float = 0.2, - maj_int_min: Optional[Dict[str, List[int]]] = None, + nTh: int = 10, + w1: float = 0.2, + w2: float = 0.5, + r1: float = 1 / 3, + r2: float = 0.2, + maj_int_min: Optional[Dict[str, Sequence[int]]] = None, shuffle: bool = False, metric: str = 'minkowski', - p: int = 2) -> None: + p: int = 2, + seed: Optional[int] = None) -> None: """ - :param maj_int_min: - dict {'maj': majority class labels, 'min': minority class labels} :param c: - The minority class under consideration + The minority class under consideration. :param zeta: - Number of synthetic instances to be generated + Number of synthetic instances to be generated. :param k1: - Number of nearest neighbors used to generate the synthetic instances + Number of nearest neighbors used to generate the synthetic instances. :params k2, rTh, nTh: - The parameters used in clustering algorithm NBDOS + The parameters used in clustering algorithm NBDOS. :params w1, w2, r1, r2: - The parameters used for calculating the selection weights + The parameters used for calculating the selection weights. :param maj_int_min: Dict that contains lists of majority, intermediate and minority classes labels. :param shuffle: - Shuffle resampled data + Shuffle resampled data. :param metric: Metric to use for distance computation. :param p: Power parameter for Minkowski metric. + :param seed: + Seed for random state. """ super().__init__() self._sampling_type = 'over-sampling' @@ -151,6 +153,7 @@ def __init__(self, c: int, zeta: int, k1: int = 12, k2: int = 8, self.zeta = zeta self.k1 = k1 self.k2 = k2 + self.k3 = max(k1, k2) self.rTh = rTh self.nTh = nTh self.w1 = w1 @@ -158,6 +161,7 @@ def __init__(self, c: int, zeta: int, k1: int = 12, k2: int = 8, self.r1 = r1 self.r2 = r2 self.shuffle = shuffle + self.random_state = sklearn.utils.check_random_state(seed) if metric == 'minkowski': self._metric = neighbors.DistanceMetric.get_metric(metric, p=p) else: @@ -166,24 +170,53 @@ def __init__(self, c: int, zeta: int, k1: int = 12, k2: int = 8, def _pairwise_distance(self, x1, x2): return self._metric.pairwise([x1], [x2])[0, 0] - def _fit_resample(self, X, y): - """ - Performs resampling - - :param X: - Numpy array of examples that is the subject of resampling. - :param y: - Numpy array of labels corresponding to examples from X. - :return: - Resampled X along with accordingly modified labels, resampled y - """ - self.k1, self.k2, self.r1, self.r2 - k3 = max(self.k1, self.k2) - - # 1 - Sc = np.array([i for i, _ in enumerate(X) if y[i] == self.c]) - Sct = np.array([i for i, _ in enumerate(X) if y[i] != self.c]) - + def _dpn(self, X, i, j, Ss, dis_ij): + # Naming of variables follows the pseudo code of dPN + N_pn = [i, j] + mid_ij = (X[i] + X[j]) * 0.5 + for L in Ss: + dis_lm = self._pairwise_distance(X[L], mid_ij) + if 2 * dis_lm <= dis_ij: + N_pn.append(L) + return N_pn + + def _find_nearest_k3_in_sc(self, X, Sc, i): + dist_, ind_ = self.kdt_c.query([X[i]], self.k3 + 1) + ind, dist = ind_[0][1:], dist_[0][1:] + ind = Sc[ind] + self.N_c_k3_i[i] = ind + self.N_c_k3_d[i] = dist + self.N_c_k1_i[i] = ind[:self.k1] + self.N_c_k1_d[i] = dist[:self.k1] + self.r_k1_i[i] = ind[self.k1 - 1] + self.r_k1_d[i] = dist[self.k1 - 1] + + def _find_nearest_k3_in_sct(self, X, Sct, i): + dist_, ind_ = self.kdt_ct.query([X[i]], self.k3) + ind, dist = ind_[0], dist_[0] + ind = Sct[ind] + self.N_ct_k3_i[i] = ind + self.N_ct_k3_d[i] = dist + T_ind, T_dist = [], [] + for t_ind, t_dist in zip(ind, dist): + if t_dist <= self.r_k1_d[i]: + T_ind.append(t_ind) + T_dist.append(t_dist) + self.Fs_i[i] = np.concatenate([T_ind, self.N_c_k1_i[i]], axis=0) + self.Fs_d[i] = np.concatenate([T_dist, self.N_c_k1_d[i]], axis=0) + + def _find_k2_nearest_in_neighbor(self, X, i): + nc_nct_union_i = np.concatenate([self.N_c_k3_i[i], self.N_ct_k3_i[i]], + axis=0) + nc_nct_union_d = np.concatenate([self.N_c_k3_d[i], self.N_ct_k3_d[i]], + axis=0) + dist_, ind_ = neighbors.KDTree(X[nc_nct_union_i], + metric=self._metric).query([X[i]], self.k2) + ind, dist = ind_[0], dist_[0] + self.N_k2_i[i] = nc_nct_union_i[ind] + self.N_k2_d[i] = nc_nct_union_d[ind] + + def _compute_min_maj(self, y): if self.maj_int_min is None: M = y.size L = len(set(y)) @@ -197,145 +230,154 @@ def _fit_resample(self, X, y): y_maj_classes = {cls: cnt[cls] for cls in self.maj_int_min['maj'] + self.maj_int_min['int']} y_min_classes = {cls: cnt[cls] for cls in self.maj_int_min['min']} - - # nearest k3 instances from x_i in Sc - N_c_k3_i = dict() - N_c_k3_d = dict() - # nearest k1 instances from x_i in Sc - N_c_k1_i = dict() - N_c_k1_d = dict() - # nearest k3 instances from x_i in Sct - N_ct_k3_i = dict() - N_ct_k3_d = dict() - # nearest k2 instances from x_i in union of N_c_k3[i] and N_ct_k3[i] - N_k2_i = dict() - N_k2_d = dict() - - r_k1_d = dict() - r_k1_i = dict() - - Fs_i = dict() - Fs_d = dict() - - kdt_c = neighbors.KDTree(X[Sc]) - kdt_ct = neighbors.KDTree(X[Sct]) - for i in Sc: - # 2: 1) - dist_, ind_ = kdt_c.query([X[i]], k3 + 1) - ind, dist = ind_[0][1:], dist_[0][1:] - N_c_k3_i[i] = ind - N_c_k3_d[i] = dist - N_c_k1_i[i] = ind[:self.k1] - N_c_k1_d[i] = dist[:self.k1] - r_k1_i[i] = ind[self.k1 - 1] - r_k1_d[i] = dist[self.k1 - 1] - - # 2: 2) - dist_, ind_ = kdt_ct.query([X[i]], k3) - ind, dist = ind_[0], dist_[0] - N_ct_k3_i[i] = ind - N_ct_k3_d[i] = dist - T_ind, T_dist = [], [] - for t_ind, t_dist in zip(ind, dist): - if t_dist <= r_k1_d[i]: - T_ind.append(t_ind) - T_dist.append(t_dist) - Fs_i[i] = np.concatenate([T_ind, N_c_k1_i[i]], axis=0) - Fs_d[i] = np.concatenate([T_dist, N_c_k1_d[i]], axis=0) - - # 2: 3) - nc_nct_union_i = np.concatenate([N_c_k3_i[i], N_ct_k3_i[i]], - axis=0) - nc_nct_union_d = np.concatenate([N_c_k3_d[i], N_ct_k3_d[i]], - axis=0) - dist_, ind_ = neighbors.KDTree(X[nc_nct_union_i]).query([X[i]]) - ind, dist = ind_[0], dist_[0] - N_k2_i[i] = nc_nct_union_i[ind[0]] - N_k2_d[i] = nc_nct_union_d[ind[0]] - - # 3: - N_k2_dct = {index: neighbors for index, neighbors in N_k2_i.items()} - Sc_cl = _nbdos(Sc, self.k2, N_k2_dct, self.rTh, self.nTh) - - # 4: - OiC = Sc[Sc_cl != 0] - TiC = Sc[Sc_cl == 0] - - # 5: + return y_maj_classes, y_min_classes + + def _run_nbdos(self, Sc): + N_k2_dct = {index: neighbors_ for index, neighbors_ in + self.N_k2_i.items()} + return _nbdos(Sc, self.k2, N_k2_dct, self.rTh, self.nTh) + + def _compute_selection_weight(self, X, Sc, i, j, y_min_classes, + y_maj_classes): + dis_ij = self._pairwise_distance(X[i], X[j]) + Ss = _compute_ss(self.Fs_i, self.Fs_d, i, dis_ij) + N_pn = self._dpn(X, i, j, Ss, dis_ij) + y_mi_pn = {k: v for k, v in y_min_classes.items() if + k in N_pn} + y_ma_pn = {k: v for k, v in y_maj_classes.items() if + k in N_pn} + y_mi = sum(y_mi_pn.values()) + y_ma = sum(y_ma_pn.values()) + E_mi = _normalized_entropy(y_mi_pn.values()) + E_ma = _normalized_entropy(y_ma_pn.values()) + + y_c = len(Sc) + exponent1 = self.r1 * y_mi / y_c + self.r2 * E_mi + self.w2 * ( + self.r1 * y_ma / y_c + self.r2 * E_ma) + exponent2 = -y_c / (y_ma + y_mi + y_c) + return 1.0 / np.exp(exponent1) + self.w1 * np.exp( + exponent2) + + def _compute_selection_weights(self, X, Sc, TiC, OiC, y_min_classes, + y_maj_classes): Sw = defaultdict(dict) for i in TiC: - for j in N_c_k1_i[i]: - # 5: 1) - if j in OiC and j in N_c_k1_i and i in N_c_k1_i[j]: + for j in self.N_c_k1_i[i]: + if j in OiC and j in self.N_c_k1_i and i in self.N_c_k1_i[j]: Sw[i][j] = 1 + self.w1 / np.e - # 5: 2) - elif j in N_c_k1_i and i in N_c_k1_i[j] and j in Sw and i in \ + elif j in self.N_c_k1_i and i in self.N_c_k1_i[ + j] and j in Sw and i in \ Sw[j]: Sw[i][j] = Sw[j][i] - # 5: 3) else: - dis_ij = self._pairwise_distance(X[i], X[j]) - Ss = _compute_ss(Fs_i, Fs_d, i, dis_ij) - N_pn = _dpn(X, i, j, Ss) - y_mi_pn = {k: v for k, v in y_min_classes.items() if - k in N_pn} - y_ma_pn = {k: v for k, v in y_maj_classes.items() if - k in N_pn} - y_mi = sum(y_mi_pn.values()) - y_ma = sum(y_ma_pn.values()) - E_mi = _normalized_entropy(y_mi_pn.values()) - E_ma = _normalized_entropy(y_ma_pn.values()) - - y_c = len(Sc) - exponent1 = self.r1 * y_mi / y_c + self.r2 * E_mi + self.w2 * ( - self.r1 * y_ma / y_c + self.r2 * E_ma) - exponent2 = -y_c / (y_ma + y_mi + y_c) - Sw[i][j] = 1.0 / np.exp(exponent1) + self.w1 * np.exp( - exponent2) - - # 6: + Sw[i][j] = self._compute_selection_weight(X, Sc, i, j, + y_min_classes, + y_maj_classes) + return Sw + + def _obtain_probability_distribution(self, X, y, Sw, TiC): P = defaultdict(dict) for i in TiC: - # 6: 1) for j in Sw[i]: dis_ij = self._pairwise_distance(X[i], X[j]) - Ss = _compute_ss(Fs_i, Fs_d, i, dis_ij) - PN = _dpn(X, i, j, Ss) + Ss = _compute_ss(self.Fs_i, self.Fs_d, i, dis_ij) + PN = self._dpn(X, i, j, Ss, dis_ij) if (y[PN] == self.c).all(): break else: - if i not in N_c_k1_i[i]: - N_c_k1_i[i] = np.append(N_c_k1_i[i], i) - N_c_k1_d[i] = np.append(N_c_k1_d[i], 0.) + if i not in self.N_c_k1_i[i]: + self.N_c_k1_i[i] = np.append(self.N_c_k1_i[i], i) + self.N_c_k1_d[i] = np.append(self.N_c_k1_d[i], 0.) Sw[i][i] = 1 + self.w1 / np.e - # 6: 2) for j in Sw[i]: - P[i][j] = Sw[i][j] / sum(Sw[i][l] for l in N_c_k1_i[i]) + P[i][j] = Sw[i][j] / sum(Sw[i][k] for k in self.N_c_k1_i[i]) + return P - # 7: + def _compute_number_of_synthetic_instances(self, Sc): N_syn = dict() div, mod = divmod(self.zeta, Sc.shape[0]) for i in Sc: N_syn[i] = div + (mod > 0) mod -= 1 + return N_syn - # 8: + def _generate_synthetic_instances(self, X, Sc, N_syn, TiC, P): SI = [] for i in Sc: - # 8: 3) for _ in range(N_syn[i]): - # 8: 1) if i in TiC: - p = [P[i][j] for j in N_c_k1_i[i]] - j = np.random.choice(N_c_k1_i[i], size=1, p=p) + p = [P[i][j] for j in self.N_c_k1_i[i]] + j = self.random_state.choice(self.N_c_k1_i[i], size=1, p=p) else: - j = np.random.choice(N_c_k1_i, size=1) - # 8: 2) - si = X[i] + (X[j] - X[i]) * np.random.rand(*X[j].shape) + j = self.random_state.choice(self.N_c_k1_i[i], size=1) + si = X[i] + (X[j] - X[i]) * self.random_state.rand(*X[j].shape) SI.append(si) - X_resampled = np.concatenate([X, np.concatenate(SI, 0)], 0) - y_resampled = np.concatenate([y, [self.c] * len(SI)], 0) + return np.concatenate(SI, 0) + + def _setup(self): + # nearest k3 instances from x_i in Sc + self.N_c_k3_i = dict() + self.N_c_k3_d = dict() + # nearest k1 instances from x_i in Sc + self.N_c_k1_i = dict() + self.N_c_k1_d = dict() + # nearest k3 instances from x_i in Sct + self.N_ct_k3_i = dict() + self.N_ct_k3_d = dict() + # nearest k2 instances from x_i in union of N_c_k3[i] and N_ct_k3[i] + self.N_k2_i = dict() + self.N_k2_d = dict() + + self.r_k1_d = dict() + self.r_k1_i = dict() + + self.Fs_i = dict() + self.Fs_d = dict() + + def _fit_resample(self, X, y): + """ + Performs resampling + + :param X: + Numpy array of examples that is the subject of resampling. + :param y: + Numpy array of labels corresponding to examples from X. + :return: + Resampled X along with accordingly modified labels, resampled y + """ + + # 1 + Sc = np.array([i for i, _ in enumerate(X) if y[i] == self.c]) + Sct = np.array([i for i, _ in enumerate(X) if y[i] != self.c]) + + y_maj_classes, y_min_classes = self._compute_min_maj(y) + + self._setup() + + self.kdt_c = neighbors.KDTree(X[Sc], metric=self._metric) + self.kdt_ct = neighbors.KDTree(X[Sct], metric=self._metric) + + for i in Sc: + self._find_nearest_k3_in_sc(X, Sc, i) + self._find_nearest_k3_in_sct(X, Sct, i) + self._find_k2_nearest_in_neighbor(X, i) + + Sc_cl = self._run_nbdos(Sc) + + OiC = Sc[Sc_cl != 0] + TiC = Sc[Sc_cl == 0] + + Sw = self._compute_selection_weights(X, Sc, TiC, OiC, y_min_classes, + y_maj_classes) + P = self._obtain_probability_distribution(X, y, Sw, TiC) + N_syn = self._compute_number_of_synthetic_instances(Sc) + SI = self._generate_synthetic_instances(X, Sc, N_syn, TiC, P) + + X_resampled = np.concatenate([X, SI], 0) + y_resampled = np.concatenate([y, [self.c] * SI.shape[0]], 0) + if self.shuffle: X_resampled, y_resampled = array_util.shuffle(X_resampled, - y_resampled) + y_resampled, + state=self.random_state) return X_resampled, y_resampled From 6119e01244617c969e09315b5f4f7d7aceb0dc03 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Mon, 5 Dec 2022 09:29:33 +0100 Subject: [PATCH 20/48] Add example notebook for SMOM --- examples/resampling/SMOM.ipynb | 218 +++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 examples/resampling/SMOM.ipynb diff --git a/examples/resampling/SMOM.ipynb b/examples/resampling/SMOM.ipynb new file mode 100644 index 0000000..b9b9d6e --- /dev/null +++ b/examples/resampling/SMOM.ipynb @@ -0,0 +1,218 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 28, + "outputs": [], + "source": [ + "%reload_ext autoreload\n", + "%autoreload 2" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "Unzip datasets and prepare data:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(336, 7)\n", + "(336,)\n", + "Counter({0: 145, 1: 77, 4: 52, 2: 37, 3: 25})\n", + "[[0.49 0.29 0.48 0.5 0.56 0.24 0.35]\n", + " [0.07 0.4 0.48 0.5 0.54 0.35 0.44]\n", + " [0.56 0.4 0.48 0.5 0.49 0.37 0.46]\n", + " [0.59 0.49 0.48 0.5 0.52 0.45 0.36]\n", + " [0.23 0.32 0.48 0.5 0.55 0.25 0.35]]\n", + "[0 0 0 0 0]\n" + ] + } + ], + "source": [ + "from collections import Counter\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.decomposition import PCA\n", + "\n", + "from multi_imbalance.datasets import load_datasets\n", + "from multi_imbalance.utils.data import construct_flat_2pc_df\n", + "from multi_imbalance.utils.min_int_maj import maj_int_min\n", + "\n", + "%matplotlib inline\n", + "sns.set_style('darkgrid')\n", + "dataset_name = 'new_ecoli'\n", + "dataset = load_datasets()[dataset_name]\n", + "\n", + "X, y = dataset.data, dataset.target\n", + "print(X.shape)\n", + "print(y.shape)\n", + "print(Counter(y))\n", + "print(X[:5])\n", + "print(y[:5])" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Resample data using SMOM algorithm" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 30, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'maj': [0, 1], 'int': [], 'min': [4, 2, 3]}\n", + "(386, 7) (386,)\n" + ] + } + ], + "source": [ + "from multi_imbalance.resampling.smom import SMOM\n", + "clf = SMOM(maj_int_min=maj_int_min[dataset_name], c=3, zeta=50, shuffle=True, seed=1234)\n", + "print(maj_int_min[dataset_name])\n", + "resampled_X, resampled_y = clf.fit_resample(X, y)\n", + "print(resampled_X.shape, resampled_y.shape)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "source": [ + "Compare results by plotting data in 2 dimensions" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 31, + "outputs": [ + { + "data": { + "text/plain": "" + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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ivfff5/LL7+cjRs3Mnr06Hpfv/fee+vaS5cuJTc3V0msSIqxrDhlJz7C5wuTkT2UUyUfYfnChLOGtdtk1nXP375UpungxA7iC+ThEsKO7scXyCNua/5tS0vqPrIiIiLirWnTpvHFF18wbdo01qxZw5133gnAihUr2LBhg8fRiUgimFRTemw7uz5bzf4v1rDn8//NyeM7Maj2OrQ2xTDAdI+zY8tyDn/5BlVl29ix5XeUHv0Qn4YLW5wusYiISDsSDodZsmTJOcd//vOfn3Ns9uzZyQhJRBIsZqfTe/AUdm55geNHPyE9szs9+v6IaDzkdWhtiuuCa3WkoP8P+bL4/3D08GaysvvSMW808bjX0bV9GpEVEREREWlDLCvOqePbiVSdwPKFqCz/mvJTu7Aszd1MNNc1CQS/XWsgEMwCQ2OFyaBEVkRERESkDakpLf6M3PwRXH7FXXTo2E+lxS2gtrR41/bVdMjuR8++11NyZKtKi5NEl1hEREREpA2J2en0GjQFsIjGw/QaNBWwiNsqLU6k2tLifkOmkpbZG8w0QuFOpGX2VmlxEiiRFREREZEWFzAgUB3BiMWwQyEi/oC2KWlBcTvjvG1JLNv2Ec66nLjtgsO3bWlxSmRFREREpEUFcAjs3IO9bRc4DkZGmPRrrqA8PT2hW6GIeME+I3G1lcQmjebIioiIiEiLClZWYX9SDI4DgFtehb1pGwHX8TgyEUlVSmRFREREpMUYBlBecc5x91Q5liYSikgzKZEVERERkRbjukBWxjcZ7bfMvGzi/oA3QYlIylMiKyIiIiItKhIK47vqv0GoJnE18zpijLqMqKYTikgzabEnEREREWlRMQzcgu4E83MxHId4IEC1YYISWRFpJiWyIiIiItLi4rZL3HdGKbGSWBG5BCotFhERERERkZSiRFZERERERERSihJZERERERERSSlKZEVERERERCSlKJEVERERERGRlKJEVkRERERERFKKElkRERERERFJKZ7vI+s4DosWLeLzzz8nEAjw6KOP0qtXL6/DEhERERERkVbK8xHZd955h2g0ypo1a7j77rt54oknvA5JREREREREWjHPE9nNmzczduxYAEaMGMG2bds8jkhERERERERaM8N1XdfLAH7zm9/w/e9/n2uuuQaAa6+9lnfeeQefz/OqZxEREREREWmFPB+RzcjIoKKiou6x4zhKYkVEREREROSCPE9kR40axcaNGwH4+OOPGThwoMcRiYiIiIiISGvmeWlx7arFxcXFuK7LY489Rr9+/bwMSURERERERFoxzxNZERERERERkYvheWmxiIiIiIiIyMVQIisiIiIiIiIpRYmsiIiIiIiIpBQlsgniOA4LFy6ksLCQmTNnsm/fPq9DSllbt25l5syZXoeRkmKxGPPmzWP69OlMnjyZDRs2eB1SSrJtm/vvv5+bbrqJGTNmsH//fq9DSlnHjx/nmmuuYffu3V6HIikqEokwe/Zspk+fzu23386JEyfO+T/vv/8+U6dOZerUqSxatIjWvvxHU/oENfcWt912G0VFRUmOsHma0q8//elPTJkyhSlTpvDcc895EGXTNHZf9+677zJp0iQKCwt59dVXPYry4jTWpzfeeIMpU6Zw0003sXDhQhzH8SjSi9PUe/AHH3yQp59+OsnRNU9jffrkk0+YPn0606ZNY86cOVRXV3sU6cVprF/r169n4sSJTJo0iVdeeaXR8ymRTZB33nmHaDTKmjVruPvuu3niiSe8DiklLV++nAULFqTML2Rrs379erKzs3nllVdYvnw5jzzyiNchpaS///3vAKxevZo5c+bw+OOPexxRaorFYixcuJBQKOR1KJLCioqKGDhwIK+88go/+clPWLZsWb2vl5eX89RTT/Hiiy/y6quv0r17d0pLSz2Ktmka61OtZ599llOnTiU5uuZrrF8HDhxg/fr1rF69mjVr1vCPf/yDnTt3ehRtwxq6r4vFYjz++OP88Y9/ZNWqVaxZs4Zjx455GG3TNNSnSCTCs88+y5///GdWr15NeXl53d/C1q4p9+CrV6+muLjYg+iap6E+ua7Lgw8+yOOPP05RURFjx47l0KFDHkbbdI29Vk8++SQrVqygqKiIFStWNPr+p0Q2QTZv3szYsWMBGDFiBNu2bfM4otRUUFDA0qVLvQ4jZV1//fX8+te/rntsWZaH0aSu6667ru5DgK+++orc3FyPI0pNixcv5qabbqJz585ehyIp7My/r+PGjeODDz6o9/UtW7YwcOBAFi9ezPTp08nNzSUnJ8eLUJussT4BvP322xiGwbhx45IdXrM11q8uXbrw+9//HsuyME2TeDxOMBj0ItRGNXRft3v3bgoKCujQoQOBQIDRo0ezadMmr0Jtsob6FAgEWL16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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "n = len(Counter(y).keys())\n", + "p = sns.color_palette(\"husl\", n)\n", + "\n", + "pca = PCA(n_components=2)\n", + "pca.fit(X)\n", + "\n", + "fig, axs = plt.subplots(ncols=2, nrows=2)\n", + "fig.set_size_inches( 16, 10)\n", + "axs = axs.flatten()\n", + "\n", + "axs[1].set_title(\"Base\")\n", + "sns.countplot(y, ax=axs[0], palette=p)\n", + "X = pca.transform(X)\n", + "df = construct_flat_2pc_df(X, y)\n", + "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[1], legend='full', palette=p)\n", + "\n", + "\n", + "axs[3].set_title(\"SMOM\")\n", + "sns.countplot(resampled_y, ax=axs[2],palette=p)\n", + "resampled_X = pca.transform(resampled_X)\n", + "df = construct_flat_2pc_df(resampled_X, resampled_y)\n", + "sns.scatterplot(x='x1', y='x2', hue='y', style='y', data=df, alpha=0.7, ax=axs[3], legend='full', palette=p)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "code", + "execution_count": 31, + "outputs": [], + "source": [], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + } + ], + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + }, + "kernelspec": { + "name": "python3", + "language": "python", + "display_name": "Python 3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From a258372eb2fd9e8c0d8f9af93dffe28d27ba3976 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Mon, 5 Dec 2022 10:50:06 +0100 Subject: [PATCH 21/48] Omit class under consideration in majority/minority classes in SMOM --- examples/resampling/SMOM.ipynb | 14 +++++++------- multi_imbalance/resampling/smom.py | 11 +++++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/examples/resampling/SMOM.ipynb b/examples/resampling/SMOM.ipynb index b9b9d6e..c4b8d27 100644 --- a/examples/resampling/SMOM.ipynb +++ b/examples/resampling/SMOM.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 28, + "execution_count": 32, "outputs": [], "source": [ "%reload_ext autoreload\n", @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 33, "outputs": [ { "name": "stdout", @@ -91,7 +91,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 34, "outputs": [ { "name": "stdout", @@ -130,13 +130,13 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 35, "outputs": [ { "data": { - "text/plain": "" + "text/plain": "" }, - "execution_count": 31, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, @@ -183,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 35, "outputs": [], "source": [], "metadata": { diff --git a/multi_imbalance/resampling/smom.py b/multi_imbalance/resampling/smom.py index 68fdb3a..c353f54 100644 --- a/multi_imbalance/resampling/smom.py +++ b/multi_imbalance/resampling/smom.py @@ -1,4 +1,4 @@ -"""Implementations of SMOM tqchnique and DBOS clustering algorithm.""" +"""Implementations of SMOM technique and NBDOS clustering algorithm.""" from collections import Counter, defaultdict @@ -211,7 +211,8 @@ def _find_k2_nearest_in_neighbor(self, X, i): nc_nct_union_d = np.concatenate([self.N_c_k3_d[i], self.N_ct_k3_d[i]], axis=0) dist_, ind_ = neighbors.KDTree(X[nc_nct_union_i], - metric=self._metric).query([X[i]], self.k2) + metric=self._metric).query([X[i]], + self.k2) ind, dist = ind_[0], dist_[0] self.N_k2_i[i] = nc_nct_union_i[ind] self.N_k2_d[i] = nc_nct_union_d[ind] @@ -228,8 +229,10 @@ def _compute_min_maj(self, y): if 'int' not in self.maj_int_min: self.maj_int_min['int'] = [] y_maj_classes = {cls: cnt[cls] for cls in - self.maj_int_min['maj'] + self.maj_int_min['int']} - y_min_classes = {cls: cnt[cls] for cls in self.maj_int_min['min']} + self.maj_int_min['maj'] + self.maj_int_min['int'] + if cls != self.c} + y_min_classes = {cls: cnt[cls] for cls in self.maj_int_min['min'] + if cls != self.c} return y_maj_classes, y_min_classes def _run_nbdos(self, Sc): From addc99fd9d9c30b79eee3b2cf116787b49d53ea7 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Mon, 5 Dec 2022 19:49:10 +0100 Subject: [PATCH 22/48] Remove TODO in SMOM --- multi_imbalance/resampling/smom.py | 1 - 1 file changed, 1 deletion(-) diff --git a/multi_imbalance/resampling/smom.py b/multi_imbalance/resampling/smom.py index c353f54..c7c5aff 100644 --- a/multi_imbalance/resampling/smom.py +++ b/multi_imbalance/resampling/smom.py @@ -86,7 +86,6 @@ def _compute_ss(Fs_i, Fs_d, i, dst): def _normalized_entropy(classes_counts: Sequence[int]): - # TODO: compare with the pseudo code in the article (falbogowski) if len(classes_counts) <= 1: E = 0 else: From 11f0f47b1b3006863e2555550633d17f52410667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Fri, 9 Dec 2022 20:09:36 +0100 Subject: [PATCH 23/48] second version --- examples/datasets/analysis.ipynb | 519 +++++++++++---------------- multi_imbalance/datasets/analysis.py | 272 +++++++------- tests/datasets/test_analysis.py | 19 +- 3 files changed, 368 insertions(+), 442 deletions(-) diff --git a/examples/datasets/analysis.ipynb b/examples/datasets/analysis.ipynb index 77c3583..69a99d2 100644 --- a/examples/datasets/analysis.ipynb +++ b/examples/datasets/analysis.ipynb @@ -6,12 +6,21 @@ "metadata": {}, "outputs": [], "source": [ - "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.gaussian_process import GaussianProcessClassifier\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.tree import DecisionTreeClassifier\n", "from imblearn.metrics import geometric_mean_score\n", - "from multi_imbalance.datasets.analysis import AnalysisPipeline, Config\n", "from pathlib import Path\n", "from sklearn.metrics import accuracy_score\n", - "from multi_imbalance.datasets import load_datasets" + "from tempfile import NamedTemporaryFile\n", + "\n", + "from multi_imbalance.datasets.analysis import AnalysisPipeline, Config, Result\n", + "from multi_imbalance.datasets import load_datasets\n", + "from multi_imbalance.resampling.soup import SOUP\n", + "from multi_imbalance.resampling.spider import SPIDER3\n", + "from multi_imbalance.resampling.static_smote import StaticSMOTE\n", + "from multi_imbalance.resampling.global_cs import GlobalCS\n", + "from multi_imbalance.resampling.mdo import MDO\n" ] }, { @@ -23,15 +32,6 @@ "load_datasets(save_to_csv=True)" ] }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "Path(\"results.csv\").unlink()" - ] - }, { "cell_type": "code", "execution_count": 2, @@ -43,34 +43,22 @@ "config = {\n", " \"datasets\": [cwd.parents[1] / \"data\" / \"csv\" / \"glass.csv\"],\n", " \"classifiers\": {\n", - " \"tree\": [{\"max_depth\" : 100}, {\"max_depth\" : 20}, {\"max_depth\" : None}],\n", + " DecisionTreeClassifier: [{\"max_depth\" : 100}, {}],\n", + " KNeighborsClassifier: [{\"n_neighbors\": 7}, {}],\n", + " GaussianProcessClassifier: [ {\"max_iter_predict\": 250}, {}]\n", " },\n", " \"resample_methods\": {\n", - " \"globalCS\": {\"shuffle\": True},\n", - " \"MDO\": dict(k1_frac=0.3, maj_int_min={\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}),\n", - " \"StaticSMOTE\": {},\n", - " \"SOUP\": {\"shuffle\": True},\n", + " GlobalCS: {\"all\": {\"shuffle\": True}},\n", + " MDO: {\"all\": {\"k1_frac\": 0.3, \"maj_int_min\":{\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}}},\n", + " StaticSMOTE: {\"all\":{}},\n", + " SOUP: {\"all\" : {\"shuffle\": True}},\n", + " SPIDER3: {\"all\": {\"k\":5}}\n", " },\n", " \"metrics\": {geometric_mean_score: {\"correction\": 0.001}},\n", - " \"n_repeats\": 10,\n", - " \"train_test_split_kwargs\": dict(test_size=0.35),\n", + " \"n_repeats\": 1,\n", + " \"stratifiedkfold_params\": dict(n_splits=2, shuffle=True),\n", "}\n", - "\n", - "config2 = {\n", - " \"datasets\": [cwd.parents[1] / \"data\" / \"csv\" / \"new_ecoli.csv\"],\n", - " \"classifiers\": {\n", - " \"tree\": [{\"max_depth\" : 100}, {\"max_depth\" : 20}, {\"max_depth\" : None}],\n", - " },\n", - " \"resample_methods\": {\n", - " \"globalCS\": {\"shuffle\": True},\n", - " \"MDO\": dict(k1_frac=0.3, maj_int_min={\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}),\n", - " \"StaticSMOTE\": {},\n", - " \"SOUP\": {\"shuffle\": True},\n", - " },\n", - " \"metrics\": {geometric_mean_score: {\"correction\": 0.001}},\n", - " \"n_repeats\": 10,\n", - " \"train_test_split_kwargs\": dict(test_size=0.35),\n", - "}\n" + "\n" ] }, { @@ -82,92 +70,26 @@ "name": "stderr", "output_type": "stream", "text": [ - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.test\\lib\\site-packages\\imblearn\\utils\\_validation.py:299: UserWarning: After over-sampling, the number of samples (96) in class 2 will be larger than the number of samples in the majority class (class #0 -> 94)\n", - " warnings.warn(\n" + "[09.12.2022 20:06:30] ERROR AnalysisPipeline Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='decisiontreeclassifier'\n", + "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='decisiontreeclassifier'\n", + "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='kneighborsclassifier'\n", + "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='kneighborsclassifier'\n", + "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='gaussianprocessclassifier'\n", + "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='gaussianprocessclassifier'\n" ] } ], "source": [ + "result_file = NamedTemporaryFile(suffix=\".csv\")\n", + "result_file.close()\n", "c = Config.from_dict(config)\n", - "c2 = Config.from_dict(config2)\n", - "pipeline = AnalysisPipeline([c, c2])\n", - "pipeline.run_analysis(\"results.csv\", explode_clf_kwargs = False, train_without_resampling = True)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "df=pd.read_csv(\"results.csv\")\n", - "df.fillna(0, inplace=True)\n", - "group_df = df[[\"dataset_name\", \"classifier\", \"resampling_method\", \"metric_value\", \"metric_name\", \"kwargs\"]].groupby(by=[\"classifier\",\"metric_name\" ,\"dataset_name\", \"resampling_method\", \"kwargs\"]).agg({'metric_value': ['mean', 'std']})" + "pipeline = AnalysisPipeline(c)\n", + "pipeline.run_analysis(result_file.name, train_without_resampling = True)" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -197,233 +119,212 @@ " \n", " \n", " \n", - " metric_value\n", + " \n", + " metric_value\n", " \n", " \n", " \n", " \n", " \n", + " \n", " mean\n", " std\n", + " min\n", + " max\n", + " median\n", " \n", " \n", " dataset_name\n", + " classifier\n", " resampling_method\n", - " kwargs\n", + " metric_name\n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", " \n", " \n", - " glass\n", - " MDO\n", - " {'max_depth': 100}\n", - " 0.643855\n", - " 0.070864\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.594653\n", - " 0.158337\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.636454\n", - " 0.094362\n", - " \n", - " \n", - " Not defined\n", - " {'max_depth': 100}\n", - " 0.534718\n", - " 0.175402\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.572939\n", - " 0.147061\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.631542\n", - " 0.062332\n", - " \n", - " \n", - " SOUP\n", - " {'max_depth': 100}\n", - " 0.660234\n", - " 0.052351\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.619425\n", - " 0.095159\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.656091\n", - " 0.073783\n", - " \n", - " \n", - " StaticSMOTE\n", - " {'max_depth': 100}\n", - " 0.621695\n", - " 0.147462\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.649909\n", - " 0.053088\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.531951\n", - " 0.171160\n", - " \n", - " \n", - " globalCS\n", - " {'max_depth': 100}\n", - " 0.632791\n", - " 0.070711\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.506650\n", - " 0.160718\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.580105\n", - " 0.099831\n", - " \n", - " \n", - " new_ecoli\n", - " MDO\n", - " {'max_depth': 100}\n", - " 0.777760\n", - " 0.052380\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.756026\n", - " 0.041473\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.754241\n", - " 0.050392\n", - " \n", - " \n", - " Not defined\n", - " {'max_depth': 100}\n", - " 0.696599\n", - " 0.043062\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.706752\n", - " 0.076627\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.720547\n", - " 0.062143\n", - " \n", - " \n", - " SOUP\n", - " {'max_depth': 100}\n", - " 0.749857\n", - " 0.028518\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.747158\n", - " 0.046176\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.739759\n", - " 0.075347\n", - " \n", - " \n", - " StaticSMOTE\n", - " {'max_depth': 100}\n", - " 0.719496\n", - " 0.048702\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.721193\n", - " 0.050183\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.694062\n", - " 0.066351\n", - " \n", - " \n", - " globalCS\n", - " {'max_depth': 100}\n", - " 0.667123\n", - " 0.049824\n", - " \n", - " \n", - " {'max_depth': 20}\n", - " 0.694378\n", - " 0.075182\n", - " \n", - " \n", - " {'max_depth': None}\n", - " 0.671451\n", - " 0.058819\n", + " glass\n", + " decisiontreeclassifier\n", + " Not defined\n", + " geometric_mean_score\n", + " 0.423840\n", + " 0.219519\n", + " 0.224079\n", + " 0.632994\n", + " 0.419144\n", + " \n", + " \n", + " globalcs\n", + " geometric_mean_score\n", + " 0.460604\n", + " 0.173743\n", + " 0.235397\n", + " 0.641363\n", + " 0.482827\n", + " \n", + " \n", + " mdo\n", + " geometric_mean_score\n", + " 0.496419\n", + " 0.207675\n", + " 0.198813\n", + " 0.670846\n", + " 0.558009\n", + " \n", + " \n", + " soup\n", + " geometric_mean_score\n", + " 0.629931\n", + " 0.018804\n", + " 0.607990\n", + " 0.649186\n", + " 0.631274\n", + " \n", + " \n", + " spider3\n", + " geometric_mean_score\n", + " 0.454395\n", + " 0.155110\n", + " 0.231247\n", + " 0.583301\n", + " 0.501516\n", + " \n", + " \n", + " kneighborsclassifier\n", + " Not defined\n", + " geometric_mean_score\n", + " 0.150199\n", + " 0.056244\n", + " 0.071968\n", + " 0.205163\n", + " 0.161833\n", + " \n", + " \n", + " globalcs\n", + " geometric_mean_score\n", + " 0.611671\n", + " 0.084948\n", + " 0.551014\n", + " 0.732382\n", + " 0.581645\n", + " \n", + " \n", + " mdo\n", + " geometric_mean_score\n", + " 0.381856\n", + " 0.197294\n", + " 0.205791\n", + " 0.607216\n", + " 0.357208\n", + " \n", + " \n", + " soup\n", + " geometric_mean_score\n", + " 0.553234\n", + " 0.036744\n", + " 0.514661\n", + " 0.598835\n", + " 0.549719\n", + " \n", + " \n", + " spider3\n", + " geometric_mean_score\n", + " 0.472230\n", + " 0.050068\n", + " 0.408403\n", + " 0.516181\n", + " 0.482168\n", " \n", " \n", "\n", "" ], "text/plain": [ - " metric_value \n", - " mean std\n", - "dataset_name resampling_method kwargs \n", - "glass MDO {'max_depth': 100} 0.643855 0.070864\n", - " {'max_depth': 20} 0.594653 0.158337\n", - " {'max_depth': None} 0.636454 0.094362\n", - " Not defined {'max_depth': 100} 0.534718 0.175402\n", - " {'max_depth': 20} 0.572939 0.147061\n", - " {'max_depth': None} 0.631542 0.062332\n", - " SOUP {'max_depth': 100} 0.660234 0.052351\n", - " {'max_depth': 20} 0.619425 0.095159\n", - " {'max_depth': None} 0.656091 0.073783\n", - " StaticSMOTE {'max_depth': 100} 0.621695 0.147462\n", - " {'max_depth': 20} 0.649909 0.053088\n", - " {'max_depth': None} 0.531951 0.171160\n", - " globalCS {'max_depth': 100} 0.632791 0.070711\n", - " {'max_depth': 20} 0.506650 0.160718\n", - " {'max_depth': None} 0.580105 0.099831\n", - "new_ecoli MDO {'max_depth': 100} 0.777760 0.052380\n", - " {'max_depth': 20} 0.756026 0.041473\n", - " {'max_depth': None} 0.754241 0.050392\n", - " Not defined {'max_depth': 100} 0.696599 0.043062\n", - " {'max_depth': 20} 0.706752 0.076627\n", - " {'max_depth': None} 0.720547 0.062143\n", - " SOUP {'max_depth': 100} 0.749857 0.028518\n", - " {'max_depth': 20} 0.747158 0.046176\n", - " {'max_depth': None} 0.739759 0.075347\n", - " StaticSMOTE {'max_depth': 100} 0.719496 0.048702\n", - " {'max_depth': 20} 0.721193 0.050183\n", - " {'max_depth': None} 0.694062 0.066351\n", - " globalCS {'max_depth': 100} 0.667123 0.049824\n", - " {'max_depth': 20} 0.694378 0.075182\n", - " {'max_depth': None} 0.671451 0.058819" + " metric_value \\\n", + " mean \n", + "dataset_name classifier resampling_method metric_name \n", + "glass decisiontreeclassifier Not defined geometric_mean_score 0.423840 \n", + " globalcs geometric_mean_score 0.460604 \n", + " mdo geometric_mean_score 0.496419 \n", + " soup geometric_mean_score 0.629931 \n", + " spider3 geometric_mean_score 0.454395 \n", + " kneighborsclassifier Not defined geometric_mean_score 0.150199 \n", + " globalcs geometric_mean_score 0.611671 \n", + " mdo geometric_mean_score 0.381856 \n", + " soup geometric_mean_score 0.553234 \n", + " spider3 geometric_mean_score 0.472230 \n", + "\n", + " \\\n", + " std \n", + "dataset_name classifier resampling_method metric_name \n", + "glass decisiontreeclassifier Not defined geometric_mean_score 0.219519 \n", + " globalcs geometric_mean_score 0.173743 \n", + " mdo geometric_mean_score 0.207675 \n", + " soup geometric_mean_score 0.018804 \n", + " spider3 geometric_mean_score 0.155110 \n", + " kneighborsclassifier Not defined geometric_mean_score 0.056244 \n", + " globalcs geometric_mean_score 0.084948 \n", + " mdo geometric_mean_score 0.197294 \n", + " soup geometric_mean_score 0.036744 \n", + " spider3 geometric_mean_score 0.050068 \n", + "\n", + " \\\n", + " min \n", + "dataset_name classifier resampling_method metric_name \n", + "glass decisiontreeclassifier Not defined geometric_mean_score 0.224079 \n", + " globalcs geometric_mean_score 0.235397 \n", + " mdo geometric_mean_score 0.198813 \n", + " soup geometric_mean_score 0.607990 \n", + " spider3 geometric_mean_score 0.231247 \n", + " kneighborsclassifier Not defined geometric_mean_score 0.071968 \n", + " globalcs geometric_mean_score 0.551014 \n", + " mdo geometric_mean_score 0.205791 \n", + " soup geometric_mean_score 0.514661 \n", + " spider3 geometric_mean_score 0.408403 \n", + "\n", + " \\\n", + " max \n", + "dataset_name classifier resampling_method metric_name \n", + "glass decisiontreeclassifier Not defined geometric_mean_score 0.632994 \n", + " globalcs geometric_mean_score 0.641363 \n", + " mdo geometric_mean_score 0.670846 \n", + " soup geometric_mean_score 0.649186 \n", + " spider3 geometric_mean_score 0.583301 \n", + " kneighborsclassifier Not defined geometric_mean_score 0.205163 \n", + " globalcs geometric_mean_score 0.732382 \n", + " mdo geometric_mean_score 0.607216 \n", + " soup geometric_mean_score 0.598835 \n", + " spider3 geometric_mean_score 0.516181 \n", + "\n", + " \n", + " median \n", + "dataset_name classifier resampling_method metric_name \n", + "glass decisiontreeclassifier Not defined geometric_mean_score 0.419144 \n", + " globalcs geometric_mean_score 0.482827 \n", + " mdo geometric_mean_score 0.558009 \n", + " soup geometric_mean_score 0.631274 \n", + " spider3 geometric_mean_score 0.501516 \n", + " kneighborsclassifier Not defined geometric_mean_score 0.161833 \n", + " globalcs geometric_mean_score 0.581645 \n", + " mdo geometric_mean_score 0.357208 \n", + " soup geometric_mean_score 0.549719 \n", + " spider3 geometric_mean_score 0.482168 " ] }, - "execution_count": 5, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "group_df.loc[\"tree\", \"geometric_mean_score\", :, :]" + "d = {\"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"]}\n", + "import pandas as pd\n", + "\n", + "pd.concat(pipeline.generate_summary(d, [min, max]))" ] } ], diff --git a/multi_imbalance/datasets/analysis.py b/multi_imbalance/datasets/analysis.py index 74947a2..10ef771 100644 --- a/multi_imbalance/datasets/analysis.py +++ b/multi_imbalance/datasets/analysis.py @@ -1,23 +1,15 @@ from copy import deepcopy from dataclasses import dataclass -import json from pathlib import Path -from typing import Callable, Dict, List, Tuple, Union +from typing import Callable, Dict, Iterable, List, Tuple, Union import pandas as pd from sklearn.base import ClassifierMixin -from sklearn.model_selection import train_test_split -from sklearn.naive_bayes import GaussianNB -from sklearn.neighbors import KNeighborsClassifier -from sklearn.tree import DecisionTreeClassifier +from sklearn.model_selection import StratifiedKFold from imblearn.base import BaseSampler from sklearn.pipeline import _name_estimators import logging +from itertools import product -from multi_imbalance.resampling.global_cs import GlobalCS -from multi_imbalance.resampling.soup import SOUP -from multi_imbalance.resampling.spider import SPIDER3 -from multi_imbalance.resampling.mdo import MDO -from multi_imbalance.resampling.static_smote import StaticSMOTE logging.basicConfig(level=logging.INFO, format="[%(asctime)s] %(levelname)s %(name)s %(message)s", datefmt="%d.%m.%Y %H:%M:%S") @@ -25,11 +17,11 @@ @dataclass class Config: datasets: List[str] - classifiers: Dict[Union[str, ClassifierMixin], List[Dict]] - resample_methods: Dict[Union[str, BaseSampler], Dict] + classifiers: Dict[ClassifierMixin, List[Dict]] + resample_methods: Dict[BaseSampler, Dict[str, Dict]] metrics: Dict[Callable, Dict] n_repeats: int - train_test_split_kwargs: Dict + stratifiedkfold_params: Dict @classmethod def from_dict(cls, config: Dict) -> "Config": @@ -44,94 +36,135 @@ class Result: metric_name: str metric_value: float no_repeat: int - kwargs: Dict + clf_params: Dict class AnalysisPipeline: - _allowed_resampling = ["globalCS", "StaticSMOTE", "SOUP", "spider3", "MDO"] - _allowed_classifiers = ["tree", "NB", "KNN"] - - def __init__(self, configs: List[Config]) -> None: + def __init__(self, config: Config) -> None: self.__logger = logging.getLogger("AnalysisPipeline") - self._configs = configs - self.__resampling_methods = {"globalCS": GlobalCS, "StaticSMOTE": StaticSMOTE, "SOUP": SOUP, "spider3": SPIDER3, "MDO": MDO} - self.__classifiers = {"tree": DecisionTreeClassifier, "NB": GaussianNB, "KNN": KNeighborsClassifier} - - def run_analysis(self, output_path: str, explode_clf_kwargs: bool, train_without_resampling: bool): + self._config = config + self.__metrics = self._config.metrics + self.__n_repeats = self._config.n_repeats + self.__stratifiedkfold_params = self._config.stratifiedkfold_params + self.__iter = 0 + self.__chunksize = 10000 + + def run_analysis(self, output_path: str, train_without_resampling: bool) -> None: self._output_path = Path(output_path) - for config in self._configs: - self._config = config - self.__metrics = self._config.metrics - self.__n_repeats = self._config.n_repeats - self.__tts_kwargs = self._config.train_test_split_kwargs - for clf_name, clf, clf_kwargs in self._get_classifier(): - for n in range(1, self.__n_repeats + 1): - for dataset_name, dataset in self._get_dataset(): - for resampler_name, resampler in self._get_resampler(): - tmp_clf = deepcopy(clf) - X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] - X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, **self.__tts_kwargs) - - try: - X_train_res, y_train_res = resampler.fit_resample(X_train, y_train) - results = [] - tmp_clf.fit(X_train_res, y_train_res) - y_pred = tmp_clf.predict(X_test) - - for metric, kwargs in self.__metrics.items(): - results.append( - Result( - dataset_name, - clf_name, - resampler_name, - metric.__name__, - metric(y_test, y_pred, **kwargs), - n, - clf_kwargs, - ) - ) - df_results = pd.DataFrame(results) - if self._output_path.exists(): - df_results.to_csv(output_path, mode="a", index=False, header=False) - else: - df_results.to_csv(output_path, index=False) - except Exception as e: - self.__logger.error(f"Raised exception '{e}' for {dataset_name=}, {resampler_name=} and {clf_name=}") - - if train_without_resampling: - tmp_clf = deepcopy(clf) - results = [] - X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] - X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, **self.__tts_kwargs) - tmp_clf.fit(X_train, y_train) - y_pred = tmp_clf.predict(X_test) - - for metric, kwargs in self.__metrics.items(): - results.append( - Result( - dataset_name, - clf_name, - "Not defined", - metric.__name__, - metric(y_test, y_pred, **kwargs), - n, - clf_kwargs, - ) - ) - df_results = pd.DataFrame(results) - if self._output_path.exists(): - df_results.to_csv(output_path, mode="a", index=False, header=False) - else: - df_results.to_csv(output_path, index=False) - - if explode_clf_kwargs: - df_results = pd.read_csv(output_path) - df_results = pd.concat( - [df_results.drop(columns="kwargs"), df_results["kwargs"].apply(lambda x: dict(eval(x))).apply(pd.Series)], axis=1 - ) - df_results.to_csv(output_path, index=False) - - def _get_dataset(self) -> Tuple[str, pd.DataFrame]: + list_of_errors = [] + + for clf_data, n, dataset_data in product(self._get_classifier(), range(self.__n_repeats), self._get_dataset()): + for resampler_data in self._get_resampler(train_without_resampling, dataset_name=dataset_data[0]): + self._prepare_result(clf_data, dataset_data, resampler_data, output_path, n, list_of_errors) + self.__iter += 1 + + self.__iter = 0 + if list_of_errors: + self.__logger.error("\n".join(list_of_errors)) + + def explode_clf_params(self, input_path: str, output_path: str) -> None: + df_results = pd.read_csv(input_path) + df_results = pd.concat( + [df_results.drop(columns="clf_params"), df_results["clf_params"].apply(lambda x: dict(eval(x))).apply(pd.Series)], axis=1 + ) + df_results.to_csv(output_path, index=False) + + def generate_summary(self, query_dict: Dict[str, List[str]], aggregate_func: Union[List[Callable], None] = None) -> List[pd.DataFrame]: + selected_columns = self.column_names + selected_columns.remove("no_repeat") + selected_columns.remove("metric_value") + agg_func_list = ["mean", "std"] if aggregate_func is None else ["mean", "std", *aggregate_func] + df_list = [] + for i in product(*query_dict.values()): + tmp_dict = dict(zip(query_dict.keys(), i)) + query = " & ".join(map(lambda x: f"{x[0]}=='{x[1]}'", tmp_dict.items())) + + gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + df = pd.concat([df.query(query) for df in gen]) + + group_df = df[[*selected_columns, "metric_value"]].groupby(by=selected_columns[:-1]).agg({"metric_value": agg_func_list}) + df_list.append(group_df) + + return df_list + + @property + def dataset_names(self) -> List[str]: + gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + return list(set(i for df in gen for i in df["dataset_name"].unique())) + + @property + def metric_names(self) -> List[str]: + gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + return list(set(i for df in gen for i in df["metric_name"].unique())) + + @property + def clf_names(self) -> List[str]: + gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + return list(set(i for df in gen for i in df["classifier"].unique())) + + @property + def resampling_methods(self) -> List[str]: + gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + return list(set(i for df in gen for i in df["resampling_method"].unique())) + + @property + def column_names(self) -> List[str]: + gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + return list(next(gen).columns) + + def _prepare_result( + self, + clf_data: Tuple[str, ClassifierMixin, Dict], + dataset_data: Tuple[str, pd.DataFrame], + resampler_data: Tuple[str, BaseSampler], + output_path: str, + n: int, + list_of_errors: List[str], + ) -> None: + try: + clf_name, clf, clf_params = clf_data + dataset_name, dataset = dataset_data + resampler_name, resampler = resampler_data + + tmp_clf = deepcopy(clf) + + X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] + + skf = StratifiedKFold(**self.__stratifiedkfold_params, random_state=self.__iter) + for train_index, test_index in skf.split(X, y): + X_train, X_test = X.loc[train_index, :], X.loc[test_index, :] + y_train, y_test = y[train_index], y[test_index] + + if resampler is not None: + X_train, y_train = resampler.fit_resample(X_train, y_train) + + results = [] + tmp_clf.fit(X_train, y_train) + y_pred = tmp_clf.predict(X_test) + + for metric, params in self.__metrics.items(): + results.append( + Result( + dataset_name, + clf_name, + resampler_name, + metric.__name__, + metric(y_test, y_pred, **params), + n, + clf_params, + ) + ) + df_results = pd.DataFrame(results) + + if self._output_path.exists(): + df_results.to_csv(output_path, mode="a", index=False, header=False) + else: + df_results.to_csv(output_path, index=False) + + except Exception as e: + list_of_errors.append(f"Raised exception '{e}' for {dataset_name=}, {resampler_name=} and {clf_name=}") + + def _get_dataset(self) -> Iterable[Tuple[str, pd.DataFrame]]: for dataset_path in self._config.datasets: path = Path(dataset_path) @@ -144,33 +177,24 @@ def _get_dataset(self) -> Tuple[str, pd.DataFrame]: else: raise Exception("Wrong dataset path, should be csv file or dir with csv files") - def _get_resampler(self) -> List[Tuple[str, BaseSampler]]: - for resampler, kwargs in self._config.resample_methods.items(): - if isinstance(resampler, str): - if resampler not in AnalysisPipeline._allowed_resampling: - raise ValueError( - "Unknown resample method: %s, expected to be one of %s" % (resampler, AnalysisPipeline._allowed_resampling) - ) - yield resampler, self.__resampling_methods[resampler](**kwargs) - else: - if not hasattr(resampler, "fit_resample"): - raise ValueError("Your resampler must implement fit_resample method") - yield self._get_name(resampler(**kwargs)) - - def _get_classifier(self) -> List[Tuple[str, ClassifierMixin, Dict]]: - for classifier, kwargs_list in self._config.classifiers.items(): - if isinstance(classifier, str): - if classifier not in AnalysisPipeline._allowed_classifiers: - raise ValueError( - "Unknown classifier: %s, expected to be one of %s" % (classifier, AnalysisPipeline._allowed_classifiers) - ) - for kwargs in kwargs_list: - yield classifier, self.__classifiers[classifier](**kwargs), kwargs - else: - if not hasattr(classifier, "fit") or not hasattr(classifier, "predict"): - raise ValueError("Your classifier must implement fit and predict methods") - for kwargs in kwargs_list: - yield *self._get_name(classifier(**kwargs)), kwargs + def _get_resampler(self, train_without_resampling: bool, dataset_name: str) -> Iterable[Tuple[str, Union[BaseSampler, None]]]: + for resampler, params_dict in self._config.resample_methods.items(): + if not hasattr(resampler, "fit_resample"): + raise ValueError("Your resampler must implement fit_resample method") + if dataset_name and "all" not in params_dict: + raise KeyError("Must define params for all datasets or for the specific dataset") + + params = params_dict.get(dataset_name, params_dict.get("all")) + yield self._get_name(resampler(**params)) + if train_without_resampling: + yield "Not defined", None + + def _get_classifier(self) -> Iterable[Tuple[str, ClassifierMixin, Dict]]: + for classifier, params_list in self._config.classifiers.items(): + if not hasattr(classifier, "fit") or not hasattr(classifier, "predict"): + raise ValueError("Your classifier must implement fit and predict methods") + for params in params_list: + yield *self._get_name(classifier(**params)), params def _get_name(self, estimator: Union[ClassifierMixin, BaseSampler]) -> Tuple[str, Union[ClassifierMixin, BaseSampler]]: return _name_estimators([estimator])[0] diff --git a/tests/datasets/test_analysis.py b/tests/datasets/test_analysis.py index 5d726d2..786ac57 100644 --- a/tests/datasets/test_analysis.py +++ b/tests/datasets/test_analysis.py @@ -19,7 +19,7 @@ def get_dummy_config(): "resample_methods": {}, "metrics": {}, "n_repeats": 2, - "train_test_split_kwargs": {}, + "train_test_split_params": {}, } @@ -51,7 +51,7 @@ def output_file(tmp_path): }, "metrics": {lambda x, y: (x, y): {}}, "n_repeats": 2, - "train_test_split_kwargs": dict(test_size=0.2), + "train_test_split_params": dict(test_size=0.2), } ], ) @@ -63,7 +63,7 @@ def test_config_from_dict(config_dict): assert config.resample_methods == config_dict["resample_methods"] assert config.metrics == config_dict["metrics"] assert config.n_repeats == config_dict["n_repeats"] - assert config.train_test_split_kwargs == config_dict["train_test_split_kwargs"] + assert config.train_test_split_params == config_dict["train_test_split_params"] @pytest.mark.parametrize( @@ -78,9 +78,10 @@ def test_get_classifier(classifier, expected_name, expected_clf): pipeline = AnalysisPipeline(config) - clf_name, clf = next(pipeline._get_classifier()) + clf_name, clf, params = next(pipeline._get_classifier()) assert clf_name == expected_name assert isinstance(clf, expected_clf) + assert params == {} @pytest.mark.parametrize( @@ -95,7 +96,7 @@ def test_get_resampler(resampler, expected_name, expected_resampler): pipeline = AnalysisPipeline(config) - resampler_name, resampler = next(pipeline._get_resampler()) + resampler_name, resampler = next(pipeline._get_resampler(train_without_resampling=False)) assert resampler_name == expected_name assert isinstance(resampler, expected_resampler) @@ -126,18 +127,18 @@ def test_run_analysis(X_ecoc, y_ecoc, dataset_file, output_file): "resample_methods": dict(globalCS={"shuffle": True}), "metrics": {geometric_mean_score: {"correction": 0.005}, accuracy_score: {}}, "n_repeats": 2, - "train_test_split_kwargs": dict(test_size=0.2, random_state=42), + "train_test_split_params": dict(test_size=0.2, random_state=42), } config = Config.from_dict(config_dict) pipeline = AnalysisPipeline(config) - pipeline.run_analysis(output_file) + pipeline.run_analysis(output_file, train_without_resampling=True) result_df = pd.read_csv(output_file) assert (result_df["dataset_name"] == "dataset").all() assert (result_df["classifier"] == "tree").all() np.testing.assert_array_equal(result_df["metric_name"].unique(), ["geometric_mean_score", "accuracy_score"]) - np.testing.assert_array_almost_equal(result_df["metric_value"].unique(), [0.018803, 0.166667]) + np.testing.assert_array_almost_equal(result_df["metric_value"].unique(), [0.018803, 0.166667, 0.005, 0.0]) def test_get_dataset_wrong_path(): @@ -170,7 +171,7 @@ def test_get_resampler_wrong(wrong_resampler, expected_exception): pipeline = AnalysisPipeline(config) with pytest.raises(ValueError) as ex: - next(pipeline._get_resampler()) + next(pipeline._get_resampler(train_without_resampling=False)) assert ex.value.args[0] == expected_exception From 59f88928066856a42adcf102d321904baf467ad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Fri, 6 Jan 2023 13:50:34 +0100 Subject: [PATCH 24/48] Final version --- examples/datasets/analysis.ipynb | 358 --------------- multi_imbalance/datasets/_data_loader.py | 2 + multi_imbalance/datasets/analysis.py | 559 +++++++++++++++++++---- multi_imbalance/datasets/helpers.py | 108 +++++ pyproject.toml | 2 + tests/datasets/test_analysis.py | 375 ++++++++++++--- tests/datasets/test_data_loader.py | 3 +- 7 files changed, 898 insertions(+), 509 deletions(-) delete mode 100644 examples/datasets/analysis.ipynb create mode 100644 multi_imbalance/datasets/helpers.py diff --git a/examples/datasets/analysis.ipynb b/examples/datasets/analysis.ipynb deleted file mode 100644 index 69a99d2..0000000 --- a/examples/datasets/analysis.ipynb +++ /dev/null @@ -1,358 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.gaussian_process import GaussianProcessClassifier\n", - "from sklearn.neighbors import KNeighborsClassifier\n", - "from sklearn.tree import DecisionTreeClassifier\n", - "from imblearn.metrics import geometric_mean_score\n", - "from pathlib import Path\n", - "from sklearn.metrics import accuracy_score\n", - "from tempfile import NamedTemporaryFile\n", - "\n", - "from multi_imbalance.datasets.analysis import AnalysisPipeline, Config, Result\n", - "from multi_imbalance.datasets import load_datasets\n", - "from multi_imbalance.resampling.soup import SOUP\n", - "from multi_imbalance.resampling.spider import SPIDER3\n", - "from multi_imbalance.resampling.static_smote import StaticSMOTE\n", - "from multi_imbalance.resampling.global_cs import GlobalCS\n", - "from multi_imbalance.resampling.mdo import MDO\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "load_datasets(save_to_csv=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "cwd = Path.cwd()\n", - "\n", - "config = {\n", - " \"datasets\": [cwd.parents[1] / \"data\" / \"csv\" / \"glass.csv\"],\n", - " \"classifiers\": {\n", - " DecisionTreeClassifier: [{\"max_depth\" : 100}, {}],\n", - " KNeighborsClassifier: [{\"n_neighbors\": 7}, {}],\n", - " GaussianProcessClassifier: [ {\"max_iter_predict\": 250}, {}]\n", - " },\n", - " \"resample_methods\": {\n", - " GlobalCS: {\"all\": {\"shuffle\": True}},\n", - " MDO: {\"all\": {\"k1_frac\": 0.3, \"maj_int_min\":{\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}}},\n", - " StaticSMOTE: {\"all\":{}},\n", - " SOUP: {\"all\" : {\"shuffle\": True}},\n", - " SPIDER3: {\"all\": {\"k\":5}}\n", - " },\n", - " \"metrics\": {geometric_mean_score: {\"correction\": 0.001}},\n", - " \"n_repeats\": 1,\n", - " \"stratifiedkfold_params\": dict(n_splits=2, shuffle=True),\n", - "}\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[09.12.2022 20:06:30] ERROR AnalysisPipeline Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='decisiontreeclassifier'\n", - "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='decisiontreeclassifier'\n", - "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='kneighborsclassifier'\n", - "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='kneighborsclassifier'\n", - "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='gaussianprocessclassifier'\n", - "Raised exception 'Expected n_neighbors <= n_samples, but n_samples = 5, n_neighbors = 6' for dataset_name='glass', resampler_name='staticsmote' and clf_name='gaussianprocessclassifier'\n" - ] - } - ], - "source": [ - "result_file = NamedTemporaryFile(suffix=\".csv\")\n", - "result_file.close()\n", - "c = Config.from_dict(config)\n", - "pipeline = AnalysisPipeline(c)\n", - "pipeline.run_analysis(result_file.name, train_without_resampling = True)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
metric_value
meanstdminmaxmedian
dataset_nameclassifierresampling_methodmetric_name
glassdecisiontreeclassifierNot definedgeometric_mean_score0.4238400.2195190.2240790.6329940.419144
globalcsgeometric_mean_score0.4606040.1737430.2353970.6413630.482827
mdogeometric_mean_score0.4964190.2076750.1988130.6708460.558009
soupgeometric_mean_score0.6299310.0188040.6079900.6491860.631274
spider3geometric_mean_score0.4543950.1551100.2312470.5833010.501516
kneighborsclassifierNot definedgeometric_mean_score0.1501990.0562440.0719680.2051630.161833
globalcsgeometric_mean_score0.6116710.0849480.5510140.7323820.581645
mdogeometric_mean_score0.3818560.1972940.2057910.6072160.357208
soupgeometric_mean_score0.5532340.0367440.5146610.5988350.549719
spider3geometric_mean_score0.4722300.0500680.4084030.5161810.482168
\n", - "
" - ], - "text/plain": [ - " metric_value \\\n", - " mean \n", - "dataset_name classifier resampling_method metric_name \n", - "glass decisiontreeclassifier Not defined geometric_mean_score 0.423840 \n", - " globalcs geometric_mean_score 0.460604 \n", - " mdo geometric_mean_score 0.496419 \n", - " soup geometric_mean_score 0.629931 \n", - " spider3 geometric_mean_score 0.454395 \n", - " kneighborsclassifier Not defined geometric_mean_score 0.150199 \n", - " globalcs geometric_mean_score 0.611671 \n", - " mdo geometric_mean_score 0.381856 \n", - " soup geometric_mean_score 0.553234 \n", - " spider3 geometric_mean_score 0.472230 \n", - "\n", - " \\\n", - " std \n", - "dataset_name classifier resampling_method metric_name \n", - "glass decisiontreeclassifier Not defined geometric_mean_score 0.219519 \n", - " globalcs geometric_mean_score 0.173743 \n", - " mdo geometric_mean_score 0.207675 \n", - " soup geometric_mean_score 0.018804 \n", - " spider3 geometric_mean_score 0.155110 \n", - " kneighborsclassifier Not defined geometric_mean_score 0.056244 \n", - " globalcs geometric_mean_score 0.084948 \n", - " mdo geometric_mean_score 0.197294 \n", - " soup geometric_mean_score 0.036744 \n", - " spider3 geometric_mean_score 0.050068 \n", - "\n", - " \\\n", - " min \n", - "dataset_name classifier resampling_method metric_name \n", - "glass decisiontreeclassifier Not defined geometric_mean_score 0.224079 \n", - " globalcs geometric_mean_score 0.235397 \n", - " mdo geometric_mean_score 0.198813 \n", - " soup geometric_mean_score 0.607990 \n", - " spider3 geometric_mean_score 0.231247 \n", - " kneighborsclassifier Not defined geometric_mean_score 0.071968 \n", - " globalcs geometric_mean_score 0.551014 \n", - " mdo geometric_mean_score 0.205791 \n", - " soup geometric_mean_score 0.514661 \n", - " spider3 geometric_mean_score 0.408403 \n", - "\n", - " \\\n", - " max \n", - "dataset_name classifier resampling_method metric_name \n", - "glass decisiontreeclassifier Not defined geometric_mean_score 0.632994 \n", - " globalcs geometric_mean_score 0.641363 \n", - " mdo geometric_mean_score 0.670846 \n", - " soup geometric_mean_score 0.649186 \n", - " spider3 geometric_mean_score 0.583301 \n", - " kneighborsclassifier Not defined geometric_mean_score 0.205163 \n", - " globalcs geometric_mean_score 0.732382 \n", - " mdo geometric_mean_score 0.607216 \n", - " soup geometric_mean_score 0.598835 \n", - " spider3 geometric_mean_score 0.516181 \n", - "\n", - " \n", - " median \n", - "dataset_name classifier resampling_method metric_name \n", - "glass decisiontreeclassifier Not defined geometric_mean_score 0.419144 \n", - " globalcs geometric_mean_score 0.482827 \n", - " mdo geometric_mean_score 0.558009 \n", - " soup geometric_mean_score 0.631274 \n", - " spider3 geometric_mean_score 0.501516 \n", - " kneighborsclassifier Not defined geometric_mean_score 0.161833 \n", - " globalcs geometric_mean_score 0.581645 \n", - " mdo geometric_mean_score 0.357208 \n", - " soup geometric_mean_score 0.549719 \n", - " spider3 geometric_mean_score 0.482168 " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "d = {\"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"]}\n", - "import pandas as pd\n", - "\n", - "pd.concat(pipeline.generate_summary(d, [min, max]))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.9.2 ('.test')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.2" - }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "354fe7bbb08ce19365ae7e9dc9251db0b8655780cc27fe67a2a3ffff5cc90304" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/multi_imbalance/datasets/_data_loader.py b/multi_imbalance/datasets/_data_loader.py index fa9f29a..dadf033 100644 --- a/multi_imbalance/datasets/_data_loader.py +++ b/multi_imbalance/datasets/_data_loader.py @@ -74,6 +74,8 @@ def load_datasets(data_home: str = DATA_HOME_BASIC, save_to_csv: bool = False) - """ extracted_dir = join(data_home, "extracted") csv_dir = join(data_home, "csv") + makedirs(csv_dir, exist_ok=True) + datasets = OrderedDict() filter_data_ = MAP_NAME_ID.keys() diff --git a/multi_imbalance/datasets/analysis.py b/multi_imbalance/datasets/analysis.py index 10ef771..c1a765f 100644 --- a/multi_imbalance/datasets/analysis.py +++ b/multi_imbalance/datasets/analysis.py @@ -1,56 +1,64 @@ from copy import deepcopy -from dataclasses import dataclass +import json from pathlib import Path -from typing import Callable, Dict, Iterable, List, Tuple, Union +from typing import Callable, Dict, Iterable, List, Optional, Tuple, Union +import click import pandas as pd from sklearn.base import ClassifierMixin -from sklearn.model_selection import StratifiedKFold +from sklearn.model_selection import StratifiedKFold, train_test_split from imblearn.base import BaseSampler from sklearn.pipeline import _name_estimators import logging from itertools import product +import numpy as np +from multi_imbalance.datasets.helpers import Result, Config, import_from_string -logging.basicConfig(level=logging.INFO, format="[%(asctime)s] %(levelname)s %(name)s %(message)s", datefmt="%d.%m.%Y %H:%M:%S") +logging.basicConfig( + level=logging.INFO, + format="[%(asctime)s] %(levelname)s %(name)s %(message)s", + datefmt="%d.%m.%Y %H:%M:%S", +) -@dataclass -class Config: - datasets: List[str] - classifiers: Dict[ClassifierMixin, List[Dict]] - resample_methods: Dict[BaseSampler, Dict[str, Dict]] - metrics: Dict[Callable, Dict] - n_repeats: int - stratifiedkfold_params: Dict - - @classmethod - def from_dict(cls, config: Dict) -> "Config": - return cls(**config) - +class AnalysisPipeline: + """ + This is a class for an analysis pipeline. + The __init__() method initializes the object, taking a Config object containing the pipeline configuration and an optional csv_path to the results CSV file. + The run_analysis() method runs the analysis on a set of classifiers, datasets, and resamplers, saving the results to the specified output_path. + The explode_clf_params() method takes a input_path to a CSV file and explodes the clf_params column into individual columns, saving the result to output_path. + Finally, the generate_summary() method takes a query_dict specifying which results to include in the summary and an optional aggregate_func to apply to the metric_value column + and returns a list of Pandas DataFrames containing the summary of the results. + """ -@dataclass -class Result: - dataset_name: str - classifier: str - resampling_method: str - metric_name: str - metric_value: float - no_repeat: int - clf_params: Dict + def __init__(self, config: Config) -> None: + """ + Initializes the AnalysisPipeline object. + :param: config: + Config object containing the configuration for the pipeline. + """ + __split_funcs = {"Kfold": self.__KFold_split, "train_test": self.__train_test_split} -class AnalysisPipeline: - def __init__(self, config: Config) -> None: self.__logger = logging.getLogger("AnalysisPipeline") self._config = config self.__metrics = self._config.metrics self.__n_repeats = self._config.n_repeats - self.__stratifiedkfold_params = self._config.stratifiedkfold_params + self.__split_params = self._config.split_method[1] + self.__split_func = __split_funcs[self._config.split_method[0]] self.__iter = 0 self.__chunksize = 10000 def run_analysis(self, output_path: str, train_without_resampling: bool) -> None: - self._output_path = Path(output_path) + """ + This function runs a specified analysis on a set of classifiers, datasets, and resamplers. The results of the analysis are saved to the specified output path. + + :param output_path: + str, the location where the results of the analysis will be saved as a CSV file + :param train_without_resampling: + bool, if `True`, the analysis will be run without using resampling on the training set + """ + self._csv_path = Path(output_path) list_of_errors = [] for clf_data, n, dataset_data in product(self._get_classifier(), range(self.__n_repeats), self._get_dataset()): @@ -62,56 +70,141 @@ def run_analysis(self, output_path: str, train_without_resampling: bool) -> None if list_of_errors: self.__logger.error("\n".join(list_of_errors)) - def explode_clf_params(self, input_path: str, output_path: str) -> None: - df_results = pd.read_csv(input_path) - df_results = pd.concat( - [df_results.drop(columns="clf_params"), df_results["clf_params"].apply(lambda x: dict(eval(x))).apply(pd.Series)], axis=1 - ) - df_results.to_csv(output_path, index=False) - - def generate_summary(self, query_dict: Dict[str, List[str]], aggregate_func: Union[List[Callable], None] = None) -> List[pd.DataFrame]: - selected_columns = self.column_names + @staticmethod + def generate_summary( + query_dict: Dict[str, List[str]], + csv_path: str, + save_to_csv: bool = False, + save_path: Optional[str] = None, + aggregate_func: Optional[List[Callable]] = None, + ) -> List[pd.DataFrame]: + """ + Generate summary of analysis results based on specified query parameters. + + This method generates a summary of the results of an analysis based on the specified query parameters. The `csv_path` + should be the path to the CSV file containing the results of the analysis. By default, the mean and std functions + are used for aggregation. If `save_to_csv` is `True`, the summary will be saved to a CSV file. The optional + `aggregate_func` parameter allows specifying a list of functions that will be applied to the `metric_value` column + of the results to generate the summary. + + :param query_dict: + Dict[str, List[str]], a dictionary that specifies the values of different columns in the results to include in the summary + :param csv_path: + str, the path to the CSV file containing the results of the analysis + :param save_to_csv: + bool, optional, if `True`, the summary will be saved to a CSV file + :param save_path: + str, optional, the location where the summary csv files should be saved + :param aggregate_func: + Optional[List[Callable]], optional, a list of functions that will be applied to the `metric_value` column of the results to generate the summary + :return: + List[pd.DataFrame], a list of Pandas DataFrames containing the summary of the results of the analysis + """ + chunksize = 1000 + gen = pd.read_csv(csv_path, chunksize=chunksize) + selected_columns = list(next(gen).columns) selected_columns.remove("no_repeat") selected_columns.remove("metric_value") agg_func_list = ["mean", "std"] if aggregate_func is None else ["mean", "std", *aggregate_func] df_list = [] for i in product(*query_dict.values()): - tmp_dict = dict(zip(query_dict.keys(), i)) - query = " & ".join(map(lambda x: f"{x[0]}=='{x[1]}'", tmp_dict.items())) + df = AnalysisPipeline._search_df_by_query(query_dict, combination=i, csv_path=csv_path, chunksize=chunksize) - gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) - df = pd.concat([df.query(query) for df in gen]) - - group_df = df[[*selected_columns, "metric_value"]].groupby(by=selected_columns[:-1]).agg({"metric_value": agg_func_list}) + group_df = df[[*selected_columns, "metric_value"]].groupby(by=selected_columns).agg({"metric_value": agg_func_list}) + if save_to_csv: + if save_path is None: + save_path = Path(csv_path).parent + group_df.reset_index().to_csv(Path(save_path) / ("_".join(i) + ".csv"), index=False) df_list.append(group_df) return df_list + @staticmethod + def generate_posthoc_analysis( + query_dict: Dict[str, List[str]], + csv_path: str, + posthoc_func_list: List[Tuple[Callable, Dict]], + save_to_csv: bool = False, + save_path: Optional[str] = None, + ) -> List[pd.DataFrame]: + """ + Generates a posthoc analysis of the results of the analysis based on the specified query parameters and posthoc functions. + `csv_path` should be the path to the CSV file containing the results of the analysis. + + :param query_dict: + Dict[str, List[str]], a dictionary that specifies the values of different columns in the results to include in the posthoc analysis + :param csv_path: + str, the path to the CSV file containing the results of the analysis + :param posthoc_func_list: + List[Tuple[Callable, Dict]], a list of tuples containing the posthoc functions and their parameters to be applied to the results + :param save_to_csv: + bool, optional, if `True`, the posthoc analysis will be saved to a CSV file + :param save_path: + str, optional, the location where the summary csv files should be saved + :return: + List[pd.DataFrame], a list of Pandas DataFrames containing the posthoc analysis of the results + """ + chunksize = 1000 + gen = pd.read_csv(csv_path, chunksize=chunksize) + selected_columns = list(next(gen).columns) + selected_columns.remove("no_repeat") + selected_columns.remove("metric_value") + + df_list = [] + for i in product(*query_dict.values()): + df = AnalysisPipeline._search_df_by_query(query_dict, combination=i, csv_path=csv_path, chunksize=chunksize) + + for posthoc_func, params in posthoc_func_list: + posthoc_df = posthoc_func(df, "metric_value", "resampling_method", **params) + df_name = posthoc_func.__name__ + "_" + "_".join(i) + posthoc_df.columns.name = df_name + if save_to_csv: + if save_path is None: + save_path = Path(csv_path).parent + df_path = save_path / (df_name + ".csv") + posthoc_df.to_csv(Path(df_path)) + df_list.append(posthoc_df) + + return df_list + @property def dataset_names(self) -> List[str]: - gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + """Returns a list of unique dataset names in the CSV file""" + gen = pd.read_csv(self._csv_path, chunksize=self.__chunksize) return list(set(i for df in gen for i in df["dataset_name"].unique())) @property def metric_names(self) -> List[str]: - gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + """Returns a list of unique metric names in the CSV file""" + gen = pd.read_csv(self._csv_path, chunksize=self.__chunksize) return list(set(i for df in gen for i in df["metric_name"].unique())) @property def clf_names(self) -> List[str]: - gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + """Returns a list of unique classifier names in the CSV file""" + gen = pd.read_csv(self._csv_path, chunksize=self.__chunksize) return list(set(i for df in gen for i in df["classifier"].unique())) @property def resampling_methods(self) -> List[str]: - gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + """Returns a list of unique resample method names in the CSV file""" + gen = pd.read_csv(self._csv_path, chunksize=self.__chunksize) return list(set(i for df in gen for i in df["resampling_method"].unique())) @property def column_names(self) -> List[str]: - gen = pd.read_csv(str(self._output_path), chunksize=self.__chunksize) + """Returns a list of column names in the CSV file""" + gen = pd.read_csv(self._csv_path, chunksize=self.__chunksize) return list(next(gen).columns) + @staticmethod + def _search_df_by_query(query_dict: Dict, combination: Tuple[str, ...], csv_path: str, chunksize: int = 10000) -> pd.DataFrame: + query_dict = dict(zip(query_dict.keys(), combination)) + query = " & ".join(map(lambda x: f"{x[0]}=='{x[1]}'", query_dict.items())) + + gen = pd.read_csv(csv_path, chunksize=chunksize) + return pd.concat([df.query(query) for df in gen]) + def _prepare_result( self, clf_data: Tuple[str, ClassifierMixin, Dict], @@ -121,75 +214,253 @@ def _prepare_result( n: int, list_of_errors: List[str], ) -> None: - try: - clf_name, clf, clf_params = clf_data - dataset_name, dataset = dataset_data - resampler_name, resampler = resampler_data - - tmp_clf = deepcopy(clf) - - X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] - - skf = StratifiedKFold(**self.__stratifiedkfold_params, random_state=self.__iter) - for train_index, test_index in skf.split(X, y): - X_train, X_test = X.loc[train_index, :], X.loc[test_index, :] - y_train, y_test = y[train_index], y[test_index] - - if resampler is not None: - X_train, y_train = resampler.fit_resample(X_train, y_train) - - results = [] - tmp_clf.fit(X_train, y_train) - y_pred = tmp_clf.predict(X_test) - - for metric, params in self.__metrics.items(): - results.append( - Result( - dataset_name, - clf_name, - resampler_name, - metric.__name__, - metric(y_test, y_pred, **params), - n, - clf_params, - ) - ) - df_results = pd.DataFrame(results) - - if self._output_path.exists(): - df_results.to_csv(output_path, mode="a", index=False, header=False) - else: - df_results.to_csv(output_path, index=False) - - except Exception as e: - list_of_errors.append(f"Raised exception '{e}' for {dataset_name=}, {resampler_name=} and {clf_name=}") + """ + This method prepares the results of running a classifier on a dataset which is resampling by resampler. It will compute the specified metrics for each repeat. + + :param clf_data: + A tuple containing the name of the classifier, the classifier and a dictionary of classifier parameters + :param dataset_data: + A tuple containing the name of the dataset and the dataset + :param resampler_data: + A tuple containing the name of the resampler and the resampler + :param output_path: + str, the path to the output CSV file + :param n: + int, the current number of repeat + :param list_of_errors: + List[str], a list of error messages to append to if an exception is raised + """ + clf_name, clf, clf_params = clf_data + dataset_name, dataset = dataset_data + resampler_name, resampler = resampler_data + tmp_clf = deepcopy(clf) + metric_to_check = {} + for metric in self.__metrics.keys(): + if not self._check_if_exist_in_csv(output_path, dataset_name, clf_name, resampler_name, metric.__name__, n, clf_params): + metric_to_check.update({metric: self.__metrics[metric]}) + + if metric_to_check != {}: + try: + X, y = dataset.iloc[:, :-1], dataset.iloc[:, -1] + self.__split_func( + X, + y, + resampler, + tmp_clf, + metrics=metric_to_check, + dataset_name=dataset_name, + clf_name=clf_name, + resampler_name=resampler_name, + n=n, + clf_params=clf_params, + output_path=output_path, + ) + + except Exception as e: + list_of_errors.append(f"Raised exception: '{e}' for {dataset_name=}, {resampler_name=} and {clf_name=}") + + def __KFold_split(self, X: np.ndarray, y: np.ndarray, resampler: BaseSampler, clf: ClassifierMixin, **kwargs) -> None: + """ + This method performs a K-Fold split of the data and computes the specified metrics on the test set for each split. + + :param X: + numpy.ndarray, the feature matrix + :param y: + numpy.ndarray, the target vector + :param resampler: + BaseSampler, the resampling method to use + :param clf: + ClassifierMixin, the classifier to be evaluated + :param kwargs: + Additional keyword arguments, including the list of metrics to be computed, the name of the dataset, classifier, and resampler, + the current number of repeat, and the parameters of the classifier + """ + skf = StratifiedKFold(**self.__split_params, random_state=self.__iter) + for train_index, test_index in skf.split(X, y): + X_train, X_test = X.loc[train_index, :], X.loc[test_index, :] + y_train, y_test = y[train_index], y[test_index] + + if resampler is not None: + X_train, y_train = resampler.fit_resample(X_train, y_train) + + results = [] + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + self._processing_result(results=results, y_test=y_test, y_pred=y_pred, **kwargs) + + def __train_test_split(self, X: np.ndarray, y: np.ndarray, resampler: BaseSampler, clf: ClassifierMixin, **kwargs): + """ + This method performs a train-test split of the data and computes the specified metrics on the test set. + + :param X: + numpy.ndarray, the feature matrix + :param y: + numpy.ndarray, the target vector + :param resampler: + BaseSampler, the resampling method to use + :param clf: + ClassifierMixin, the classifier to be evaluated + :param kwargs: + Additional keyword arguments, including the list of metrics to be computed, the name of the dataset, classifier, and resampler, + the current number of repeat, and the parameters of the classifier + """ + X_train, X_test, y_train, y_test = train_test_split( + X, + y, + random_state=self.__iter, + **self.__split_params, + ) + if resampler is not None: + X_train, y_train = resampler.fit_resample(X_train, y_train) + + results = [] + clf.fit(X_train, y_train) + y_pred = clf.predict(X_test) + self._processing_result(results=results, y_test=y_test, y_pred=y_pred, **kwargs) + + def _processing_result( + self, + results: List, + metrics: Dict[Callable, Dict], + dataset_name: str, + clf_name: str, + resampler_name: str, + y_test: np.ndarray, + y_pred: np.ndarray, + n: int, + clf_params: Dict, + output_path: str, + ): + """ + This method processes the results of applying a classifier to a dataset using a resampler. + + :param results: + List, a list to append the computed results to + :param metrics: + Dict[Callable, Dict], a dictionary of metrics to be computed, along with any additional parameters for each metric + :param dataset_name: + str, the name of the dataset + :param clf_name: + str, the name of the classifier + :param resampler_name: + str, the name of the resampler + :param y_test: + numpy.ndarray, the target vector of the test set + :param y_pred: + numpy.ndarray, the predicted target vector of the test set + :param n: + int, the current number of repeat + :param clf_params: + Dict, the parameters of the classifier + :param output_path: + str, the path to the output CSV file + + """ + for metric, params in metrics.items(): + results.append( + Result( + dataset_name=dataset_name, + classifier=clf_name, + resampling_method=resampler_name, + metric_name=metric.__name__, + metric_value=metric(y_test, y_pred, **params), + no_repeat=n, + clf_params=clf_params, + ) + ) + df_results = pd.DataFrame(results) + + if self._csv_path.exists(): + df_results.to_csv(output_path, mode="a", index=False, header=False) + else: + df_results.to_csv(output_path, index=False) + + def _check_if_exist_in_csv( + self, + path: str, + dataset_name: str, + clf_name: str, + resampler_name: str, + metric_name: str, + n: int, + clf_params: str, + ) -> bool: + """ + Check if a combination of parameters already exists in a CSV file. + + :param path: + str, The path to the CSV file + :param dataset_name: + str, The name of the dataset + :param clf_name: + str, The name of the classifier + :param resampler_name: + str, The name of the resampler + :param metric_name: + str, The name of the metric + :param n: + int, Current number of repeat + :param clf_params: + str, The classifier parameters + :return: + bool, True if the results already exist, False otherwise + """ + query = ( + f"dataset_name=='{dataset_name}' & classifier=='{clf_name}' & resampling_method=='{resampler_name}'" + f"""& metric_name=='{metric_name}' & clf_params=="{clf_params}" & no_repeat=={n}""" + ) + if Path(path).exists(): + gen = pd.read_csv(path, chunksize=self.__chunksize) + return any([not df.query(query).empty for df in gen]) + return False def _get_dataset(self) -> Iterable[Tuple[str, pd.DataFrame]]: + """ + This method retrieves the datasets specified in the configuration object. + + :return: + Iterable[Tuple[str, pd.DataFrame]], An iterable of tuples containing the dataset name and the dataset + """ for dataset_path in self._config.datasets: path = Path(dataset_path) if path.is_file() and path.suffix == ".csv": - yield path.stem, pd.read_csv(str(path)) + yield path.stem, pd.read_csv(path) elif path.is_dir(): dataset_dir = path for path in dataset_dir.glob("**/*.csv"): - yield path.stem, pd.read_csv(str(path)) + yield path.stem, pd.read_csv(path) else: raise Exception("Wrong dataset path, should be csv file or dir with csv files") def _get_resampler(self, train_without_resampling: bool, dataset_name: str) -> Iterable[Tuple[str, Union[BaseSampler, None]]]: - for resampler, params_dict in self._config.resample_methods.items(): + """ + This method retrieves the resamplers specified in the configuration object. + + :param train_without_resampling: + bool, A flag indicating whether to include an option to not use a resampler + :param dataset_name: + str, The name of the dataset for which use specific resampler configuration + + :return: + Iterable[Tuple[str, Union[BaseSampler, None]]], An iterable of tuples containing the resampler name and the resampler + """ + for resampler, params_dict in self._config.resampling_methods.items(): if not hasattr(resampler, "fit_resample"): raise ValueError("Your resampler must implement fit_resample method") - if dataset_name and "all" not in params_dict: - raise KeyError("Must define params for all datasets or for the specific dataset") + if dataset_name and "default" not in params_dict: + raise KeyError("Must define default params for all datasets or for the specific dataset") - params = params_dict.get(dataset_name, params_dict.get("all")) + params = params_dict.get(dataset_name, params_dict.get("default")) yield self._get_name(resampler(**params)) if train_without_resampling: yield "Not defined", None def _get_classifier(self) -> Iterable[Tuple[str, ClassifierMixin, Dict]]: + """This method retrieves the classifiers specified in the configuration object. + + :return: + Iterable[Tuple[str, ClassifierMixin, Dict]], An iterable of tuples containing the classifier name, the classifier and a dictionary of classifier parameters""" for classifier, params_list in self._config.classifiers.items(): if not hasattr(classifier, "fit") or not hasattr(classifier, "predict"): raise ValueError("Your classifier must implement fit and predict methods") @@ -198,3 +469,95 @@ def _get_classifier(self) -> Iterable[Tuple[str, ClassifierMixin, Dict]]: def _get_name(self, estimator: Union[ClassifierMixin, BaseSampler]) -> Tuple[str, Union[ClassifierMixin, BaseSampler]]: return _name_estimators([estimator])[0] + + +@click.command() +@click.argument("output_path") +@click.option( + "--run-analysis", + is_flag=True, + help="Option specifying whether it should be run analysis pipeline", +) +@click.option( + "--summary", + is_flag=True, + help="Option specifying whether it should be run summary", +) +@click.option( + "--posthoc-analysis", + is_flag=True, + help="Option specifying whether it should be run posthoc analysis", +) +@click.option("--config-json", help="Path to json file which contain config for pipeline analysis") +@click.option("--query-json", help="Path to json file which contain query dict for generating summary") +@click.option("--posthoc-query-json", help="Path to json file which contain query dict for posthoc analysis") +@click.option( + "--aggregate-json", help="Optional, path to json file which contain paths (in list) to aggregate functions, e.g. ['numpy.max', ...]" +) +@click.option( + "--posthoc-func-json", + help="Path to json file which contain dict with paths to posthoc analysis functions and their params, e.g. {'scikit_posthoc.posthoc_dunn':{}}", +) +@click.option( + "--train-without-resampling", + is_flag=True, + help="Option specifying if the analysis would be run without using resampling", +) +@click.option( + "--save-to-csv", + is_flag=True, + help="Option defines if results from summary should be save to csv", +) +def main( + output_path, + run_analysis, + summary, + posthoc_analysis, + config_json, + query_json, + posthoc_query_json, + aggregate_json, + posthoc_func_json, + train_without_resampling, + save_to_csv, +): + """ + This function helps to use pipeline analysis, summary and posthoc tests by CLI. Output path is path to result csv file from analysis pipeline. + """ + print("Start") + if run_analysis: + print("Run analysis pipeline") + config = Config.from_json(config_json) + pipeline = AnalysisPipeline(config) + pipeline.run_analysis(output_path, train_without_resampling) + + if summary: + print("Run generate summary") + with open(query_json, "r") as f: + query_dict = json.load(f) + + aggregate_func = [] + if aggregate_json is not None: + with open(aggregate_json, "r") as f: + aggregate_func_paths = json.load(f) + aggregate_func = list(map(import_from_string, aggregate_func_paths)) + + AnalysisPipeline.generate_summary(query_dict, output_path, save_to_csv, aggregate_func=aggregate_func) + + if posthoc_analysis: + print("Run generate posthoc analysis") + + with open(posthoc_query_json, "r") as f: + query_dict = json.load(f) + + with open(posthoc_func_json, "r") as f: + posthoc_func_paths = json.load(f) + posthoc_func = [[import_from_string(func_path), params] for func_path, params in posthoc_func_paths.items()] + + AnalysisPipeline.generate_posthoc_analysis(query_dict, output_path, posthoc_func_list=posthoc_func, save_to_csv=save_to_csv) + + print("Done") + + +if __name__ == "__main__": # pragma no cover + main() diff --git a/multi_imbalance/datasets/helpers.py b/multi_imbalance/datasets/helpers.py new file mode 100644 index 0000000..88832d6 --- /dev/null +++ b/multi_imbalance/datasets/helpers.py @@ -0,0 +1,108 @@ +from dataclasses import dataclass +import importlib +import json +from typing import Callable, Dict, List, Tuple, Union +from sklearn.base import ClassifierMixin +from imblearn.base import BaseSampler + + +def import_from_string(cls_path: str) -> Union[BaseSampler, ClassifierMixin, Callable]: + module_name, class_name = cls_path.rsplit(".", 1) + module = importlib.import_module(module_name) + return getattr(module, class_name) + + +@dataclass +class Config: + """A class representing the configuration for an analysis pipeline. + + Attributes: + ---------- + datasets: A list of dataset names to use in the analysis pipeline. + classifiers: A dictionary mapping classifier objects to lists of dictionaries containing the hyperparameters to use for each classifier. + resampling_methods: A dictionary mapping resampling objects to dictionaries of hyperparameters to use for each resampling method. + metrics: A dictionary mapping metric functions to dictionaries of hyperparameters to use for each metric. + n_repeats: The number of times to repeat the experiment for datasets. + split_method: A dictionary mapping split method to dictionaries of additional parameters. + There are two options to choose: `Kfold` (StratifiedKFold) and `train_test` (train_test_split). + """ + + datasets: List[str] + classifiers: Dict[ClassifierMixin, List[Dict]] + resampling_methods: Dict[BaseSampler, Dict[str, Dict]] + metrics: Dict[Callable, Dict] + n_repeats: int + split_method: List[Tuple[str, Dict]] + + @classmethod + def from_dict(cls, config: Dict) -> "Config": + """Load configuration from a dict. + + :param: config: + The dict containing the configuration. + + :return: + A Config object representing the configuration from dict. + """ + return cls(**config) + + @classmethod + def from_json(cls, json_path: str) -> "Config": + """Load configuration from a JSON file. + + :param: json_path: + The path to the JSON file containing the configuration to load. + + :return: + A Config object representing the configuration from the JSON file. + """ + with open(json_path, "r") as f: + dict_config = json.load(f) + + tmp_dict = {} + for clf_path, clf_params in dict_config["classifiers"].items(): + tmp_dict[import_from_string(clf_path)] = clf_params + + dict_config["classifiers"].clear() + dict_config["classifiers"].update(tmp_dict) + tmp_dict.clear() + + for resample_path, resample_params in dict_config["resampling_methods"].items(): + tmp_dict[import_from_string(resample_path)] = resample_params + + dict_config["resampling_methods"].clear() + dict_config["resampling_methods"].update(tmp_dict) + tmp_dict.clear() + + for metric_path, metric_params in dict_config["metrics"].items(): + tmp_dict[import_from_string(metric_path)] = metric_params + + dict_config["metrics"].clear() + dict_config["metrics"].update(tmp_dict) + tmp_dict.clear() + + return cls(**dict_config) + + +@dataclass +class Result: + """ + Result class is used to store the results of a model evaluation in the analysis pipeline. + + Attributes: + ---------- + metric_name (str): The name of the evaluation metric. + classifier (str): The name of the classifier used. + dataset_name (str): The name of the dataset used. + resampling_method (str): The method used for resampling the data. + metric_value (float): The value of the evaluation metric. + no_repeat (int): The number of times the model was trained and evaluated. + clf_params (Dict): The parameters used for the classifier.""" + + metric_name: str + classifier: str + dataset_name: str + resampling_method: str + metric_value: float + no_repeat: int + clf_params: Dict diff --git a/pyproject.toml b/pyproject.toml index 59165d4..9ee1317 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,8 @@ dependencies = [ "imbalanced-learn~=0.9.1", "seaborn~=0.12.1", "matplotlib~=3.6.2", + "click~=8.1.3", + "scikit-posthoc~=0.7.0" ] [project.optional-dependencies] diff --git a/tests/datasets/test_analysis.py b/tests/datasets/test_analysis.py index 786ac57..d60aafd 100644 --- a/tests/datasets/test_analysis.py +++ b/tests/datasets/test_analysis.py @@ -1,13 +1,15 @@ +import json +from pathlib import Path +from click.testing import CliRunner import pytest from sklearn.metrics import accuracy_score from sklearn.tree import DecisionTreeClassifier from sklearn.linear_model import LinearRegression import pandas as pd from imblearn.metrics import geometric_mean_score -import numpy as np +from scikit_posthocs import posthoc_dunn - -from multi_imbalance.datasets.analysis import AnalysisPipeline, Config +from multi_imbalance.datasets.analysis import AnalysisPipeline, Config, main from multi_imbalance.resampling.global_cs import GlobalCS from multi_imbalance.resampling.soup import SOUP @@ -16,10 +18,10 @@ def get_dummy_config(): return { "datasets": [], "classifiers": {}, - "resample_methods": {}, + "resampling_methods": {}, "metrics": {}, "n_repeats": 2, - "train_test_split_params": {}, + "split_method": ["train_test", {}], } @@ -28,47 +30,144 @@ def dataset_file(tmp_path): filename = tmp_path / "dataset.csv" filename.touch() - return str(filename) + return filename @pytest.fixture def output_file(tmp_path): filename = tmp_path / "output.csv" - return str(filename) + return filename + + +@pytest.fixture +def output_csv(tmp_path): + filename = tmp_path / "output.csv" + filename.touch() + columns = ["metric_name", "classifier", "dataset_name", "resampling_method", "metric_value", "no_repeat", "clf_params"] + data = [ + ["geometric_mean_score", "decisiontreeclassifier", "glass", "globalcs", 0.5, 0, {}], + ["geometric_mean_score", "decisiontreeclassifier", "glass", "globalcs", 0.5, 1, {}], + ["geometric_mean_score", "decisiontreeclassifier", "glass", "globalcs", 1, 2, {}], + ["geometric_mean_score", "decisiontreeclassifier", "glass", "globalcs", 1, 3, {}], + ] + df = pd.DataFrame(data, columns=columns) + df.to_csv(filename, index=False) + return filename + + +@pytest.fixture +def run_analysis_config(dataset_file): + return { + "datasets": [dataset_file], + "classifiers": {DecisionTreeClassifier: [{"max_depth": 30}]}, + "resampling_methods": {GlobalCS: {"default": {"shuffle": True}}}, + "metrics": {geometric_mean_score: {"correction": 0.005}, accuracy_score: {}}, + "n_repeats": 2, + "split_method": ["Kfold", dict(n_splits=2, shuffle=True)], + } + + +@pytest.fixture +def run_analysis_config_json(dataset_file, tmp_path): + config = { + "datasets": [str(dataset_file)], + "classifiers": {"sklearn.tree.DecisionTreeClassifier": [{"max_depth": 30}]}, + "resampling_methods": {"multi_imbalance.resampling.global_cs.GlobalCS": {"default": {"shuffle": True}}}, + "metrics": {"imblearn.metrics.geometric_mean_score": {"correction": 0.005}, "sklearn.metrics.accuracy_score": {}}, + "n_repeats": 2, + "split_method": ["Kfold", dict(n_splits=2, shuffle=True)], + } + json_path = tmp_path / "config.json" + with open(json_path, "w") as f: + json.dump(config, f) + + return json_path + + +@pytest.fixture +def query_dict(): + return { + "classifier": ["decisiontreeclassifier"], + "metric_name": ["geometric_mean_score"], + "dataset_name": ["dataset"], + "resampling_method": ["globalcs"], + } + + +@pytest.fixture +def query_dict_json(query_dict, tmp_path): + json_path = tmp_path / "query.json" + with open(json_path, "w") as f: + json.dump(query_dict, f) + + return json_path + + +@pytest.fixture +def prepare_dataset_file(dataset_file, X_ecoc, y_ecoc): + df = pd.DataFrame(X_ecoc, columns=["X1", "X2", "X3"]) + df["y"] = y_ecoc + df.to_csv(dataset_file, index=False) + + +@pytest.fixture +def config_dict(): + return { + "datasets": ["path/to/data"], + "classifiers": { + "tree": [{}], + }, + "resampling_methods": { + "globalCS": {}, + }, + "metrics": {lambda x, y: (x, y): {}}, + "n_repeats": 2, + "split_method": ["train_test", {}], + } + + +@pytest.fixture +def config_json(tmp_path): + config_dict = { + "datasets": [], + "classifiers": {"sklearn.tree.DecisionTreeClassifier": [{}]}, + "resampling_methods": {"multi_imbalance.resampling.global_cs.GlobalCS": {"default": {}}}, + "metrics": {"imblearn.metrics.geometric_mean_score": {}}, + "n_repeats": 2, + "split_method": ["train_test", {}], + } + json_path = tmp_path / "config.json" + with open(json_path, "w") as f: + json.dump(config_dict, f) + + return json_path -@pytest.mark.parametrize( - "config_dict", - [ - { - "datasets": ["path/to/data"], - "classifiers": { - "tree": [{}], - }, - "resample_methods": { - "globalCS": {}, - }, - "metrics": {lambda x, y: (x, y): {}}, - "n_repeats": 2, - "train_test_split_params": dict(test_size=0.2), - } - ], -) def test_config_from_dict(config_dict): config = Config.from_dict(config_dict) assert config.datasets == config_dict["datasets"] assert config.classifiers == config_dict["classifiers"] - assert config.resample_methods == config_dict["resample_methods"] + assert config.resampling_methods == config_dict["resampling_methods"] assert config.metrics == config_dict["metrics"] assert config.n_repeats == config_dict["n_repeats"] - assert config.train_test_split_params == config_dict["train_test_split_params"] + assert config.split_method == config_dict["split_method"] + + +def test_config_from_json(config_json): + config = Config.from_json(config_json) + for clf, clf_params in config.classifiers.items(): + for param in clf_params: + assert isinstance(clf(**param), DecisionTreeClassifier) + + for resample, resample_params in config.resampling_methods.items(): + assert isinstance(resample(**resample_params["default"]), GlobalCS) @pytest.mark.parametrize( "classifier, expected_name, expected_clf", - [("tree", "tree", DecisionTreeClassifier), (LinearRegression, "linearregression", LinearRegression)], + [(DecisionTreeClassifier, "decisiontreeclassifier", DecisionTreeClassifier), (LinearRegression, "linearregression", LinearRegression)], ) def test_get_classifier(classifier, expected_name, expected_clf): config_dict = get_dummy_config() @@ -86,17 +185,17 @@ def test_get_classifier(classifier, expected_name, expected_clf): @pytest.mark.parametrize( "resampler, expected_name, expected_resampler", - [("globalCS", "globalCS", GlobalCS), (SOUP, "soup", SOUP)], + [(GlobalCS, "globalcs", GlobalCS), (SOUP, "soup", SOUP)], ) def test_get_resampler(resampler, expected_name, expected_resampler): config_dict = get_dummy_config() - config_dict["resample_methods"].update({resampler: {}}) + config_dict["resampling_methods"].update({resampler: {"default": {}}}) config = Config.from_dict(config_dict) pipeline = AnalysisPipeline(config) - resampler_name, resampler = next(pipeline._get_resampler(train_without_resampling=False)) + resampler_name, resampler = next(pipeline._get_resampler(train_without_resampling=False, dataset_name="dataset")) assert resampler_name == expected_name assert isinstance(resampler, expected_resampler) @@ -117,28 +216,165 @@ def test_get_dataset(data, columns, tmp_path, dataset_file): pd.testing.assert_frame_equal(df, expected_df) -def test_run_analysis(X_ecoc, y_ecoc, dataset_file, output_file): - df = pd.DataFrame(X_ecoc, columns=["X1", "X2", "X3"]) - df["y"] = y_ecoc - df.to_csv(dataset_file, index=False) - config_dict = { - "datasets": [dataset_file], - "classifiers": dict(tree=[{"max_depth": 30}]), - "resample_methods": dict(globalCS={"shuffle": True}), - "metrics": {geometric_mean_score: {"correction": 0.005}, accuracy_score: {}}, - "n_repeats": 2, - "train_test_split_params": dict(test_size=0.2, random_state=42), - } +@pytest.mark.parametrize( + "kwargs, expected_output", + [ + ( + { + "dataset_name": "glass", + "clf_name": "decisiontreeclassifier", + "resampler_name": "globalcs", + "metric_name": "geometric_mean_score", + "n": 0, + "clf_params": {}, + }, + True, + ), + ( + { + "dataset_name": "dataset", + "clf_name": "clf", + "resampler_name": "resampler", + "metric_name": "metric", + "n": 0, + "clf_params": {}, + }, + False, + ), + ], +) +def test_check_if_exist_in_csv(output_csv, kwargs, expected_output): + config_dict = get_dummy_config() + config = Config.from_dict(config_dict) + pipeline = AnalysisPipeline(config) + + output = pipeline._check_if_exist_in_csv(path=output_csv, **kwargs) + assert output == expected_output + + +@pytest.mark.parametrize("split_method", [["Kfold", dict(n_splits=4, shuffle=True)], ["train_test", {}]]) +def test_run_analysis(prepare_dataset_file, output_file, run_analysis_config, split_method): + run_analysis_config["split_method"] = split_method + config = Config.from_dict(run_analysis_config) pipeline = AnalysisPipeline(config) pipeline.run_analysis(output_file, train_without_resampling=True) - result_df = pd.read_csv(output_file) - assert (result_df["dataset_name"] == "dataset").all() - assert (result_df["classifier"] == "tree").all() - np.testing.assert_array_equal(result_df["metric_name"].unique(), ["geometric_mean_score", "accuracy_score"]) - np.testing.assert_array_almost_equal(result_df["metric_value"].unique(), [0.018803, 0.166667, 0.005, 0.0]) + assert pipeline.dataset_names == ["dataset"] + assert pipeline.clf_names == ["decisiontreeclassifier"] + assert sorted(pipeline.resampling_methods) == ["Not defined", "globalcs"] + assert sorted(pipeline.metric_names) == ["accuracy_score", "geometric_mean_score"] + assert sorted(pipeline.column_names) == [ + "classifier", + "clf_params", + "dataset_name", + "metric_name", + "metric_value", + "no_repeat", + "resampling_method", + ] + + +def test_run_analysis_cli(prepare_dataset_file, output_file, run_analysis_config_json): + runner = CliRunner() + result = runner.invoke( + main, + [ + str(output_file), + "--run-analysis", + "--config-json", + str(run_analysis_config_json), + ], + ) + assert result.exit_code == 0 + assert result.output == "Start\nRun analysis pipeline\nDone\n" + + assert Path(output_file).exists() + + +def test_generate_summary(prepare_dataset_file, query_dict, output_file, run_analysis_config, tmp_path): + config = Config.from_dict(run_analysis_config) + pipeline = AnalysisPipeline(config) + pipeline.run_analysis(output_file, train_without_resampling=False) + + list_of_df = pipeline.generate_summary(query_dict, csv_path=output_file, save_to_csv=True) + + assert len(list_of_df) == 1 + df = list_of_df[0] + assert df.shape[0] == 1 + assert (tmp_path / ("_".join([j for i in query_dict.values() for j in i]) + ".csv")).exists() is True + + +def test_generate_summary_cli(prepare_dataset_file, query_dict_json, output_file, run_analysis_config, tmp_path): + config = Config.from_dict(run_analysis_config) + pipeline = AnalysisPipeline(config) + pipeline.run_analysis(output_file, train_without_resampling=False) + + aggr_func_path = tmp_path / "aggr_func.json" + with open(aggr_func_path, "w") as f: + json.dump(["numpy.median"], f) + + runner = CliRunner() + result = runner.invoke( + main, + [str(output_file), "--summary", "--query-json", str(query_dict_json), "--save-to-csv", "--aggregate-json", str(aggr_func_path)], + ) + assert result.exit_code == 0 + assert result.output == "Start\nRun generate summary\nDone\n" + + with open(query_dict_json, "r") as f: + query_dict = json.load(f) + + assert (tmp_path / ("_".join([j for i in query_dict.values() for j in i]) + ".csv")).exists() is True + + +def test_generate_posthoc_analysis(prepare_dataset_file, query_dict, output_file, run_analysis_config, tmp_path): + config = Config.from_dict(run_analysis_config) + pipeline = AnalysisPipeline(config) + pipeline.run_analysis(output_file, train_without_resampling=False) + query_dict.pop("resampling_method") + list_of_df = pipeline.generate_posthoc_analysis( + query_dict, csv_path=output_file, posthoc_func_list=[[posthoc_dunn, {}]], save_to_csv=True + ) + + assert len(list_of_df) == 1 + df = list_of_df[0] + assert df.shape[0] == 1 + assert (tmp_path / ("_".join([posthoc_dunn.__name__, *[j for i in query_dict.values() for j in i]]) + ".csv")).exists() is True + + +def test_generate_posthoc_analysis_cli(prepare_dataset_file, query_dict, output_file, run_analysis_config, tmp_path): + config = Config.from_dict(run_analysis_config) + pipeline = AnalysisPipeline(config) + pipeline.run_analysis(output_file, train_without_resampling=False) + query_dict.pop("resampling_method") + + posthoc_func_path = tmp_path / "posthoc_func.json" + with open(posthoc_func_path, "w") as f: + json.dump({"scikit_posthocs.posthoc_dunn": {}}, f) + + query_dict_path = tmp_path / "query_dict.json" + with open(query_dict_path, "w") as f: + json.dump(query_dict, f) + + runner = CliRunner() + result = runner.invoke( + main, + [ + str(output_file), + "--posthoc-analysis", + "--posthoc-query-json", + str(query_dict_path), + "--save-to-csv", + "--posthoc-func-json", + str(posthoc_func_path), + ], + ) + assert result.exit_code == 0 + assert result.output == "Start\nRun generate posthoc analysis\nDone\n" + + assert (tmp_path / ("_".join([posthoc_dunn.__name__, *[j for i in query_dict.values() for j in i]]) + ".csv")).exists() is True def test_get_dataset_wrong_path(): @@ -158,20 +394,20 @@ def test_get_dataset_wrong_path(): @pytest.mark.parametrize( "wrong_resampler, expected_exception", [ - ("wrong", "Unknown resample method: wrong, expected to be one of ['globalCS', 'StaticSMOTE', 'SOUP', 'spider3', 'MDO']"), (lambda x: x, "Your resampler must implement fit_resample method"), + (GlobalCS, "Must define default params for all datasets or for the specific dataset"), ], ) def test_get_resampler_wrong(wrong_resampler, expected_exception): config_dict = get_dummy_config() - config_dict["resample_methods"].update({wrong_resampler: {}}) + config_dict["resampling_methods"].update({wrong_resampler: {}}) config = Config.from_dict(config_dict) pipeline = AnalysisPipeline(config) - with pytest.raises(ValueError) as ex: - next(pipeline._get_resampler(train_without_resampling=False)) + with pytest.raises(Exception) as ex: + next(pipeline._get_resampler(train_without_resampling=False, dataset_name="dataset")) assert ex.value.args[0] == expected_exception @@ -179,7 +415,6 @@ def test_get_resampler_wrong(wrong_resampler, expected_exception): @pytest.mark.parametrize( "wrong_clf, expected_exception", [ - ("wrong", "Unknown classifier: wrong, expected to be one of ['tree', 'NB', 'KNN']"), (lambda x: x, "Your classifier must implement fit and predict methods"), ], ) @@ -195,3 +430,39 @@ def test_get_classifier_wrong(wrong_clf, expected_exception): next(pipeline._get_classifier()) assert ex.value.args[0] == expected_exception + + +def test_run_analysis_exception(X_ecoc, y_ecoc, dataset_file, output_file, caplog): + class DummyClf: + def __init__(*args, **kwargs): + pass + + def fit(*args): + raise Exception("Error during fit") + + def predict(*args): + pass + + df = pd.DataFrame(X_ecoc, columns=["X1", "X2", "X3"]) + df["y"] = y_ecoc + df.to_csv(dataset_file, index=False) + config_dict = { + "datasets": [dataset_file], + "classifiers": {DummyClf: [{"max_depth": 30}]}, + "resampling_methods": {}, + "metrics": {geometric_mean_score: {"correction": 0.005}, accuracy_score: {}}, + "n_repeats": 2, + "split_method": ["train_test", {}], + } + config = Config.from_dict(config_dict) + + pipeline = AnalysisPipeline(config) + pipeline.run_analysis(output_file, train_without_resampling=True) + + for record in caplog.records: + if record.levelname == "ERROR": + assert ( + record.message + == "Raised exception: 'Error during fit' for dataset_name='dataset', resampler_name='Not defined' and clf_name='dummyclf'\n" + "Raised exception: 'Error during fit' for dataset_name='dataset', resampler_name='Not defined' and clf_name='dummyclf'" + ) diff --git a/tests/datasets/test_data_loader.py b/tests/datasets/test_data_loader.py index ff2bec4..634680e 100644 --- a/tests/datasets/test_data_loader.py +++ b/tests/datasets/test_data_loader.py @@ -29,9 +29,10 @@ def test_load_datasets(): print("Testing loading datasets") data_home = join(".", "data") - datasets = load_datasets(data_home=data_home) + datasets = load_datasets(data_home=data_home, save_to_csv=True) for k in DATASET_SHAPE.keys(): X = datasets[k].data assert DATASET_SHAPE[k] == X.shape shutil.rmtree(join(data_home, "extracted")) + shutil.rmtree(join(data_home, "csv")) From ba99e3df46c39dc72b79240c6d0ce1ece2f7539a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Wed, 11 Jan 2023 15:00:11 +0100 Subject: [PATCH 25/48] continue --- examples/datasets/analysis.ipynb | 1083 ++++++++++++++++++++++++++ multi_imbalance/datasets/analysis.py | 4 +- 2 files changed, 1085 insertions(+), 2 deletions(-) create mode 100644 examples/datasets/analysis.ipynb diff --git a/examples/datasets/analysis.ipynb b/examples/datasets/analysis.ipynb new file mode 100644 index 0000000..2723e88 --- /dev/null +++ b/examples/datasets/analysis.ipynb @@ -0,0 +1,1083 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example usage for analysis pipeline" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this notebook, we will be exploring the functionality that allows to run various classification and resampling methods of different datasets using both Python code and the command line interface (CLI). We will be able to compare the results and efficiency of these methods in order to determine the best approach for our specific use case." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Python code" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from imblearn.metrics import geometric_mean_score\n", + "from pathlib import Path\n", + "from sklearn.metrics import accuracy_score\n", + "from tempfile import NamedTemporaryFile\n", + "from scikit_posthocs import posthoc_wilcoxon\n", + "\n", + "from multi_imbalance.datasets.analysis import AnalysisPipeline, Config, Result\n", + "from multi_imbalance.datasets import load_datasets\n", + "from multi_imbalance.resampling.soup import SOUP\n", + "from multi_imbalance.resampling.spider import SPIDER3\n", + "from multi_imbalance.resampling.static_smote import StaticSMOTE\n", + "from multi_imbalance.resampling.global_cs import GlobalCS\n", + "from multi_imbalance.resampling.mdo import MDO" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load datasets from `data.tar.gz` file to csv files" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "_ = load_datasets(save_to_csv=True)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare configuration for analysis pipeline" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example we will be working with three datasets: glass, new_ecoli, and dermatology. We will be applying two classifiers (Decision Tree, K-Nearest Neighbors) with two different configurations each to these datasets. We will be using three resampling methods (GlobalCS, MDO, SOUP) with default configurations as well as special configurations for MDO and glass dataset. These combinations will be evaluated using two metrics: geometric mean score and accuracy score. We will be repeating each combination five times and using the train_test_split method to divide the data into train and test sets." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "cwd = Path.cwd()\n", + "\n", + "config = {\n", + " \"datasets\": [cwd.parents[1] / \"data\" / \"csv\" / \"glass.csv\", cwd.parents[1] / \"data\" / \"csv\" / \"new_ecoli.csv\", cwd.parents[1] / \"data\" / \"csv\" / \"dermatology.csv\"],\n", + " \"classifiers\": {\n", + " DecisionTreeClassifier: [{\"max_depth\" : 100}, {}],\n", + " KNeighborsClassifier: [{\"n_neighbors\": 7}, {}],\n", + " },\n", + " \"resampling_methods\": {\n", + " GlobalCS: {\"default\": {\"shuffle\": True}},\n", + " MDO: {\"default\": {\"k1_frac\": 0.3, \"maj_int_min\":{\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}}, \"glass\": {\"k1_frac\": 0.5}},\n", + " SOUP: {\"default\" : {\"shuffle\": True}},\n", + " },\n", + " \"metrics\": {geometric_mean_score: {\"correction\": 0.001}, accuracy_score: {}},\n", + " \"n_repeats\": 10, \n", + " \"split_method\": [\"train_test\",{}],\n", + "}" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Prepare temporary file for result" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "result_file = NamedTemporaryFile(suffix=\".csv\")\n", + "result_file.close()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Create an AnalysisPipeline object and run the analysis, including a comparison of training without resampling to demonstrate the effectiveness of the resampling methods." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n" + ] + } + ], + "source": [ + "c = Config.from_dict(config)\n", + "pipeline = AnalysisPipeline(c)\n", + "pipeline.run_analysis(result_file.name, train_without_resampling = True)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generate summary for selected classifiers, metric and dataset. If you don't know which names should you write you can use appropriate property to find e.g. dataset name" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(['dermatology', 'glass', 'new_ecoli'],\n", + " ['kneighborsclassifier', 'decisiontreeclassifier'])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pipeline.dataset_names, pipeline.clf_names" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "query_dict = {\"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"], \"metric_name\": [\"geometric_mean_score\"], \"dataset_name\": [\"glass\", \"new_ecoli\"]}\n", + "\n", + "results = pipeline.generate_summary(query_dict,save_to_csv=False, csv_path=result_file.name, aggregate_func=[min])" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There is two classifiers, one metric and two datasets, so the length of results will be $2\\cdot1\\cdot2=4$" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(results)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### First result" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metric_value
meanstdmin
metric_nameclassifierdataset_nameresampling_methodclf_params
geometric_mean_scoredecisiontreeclassifierglassNot defined{'max_depth': 100}0.3565120.2225120.177231
{}0.5669070.1859090.225857
globalcs{'max_depth': 100}0.4778720.2176230.179135
{}0.4470950.2373630.057638
mdo{'max_depth': 100}0.5891950.1709550.205291
{}0.5059580.2399500.068824
soup{'max_depth': 100}0.6131240.2189050.204827
{}0.5826460.1985820.209060
\n", + "
" + ], + "text/plain": [ + " metric_value \\\n", + " mean \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier glass Not defined {'max_depth': 100} 0.356512 \n", + " {} 0.566907 \n", + " globalcs {'max_depth': 100} 0.477872 \n", + " {} 0.447095 \n", + " mdo {'max_depth': 100} 0.589195 \n", + " {} 0.505958 \n", + " soup {'max_depth': 100} 0.613124 \n", + " {} 0.582646 \n", + "\n", + " \\\n", + " std \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier glass Not defined {'max_depth': 100} 0.222512 \n", + " {} 0.185909 \n", + " globalcs {'max_depth': 100} 0.217623 \n", + " {} 0.237363 \n", + " mdo {'max_depth': 100} 0.170955 \n", + " {} 0.239950 \n", + " soup {'max_depth': 100} 0.218905 \n", + " {} 0.198582 \n", + "\n", + " \n", + " min \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier glass Not defined {'max_depth': 100} 0.177231 \n", + " {} 0.225857 \n", + " globalcs {'max_depth': 100} 0.179135 \n", + " {} 0.057638 \n", + " mdo {'max_depth': 100} 0.205291 \n", + " {} 0.068824 \n", + " soup {'max_depth': 100} 0.204827 \n", + " {} 0.209060 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[0]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Second result" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metric_value
meanstdmin
metric_nameclassifierdataset_nameresampling_methodclf_params
geometric_mean_scoredecisiontreeclassifiernew_ecoliNot defined{'max_depth': 100}0.7497840.0664260.602696
{}0.6989340.0528910.620988
globalcs{'max_depth': 100}0.7179900.0348460.670200
{}0.7008890.0800180.565038
mdo{'max_depth': 100}0.7677890.0455420.713386
{}0.7713180.0489290.703493
soup{'max_depth': 100}0.7382330.0537730.649839
{}0.7146000.0635480.583691
\n", + "
" + ], + "text/plain": [ + " metric_value \\\n", + " mean \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier new_ecoli Not defined {'max_depth': 100} 0.749784 \n", + " {} 0.698934 \n", + " globalcs {'max_depth': 100} 0.717990 \n", + " {} 0.700889 \n", + " mdo {'max_depth': 100} 0.767789 \n", + " {} 0.771318 \n", + " soup {'max_depth': 100} 0.738233 \n", + " {} 0.714600 \n", + "\n", + " \\\n", + " std \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier new_ecoli Not defined {'max_depth': 100} 0.066426 \n", + " {} 0.052891 \n", + " globalcs {'max_depth': 100} 0.034846 \n", + " {} 0.080018 \n", + " mdo {'max_depth': 100} 0.045542 \n", + " {} 0.048929 \n", + " soup {'max_depth': 100} 0.053773 \n", + " {} 0.063548 \n", + "\n", + " \n", + " min \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier new_ecoli Not defined {'max_depth': 100} 0.602696 \n", + " {} 0.620988 \n", + " globalcs {'max_depth': 100} 0.670200 \n", + " {} 0.565038 \n", + " mdo {'max_depth': 100} 0.713386 \n", + " {} 0.703493 \n", + " soup {'max_depth': 100} 0.649839 \n", + " {} 0.583691 " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[1]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Third result" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metric_value
meanstdmin
metric_nameclassifierdataset_nameresampling_methodclf_params
geometric_mean_scorekneighborsclassifierglassNot defined{'n_neighbors': 7}0.2046970.1916630.068485
{}0.1718390.1263950.075119
globalcs{'n_neighbors': 7}0.5430430.1772860.202031
{}0.6723870.0882900.536591
mdo{'n_neighbors': 7}0.3870750.2069100.078940
{}0.1456100.0616340.074212
soup{'n_neighbors': 7}0.5854210.1548680.206894
{}0.3545660.2069000.153585
\n", + "
" + ], + "text/plain": [ + " metric_value \\\n", + " mean \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score kneighborsclassifier glass Not defined {'n_neighbors': 7} 0.204697 \n", + " {} 0.171839 \n", + " globalcs {'n_neighbors': 7} 0.543043 \n", + " {} 0.672387 \n", + " mdo {'n_neighbors': 7} 0.387075 \n", + " {} 0.145610 \n", + " soup {'n_neighbors': 7} 0.585421 \n", + " {} 0.354566 \n", + "\n", + " \\\n", + " std \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score kneighborsclassifier glass Not defined {'n_neighbors': 7} 0.191663 \n", + " {} 0.126395 \n", + " globalcs {'n_neighbors': 7} 0.177286 \n", + " {} 0.088290 \n", + " mdo {'n_neighbors': 7} 0.206910 \n", + " {} 0.061634 \n", + " soup {'n_neighbors': 7} 0.154868 \n", + " {} 0.206900 \n", + "\n", + " \n", + " min \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score kneighborsclassifier glass Not defined {'n_neighbors': 7} 0.068485 \n", + " {} 0.075119 \n", + " globalcs {'n_neighbors': 7} 0.202031 \n", + " {} 0.536591 \n", + " mdo {'n_neighbors': 7} 0.078940 \n", + " {} 0.074212 \n", + " soup {'n_neighbors': 7} 0.206894 \n", + " {} 0.153585 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[2]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Fourth result" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metric_value
meanstdmin
metric_nameclassifierdataset_nameresampling_methodclf_params
geometric_mean_scorekneighborsclassifiernew_ecoliNot defined{'n_neighbors': 7}0.8480280.0390820.805196
{}0.8292930.0259650.777511
globalcs{'n_neighbors': 7}0.7792140.0326800.736093
{}0.7890730.0633140.724630
mdo{'n_neighbors': 7}0.7847510.0409920.722135
{}0.8240050.0410230.755261
soup{'n_neighbors': 7}0.8397630.0349170.789633
{}0.8149690.0591390.710178
\n", + "
" + ], + "text/plain": [ + " metric_value \\\n", + " mean \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score kneighborsclassifier new_ecoli Not defined {'n_neighbors': 7} 0.848028 \n", + " {} 0.829293 \n", + " globalcs {'n_neighbors': 7} 0.779214 \n", + " {} 0.789073 \n", + " mdo {'n_neighbors': 7} 0.784751 \n", + " {} 0.824005 \n", + " soup {'n_neighbors': 7} 0.839763 \n", + " {} 0.814969 \n", + "\n", + " \\\n", + " std \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score kneighborsclassifier new_ecoli Not defined {'n_neighbors': 7} 0.039082 \n", + " {} 0.025965 \n", + " globalcs {'n_neighbors': 7} 0.032680 \n", + " {} 0.063314 \n", + " mdo {'n_neighbors': 7} 0.040992 \n", + " {} 0.041023 \n", + " soup {'n_neighbors': 7} 0.034917 \n", + " {} 0.059139 \n", + "\n", + " \n", + " min \n", + "metric_name classifier dataset_name resampling_method clf_params \n", + "geometric_mean_score kneighborsclassifier new_ecoli Not defined {'n_neighbors': 7} 0.805196 \n", + " {} 0.777511 \n", + " globalcs {'n_neighbors': 7} 0.736093 \n", + " {} 0.724630 \n", + " mdo {'n_neighbors': 7} 0.722135 \n", + " {} 0.755261 \n", + " soup {'n_neighbors': 7} 0.789633 \n", + " {} 0.710178 " + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[3]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generate posthoc analysis for Wilcoxon test. You have to define names of classifiers, dataset names and metric names in query dict." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "query_dict = {\"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"], \"metric_name\": [\"geometric_mean_score\"], \"dataset_name\": [\"glass\", \"new_ecoli\"]}\n", + "\n", + "results = AnalysisPipeline.generate_posthoc_analysis(query_dict, save_to_csv=False, csv_path=result_file.name ,posthoc_func_list=[[posthoc_wilcoxon, {}]])" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "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", + "
posthoc_wilcoxon_decisiontreeclassifier_geometric_mean_score_glassglobalcsmdosoupNot defined
globalcs1.0000000.2454870.0582580.898317
mdo0.2454871.0000000.6215130.329983
soup0.0582580.6215131.0000000.044054
Not defined0.8983170.3299830.0440541.000000
\n", + "
" + ], + "text/plain": [ + "posthoc_wilcoxon_decisiontreeclassifier_geometric_mean_score_glass globalcs \\\n", + "globalcs 1.000000 \n", + "mdo 0.245487 \n", + "soup 0.058258 \n", + "Not defined 0.898317 \n", + "\n", + "posthoc_wilcoxon_decisiontreeclassifier_geometric_mean_score_glass mdo \\\n", + "globalcs 0.245487 \n", + "mdo 1.000000 \n", + "soup 0.621513 \n", + "Not defined 0.329983 \n", + "\n", + "posthoc_wilcoxon_decisiontreeclassifier_geometric_mean_score_glass soup \\\n", + "globalcs 0.058258 \n", + "mdo 0.621513 \n", + "soup 1.000000 \n", + "Not defined 0.044054 \n", + "\n", + "posthoc_wilcoxon_decisiontreeclassifier_geometric_mean_score_glass Not defined \n", + "globalcs 0.898317 \n", + "mdo 0.329983 \n", + "soup 0.044054 \n", + "Not defined 1.000000 " + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "results[0]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".project_venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)]" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "23e9df2d9424db89a1bc7cf8b9f3a46204923f77702e66b6afb0e7a76a59f4cc" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/multi_imbalance/datasets/analysis.py b/multi_imbalance/datasets/analysis.py index c1a765f..7f78737 100644 --- a/multi_imbalance/datasets/analysis.py +++ b/multi_imbalance/datasets/analysis.py @@ -94,7 +94,7 @@ def generate_summary( :param save_to_csv: bool, optional, if `True`, the summary will be saved to a CSV file :param save_path: - str, optional, the location where the summary csv files should be saved + str, optional, the location where the summary csv files should be saved. If None summary csv files will be saved in the same location as csv_path :param aggregate_func: Optional[List[Callable]], optional, a list of functions that will be applied to the `metric_value` column of the results to generate the summary :return: @@ -140,7 +140,7 @@ def generate_posthoc_analysis( :param save_to_csv: bool, optional, if `True`, the posthoc analysis will be saved to a CSV file :param save_path: - str, optional, the location where the summary csv files should be saved + str, optional, the location where the summary csv files should be saved. If None summary csv files will be saved in the same location as csv_path :return: List[pd.DataFrame], a list of Pandas DataFrames containing the posthoc analysis of the results """ From bb0a0e36c3a87641e8dfbfc1d26dfeb72fa6ae78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 14 Jan 2023 13:06:28 +0100 Subject: [PATCH 26/48] gh action --- .github/workflows/code_analysis.yml | 4 ++-- .github/workflows/tests.yml | 30 ++++++++++++++--------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/code_analysis.yml b/.github/workflows/code_analysis.yml index 663c44e..45f2ca4 100644 --- a/.github/workflows/code_analysis.yml +++ b/.github/workflows/code_analysis.yml @@ -8,7 +8,7 @@ jobs: tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v1 - name: Set up Python 3.9 uses: actions/setup-python@v2 with: @@ -16,6 +16,6 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install tox tox-gh-actions + python -m pip install tox tox-gh-actions - name: Run flake8 with tox run: tox -e flake8 \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9b42d9d..02797ce 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,25 +1,25 @@ name: Tests + on: - push - pull_request jobs: - test: - runs-on: ${{ matrix.os }} + build: + runs-on: ubuntu-latest strategy: matrix: - os: [ubuntu-latest, windows-latest] - python-version: [['3.8', 'py38'], ['3.9', 'py39']] + python-version: ['3.7', '3.8', '3.9', '3.10'] steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version[0] }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version[0] }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install tox tox-gh-actions - - name: Test ${{ matrix.python-version[1] }} with tox - run: tox -e ${{ matrix.python-version[1] }} \ No newline at end of file + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install tox tox-gh-actions + - name: Test with tox + run: tox \ No newline at end of file From 18c22d8378dd8c8d50cbaec10b709edf4959531a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 14 Jan 2023 13:12:50 +0100 Subject: [PATCH 27/48] tox ini edit --- .github/workflows/code_analysis.yml | 4 ++-- pyproject.toml | 2 +- tox.ini | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/code_analysis.yml b/.github/workflows/code_analysis.yml index 45f2ca4..663c44e 100644 --- a/.github/workflows/code_analysis.yml +++ b/.github/workflows/code_analysis.yml @@ -8,7 +8,7 @@ jobs: tools: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python 3.9 uses: actions/setup-python@v2 with: @@ -16,6 +16,6 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install tox tox-gh-actions + pip install tox tox-gh-actions - name: Run flake8 with tox run: tox -e flake8 \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 9ee1317..5e4427b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "seaborn~=0.12.1", "matplotlib~=3.6.2", "click~=8.1.3", - "scikit-posthoc~=0.7.0" + "scikit-posthocs~=0.7.0" ] [project.optional-dependencies] diff --git a/tox.ini b/tox.ini index aa3ef17..5d3af3e 100644 --- a/tox.ini +++ b/tox.ini @@ -6,8 +6,8 @@ isolated_build = true [gh-actions] python = 3.8: py38 - 3.9: py39, - flake8 + 3.9: py39 + [testenv] setenv = From 5b1d2600a498bd4f94d83619b2d6f6a5dccdbddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 14 Jan 2023 13:22:34 +0100 Subject: [PATCH 28/48] flake8 --- multi_imbalance/datasets/analysis.py | 42 ++++++++++++++++++---------- multi_imbalance/datasets/helpers.py | 6 ++-- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/multi_imbalance/datasets/analysis.py b/multi_imbalance/datasets/analysis.py index 7f78737..c9cb722 100644 --- a/multi_imbalance/datasets/analysis.py +++ b/multi_imbalance/datasets/analysis.py @@ -24,10 +24,14 @@ class AnalysisPipeline: """ This is a class for an analysis pipeline. - The __init__() method initializes the object, taking a Config object containing the pipeline configuration and an optional csv_path to the results CSV file. - The run_analysis() method runs the analysis on a set of classifiers, datasets, and resamplers, saving the results to the specified output_path. - The explode_clf_params() method takes a input_path to a CSV file and explodes the clf_params column into individual columns, saving the result to output_path. - Finally, the generate_summary() method takes a query_dict specifying which results to include in the summary and an optional aggregate_func to apply to the metric_value column + The __init__() method initializes the object, taking a Config object containing the pipeline configuration + and an optional csv_path to the results CSV file. + The run_analysis() method runs the analysis on a set of classifiers, datasets, and resamplers, + saving the results to the specified output_path. + The explode_clf_params() method takes a input_path to a CSV file and explodes the clf_params column + into individual columns, saving the result to output_path. + Finally, the generate_summary() method takes a query_dict specifying which results to include in the summary + and an optional aggregate_func to apply to the metric_value column and returns a list of Pandas DataFrames containing the summary of the results. """ @@ -51,7 +55,8 @@ def __init__(self, config: Config) -> None: def run_analysis(self, output_path: str, train_without_resampling: bool) -> None: """ - This function runs a specified analysis on a set of classifiers, datasets, and resamplers. The results of the analysis are saved to the specified output path. + This function runs a specified analysis on a set of classifiers, datasets, and resamplers. + The results of the analysis are saved to the specified output path. :param output_path: str, the location where the results of the analysis will be saved as a CSV file @@ -88,15 +93,18 @@ def generate_summary( of the results to generate the summary. :param query_dict: - Dict[str, List[str]], a dictionary that specifies the values of different columns in the results to include in the summary + Dict[str, List[str]], a dictionary that specifies the values of + different columns in the results to include in the summary :param csv_path: str, the path to the CSV file containing the results of the analysis :param save_to_csv: bool, optional, if `True`, the summary will be saved to a CSV file :param save_path: - str, optional, the location where the summary csv files should be saved. If None summary csv files will be saved in the same location as csv_path + str, optional, the location where the summary csv files should be saved. + If None summary csv files will be saved in the same location as csv_path :param aggregate_func: - Optional[List[Callable]], optional, a list of functions that will be applied to the `metric_value` column of the results to generate the summary + Optional[List[Callable]], optional, a list of functions that will be applied + to the `metric_value` column of the results to generate the summary :return: List[pd.DataFrame], a list of Pandas DataFrames containing the summary of the results of the analysis """ @@ -132,7 +140,8 @@ def generate_posthoc_analysis( `csv_path` should be the path to the CSV file containing the results of the analysis. :param query_dict: - Dict[str, List[str]], a dictionary that specifies the values of different columns in the results to include in the posthoc analysis + Dict[str, List[str]], a dictionary that specifies the values of different + columns in the results to include in the posthoc analysis :param csv_path: str, the path to the CSV file containing the results of the analysis :param posthoc_func_list: @@ -140,7 +149,8 @@ def generate_posthoc_analysis( :param save_to_csv: bool, optional, if `True`, the posthoc analysis will be saved to a CSV file :param save_path: - str, optional, the location where the summary csv files should be saved. If None summary csv files will be saved in the same location as csv_path + str, optional, the location where the summary csv files should be saved. + If None summary csv files will be saved in the same location as csv_path :return: List[pd.DataFrame], a list of Pandas DataFrames containing the posthoc analysis of the results """ @@ -215,7 +225,8 @@ def _prepare_result( list_of_errors: List[str], ) -> None: """ - This method prepares the results of running a classifier on a dataset which is resampling by resampler. It will compute the specified metrics for each repeat. + This method prepares the results of running a classifier on a dataset which is resampling by resampler. + It will compute the specified metrics for each repeat. :param clf_data: A tuple containing the name of the classifier, the classifier and a dictionary of classifier parameters @@ -460,7 +471,8 @@ def _get_classifier(self) -> Iterable[Tuple[str, ClassifierMixin, Dict]]: """This method retrieves the classifiers specified in the configuration object. :return: - Iterable[Tuple[str, ClassifierMixin, Dict]], An iterable of tuples containing the classifier name, the classifier and a dictionary of classifier parameters""" + Iterable[Tuple[str, ClassifierMixin, Dict]], An iterable of tuples containing the classifier name, + the classifier and a dictionary of classifier parameters""" for classifier, params_list in self._config.classifiers.items(): if not hasattr(classifier, "fit") or not hasattr(classifier, "predict"): raise ValueError("Your classifier must implement fit and predict methods") @@ -496,7 +508,8 @@ def _get_name(self, estimator: Union[ClassifierMixin, BaseSampler]) -> Tuple[str ) @click.option( "--posthoc-func-json", - help="Path to json file which contain dict with paths to posthoc analysis functions and their params, e.g. {'scikit_posthoc.posthoc_dunn':{}}", + help="Path to json file which contain dict with paths to posthoc analysis" + "functions and their params, e.g. {'scikit_posthoc.posthoc_dunn':{}}", ) @click.option( "--train-without-resampling", @@ -522,7 +535,8 @@ def main( save_to_csv, ): """ - This function helps to use pipeline analysis, summary and posthoc tests by CLI. Output path is path to result csv file from analysis pipeline. + This function helps to use pipeline analysis, summary and posthoc tests by CLI. + Output path is path to result csv file from analysis pipeline. """ print("Start") if run_analysis: diff --git a/multi_imbalance/datasets/helpers.py b/multi_imbalance/datasets/helpers.py index 88832d6..090beef 100644 --- a/multi_imbalance/datasets/helpers.py +++ b/multi_imbalance/datasets/helpers.py @@ -19,8 +19,10 @@ class Config: Attributes: ---------- datasets: A list of dataset names to use in the analysis pipeline. - classifiers: A dictionary mapping classifier objects to lists of dictionaries containing the hyperparameters to use for each classifier. - resampling_methods: A dictionary mapping resampling objects to dictionaries of hyperparameters to use for each resampling method. + classifiers: A dictionary mapping classifier objects to lists of dictionaries + containing the hyperparameters to use for each classifier. + resampling_methods: A dictionary mapping resampling objects to dictionaries + of hyperparameters to use for each resampling method. metrics: A dictionary mapping metric functions to dictionaries of hyperparameters to use for each metric. n_repeats: The number of times to repeat the experiment for datasets. split_method: A dictionary mapping split method to dictionaries of additional parameters. From 89134e29470606434df0c4b91dbbb1f400570406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 14 Jan 2023 13:27:07 +0100 Subject: [PATCH 29/48] python version --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 02797ce..b0266c0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10'] + python-version: ['3.8', '3.9', '3.10'] steps: - uses: actions/checkout@v1 From 05153e10f3434aad1953d41c26afb4edd42e2131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 14 Jan 2023 13:30:19 +0100 Subject: [PATCH 30/48] fix --- tox.ini | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index aa3ef17..51f4878 100644 --- a/tox.ini +++ b/tox.ini @@ -6,8 +6,7 @@ isolated_build = true [gh-actions] python = 3.8: py38 - 3.9: py39, - flake8 + 3.9: py39 [testenv] setenv = From a731fc753f4a1b771fd6675e5485d03c1add9b1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 14 Jan 2023 13:33:27 +0100 Subject: [PATCH 31/48] old version --- .github/workflows/tests.yml | 30 +++++++++++++++--------------- tox.ini | 4 ++-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b0266c0..9b42d9d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,25 +1,25 @@ name: Tests - on: - push - pull_request jobs: - build: - runs-on: ubuntu-latest + test: + runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ['3.8', '3.9', '3.10'] + os: [ubuntu-latest, windows-latest] + python-version: [['3.8', 'py38'], ['3.9', 'py39']] steps: - - uses: actions/checkout@v1 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - python -m pip install tox tox-gh-actions - - name: Test with tox - run: tox \ No newline at end of file + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version[0] }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version[0] }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox tox-gh-actions + - name: Test ${{ matrix.python-version[1] }} with tox + run: tox -e ${{ matrix.python-version[1] }} \ No newline at end of file diff --git a/tox.ini b/tox.ini index 5d3af3e..aa3ef17 100644 --- a/tox.ini +++ b/tox.ini @@ -6,8 +6,8 @@ isolated_build = true [gh-actions] python = 3.8: py38 - 3.9: py39 - + 3.9: py39, + flake8 [testenv] setenv = From 8c8a25609783af52ddef51aa9d7076cf2b3390e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sat, 14 Jan 2023 19:28:00 +0100 Subject: [PATCH 32/48] Final version --- examples/datasets/analysis.ipynb | 1717 ++++++++++++++++++-------- multi_imbalance/datasets/analysis.py | 48 +- multi_imbalance/datasets/helpers.py | 8 + tests/datasets/test_analysis.py | 28 +- 4 files changed, 1288 insertions(+), 513 deletions(-) diff --git a/examples/datasets/analysis.ipynb b/examples/datasets/analysis.ipynb index 2723e88..0432909 100644 --- a/examples/datasets/analysis.ipynb +++ b/examples/datasets/analysis.ipynb @@ -34,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -44,7 +44,8 @@ "from pathlib import Path\n", "from sklearn.metrics import accuracy_score\n", "from tempfile import NamedTemporaryFile\n", - "from scikit_posthocs import posthoc_wilcoxon\n", + "from scikit_posthocs import posthoc_wilcoxon, posthoc_mannwhitney\n", + "import pandas as pd\n", "\n", "from multi_imbalance.datasets.analysis import AnalysisPipeline, Config, Result\n", "from multi_imbalance.datasets import load_datasets\n", @@ -65,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -90,26 +91,29 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "cwd = Path.cwd()\n", "\n", "config = {\n", - " \"datasets\": [cwd.parents[1] / \"data\" / \"csv\" / \"glass.csv\", cwd.parents[1] / \"data\" / \"csv\" / \"new_ecoli.csv\", cwd.parents[1] / \"data\" / \"csv\" / \"dermatology.csv\"],\n", + " \"datasets\": [\n", + " cwd.parents[1] / \"data\" / \"csv\" / \"cmc.csv\",\n", + " cwd.parents[1] / \"data\" / \"csv\" / \"new_ecoli.csv\",\n", + " cwd.parents[1] / \"data\" / \"csv\" / \"cleveland.csv\",\n", + " ],\n", " \"classifiers\": {\n", - " DecisionTreeClassifier: [{\"max_depth\" : 100}, {}],\n", + " DecisionTreeClassifier: [{\"max_depth\": 100}, {}],\n", " KNeighborsClassifier: [{\"n_neighbors\": 7}, {}],\n", " },\n", " \"resampling_methods\": {\n", " GlobalCS: {\"default\": {\"shuffle\": True}},\n", - " MDO: {\"default\": {\"k1_frac\": 0.3, \"maj_int_min\":{\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}}, \"glass\": {\"k1_frac\": 0.5}},\n", - " SOUP: {\"default\" : {\"shuffle\": True}},\n", + " MDO: {\"default\": {\"k1_frac\": 0.3, \"maj_int_min\": {\"maj\": [0, 1], \"min\": [2, 3, 4, 5]}}, \"cmc\": {\"k1_frac\": 0.5}},\n", " },\n", " \"metrics\": {geometric_mean_score: {\"correction\": 0.001}, accuracy_score: {}},\n", - " \"n_repeats\": 10, \n", - " \"split_method\": [\"train_test\",{}],\n", + " \"n_repeats\": 20,\n", + " \"split_method\": [\"train_test\", {\"test_size\": 0.3}],\n", "}" ] }, @@ -123,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 77, "metadata": {}, "outputs": [], "source": [ @@ -141,40 +145,13 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 78, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n", - "c:\\Users\\Mateusz\\Desktop\\venvy\\.project_venv\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1334: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", - " _warn_prf(average, modifier, msg_start, len(result))\n" - ] - } - ], + "outputs": [], "source": [ "c = Config.from_dict(config)\n", "pipeline = AnalysisPipeline(c)\n", - "pipeline.run_analysis(result_file.name, train_without_resampling = True)" + "pipeline.run_analysis(result_file.name, train_without_resampling=True)" ] }, { @@ -187,17 +164,17 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(['dermatology', 'glass', 'new_ecoli'],\n", - " ['kneighborsclassifier', 'decisiontreeclassifier'])" + "(['new_ecoli', 'cmc', 'cleveland'],\n", + " ['decisiontreeclassifier', 'kneighborsclassifier'])" ] }, - "execution_count": 21, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -208,13 +185,19 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 80, "metadata": {}, "outputs": [], "source": [ - "query_dict = {\"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"], \"metric_name\": [\"geometric_mean_score\"], \"dataset_name\": [\"glass\", \"new_ecoli\"]}\n", + "query_dict = {\n", + " \"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"],\n", + " \"metric_name\": [\"geometric_mean_score\"],\n", + " \"dataset_name\": [\"cmc\", \"new_ecoli\", \"cleveland\"],\n", + "}\n", "\n", - "results = pipeline.generate_summary(query_dict,save_to_csv=False, csv_path=result_file.name, aggregate_func=[min])" + "summary_results = pipeline.generate_summary(\n", + " query_dict, save_to_csv=False, csv_path=result_file.name, aggregate_func=[min], concat_results=False\n", + ")" ] }, { @@ -222,27 +205,27 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "There is two classifiers, one metric and two datasets, so the length of results will be $2\\cdot1\\cdot2=4$" + "There is two classifiers, one metric and three datasets, so the length of results will be $2\\cdot1\\cdot3=6$" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "4" + "6" ] }, - "execution_count": 30, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "len(results)" + "len(summary_results)" ] }, { @@ -255,7 +238,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 82, "metadata": {}, "outputs": [ { @@ -312,59 +295,46 @@ " \n", " \n", " \n", - " geometric_mean_score\n", - " decisiontreeclassifier\n", - " glass\n", + " geometric_mean_score\n", + " decisiontreeclassifier\n", + " cmc\n", " Not defined\n", " {'max_depth': 100}\n", - " 0.356512\n", - " 0.222512\n", - " 0.177231\n", + " 0.451510\n", + " 0.021547\n", + " 0.402010\n", " \n", " \n", " {}\n", - " 0.566907\n", - " 0.185909\n", - " 0.225857\n", + " 0.441469\n", + " 0.029395\n", + " 0.385481\n", " \n", " \n", " globalcs\n", " {'max_depth': 100}\n", - " 0.477872\n", - " 0.217623\n", - " 0.179135\n", + " 0.452274\n", + " 0.020277\n", + " 0.417400\n", " \n", " \n", " {}\n", - " 0.447095\n", - " 0.237363\n", - " 0.057638\n", + " 0.456366\n", + " 0.018096\n", + " 0.412834\n", " \n", " \n", " mdo\n", " {'max_depth': 100}\n", - " 0.589195\n", - " 0.170955\n", - " 0.205291\n", - " \n", - " \n", - " {}\n", - " 0.505958\n", - " 0.239950\n", - " 0.068824\n", - " \n", - " \n", - " soup\n", - " {'max_depth': 100}\n", - " 0.613124\n", - " 0.218905\n", - " 0.204827\n", + " 0.443627\n", + " 0.025639\n", + " 0.395393\n", " \n", " \n", " {}\n", - " 0.582646\n", - " 0.198582\n", - " 0.209060\n", + " 0.444472\n", + " 0.020072\n", + " 0.410953\n", " \n", " \n", "\n", @@ -374,47 +344,66 @@ " metric_value \\\n", " mean \n", "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score decisiontreeclassifier glass Not defined {'max_depth': 100} 0.356512 \n", - " {} 0.566907 \n", - " globalcs {'max_depth': 100} 0.477872 \n", - " {} 0.447095 \n", - " mdo {'max_depth': 100} 0.589195 \n", - " {} 0.505958 \n", - " soup {'max_depth': 100} 0.613124 \n", - " {} 0.582646 \n", + "geometric_mean_score decisiontreeclassifier cmc Not defined {'max_depth': 100} 0.451510 \n", + " {} 0.441469 \n", + " globalcs {'max_depth': 100} 0.452274 \n", + " {} 0.456366 \n", + " mdo {'max_depth': 100} 0.443627 \n", + " {} 0.444472 \n", "\n", " \\\n", " std \n", "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score decisiontreeclassifier glass Not defined {'max_depth': 100} 0.222512 \n", - " {} 0.185909 \n", - " globalcs {'max_depth': 100} 0.217623 \n", - " {} 0.237363 \n", - " mdo {'max_depth': 100} 0.170955 \n", - " {} 0.239950 \n", - " soup {'max_depth': 100} 0.218905 \n", - " {} 0.198582 \n", + "geometric_mean_score decisiontreeclassifier cmc Not defined {'max_depth': 100} 0.021547 \n", + " {} 0.029395 \n", + " globalcs {'max_depth': 100} 0.020277 \n", + " {} 0.018096 \n", + " mdo {'max_depth': 100} 0.025639 \n", + " {} 0.020072 \n", "\n", " \n", " min \n", "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score decisiontreeclassifier glass Not defined {'max_depth': 100} 0.177231 \n", - " {} 0.225857 \n", - " globalcs {'max_depth': 100} 0.179135 \n", - " {} 0.057638 \n", - " mdo {'max_depth': 100} 0.205291 \n", - " {} 0.068824 \n", - " soup {'max_depth': 100} 0.204827 \n", - " {} 0.209060 " + "geometric_mean_score decisiontreeclassifier cmc Not defined {'max_depth': 100} 0.402010 \n", + " {} 0.385481 \n", + " globalcs {'max_depth': 100} 0.417400 \n", + " {} 0.412834 \n", + " mdo {'max_depth': 100} 0.395393 \n", + " {} 0.410953 " ] }, - "execution_count": 31, + "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "results[0]" + "summary_results[0]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generate posthoc analysis for Wilcoxon test. You have to define names of classifiers, dataset names and metric names in query dict." + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [], + "source": [ + "query_dict = {\n", + " \"metric_name\": [\"geometric_mean_score\"],\n", + " \"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"],\n", + " \"dataset_name\": [\"cmc\", \"new_ecoli\"],\n", + "}\n", + "\n", + "analysis_results, param_comb = AnalysisPipeline.generate_posthoc_analysis(\n", + " query_dict, save_to_csv=False, csv_path=result_file.name, posthoc_func_list=[[posthoc_wilcoxon, {}], [posthoc_mannwhitney, {}]]\n", + ")" ] }, { @@ -422,12 +411,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Second result" + "Search for analysis for specific test (Wilcoxon), metric name, classifier and dataset using name of analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [], + "source": [ + "func_name = posthoc_wilcoxon.__name__\n", + "metric_name = \"geometric_mean_score\" # you can find it using pipeline.metric_names\n", + "clf_name = \"kneighborsclassifier\" # you can find it using pipeline.clf_names\n", + "dataset_name = \"cmc\" # you can find it using pipeline.dataset_names\n", + "\n", + "analysis_name = \"_\".join([func_name, metric_name, clf_name, dataset_name])" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -443,163 +446,120 @@ " vertical-align: top;\n", " }\n", "\n", - " .dataframe thead tr th {\n", - " text-align: left;\n", - " }\n", - "\n", - " .dataframe thead tr:last-of-type th {\n", + " .dataframe thead th {\n", " text-align: right;\n", " }\n", "\n", "\n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
metric_valuep-value
meanstdminglobalcs_0mdo_00.430433
metric_nameclassifierdataset_nameresampling_methodclf_paramsNot defined_00.009436
geometric_mean_scoredecisiontreeclassifiernew_ecoliNot defined{'max_depth': 100}0.7497840.0664260.602696globalcs_10.001209
{}0.6989340.0528910.620988mdo_10.000134
globalcs{'max_depth': 100}0.7179900.0348460.670200Not defined_10.000004
{}0.7008890.0800180.565038mdo_0Not defined_00.388376
mdo{'max_depth': 100}0.7677890.0455420.713386globalcs_10.004221
{}0.7713180.0489290.703493mdo_10.004860
soup{'max_depth': 100}0.7382330.0537730.649839Not defined_10.000210
{}0.7146000.0635480.583691Not defined_0globalcs_10.044054
mdo_10.021484
Not defined_10.000134
globalcs_1mdo_10.674223
Not defined_10.132727
mdo_1Not defined_10.026642
\n", "" ], "text/plain": [ - " metric_value \\\n", - " mean \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score decisiontreeclassifier new_ecoli Not defined {'max_depth': 100} 0.749784 \n", - " {} 0.698934 \n", - " globalcs {'max_depth': 100} 0.717990 \n", - " {} 0.700889 \n", - " mdo {'max_depth': 100} 0.767789 \n", - " {} 0.771318 \n", - " soup {'max_depth': 100} 0.738233 \n", - " {} 0.714600 \n", - "\n", - " \\\n", - " std \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score decisiontreeclassifier new_ecoli Not defined {'max_depth': 100} 0.066426 \n", - " {} 0.052891 \n", - " globalcs {'max_depth': 100} 0.034846 \n", - " {} 0.080018 \n", - " mdo {'max_depth': 100} 0.045542 \n", - " {} 0.048929 \n", - " soup {'max_depth': 100} 0.053773 \n", - " {} 0.063548 \n", - "\n", - " \n", - " min \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score decisiontreeclassifier new_ecoli Not defined {'max_depth': 100} 0.602696 \n", - " {} 0.620988 \n", - " globalcs {'max_depth': 100} 0.670200 \n", - " {} 0.565038 \n", - " mdo {'max_depth': 100} 0.713386 \n", - " {} 0.703493 \n", - " soup {'max_depth': 100} 0.649839 \n", - " {} 0.583691 " + " p-value\n", + "globalcs_0 mdo_0 0.430433\n", + " Not defined_0 0.009436\n", + " globalcs_1 0.001209\n", + " mdo_1 0.000134\n", + " Not defined_1 0.000004\n", + "mdo_0 Not defined_0 0.388376\n", + " globalcs_1 0.004221\n", + " mdo_1 0.004860\n", + " Not defined_1 0.000210\n", + "Not defined_0 globalcs_1 0.044054\n", + " mdo_1 0.021484\n", + " Not defined_1 0.000134\n", + "globalcs_1 mdo_1 0.674223\n", + " Not defined_1 0.132727\n", + "mdo_1 Not defined_1 0.026642" ] }, - "execution_count": 27, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "results[1]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Third result" + "analysis_result = pd.DataFrame(analysis_results[analysis_name])\n", + "analysis_result" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -615,163 +575,99 @@ " vertical-align: top;\n", " }\n", "\n", - " .dataframe thead tr th {\n", - " text-align: left;\n", - " }\n", - "\n", - " .dataframe thead tr:last-of-type th {\n", + " .dataframe thead th {\n", " text-align: right;\n", " }\n", "\n", "\n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", " \n", " \n", - " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
metric_valuep-value
meanstdminglobalcs_0Not defined_00.009436
metric_nameclassifierdataset_nameresampling_methodclf_paramsglobalcs_10.001209
geometric_mean_scorekneighborsclassifierglassNot defined{'n_neighbors': 7}0.2046970.1916630.068485mdo_10.000134
{}0.1718390.1263950.075119Not defined_10.000004
globalcs{'n_neighbors': 7}0.5430430.1772860.202031mdo_0globalcs_10.004221
{}0.6723870.0882900.536591mdo_10.004860
mdo{'n_neighbors': 7}0.3870750.2069100.078940Not defined_10.000210
{}0.1456100.0616340.074212Not defined_0globalcs_10.044054
soup{'n_neighbors': 7}0.5854210.1548680.206894mdo_10.021484
{}0.3545660.2069000.153585Not defined_10.000134
mdo_1Not defined_10.026642
\n", "" ], "text/plain": [ - " metric_value \\\n", - " mean \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score kneighborsclassifier glass Not defined {'n_neighbors': 7} 0.204697 \n", - " {} 0.171839 \n", - " globalcs {'n_neighbors': 7} 0.543043 \n", - " {} 0.672387 \n", - " mdo {'n_neighbors': 7} 0.387075 \n", - " {} 0.145610 \n", - " soup {'n_neighbors': 7} 0.585421 \n", - " {} 0.354566 \n", - "\n", - " \\\n", - " std \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score kneighborsclassifier glass Not defined {'n_neighbors': 7} 0.191663 \n", - " {} 0.126395 \n", - " globalcs {'n_neighbors': 7} 0.177286 \n", - " {} 0.088290 \n", - " mdo {'n_neighbors': 7} 0.206910 \n", - " {} 0.061634 \n", - " soup {'n_neighbors': 7} 0.154868 \n", - " {} 0.206900 \n", - "\n", - " \n", - " min \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score kneighborsclassifier glass Not defined {'n_neighbors': 7} 0.068485 \n", - " {} 0.075119 \n", - " globalcs {'n_neighbors': 7} 0.202031 \n", - " {} 0.536591 \n", - " mdo {'n_neighbors': 7} 0.078940 \n", - " {} 0.074212 \n", - " soup {'n_neighbors': 7} 0.206894 \n", - " {} 0.153585 " + " p-value\n", + "globalcs_0 Not defined_0 0.009436\n", + " globalcs_1 0.001209\n", + " mdo_1 0.000134\n", + " Not defined_1 0.000004\n", + "mdo_0 globalcs_1 0.004221\n", + " mdo_1 0.004860\n", + " Not defined_1 0.000210\n", + "Not defined_0 globalcs_1 0.044054\n", + " mdo_1 0.021484\n", + " Not defined_1 0.000134\n", + "mdo_1 Not defined_1 0.026642" ] }, - "execution_count": 33, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "results[2]" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Fourth result" + "alpha = 0.05\n", + "analysis_result[analysis_result[\"p-value\"] < alpha]" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -800,137 +696,80 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " metric_value\n", + " metric_value\n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", " mean\n", " std\n", - " min\n", " \n", " \n", - " metric_name\n", - " classifier\n", - " dataset_name\n", " resampling_method\n", " clf_params\n", " \n", " \n", - " \n", " \n", " \n", " \n", " \n", - " geometric_mean_score\n", - " kneighborsclassifier\n", - " new_ecoli\n", " Not defined\n", " {'n_neighbors': 7}\n", - " 0.848028\n", - " 0.039082\n", - " 0.805196\n", + " 0.494294\n", + " 0.017129\n", " \n", " \n", " {}\n", - " 0.829293\n", - " 0.025965\n", - " 0.777511\n", + " 0.465963\n", + " 0.021218\n", " \n", " \n", " globalcs\n", " {'n_neighbors': 7}\n", - " 0.779214\n", - " 0.032680\n", - " 0.736093\n", + " 0.508187\n", + " 0.016241\n", " \n", " \n", " {}\n", - " 0.789073\n", - " 0.063314\n", - " 0.724630\n", + " 0.476802\n", + " 0.023789\n", " \n", " \n", " mdo\n", " {'n_neighbors': 7}\n", - " 0.784751\n", - " 0.040992\n", - " 0.722135\n", - " \n", - " \n", - " {}\n", - " 0.824005\n", - " 0.041023\n", - " 0.755261\n", - " \n", - " \n", - " soup\n", - " {'n_neighbors': 7}\n", - " 0.839763\n", - " 0.034917\n", - " 0.789633\n", + " 0.500966\n", + " 0.021062\n", " \n", " \n", " {}\n", - " 0.814969\n", - " 0.059139\n", - " 0.710178\n", + " 0.481425\n", + " 0.017707\n", " \n", " \n", "\n", "" ], "text/plain": [ - " metric_value \\\n", - " mean \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score kneighborsclassifier new_ecoli Not defined {'n_neighbors': 7} 0.848028 \n", - " {} 0.829293 \n", - " globalcs {'n_neighbors': 7} 0.779214 \n", - " {} 0.789073 \n", - " mdo {'n_neighbors': 7} 0.784751 \n", - " {} 0.824005 \n", - " soup {'n_neighbors': 7} 0.839763 \n", - " {} 0.814969 \n", - "\n", - " \\\n", - " std \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score kneighborsclassifier new_ecoli Not defined {'n_neighbors': 7} 0.039082 \n", - " {} 0.025965 \n", - " globalcs {'n_neighbors': 7} 0.032680 \n", - " {} 0.063314 \n", - " mdo {'n_neighbors': 7} 0.040992 \n", - " {} 0.041023 \n", - " soup {'n_neighbors': 7} 0.034917 \n", - " {} 0.059139 \n", - "\n", - " \n", - " min \n", - "metric_name classifier dataset_name resampling_method clf_params \n", - "geometric_mean_score kneighborsclassifier new_ecoli Not defined {'n_neighbors': 7} 0.805196 \n", - " {} 0.777511 \n", - " globalcs {'n_neighbors': 7} 0.736093 \n", - " {} 0.724630 \n", - " mdo {'n_neighbors': 7} 0.722135 \n", - " {} 0.755261 \n", - " soup {'n_neighbors': 7} 0.789633 \n", - " {} 0.710178 " + " metric_value \n", + " mean std\n", + "resampling_method clf_params \n", + "Not defined {'n_neighbors': 7} 0.494294 0.017129\n", + " {} 0.465963 0.021218\n", + "globalcs {'n_neighbors': 7} 0.508187 0.016241\n", + " {} 0.476802 0.023789\n", + "mdo {'n_neighbors': 7} 0.500966 0.021062\n", + " {} 0.481425 0.017707" ] }, - "execution_count": 34, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "results[3]" + "concat_summary_df = pipeline.generate_summary(query_dict, save_to_csv=False, csv_path=result_file.name, concat_results=True)\n", + "\n", + "concat_summary_df.loc[metric_name, clf_name, dataset_name]" ] }, { @@ -938,31 +777,806 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Generate posthoc analysis for Wilcoxon test. You have to define names of classifiers, dataset names and metric names in query dict." + "## 2. CLI" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also use the CLI to run the pipeline for analysis. To do this, you need to prepare JSON files that will contain configurations for the given functions." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Imports" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 88, "metadata": {}, "outputs": [], "source": [ - "query_dict = {\"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"], \"metric_name\": [\"geometric_mean_score\"], \"dataset_name\": [\"glass\", \"new_ecoli\"]}\n", + "import json\n", + "from tempfile import NamedTemporaryFile, TemporaryDirectory\n", + "import pandas as pd\n", + "import os\n", + "from pathlib import Path\n", "\n", - "results = AnalysisPipeline.generate_posthoc_analysis(query_dict, save_to_csv=False, csv_path=result_file.name ,posthoc_func_list=[[posthoc_wilcoxon, {}]])" + "from multi_imbalance.datasets.helpers import read_summary_from_csv" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we specify path to file which contain the defition of AnalysisPipeline" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [], + "source": [ + "cwd = Path.cwd()" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [], + "source": [ + "path_to_analysis_file = str(cwd.parents[1] / \"multi_imbalance\" / \"datasets\" / \"analysis.py\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we print help with descriptions of options" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 91, "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
\n", - "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metric_nameclassifierdataset_nameresampling_methodmetric_valueno_repeatclf_params
0geometric_mean_scoredecisiontreeclassifiercmcglobalcs0.4394040{'max_depth': 100}
1accuracy_scoredecisiontreeclassifiercmcglobalcs0.4677970{'max_depth': 100}
2geometric_mean_scoredecisiontreeclassifiercmcmdo0.4682480{'max_depth': 100}
3accuracy_scoredecisiontreeclassifiercmcmdo0.5152540{'max_depth': 100}
4geometric_mean_scoredecisiontreeclassifiercmcNot defined0.4228630{'max_depth': 100}
5accuracy_scoredecisiontreeclassifiercmcNot defined0.4610170{'max_depth': 100}
\n", + "
" + ], + "text/plain": [ + " metric_name classifier dataset_name \\\n", + "0 geometric_mean_score decisiontreeclassifier cmc \n", + "1 accuracy_score decisiontreeclassifier cmc \n", + "2 geometric_mean_score decisiontreeclassifier cmc \n", + "3 accuracy_score decisiontreeclassifier cmc \n", + "4 geometric_mean_score decisiontreeclassifier cmc \n", + "5 accuracy_score decisiontreeclassifier cmc \n", + "\n", + " resampling_method metric_value no_repeat clf_params \n", + "0 globalcs 0.439404 0 {'max_depth': 100} \n", + "1 globalcs 0.467797 0 {'max_depth': 100} \n", + "2 mdo 0.468248 0 {'max_depth': 100} \n", + "3 mdo 0.515254 0 {'max_depth': 100} \n", + "4 Not defined 0.422863 0 {'max_depth': 100} \n", + "5 Not defined 0.461017 0 {'max_depth': 100} " + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.read_csv(result_file.name).head(6)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As before if we already have the results prepared we can generate a summary for them. Again, create a JSON file that will contain a query dictionary of specific combinations of classifiers, datasets etc." + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [], + "source": [ + "query_dict = {\n", + " \"metric_name\": [\"geometric_mean_score\"],\n", + " \"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"],\n", + " \"dataset_name\": [\"cmc\", \"new_ecoli\", \"cleveland\"],\n", + "}\n", + "\n", + "query_json = NamedTemporaryFile(suffix=\".json\")\n", + "query_json.close()\n", + "with open(query_json.name, \"w\") as f:\n", + " json.dump(query_dict, f)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will create an optional JSON file, which will contain a list of paths to aggregate functions" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [], + "source": [ + "aggr_func_list = [\"numpy.min\"]\n", + "\n", + "aggr_func_json = NamedTemporaryFile(suffix=\".json\")\n", + "aggr_func_json.close()\n", + "with open(aggr_func_json.name, \"w\") as f:\n", + " json.dump(aggr_func_list, f)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will also specify the destination path where the files generated from the summary will be located" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [], + "source": [ + "temp_dir = TemporaryDirectory()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can run summary" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Start\n", + "Run generate summary\n", + "Done\n" + ] + } + ], + "source": [ + "!python $path_to_analysis_file $result_file.name --summary --query-json $query_json.name --save-path $temp_dir.name --aggregate-json $aggr_func_json.name" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can check to see if as many files have been generated as expected (i.e. 6)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(['geometric_mean_score_decisiontreeclassifier_cleveland.csv',\n", + " 'geometric_mean_score_decisiontreeclassifier_cmc.csv',\n", + " 'geometric_mean_score_decisiontreeclassifier_new_ecoli.csv',\n", + " 'geometric_mean_score_kneighborsclassifier_cleveland.csv',\n", + " 'geometric_mean_score_kneighborsclassifier_cmc.csv',\n", + " 'geometric_mean_score_kneighborsclassifier_new_ecoli.csv'],\n", + " 6)" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "csv_dir_files = os.listdir(temp_dir.name)\n", + "\n", + "csv_dir_files, len(csv_dir_files)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will open the same file that was shown previously as the first result" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metric_value
meanstdamin
metric_nameclf_namedataset_nameresampling_methodclf_params
geometric_mean_scoredecisiontreeclassifiercmcNot defined{'max_depth': 100}0.4447810.0326000.375016
{}0.4460820.0323150.358658
globalcs{'max_depth': 100}0.4575940.0305090.407711
{}0.4619980.0353990.379794
mdo{'max_depth': 100}0.4438740.0315240.380103
{}0.4465910.0283590.377730
\n", + "
" + ], + "text/plain": [ + " metric_value \\\n", + " mean \n", + "metric_name clf_name dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier cmc Not defined {'max_depth': 100} 0.444781 \n", + " {} 0.446082 \n", + " globalcs {'max_depth': 100} 0.457594 \n", + " {} 0.461998 \n", + " mdo {'max_depth': 100} 0.443874 \n", + " {} 0.446591 \n", + "\n", + " \\\n", + " std \n", + "metric_name clf_name dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier cmc Not defined {'max_depth': 100} 0.032600 \n", + " {} 0.032315 \n", + " globalcs {'max_depth': 100} 0.030509 \n", + " {} 0.035399 \n", + " mdo {'max_depth': 100} 0.031524 \n", + " {} 0.028359 \n", + "\n", + " \n", + " amin \n", + "metric_name clf_name dataset_name resampling_method clf_params \n", + "geometric_mean_score decisiontreeclassifier cmc Not defined {'max_depth': 100} 0.375016 \n", + " {} 0.358658 \n", + " globalcs {'max_depth': 100} 0.407711 \n", + " {} 0.379794 \n", + " mdo {'max_depth': 100} 0.380103 \n", + " {} 0.377730 " + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = read_summary_from_csv(os.path.join(temp_dir.name, \"geometric_mean_score_decisiontreeclassifier_cmc.csv\"))\n", + "df" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The resulting dataframe is the same in terms of structure, only some values, for example, for the mean are minimally different." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The last thing to do is to perform statistical tests. As before, you will need a JSON file containing the query and a second JSON file containing a dictionary with the paths to the functions and their possible parameters." + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [], + "source": [ + "query_dict = {\n", + " \"metric_name\": [\"geometric_mean_score\"],\n", + " \"classifier\": [\"decisiontreeclassifier\", \"kneighborsclassifier\"],\n", + " \"dataset_name\": [\"cmc\", \"new_ecoli\"],\n", + "}\n", + "\n", + "\n", + "query_json = NamedTemporaryFile(suffix=\".json\")\n", + "query_json.close()\n", + "with open(query_json.name, \"w\") as f:\n", + " json.dump(query_dict, f)" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [], + "source": [ + "posthoc_func_dict = {\"scikit_posthocs.posthoc_wilcoxon\": {}, \"scikit_posthocs.posthoc_mannwhitney\": {}}\n", + "\n", + "posthoc_func_json = NamedTemporaryFile(suffix=\".json\")\n", + "posthoc_func_json.close()\n", + "with open(posthoc_func_json.name, \"w\") as f:\n", + " json.dump(posthoc_func_dict, f)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [], + "source": [ + "temp_dir = TemporaryDirectory()" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Start\n", + "Run generate posthoc analysis\n", + "Done\n" + ] + } + ], + "source": [ + "!python $path_to_analysis_file $result_file.name --posthoc-analysis --posthoc-query-json $query_json.name --save-path $temp_dir.name --posthoc-func-json $posthoc_func_json.name" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, let's check if as many files as expected have been obtained (this time 8)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(['posthoc_mannwhitney_geometric_mean_score_decisiontreeclassifier_cmc.csv',\n", + " 'posthoc_mannwhitney_geometric_mean_score_decisiontreeclassifier_new_ecoli.csv',\n", + " 'posthoc_mannwhitney_geometric_mean_score_kneighborsclassifier_cmc.csv',\n", + " 'posthoc_mannwhitney_geometric_mean_score_kneighborsclassifier_new_ecoli.csv',\n", + " 'posthoc_wilcoxon_geometric_mean_score_decisiontreeclassifier_cmc.csv',\n", + " 'posthoc_wilcoxon_geometric_mean_score_decisiontreeclassifier_new_ecoli.csv',\n", + " 'posthoc_wilcoxon_geometric_mean_score_kneighborsclassifier_cmc.csv',\n", + " 'posthoc_wilcoxon_geometric_mean_score_kneighborsclassifier_new_ecoli.csv'],\n", + " 8)" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "csv_dir_files = os.listdir(temp_dir.name)\n", + "\n", + "csv_dir_files, len(csv_dir_files)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now open the same file as before" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [], + "source": [ + "func_name = posthoc_wilcoxon.__name__\n", + "metric_name = \"geometric_mean_score\"\n", + "clf_name = \"kneighborsclassifier\"\n", + "dataset_name = \"cmc\"\n", + "\n", + "analysis_name_file = \"_\".join([func_name, metric_name, clf_name, dataset_name]) + \".csv\"" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "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", + "
p-value
globalcs_0globalcs_10.000851
mdo_10.000048
Not defined_10.000168
mdo_0globalcs_10.000586
mdo_10.004860
Not defined_10.000851
Not defined_0globalcs_10.000708
mdo_10.004221
Not defined_10.000105
\n", + "
" + ], + "text/plain": [ + " p-value\n", + "globalcs_0 globalcs_1 0.000851\n", + " mdo_1 0.000048\n", + " Not defined_1 0.000168\n", + "mdo_0 globalcs_1 0.000586\n", + " mdo_1 0.004860\n", + " Not defined_1 0.000851\n", + "Not defined_0 globalcs_1 0.000708\n", + " mdo_1 0.004221\n", + " Not defined_1 0.000105" ] }, - "execution_count": 37, + "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "results[0]" + "analysis_result[analysis_result[\"p-value\"] < alpha]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In both examples shown (using Python and CLI) for cmc dataset and KNN classifier, the resampling methods used (or not using any) differ significantly in some cases, e.g. GlobalCS with MDO." ] } ], @@ -1069,7 +1818,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)]" + "version": "3.9.2" }, "orig_nbformat": 4, "vscode": { diff --git a/multi_imbalance/datasets/analysis.py b/multi_imbalance/datasets/analysis.py index c9cb722..0ad4f53 100644 --- a/multi_imbalance/datasets/analysis.py +++ b/multi_imbalance/datasets/analysis.py @@ -82,7 +82,8 @@ def generate_summary( save_to_csv: bool = False, save_path: Optional[str] = None, aggregate_func: Optional[List[Callable]] = None, - ) -> List[pd.DataFrame]: + concat_results: bool = False, + ) -> Union[List[pd.DataFrame], pd.DataFrame]: """ Generate summary of analysis results based on specified query parameters. @@ -105,6 +106,8 @@ def generate_summary( :param aggregate_func: Optional[List[Callable]], optional, a list of functions that will be applied to the `metric_value` column of the results to generate the summary + :param concat_results: + bool, optional, if `True`, the results of summary will be concatenated into one DataFrame :return: List[pd.DataFrame], a list of Pandas DataFrames containing the summary of the results of the analysis """ @@ -125,6 +128,9 @@ def generate_summary( group_df.reset_index().to_csv(Path(save_path) / ("_".join(i) + ".csv"), index=False) df_list.append(group_df) + if concat_results: + df_list = pd.concat(df_list).sort_index() + return df_list @staticmethod @@ -134,7 +140,7 @@ def generate_posthoc_analysis( posthoc_func_list: List[Tuple[Callable, Dict]], save_to_csv: bool = False, save_path: Optional[str] = None, - ) -> List[pd.DataFrame]: + ) -> Tuple[Dict[str, pd.DataFrame], Dict[str, Dict]]: """ Generates a posthoc analysis of the results of the analysis based on the specified query parameters and posthoc functions. `csv_path` should be the path to the CSV file containing the results of the analysis. @@ -152,7 +158,8 @@ def generate_posthoc_analysis( str, optional, the location where the summary csv files should be saved. If None summary csv files will be saved in the same location as csv_path :return: - List[pd.DataFrame], a list of Pandas DataFrames containing the posthoc analysis of the results + Dict[str, pd.DataFrame], a dictionary of Pandas DataFrames containing the posthoc analysis of the results + , Dict[str, Dict], a dictionary of params combinations (dicts) for definied classifiers """ chunksize = 1000 gen = pd.read_csv(csv_path, chunksize=chunksize) @@ -160,22 +167,27 @@ def generate_posthoc_analysis( selected_columns.remove("no_repeat") selected_columns.remove("metric_value") - df_list = [] + df_dict = {} + param_comb_dict = {} for i in product(*query_dict.values()): df = AnalysisPipeline._search_df_by_query(query_dict, combination=i, csv_path=csv_path, chunksize=chunksize) - + param_comb = {param: number for number, param in enumerate(df["clf_params"].unique())} + df["resampling_method"] += "_" + df["clf_params"].apply(lambda x: param_comb[x]).astype(str) for posthoc_func, params in posthoc_func_list: - posthoc_df = posthoc_func(df, "metric_value", "resampling_method", **params) - df_name = posthoc_func.__name__ + "_" + "_".join(i) - posthoc_df.columns.name = df_name + posthoc_df: pd.DataFrame = posthoc_func(df, "metric_value", "resampling_method", **params) + name = posthoc_func.__name__ + "_" + "_".join(i) + keep = (np.triu(np.ones_like(posthoc_df), k=1)).astype(bool).flatten() + posthoc_df = posthoc_df.stack()[keep] + posthoc_df.name = "p-value" if save_to_csv: if save_path is None: save_path = Path(csv_path).parent - df_path = save_path / (df_name + ".csv") + df_path = Path(save_path) / (name + ".csv") posthoc_df.to_csv(Path(df_path)) - df_list.append(posthoc_df) + df_dict[name] = posthoc_df + param_comb_dict[name] = param_comb - return df_list + return df_dict, param_comb_dict @property def dataset_names(self) -> List[str]: @@ -517,9 +529,9 @@ def _get_name(self, estimator: Union[ClassifierMixin, BaseSampler]) -> Tuple[str help="Option specifying if the analysis would be run without using resampling", ) @click.option( - "--save-to-csv", - is_flag=True, - help="Option defines if results from summary should be save to csv", + "--save-path", + help="Option defines where results from summary and posthoc analysis should be saved." + "If not specified files will be saved in the same directory as file from analysis pipeline", ) def main( output_path, @@ -532,7 +544,7 @@ def main( aggregate_json, posthoc_func_json, train_without_resampling, - save_to_csv, + save_path, ): """ This function helps to use pipeline analysis, summary and posthoc tests by CLI. @@ -556,7 +568,7 @@ def main( aggregate_func_paths = json.load(f) aggregate_func = list(map(import_from_string, aggregate_func_paths)) - AnalysisPipeline.generate_summary(query_dict, output_path, save_to_csv, aggregate_func=aggregate_func) + AnalysisPipeline.generate_summary(query_dict, output_path, save_to_csv=True, aggregate_func=aggregate_func, save_path=save_path) if posthoc_analysis: print("Run generate posthoc analysis") @@ -568,7 +580,9 @@ def main( posthoc_func_paths = json.load(f) posthoc_func = [[import_from_string(func_path), params] for func_path, params in posthoc_func_paths.items()] - AnalysisPipeline.generate_posthoc_analysis(query_dict, output_path, posthoc_func_list=posthoc_func, save_to_csv=save_to_csv) + AnalysisPipeline.generate_posthoc_analysis( + query_dict, output_path, posthoc_func_list=posthoc_func, save_to_csv=True, save_path=save_path + ) print("Done") diff --git a/multi_imbalance/datasets/helpers.py b/multi_imbalance/datasets/helpers.py index 090beef..a1af50f 100644 --- a/multi_imbalance/datasets/helpers.py +++ b/multi_imbalance/datasets/helpers.py @@ -1,6 +1,7 @@ from dataclasses import dataclass import importlib import json +import pandas as pd from typing import Callable, Dict, List, Tuple, Union from sklearn.base import ClassifierMixin from imblearn.base import BaseSampler @@ -12,6 +13,13 @@ def import_from_string(cls_path: str) -> Union[BaseSampler, ClassifierMixin, Cal return getattr(module, class_name) +def read_summary_from_csv(csv_path: str) -> pd.DataFrame: + df = pd.read_csv(csv_path, index_col=[0, 1, 2, 3, 4], header=[0, 1]) + df.index.names = ["metric_name", "clf_name", "dataset_name", "resampling_method", "clf_params"] + df.columns.names = [None, None] + return df + + @dataclass class Config: """A class representing the configuration for an analysis pipeline. diff --git a/tests/datasets/test_analysis.py b/tests/datasets/test_analysis.py index d60aafd..4c0cc80 100644 --- a/tests/datasets/test_analysis.py +++ b/tests/datasets/test_analysis.py @@ -293,15 +293,18 @@ def test_run_analysis_cli(prepare_dataset_file, output_file, run_analysis_config assert Path(output_file).exists() -def test_generate_summary(prepare_dataset_file, query_dict, output_file, run_analysis_config, tmp_path): +@pytest.mark.parametrize("concat_results", [True, False]) +def test_generate_summary(concat_results, prepare_dataset_file, query_dict, output_file, run_analysis_config, tmp_path): config = Config.from_dict(run_analysis_config) pipeline = AnalysisPipeline(config) pipeline.run_analysis(output_file, train_without_resampling=False) - list_of_df = pipeline.generate_summary(query_dict, csv_path=output_file, save_to_csv=True) - - assert len(list_of_df) == 1 - df = list_of_df[0] + list_of_df = pipeline.generate_summary(query_dict, csv_path=output_file, save_to_csv=True, concat_results=concat_results) + if concat_results: + df = list_of_df + else: + assert len(list_of_df) == 1 + df = list_of_df[0] assert df.shape[0] == 1 assert (tmp_path / ("_".join([j for i in query_dict.values() for j in i]) + ".csv")).exists() is True @@ -318,7 +321,7 @@ def test_generate_summary_cli(prepare_dataset_file, query_dict_json, output_file runner = CliRunner() result = runner.invoke( main, - [str(output_file), "--summary", "--query-json", str(query_dict_json), "--save-to-csv", "--aggregate-json", str(aggr_func_path)], + [str(output_file), "--summary", "--query-json", str(query_dict_json), "--aggregate-json", str(aggr_func_path)], ) assert result.exit_code == 0 assert result.output == "Start\nRun generate summary\nDone\n" @@ -334,14 +337,16 @@ def test_generate_posthoc_analysis(prepare_dataset_file, query_dict, output_file pipeline = AnalysisPipeline(config) pipeline.run_analysis(output_file, train_without_resampling=False) query_dict.pop("resampling_method") - list_of_df = pipeline.generate_posthoc_analysis( + df_dict, param_comb_dict = pipeline.generate_posthoc_analysis( query_dict, csv_path=output_file, posthoc_func_list=[[posthoc_dunn, {}]], save_to_csv=True ) - assert len(list_of_df) == 1 - df = list_of_df[0] - assert df.shape[0] == 1 - assert (tmp_path / ("_".join([posthoc_dunn.__name__, *[j for i in query_dict.values() for j in i]]) + ".csv")).exists() is True + assert len(df_dict) == 1 + name = "_".join([posthoc_dunn.__name__, *[j for i in query_dict.values() for j in i]]) + df = df_dict[name] + assert df.shape[0] == 0 + assert (tmp_path / (name + ".csv")).exists() is True + assert param_comb_dict == {name: {"{'max_depth': 30}": 0}} def test_generate_posthoc_analysis_cli(prepare_dataset_file, query_dict, output_file, run_analysis_config, tmp_path): @@ -366,7 +371,6 @@ def test_generate_posthoc_analysis_cli(prepare_dataset_file, query_dict, output_ "--posthoc-analysis", "--posthoc-query-json", str(query_dict_path), - "--save-to-csv", "--posthoc-func-json", str(posthoc_func_path), ], From 9462046b48cd97d64239782db0eb877fc74bf9ce Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Sun, 15 Jan 2023 19:55:27 +0100 Subject: [PATCH 33/48] Rename parameters in SMOM --- multi_imbalance/resampling/smom.py | 24 ++++++++++++------------ multi_imbalance/utils/array_util.py | 21 --------------------- 2 files changed, 12 insertions(+), 33 deletions(-) diff --git a/multi_imbalance/resampling/smom.py b/multi_imbalance/resampling/smom.py index c7c5aff..b1ec450 100644 --- a/multi_imbalance/resampling/smom.py +++ b/multi_imbalance/resampling/smom.py @@ -108,8 +108,8 @@ class SMOM(BaseSampler): """ def __init__(self, - c: int, - zeta: int, + minority_class: int, + num_synth: int, k1: int = 12, k2: int = 8, rTh: float = 5 / 8, @@ -122,11 +122,11 @@ def __init__(self, shuffle: bool = False, metric: str = 'minkowski', p: int = 2, - seed: Optional[int] = None) -> None: + random_state: Optional[int, np.random.RandomState] = None) -> None: """ - :param c: + :param minority_class: The minority class under consideration. - :param zeta: + :param num_synth: Number of synthetic instances to be generated. :param k1: Number of nearest neighbors used to generate the synthetic instances. @@ -142,14 +142,14 @@ def __init__(self, Metric to use for distance computation. :param p: Power parameter for Minkowski metric. - :param seed: - Seed for random state. + :param random_state: + Optional seed for random state or a np.random.RandomState instance. """ super().__init__() self._sampling_type = 'over-sampling' self.maj_int_min = maj_int_min - self.c = c - self.zeta = zeta + self.c = minority_class + self.zeta = num_synth self.k1 = k1 self.k2 = k2 self.k3 = max(k1, k2) @@ -160,7 +160,7 @@ def __init__(self, self.r1 = r1 self.r2 = r2 self.shuffle = shuffle - self.random_state = sklearn.utils.check_random_state(seed) + self.random_state = sklearn.utils.check_random_state(random_state) if metric == 'minkowski': self._metric = neighbors.DistanceMetric.get_metric(metric, p=p) else: @@ -379,7 +379,7 @@ def _fit_resample(self, X, y): y_resampled = np.concatenate([y, [self.c] * SI.shape[0]], 0) if self.shuffle: - X_resampled, y_resampled = array_util.shuffle(X_resampled, + X_resampled, y_resampled = sklearn.utils.shuffle(X_resampled, y_resampled, - state=self.random_state) + state=self.random_state) return X_resampled, y_resampled diff --git a/multi_imbalance/utils/array_util.py b/multi_imbalance/utils/array_util.py index 5910ac7..e89a921 100644 --- a/multi_imbalance/utils/array_util.py +++ b/multi_imbalance/utils/array_util.py @@ -85,24 +85,3 @@ def intersect(arr1, arr2): if contains(arr2, x): result = union(result, np.array([x])) return result - - -def shuffle(*arrs: np.ndarray, - state: Optional[np.random.RandomState] = None) -> Tuple[ - np.ndarray, ...]: - """ - Shuffles rows of many arrays at once. - - Shuffles given arrays using a shuffled matrix of row indices. - The number of rows in the given arrays should be the same. - - :param arrs: - Numpy arrays to shuffle. - :param state: - Optional RandomState used to shuffle. - :return: - A tuple of shuffled copies of given arrays. - """ - indices = np.arange(arrs[0].shape[0]) - sklearn.utils.check_random_state(state).shuffle(indices) - return tuple(arr[indices] for arr in arrs) From eaaae7fa6cb81827221f977593da1d1c41b22de7 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Tue, 17 Jan 2023 22:25:17 +0100 Subject: [PATCH 34/48] Change parameters in SMOM --- examples/resampling/SMOM.ipynb | 20 ++--- multi_imbalance/resampling/smom.py | 136 +++++++++++++++++------------ tests/resampling/test_smom.py | 23 +++++ 3 files changed, 113 insertions(+), 66 deletions(-) create mode 100644 tests/resampling/test_smom.py diff --git a/examples/resampling/SMOM.ipynb b/examples/resampling/SMOM.ipynb index c4b8d27..b328f52 100644 --- a/examples/resampling/SMOM.ipynb +++ b/examples/resampling/SMOM.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 32, + "execution_count": 1, "outputs": [], "source": [ "%reload_ext autoreload\n", @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 2, "outputs": [ { "name": "stdout", @@ -91,20 +91,20 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 3, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'maj': [0, 1], 'int': [], 'min': [4, 2, 3]}\n", - "(386, 7) (386,)\n" + "(546, 7) (546,)\n" ] } ], "source": [ "from multi_imbalance.resampling.smom import SMOM\n", - "clf = SMOM(maj_int_min=maj_int_min[dataset_name], c=3, zeta=50, shuffle=True, seed=1234)\n", + "clf = SMOM(maj_int_min=maj_int_min[dataset_name], prop=0.75, shuffle=True, random_state=1234)\n", "print(maj_int_min[dataset_name])\n", "resampled_X, resampled_y = clf.fit_resample(X, y)\n", "print(resampled_X.shape, resampled_y.shape)" @@ -130,20 +130,20 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 4, "outputs": [ { "data": { - "text/plain": "" + "text/plain": "" }, - "execution_count": 35, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": "
", - "image/png": "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ivfff5/LL7+cjRs3Mnr06Hpfv/fee+vaS5cuJTc3V0msSIqxrDhlJz7C5wuTkT2UUyUfYfnChLOGtdtk1nXP375UpungxA7iC+ThEsKO7scXyCNua/5tS0vqPrIiIiLirWnTpvHFF18wbdo01qxZw5133gnAihUr2LBhg8fRiUgimFRTemw7uz5bzf4v1rDn8//NyeM7Maj2OrQ2xTDAdI+zY8tyDn/5BlVl29ix5XeUHv0Qn4YLW5wusYiISDsSDodZsmTJOcd//vOfn3Ns9uzZyQhJRBIsZqfTe/AUdm55geNHPyE9szs9+v6IaDzkdWhtiuuCa3WkoP8P+bL4/3D08GaysvvSMW808bjX0bV9GpEVEREREWlDLCvOqePbiVSdwPKFqCz/mvJTu7Aszd1MNNc1CQS/XWsgEMwCQ2OFyaBEVkRERESkDakpLf6M3PwRXH7FXXTo2E+lxS2gtrR41/bVdMjuR8++11NyZKtKi5NEl1hEREREpA2J2en0GjQFsIjGw/QaNBWwiNsqLU6k2tLifkOmkpbZG8w0QuFOpGX2VmlxEiiRFREREZEWFzAgUB3BiMWwQyEi/oC2KWlBcTvjvG1JLNv2Ec66nLjtgsO3bWlxSmRFREREpEUFcAjs3IO9bRc4DkZGmPRrrqA8PT2hW6GIeME+I3G1lcQmjebIioiIiEiLClZWYX9SDI4DgFtehb1pGwHX8TgyEUlVSmRFREREpMUYBlBecc5x91Q5liYSikgzKZEVERERkRbjukBWxjcZ7bfMvGzi/oA3QYlIylMiKyIiIiItKhIK47vqv0GoJnE18zpijLqMqKYTikgzabEnEREREWlRMQzcgu4E83MxHId4IEC1YYISWRFpJiWyIiIiItLi4rZL3HdGKbGSWBG5BCotFhERERERkZSiRFZERERERERSihJZERERERERSSlKZEVERERERCSlKJEVERERERGRlKJEVkRERERERFKKElkRERERERFJKZ7vI+s4DosWLeLzzz8nEAjw6KOP0qtXL6/DEhERERERkVbK8xHZd955h2g0ypo1a7j77rt54oknvA5JREREREREWjHPE9nNmzczduxYAEaMGMG2bds8jkhERERERERaM8N1XdfLAH7zm9/w/e9/n2uuuQaAa6+9lnfeeQefz/OqZxEREREREWmFPB+RzcjIoKKiou6x4zhKYkVEREREROSCPE9kR40axcaNGwH4+OOPGThwoMcRiYiIiIiISGvmeWlx7arFxcXFuK7LY489Rr9+/bwMSURERERERFoxzxNZERERERERkYvheWmxiIiIiIiIyMVQIisiIiIiIiIpRYmsiIiIiIiIpBQlsgniOA4LFy6ksLCQmTNnsm/fPq9DSllbt25l5syZXoeRkmKxGPPmzWP69OlMnjyZDRs2eB1SSrJtm/vvv5+bbrqJGTNmsH//fq9DSlnHjx/nmmuuYffu3V6HIikqEokwe/Zspk+fzu23386JEyfO+T/vv/8+U6dOZerUqSxatIjWvvxHU/oENfcWt912G0VFRUmOsHma0q8//elPTJkyhSlTpvDcc895EGXTNHZf9+677zJp0iQKCwt59dVXPYry4jTWpzfeeIMpU6Zw0003sXDhQhzH8SjSi9PUe/AHH3yQp59+OsnRNU9jffrkk0+YPn0606ZNY86cOVRXV3sU6cVprF/r169n4sSJTJo0iVdeeaXR8ymRTZB33nmHaDTKmjVruPvuu3niiSe8DiklLV++nAULFqTML2Rrs379erKzs3nllVdYvnw5jzzyiNchpaS///3vAKxevZo5c+bw+OOPexxRaorFYixcuJBQKOR1KJLCioqKGDhwIK+88go/+clPWLZsWb2vl5eX89RTT/Hiiy/y6quv0r17d0pLSz2Ktmka61OtZ599llOnTiU5uuZrrF8HDhxg/fr1rF69mjVr1vCPf/yDnTt3ehRtwxq6r4vFYjz++OP88Y9/ZNWqVaxZs4Zjx455GG3TNNSnSCTCs88+y5///GdWr15NeXl53d/C1q4p9+CrV6+muLjYg+iap6E+ua7Lgw8+yOOPP05RURFjx47l0KFDHkbbdI29Vk8++SQrVqygqKiIFStWNPr+p0Q2QTZv3szYsWMBGDFiBNu2bfM4otRUUFDA0qVLvQ4jZV1//fX8+te/rntsWZaH0aSu6667ru5DgK+++orc3FyPI0pNixcv5qabbqJz585ehyIp7My/r+PGjeODDz6o9/UtW7YwcOBAFi9ezPTp08nNzSUnJ8eLUJussT4BvP322xiGwbhx45IdXrM11q8uXbrw+9//HsuyME2TeDxOMBj0ItRGNXRft3v3bgoKCujQoQOBQIDRo0ezadMmr0Jtsob6FAgEWL16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\n" + "image/png": "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skIIIYQQQgghsookskIIIYQQQgghsookskIIIYQQQgghsookskIIIYQQQgghsookskIIIYQQQgghskrG95F1XZc77riDzZs34/V6+dGPfkRlZWWmwxJCCCGEEEIIMUxlfET25ZdfJplM8uSTT/LNb36Tn/zkJ5kOSQghhBBCCCHEMJbxRHblypUsWLAAgNmzZ7Nu3boMRySEEEIIIYQQYjhTWmudyQC+//3v84lPfIJzzz0XgPPOO4+XX34Zy8p41bMQQgghhBBCiGEo4yOy4XCYaDTa/rXrupLECiGEEEIIIYQ4pYwnsnPmzGH58uUArF69mpqamgxHJIQQQgghhBBiOMt4afGxVYtra2vRWvPjH/+YCRMmZDIkIYQQQgghhBDDWMYTWSGEEEIIIYQQojcyXloshBBCCCGEEEL0hiSyQgghhBBCCCGyiiSyQgghhBBCCCGyiiSyA8R1XW677TYuv/xyrrrqKnbt2pXpkLLWmjVruOqqqzIdRlZKpVLcdNNNLFmyhM9//vO88sormQ4pKzmOw3e/+12uuOIKrrzySnbv3p3pkLJWQ0MD5557Ltu2bct0KCJLxeNxrrvuOpYsWcLXvvY1GhsbT/ie1157jS984Qt84Qtf4I477mC4L//Rkz5B+t7iq1/9KsuWLRviCPumJ/36/e9/z6JFi1i0aBG//OUvMxBlz3R3X/fqq69y2WWXcfnll/PHP/4xQ1H2Tnd9ev7551m0aBFXXHEFt912G67rZijS3unpPfitt97Kz372syGOrm+669P777/PkiVLWLx4Mddffz2JRCJDkfZOd/167rnnuPTSS7nssst4/PHHu30+SWQHyMsvv0wymeTJJ5/km9/8Jj/5yU8yHVJWeuCBB7jllluy5hdyuHnuuefIz8/n8ccf54EHHuCHP/xhpkPKSn/7298AeOKJJ7j++uu58847MxxRdkqlUtx22234/f5MhyKy2LJly6ipqeHxxx/ns5/9LPfff3+nxyORCHfddRe/+tWv+OMf/0h5eTlNTU0ZirZnuuvTMb/4xS84cuTIEEfXd931a8+ePTz33HM88cQTPPnkk7z++uts2rQpQ9F2rav7ulQqxZ133snvfvc7HnnkEZ588knq6+szGG3PdNWneDzOL37xC/7whz/wxBNPEIlE2v8vHO56cg/+xBNPUFtbm4Ho+qarPmmtufXWW7nzzjtZtmwZCxYsYN++fRmMtue6e61++tOf8tBDD7Fs2TIeeuihbv/+SSI7QFauXMmCBQsAmD17NuvWrctwRNmpoqKCe++9N9NhZK2LL76Y//zP/2z/2jTNDEaTvS644IL2DwH2799PcXFxhiPKTkuXLuWKK66gtLQ006GILNbx/9eFCxeyYsWKTo+vWrWKmpoali5dypIlSyguLqawsDATofZYd30CeOmll1BKsXDhwqEOr8+661dZWRm//e1vMU0TwzCwbRufz5eJULvV1X3dtm3bqKioIC8vD6/Xy9y5c3n33XczFWqPddUnr9fLE088QSAQABjWr80HdXcPvmrVKtasWcPll1+eifD6pKs+7dixg/z8fB5++GG++MUv0tzcTHV1daZC7ZXuXqvJkyfT2tpKMplEa41SqsvnswYt0hEmEokQDofbvzZNE9u2sSy5xL1x0UUXsXfv3kyHkbVCoRCQfj9ef/313HDDDRmOKHtZlsXNN9/MX//6V+65555Mh5N1nnnmGQoLC1mwYAG/+c1vMh2OyBJPPfUUDz/8cKdjRUVF5OTkAOm/ca2trZ0eb2pq4q233uLZZ58lGAxy5ZVXMnv2bKqqqoYs7q70pU+1tbU8//zz3HPPPdx3331DFmtv9KVfHo+HwsJCtNb89Kc/Zdq0acPmdfqgru7rIpFIez8h3ddIJJKJMHulqz4ZhtH+oe0jjzxCLBbj7LPPzlSovdJVvw4dOsQvf/lLfvnLX/Liiy9mMMre6apPTU1NrFq1iltvvZXKykr+/d//nRkzZvCRj3wkgxH3THf50qRJk7jssssIBAJceOGF5Obmdvl8kmUNkHA4TDQabf/adV1JYkVGHDhwgG984xssWbKESy65JNPhZLWlS5fyrW99iy984Qu88MILBIPBTIeUNZ5++mmUUqxYsYKNGzdy880381//9V+UlJRkOjQxjB2bO9nRtdde2/7/azQaPeHGJj8/n5kzZ7a/t+bNm8fGjRuHTYLUlz49++yz1NXV8eUvf5l9+/bh8XgoLy8fVqOzfekXQCKR4Hvf+x6hUIjbb799SGLti67u6z74WDQa7ZTYDlfd3au6rstdd93Fjh07uPfee7sdDRsuuurXSy+9RFNTE9dccw319fXE43Gqq6v53Oc+l6lwe6SrPuXn51NZWcnEiRMBWLBgAevWrcuKRLarfm3atIm///3vvPLKKwSDQW666SZefPFFPvnJT57y+aS0eIDMmTOH5cuXA7B69WpqamoyHJEYiQ4fPsxXvvIVbrrpJj7/+c9nOpys9eyzz/LrX/8agEAggFJKyrR76bHHHuPRRx/lkUceYerUqSxdulSSWNEnc+bM4bXXXgNg+fLlzJ07t9PjM2bMoLa2lsbGRmzbZs2aNe03eMNVd3369re/zVNPPcUjjzzCpZdeyr/9278NqyT2VLrrl9aar3/960yePJkf/OAHw/rvalf3dRMmTGDXrl00NzeTTCZ59913OeOMMzIVao91d6962223kUgkuP/++9tLjLNBV/360pe+xDPPPMMjjzzCNddcw2c+85lhn8RC130aN24c0Wi0faGkd999l0mTJmUkzt7qql85OTn4/X58Ph+maVJYWEhLS0uXz6f0cF/aL0u4rssdd9xBbW0tWmt+/OMfM2HChEyHlZX27t3LjTfemDWrAA4nP/rRj3jxxRc7zZV44IEHZLGdXorFYnz3u9/l8OHD2LbN1772NS644IJMh5W1rrrqKu644w75myj6pK2tjZtvvpn6+no8Hg933303JSUlPPTQQ1RUVHD++efzwgsv8OCDDwLptQKuueaaDEfdtZ706Zh7772X4uJiFi9enMGIe6a7frmuy4033sjs2bPbf+bGG28clkngye7rNmzYQCwW4/LLL+fVV1/lvvvuQ2vNZZddxpVXXpnpkLvVVZ9mzJjBZZddxrx589pHYr/0pS9x4YUXZjjq7nX3Wh3zzDPPsH37dr71rW9lMNqe6a5PK1as4O6770ZrzRlnnMEtt9yS6ZB7pLt+LVu2jKeffhqPx0NFRQU//OEP8Xq9p3w+SWSFEEIIIYQQQmQVKS0WQgghhBBCCJFVJJEVQgghhBBCCJFVJJEVQgghhBBCCJFVJJEVQgghhBBCCJFVJJEVQgghhBBCCJFVJJEVQgghhBBiiKxZs4arrroq02EIkfWsTAcghBBCCCHESPDAAw/w3HPPEQgEMh2KEFlPRmSFEEIIIYQYYI899hjf/OY3Abj55pt57LHHqKio4N57781wZEKcHiSRFUIIIYQQYoBdeeWVtLW18Z3vfIdUKsWVV17JRRddhGVJQaQQA0F+k4QQQgghhBgE11xzDZdffjnPPPNMpkMR4rQjI7JCCCGEEEIMsGQyyY9//GN+8IMfcMcdd5BMJjMdkhCnFUlkhRBCCCGEGGA/+9nPOO+887j88stZuHAhd999d6ZDEuK0orTWOtNBCCGEEEIIIYQQPSUjskIIIYQQQgghsookskIIIYQQQgghsookskIIIYQQQgghsookskIIIYQQQgghsookskIIIYQQQgghsookskIIIYQQQgghsookskIIIYQQQgghssr/DwtMj1N0YgcLAAAAAElFTkSuQmCC\n" }, "metadata": {}, "output_type": "display_data" @@ -183,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "outputs": [], "source": [], "metadata": { diff --git a/multi_imbalance/resampling/smom.py b/multi_imbalance/resampling/smom.py index b1ec450..7d2bdde 100644 --- a/multi_imbalance/resampling/smom.py +++ b/multi_imbalance/resampling/smom.py @@ -4,16 +4,15 @@ import numpy as np -from typing import List, Dict, Optional, Sequence +from typing import List, Dict, Optional, Union, Collection import sklearn.utils from sklearn import neighbors -from multi_imbalance.utils import array_util from imblearn.base import BaseSampler def _nbdos(Sc: List[int], k: int, - sNk: Dict[int, List[int]], rTh: float, + sNk: Dict[int, np.ndarray], rTh: float, nTh: int): """ NBDOS clustering algorithm implementation. @@ -85,7 +84,7 @@ def _compute_ss(Fs_i, Fs_d, i, dst): return np.array(Ss, dtype=np.int64) -def _normalized_entropy(classes_counts: Sequence[int]): +def _normalized_entropy(classes_counts: Collection[int]): if len(classes_counts) <= 1: E = 0 else: @@ -93,13 +92,23 @@ def _normalized_entropy(classes_counts: Sequence[int]): E_min = np.log(1. / total) E = sum(count / total * np.log(count / total) for count in classes_counts) / E_min - assert 0 <= E <= 1, f'{E=} not in range [0, 1]' + assert 0 <= E <= 1, f"{E=} not in range [0, 1]" return E +def _compute_number_of_synthetic_instances(Sc, n_to_generate): + N_syn = dict() + div, mod = divmod(n_to_generate, Sc.shape[0]) + for i in Sc: + N_syn[i] = div + (mod > 0) + mod -= 1 + return N_syn + + class SMOM(BaseSampler): """ - SMOM technique implementation for synthetic minority oversampling for multiclass imbalanced problems. + SMOM technique implementation for synthetic minority oversampling for + multiclass imbalanced problems. Reference: Zhu, Tuanfei, Yaping Lin, and Yonghe Liu. "Synthetic minority oversampling @@ -108,8 +117,8 @@ class SMOM(BaseSampler): """ def __init__(self, - minority_class: int, - num_synth: int, + minority_class: Optional[int] = None, + prop: float = 1.0, k1: int = 12, k2: int = 8, rTh: float = 5 / 8, @@ -118,24 +127,29 @@ def __init__(self, w2: float = 0.5, r1: float = 1 / 3, r2: float = 0.2, - maj_int_min: Optional[Dict[str, Sequence[int]]] = None, + maj_int_min: Optional[Dict[str, List[int]]] = None, shuffle: bool = False, - metric: str = 'minkowski', + metric: str = "minkowski", p: int = 2, - random_state: Optional[int, np.random.RandomState] = None) -> None: + random_state: Optional[Union[ + int, np.random.RandomState]] = None) -> None: """ :param minority_class: - The minority class under consideration. - :param num_synth: - Number of synthetic instances to be generated. + The minority class under consideration. If none, every minority + class will be resampled. + :param prop: + A float describing the number of instances after oversampling. The + number of instances after oversampling will be prop * size of + largest majority class. :param k1: - Number of nearest neighbors used to generate the synthetic instances. + Number of nearest neighbors used to generate synthetic instances. :params k2, rTh, nTh: The parameters used in clustering algorithm NBDOS. :params w1, w2, r1, r2: The parameters used for calculating the selection weights. :param maj_int_min: - Dict that contains lists of majority, intermediate and minority classes labels. + Dict that contains lists of majority, intermediate and minority + classes labels. :param shuffle: Shuffle resampled data. :param metric: @@ -146,10 +160,10 @@ def __init__(self, Optional seed for random state or a np.random.RandomState instance. """ super().__init__() - self._sampling_type = 'over-sampling' + self._sampling_type = "over-sampling" self.maj_int_min = maj_int_min self.c = minority_class - self.zeta = num_synth + self.prop = prop self.k1 = k1 self.k2 = k2 self.k3 = max(k1, k2) @@ -161,7 +175,7 @@ def __init__(self, self.r2 = r2 self.shuffle = shuffle self.random_state = sklearn.utils.check_random_state(random_state) - if metric == 'minkowski': + if metric == "minkowski": self._metric = neighbors.DistanceMetric.get_metric(metric, p=p) else: self._metric = neighbors.metrics.DistanceMetric.get_metric(metric) @@ -225,12 +239,10 @@ def _compute_min_maj(self, y): y_min_classes = {k: v for k, v in cnt.items() if v < M / L} else: cnt = Counter(y) - if 'int' not in self.maj_int_min: - self.maj_int_min['int'] = [] y_maj_classes = {cls: cnt[cls] for cls in - self.maj_int_min['maj'] + self.maj_int_min['int'] + self.maj_int_min["maj"] if cls != self.c} - y_min_classes = {cls: cnt[cls] for cls in self.maj_int_min['min'] + y_min_classes = {cls: cnt[cls] for cls in self.maj_int_min["min"] if cls != self.c} return y_maj_classes, y_min_classes @@ -295,14 +307,6 @@ def _obtain_probability_distribution(self, X, y, Sw, TiC): P[i][j] = Sw[i][j] / sum(Sw[i][k] for k in self.N_c_k1_i[i]) return P - def _compute_number_of_synthetic_instances(self, Sc): - N_syn = dict() - div, mod = divmod(self.zeta, Sc.shape[0]) - for i in Sc: - N_syn[i] = div + (mod > 0) - mod -= 1 - return N_syn - def _generate_synthetic_instances(self, X, Sc, N_syn, TiC, P): SI = [] for i in Sc: @@ -336,7 +340,7 @@ def _setup(self): self.Fs_i = dict() self.Fs_d = dict() - def _fit_resample(self, X, y): + def _fit_resample(self, X: np.ndarray, y: np.ndarray): """ Performs resampling @@ -348,38 +352,58 @@ def _fit_resample(self, X, y): Resampled X along with accordingly modified labels, resampled y """ - # 1 - Sc = np.array([i for i, _ in enumerate(X) if y[i] == self.c]) - Sct = np.array([i for i, _ in enumerate(X) if y[i] != self.c]) - y_maj_classes, y_min_classes = self._compute_min_maj(y) - self._setup() + if self.c is None: + target_classes = y_min_classes.keys() + else: + target_classes = [self.c] - self.kdt_c = neighbors.KDTree(X[Sc], metric=self._metric) - self.kdt_ct = neighbors.KDTree(X[Sct], metric=self._metric) + SI_synth = [] + y_synth = [] + target_number_to_generate = max( + int(max(y_maj_classes.values()) * self.prop), 1) + for target_class in target_classes: + self._setup() - for i in Sc: - self._find_nearest_k3_in_sc(X, Sc, i) - self._find_nearest_k3_in_sct(X, Sct, i) - self._find_k2_nearest_in_neighbor(X, i) + Sc = np.array([i for i, _ in enumerate(X) if y[i] == target_class]) + Sct = np.array( + [i for i, _ in enumerate(X) if y[i] != target_class]) + + to_generate = target_number_to_generate - Sc.shape[0] + if to_generate <= 0: + continue + + self.kdt_c = neighbors.KDTree(X[Sc], metric=self._metric) + self.kdt_ct = neighbors.KDTree(X[Sct], metric=self._metric) + + for i in Sc: + self._find_nearest_k3_in_sc(X, Sc, i) + self._find_nearest_k3_in_sct(X, Sct, i) + self._find_k2_nearest_in_neighbor(X, i) + + Sc_cl = self._run_nbdos(Sc) - Sc_cl = self._run_nbdos(Sc) + OiC = Sc[Sc_cl != 0] + TiC = Sc[Sc_cl == 0] - OiC = Sc[Sc_cl != 0] - TiC = Sc[Sc_cl == 0] + Sw = self._compute_selection_weights(X, Sc, TiC, OiC, + y_min_classes, + y_maj_classes) + P = self._obtain_probability_distribution(X, y, Sw, TiC) + N_syn = _compute_number_of_synthetic_instances(Sc, + to_generate) + SI = self._generate_synthetic_instances(X, Sc, N_syn, TiC, P) - Sw = self._compute_selection_weights(X, Sc, TiC, OiC, y_min_classes, - y_maj_classes) - P = self._obtain_probability_distribution(X, y, Sw, TiC) - N_syn = self._compute_number_of_synthetic_instances(Sc) - SI = self._generate_synthetic_instances(X, Sc, N_syn, TiC, P) + SI_synth.append(SI) + y_synth.append(np.full(SI.shape[0], target_class)) - X_resampled = np.concatenate([X, SI], 0) - y_resampled = np.concatenate([y, [self.c] * SI.shape[0]], 0) + X_resampled = np.concatenate([X, *SI_synth], 0) + y_resampled = np.concatenate([y, *y_synth], 0) if self.shuffle: - X_resampled, y_resampled = sklearn.utils.shuffle(X_resampled, - y_resampled, - state=self.random_state) + (X_resampled, y_resampled + ) = sklearn.utils.shuffle(X_resampled, + y_resampled, + random_state=self.random_state) return X_resampled, y_resampled diff --git a/tests/resampling/test_smom.py b/tests/resampling/test_smom.py new file mode 100644 index 0000000..ad9c89c --- /dev/null +++ b/tests/resampling/test_smom.py @@ -0,0 +1,23 @@ +from collections import Counter + +import numpy as np + +from multi_imbalance.resampling.smom import SMOM + + +def test_static_smote(): + X = np.vstack( + [ + np.random.normal(0, 1, (100, 2)), + np.random.normal(3, 5, (30, 2)), + np.random.normal(-2, 2, (20, 2)), + ] + ) + + y = np.array([1] * 100 + [2] * 30 + [3] * 20) + smom = SMOM() + X_resampled, y_resampled = smom.fit_resample(X, y) + cnt = Counter(y_resampled) + assert cnt[1] == 100 + assert cnt[2] == 100 + assert cnt[3] == 100 From d896b89cdb42d7babc690925a43773df93b04d31 Mon Sep 17 00:00:00 2001 From: Maciej Falbogowski Date: Tue, 17 Jan 2023 22:36:58 +0100 Subject: [PATCH 35/48] Remove unused imports and variables --- multi_imbalance/resampling/smom.py | 2 +- multi_imbalance/utils/array_util.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/multi_imbalance/resampling/smom.py b/multi_imbalance/resampling/smom.py index 7d2bdde..0a4b22d 100644 --- a/multi_imbalance/resampling/smom.py +++ b/multi_imbalance/resampling/smom.py @@ -226,7 +226,7 @@ def _find_k2_nearest_in_neighbor(self, X, i): dist_, ind_ = neighbors.KDTree(X[nc_nct_union_i], metric=self._metric).query([X[i]], self.k2) - ind, dist = ind_[0], dist_[0] + ind = ind_[0] self.N_k2_i[i] = nc_nct_union_i[ind] self.N_k2_d[i] = nc_nct_union_d[ind] diff --git a/multi_imbalance/utils/array_util.py b/multi_imbalance/utils/array_util.py index 38ce35f..a7b26d1 100644 --- a/multi_imbalance/utils/array_util.py +++ b/multi_imbalance/utils/array_util.py @@ -1,6 +1,4 @@ import numpy as np -from typing import Optional, Tuple -import sklearn def setdiff(arr1: np.ndarray, arr2: np.ndarray) -> np.ndarray: From bc149cfbb56556b26ef056870220062e885c4094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Fri, 3 Mar 2023 18:33:07 +0100 Subject: [PATCH 36/48] add description --- examples/datasets/analysis.ipynb | 2 +- pyproject.toml | 51 ++++++++++++-------------------- tox.ini | 1 + 3 files changed, 21 insertions(+), 33 deletions(-) diff --git a/examples/datasets/analysis.ipynb b/examples/datasets/analysis.ipynb index 0432909..df57d46 100644 --- a/examples/datasets/analysis.ipynb +++ b/examples/datasets/analysis.ipynb @@ -13,7 +13,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In this notebook, we will be exploring the functionality that allows to run various classification and resampling methods of different datasets using both Python code and the command line interface (CLI). We will be able to compare the results and efficiency of these methods in order to determine the best approach for our specific use case." + "In this notebook, we will be exploring the functionality that allows to run various classification and resampling methods of different datasets using both Python code and the command line interface (CLI). We will be able to compare the results and efficiency of these methods in order to determine the best approach for our specific use case. The following will show the combination into one pipeline selected for resampling, classifiers and various metrics. Then, for selected resampling, classifier and metric methods, possible statistical analysis will be presented." ] }, { diff --git a/pyproject.toml b/pyproject.toml index 5e4427b..b0e5458 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,8 +1,5 @@ [build-system] -requires = [ - "setuptools>=42", - "wheel" -] +requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" [project] @@ -10,16 +7,16 @@ name = "multi-imbalance" description = "Python package for tackling multiclass imbalance problems." version = "0.1.0" maintainers = [ - {name = "Damian Horna, Kamil Pluciński, Hanna Klimczak, Jacek Grycza, Jan Kozłowski, Maciej Falbogowski, Adam Wojciechowski, Mateusz Woźny", email = "horna.damian@gmail.com"} + { name = "Damian Horna, Kamil Pluciński, Hanna Klimczak, Jacek Grycza, Jan Kozłowski, Maciej Falbogowski, Adam Wojciechowski, Mateusz Woźny", email = "horna.damian@gmail.com" }, ] readme = "README.md" -classifiers=[ - "Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Topic :: Software Development", - "Topic :: Scientific/Engineering", - "Programming Language :: Python :: 3.9", +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + "Topic :: Software Development", + "Topic :: Scientific/Engineering", + "Programming Language :: Python :: 3.9", ] dependencies = [ @@ -30,43 +27,33 @@ dependencies = [ "seaborn~=0.12.1", "matplotlib~=3.6.2", "click~=8.1.3", - "scikit-posthocs~=0.7.0" + "scikit-posthocs~=0.7.0", ] [project.optional-dependencies] -test = [ - "pytest~=7.2.0", - "pytest-cov~=4.0.0", - "coverage~=6.5.0" -] -lint = [ - "flake8~=5.0.4" -] -dev = [ - "tox~=3.27.0" -] +test = ["pytest~=7.2.0", "pytest-cov~=4.0.0", "coverage~=6.5.0"] +lint = ["flake8~=5.0.4"] +dev = ["tox~=3.27.0"] notebooks = [ "ipython~=8.6.0", "ipykernel~=6.17.0", "tqdm~=4.64.1", - "jupyter~=1.0.0" + "jupyter~=1.0.0", ] all = [ "multi-imbalance[test]", "multi-imbalance[lint]", "multi-imbalance[dev]", - "multi-imbalance[notebooks]" + "multi-imbalance[notebooks]", ] [project.urls] -homepage="https://github.com/damian-horna/multi-imbalance" -documentation="https://github.com/damian-horna/multi-imbalance/blob/master/README.md" +homepage = "https://github.com/damian-horna/multi-imbalance" +documentation = "https://github.com/damian-horna/multi-imbalance/blob/master/README.md" [tool.pytest.ini_options] -addopts = "--cov=multi_imbalance" -testpaths = [ - "tests", -] +addopts = "--cov=." +testpaths = ["tests"] [tool.setuptools] py-modules = ["multi_imbalance"] diff --git a/tox.ini b/tox.ini index 51f4878..610254d 100644 --- a/tox.ini +++ b/tox.ini @@ -15,6 +15,7 @@ deps = -r{toxinidir}/requirements.txt commands = pytest --cov-report term-missing --basetemp={envtmpdir} + coverage combine [testenv:flake8] basepython = python3.9 From ee9ca2bc627a5b1f10179da1ccdcd4a173b7e9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Wed, 8 Mar 2023 19:18:35 +0100 Subject: [PATCH 37/48] init --- multi_imbalance/resampling/gmm_sampler.py | 437 ++++++++++++++++++++++ tests/resampling/test_gmm_sampler.py | 91 +++++ 2 files changed, 528 insertions(+) create mode 100644 multi_imbalance/resampling/gmm_sampler.py create mode 100644 tests/resampling/test_gmm_sampler.py diff --git a/multi_imbalance/resampling/gmm_sampler.py b/multi_imbalance/resampling/gmm_sampler.py new file mode 100644 index 0000000..7931554 --- /dev/null +++ b/multi_imbalance/resampling/gmm_sampler.py @@ -0,0 +1,437 @@ +from collections import OrderedDict, Counter +from copy import deepcopy +from typing import Optional, List, Dict, Tuple, Any, TypeVar + +import numpy as np +from imblearn.over_sampling.base import BaseSampler +from imblearn.utils import Substitution +from imblearn.utils._docstring import _random_state_docstring +from pydantic import validate_arguments +from scipy.spatial.distance import cdist +from sklearn.mixture import GaussianMixture +from sklearn.model_selection import train_test_split +from sklearn.neighbors import NearestNeighbors + +GMMS = TypeVar("GMMS", bound="GMMSampler") + + +@Substitution( + random_state=_random_state_docstring, +) +class GMMSampler(BaseSampler): + """ + GGMSampling algorithm that uses creating new examples by sampling from a multivariate normal distribution + (whose parameters are estimated from the input data) and removing troublesome examples from the majority class. + Parameters + ---------- + likelihood_threshold : float, default=0.0 + Minimum likelihood change threshold. A value below this threshold will be equivalent to no change. + k_neighbors : int, default=7 + The number of analyzed nearest neighbors during the analysis. + Used during both undersampling and oversampling. + undersample : bool, default=True + A binary value indicating whether to perform an undersampling operation on majority classes. + min_components : int, default=1 + Minimum number of components of GaussianMixture. + max_components : Optional[int], default=None + Maximum number of components of GaussianMixture. Without upper bound if not specified. + minority_classes : Optional[List[int]], default=None + List containing minority classes given by hand - no auto detection of minority classes will be done. + valid_size : float, default=0.25 + Size of validation set to perform test for components choosing. + filter_new : float, default=-1 + Parameter controlling the behavior after the oversampling operation. + Checks if and how to filter newly created examples: + -1 -> do not filter out + 0 -> filter out by max/mean value of created examples + >0 -> specify your own value e.g. 2.0 + add_after_filtration : bool, default=True + Value specifying whether to regenerate the examples after filtering. + iterations_after_filtration : int, default=50 + This value will potentially avoid an endless loop of deleting and re-generating examples. + The upper limit for the number of repetitions. + covariance_type : "full", "tied", "diag", "spherical", default="full" + String describing the type of covariance parameters to use in GaussianMixture. Must be one of: + - "full" + each component has its own general covariance matrix + - "tied" + all components share the same general covariance matrix + - "diag" + each component has its own diagonal covariance matrix + - "spherical" + each component has its own single variance + strategy : str "average" or "median", default="average" + The strategy of selecting the number of examples considers the target number in each class. + {random_state} + n_init : int, default=10 + The number of initializations to perform in GaussianMixture. The best results are kept. + tol : float, default=1e-3 + The convergence threshold in GaussianMixture. EM iterations will stop when the lower bound + average gain is below this threshold. + max_iter : int, default=100 + The number of EM iterations to perform in GaussianMixture. + Attributes + ---------- + likelihoods : dict + Likelihood of each minority class obtained after fitting the final Gaussian model. + gaussian_mixtures : dict + Dictionary containing all Gaussian models for each minority class separately. + class_sizes : Optional[Counter] + A dictionary containing the counts of each class. + neighborhood : Optional[dict] + Dictionary with information on the nearest points for each example separately. + maj_int_min : OrderedDict + A dictionary containing information on which class can be considered majority, + which minority and which remaining class - a heuristic matching. + size_to_align : Optional[np.ndarray] + ndarray containing information about the quantity considered the gold standard - + it is this size that we will want to generate and remove examples. + cdist_min_count : int + The minimum number of examples found in the data sample on which + distances between points are calculated (by the cdist method). + Examples + -------- + >>> import numpy as np + >>> from algorithms.gmm_sampler import GMMSampler + >>> from sklearn.datasets import make_blobs + >>> from collections import Counter + >>> blobs = [800, 100] + >>> X, y = make_blobs(blobs, centers=[(-4, 0), (0,0)]) + # Make this a binary classification problem + >>> y = np.array(y == 1, dtype=int) + >>> gmm_sampler = GMMSampler() + >>> X_res, y_res = gmm_sampler.fit_resample(X, y) + >>> print('Class distribution before GMMsampling: %s' % Counter(y)) + >>> print(f'Class distribution after GMMsampling: %s' % Counter(y_res)) + Class distribution before GMMsampling: Counter({{0: 800, 1: 100}}) + Class distribution after GMMsampling: Counter({{0: 450, 1: 450}}) + # Without undersampling + >>> gmm_sampler = GMMSampler(undersample=False) + >>> X_res, y_res = gmm_sampler.fit_resample(X, y) + >>> print('Class distribution before GMMsampling: %s' % Counter(y)) + >>> print(f'Class distribution after GMMsampling: %s' % Counter(y_res)) + Class distribution before GMMsampling: Counter({{0: 800, 1: 100}}) + Class distribution after GMMsampling: Counter({{0: 800, 1: 450}}) + """ + + _sampling_type = "over-sampling" + + @validate_arguments + def __init__( + self, + likelihood_threshold: float = 0.0, + k_neighbors: int = 7, + undersample: bool = True, + min_components: int = 1, + max_components: Optional[int] = None, + minority_classes: Optional[List[int]] = None, + valid_size: float = 0.25, + filter_new: float = -1.0, + add_after_filtration: bool = True, + iterations_after_filtration: int = 50, + strategy: str = "average", + covariance_type: str = "full", + n_init: int = 10, + tol: float = 1e-3, + max_iter: int = 100, + random_state: Optional[int] = None, + ): + super().__init__(sampling_strategy="auto") + self.likelihood_threshold: float = likelihood_threshold + self.k_neighbors: int = k_neighbors + self.undersample: bool = undersample + self.min_components: int = min_components + self.max_components: Optional[int] = max_components + self._minority_classes: Optional[List[int]] = minority_classes + self.valid_size: float = valid_size + self.filter_new: float = filter_new + self.add_after_filtration: bool = add_after_filtration + self.iterations_after_filtration: int = iterations_after_filtration + self.n_init: int = n_init + self.tol: float = tol + self.max_iter: int = max_iter + self.random_state: Optional[int] = random_state + np.random.seed(self.random_state) + + assert strategy in ["average", "median"], f"strategy '{strategy}' is invalid." + self.strategy: str = strategy + + assert covariance_type in [ + "full", + "tied", + "diag", + "spherical", + ], f"covariance_type '{covariance_type}' is invalid." + self.covariance_type: str = covariance_type + + self.likelihoods: Dict = dict() + self.gaussian_mixtures: Dict = dict() + self.class_sizes: Optional[Counter] = None + self.neighborhood: Optional[Dict] = None + self.maj_int_min: OrderedDict = OrderedDict({"maj": list(), "int": list(), "min": list()}) + self.size_to_align: Optional[np.ndarray] = None + self.__x_subset: Optional[np.ndarray] = None + self.cdist_min_count: int = 10 + + @property + def minority_classes(self) -> List: + if (self.class_sizes is None) or (self._minority_classes is not None): + return self._minority_classes + return self.maj_int_min["min"] + + def _fit_resample(self, X: Any, y: Any) -> Tuple[np.ndarray, np.ndarray]: + X_resample: np.ndarray + y_resample: np.ndarray + X_resample, y_resample = self._to_numpy(X, y) + + X_resample, y_resample = self._fit(X_resample, y_resample)._resample(X_resample, y_resample) + + indices = np.arange(y_resample.shape[0]) + np.random.shuffle(indices) + return X_resample[indices], y_resample[indices] + + def _fit(self, X: Any, y: Any) -> GMMS: + self.class_sizes: Counter = Counter(y) + self._construct_neighborhood(X, y) + + self._construct_maj_int_min() + self._set_size_to_align() + + self._fit_each_minority_class(X, y) + + return self + + @staticmethod + def _to_numpy(X: Any, y: Any) -> Tuple[np.ndarray, np.ndarray]: + try: + return np.array(X).copy(), np.array(y).copy() + except Exception as e: + raise e + + def _fit_each_minority_class(self, X: np.ndarray, y: np.ndarray) -> None: + minority_class: int + for minority_class in self.minority_classes: + self._fit_single_class(X, y, minority_class) + + def _fit_single_class(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> None: + self.__x_subset = X[y == minority_class] + train: np.ndarray + valid: np.ndarray + train, valid = train_test_split(self.__x_subset, test_size=self.valid_size, random_state=self.random_state) + + current_component_count: int = self.min_components + + gaussian_mixture_model: GaussianMixture = self._init_model(current_component_count) + gaussian_mixture_model_temp: Optional[GaussianMixture] = None + gaussian_mixture_model.fit(train) + + likelihood = [float("-inf"), gaussian_mixture_model.score(valid)] + while self._perform_step(current_component_count, likelihood[1] - likelihood[0], train.shape[0]): + if gaussian_mixture_model_temp is not None: + gaussian_mixture_model = deepcopy(gaussian_mixture_model_temp) + + current_component_count += 1 + gaussian_mixture_model_temp = self._init_model(current_component_count) + gaussian_mixture_model_temp.fit(train) + + likelihood[0], likelihood[1] = likelihood[1], gaussian_mixture_model_temp.score(valid) + + gaussian_mixture_model.fit(self.__x_subset) + self.gaussian_mixtures[minority_class] = gaussian_mixture_model + self.likelihoods[minority_class] = gaussian_mixture_model.score(self.__x_subset) + self.__x_subset = None + + def _construct_neighborhood(self, X: np.ndarray, y: np.ndarray) -> None: + neigh_clf: NearestNeighbors = NearestNeighbors(n_neighbors=self.k_neighbors + 1).fit(X) + nearest_neighbor_idxs: np.ndarray = neigh_clf.kneighbors(X, return_distance=False)[:, 1:] + self.neighborhood = dict() + sample_idx: int + neigh_samples: np.ndarray + for sample_idx, neigh_samples in enumerate(nearest_neighbor_idxs): + neigh_counts: Counter = Counter(y[neigh_samples]) + self.neighborhood[sample_idx] = self._check_sample_neighborhood(y[sample_idx], neigh_counts) + + def _check_sample_neighborhood(self, sample_class: int, neigh_counts: Counter) -> float: + neighborhood: float = 0.0 + neigh_class: int + count: int + for neigh_class, count in neigh_counts.items(): + class_sizes: List = [ + self.class_sizes[sample_class], + self.class_sizes[neigh_class], + ] + neighborhood += count * (min(class_sizes) / max(class_sizes)) + neighborhood /= self.k_neighbors + if neighborhood > 1: + raise ValueError(f"Neighborhood is bigger than 1: {neighborhood}") + return neighborhood + + def _construct_maj_int_min(self) -> None: + middle_size = self._get_middle_size_based_on_strategy() + self._fill_maj_int_min(middle_size) + + def _get_middle_size_based_on_strategy(self) -> np.ndarray: + middle_size: np.ndarray + if self.strategy == "median": + middle_size = np.median(list(self.class_sizes.values())) + elif self.strategy == "average": + middle_size = np.mean(list(self.class_sizes.values())) + else: + raise ValueError(f'Unrecognized {self.strategy}. Only "median" and "average" are allowed.') + return middle_size + + def _fill_maj_int_min(self, middle_size) -> None: + class_label: int + class_size: int + for class_label, class_size in self.class_sizes.items(): + if class_size == middle_size: + class_group = "int" + elif class_size < middle_size: + class_group = "min" + else: + class_group = "maj" + + self.maj_int_min[class_group].append(class_label) + + def _set_size_to_align(self) -> None: + maj_q: List = [self.class_sizes[k] for k in self.maj_int_min["maj"]] + min_q: List = [self.class_sizes[k] for k in self.maj_int_min["min"]] + int_q: List = [self.class_sizes[k] for k in self.maj_int_min["int"]] + + if len(maj_q) == 0 and len(min_q) > 0: + self.size_to_align = np.mean(min_q, dtype=int) + elif len(min_q) == 0 and len(maj_q) > 0: + self.size_to_align = np.mean(maj_q, dtype=int) + return + elif len(maj_q) > 0 and len(min_q) > 0: + self.size_to_align = np.mean((max(min_q), min(maj_q)), dtype=int) + elif len(int_q) > 0: + self.size_to_align = np.mean(int_q, dtype=int) + else: + raise ValueError("Bad input - can not obtain desire size.") + + def _init_model(self, n_components: int) -> GaussianMixture: + return GaussianMixture( + n_components=n_components, + n_init=self.n_init, + covariance_type=self.covariance_type, + tol=self.tol, + max_iter=self.max_iter, + random_state=self.random_state, + ) + + def _perform_step(self, n_components: int, likelihood: float, num_samples: int) -> bool: + likelihood_condition: bool = likelihood >= self.likelihood_threshold + max_components_condition: bool = self.max_components is None or n_components <= self.max_components + num_samples_condition: bool = n_components < num_samples + return likelihood_condition and max_components_condition and num_samples_condition + + def _resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + X, y = self._oversample_each_minority_class(X, y) + if self.undersample and "maj" in self.maj_int_min: + X, y = self._undersample_majority_classes(X, y) + return X, y + + def _oversample_each_minority_class(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + X_copy: np.ndarray = X.copy() + y_copy: np.ndarray = y.copy() + minority_class: int + for minority_class in self.minority_classes: + self.__x_subset = X_copy[y_copy == minority_class] + X, y = self._oversample(X_copy, y_copy, minority_class) + self.__x_subset = None + return X, y + + def _oversample(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> Tuple[np.ndarray, np.ndarray]: + means: np.ndarray + covariances: np.ndarray + means, covariances = self._get_coefficients(self.gaussian_mixtures[minority_class]) + + probabilities = self._get_probas_for_samples_in_component(X, y, minority_class) + + quantity_to_generate: int = self.size_to_align - self.__x_subset.shape[0] + for component in range(self.gaussian_mixtures[minority_class].n_components): + Nk: np.ndarray = probabilities[component] * quantity_to_generate + x: np.ndarray = self._create_samples(means[component], covariances[component], int(Nk)) + X = np.append(X, x, axis=0) + y = np.append(y, np.full((x.shape[0],), fill_value=minority_class), axis=0) + + return X, y + + def _get_probas_for_samples_in_component(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> np.ndarray: + X_prob: np.ndarray = self.gaussian_mixtures[minority_class].predict_proba(X[y == minority_class]) + ratios: np.ndarray = np.array([v for k, v in self.neighborhood.items() if y[k] == minority_class]) + ratios = ratios[..., np.newaxis] + probabilities: np.ndarray = np.sum((1.0 - ratios) * X_prob, axis=0) + 1e-8 + probabilities = probabilities / np.sum(probabilities, keepdims=True) + return probabilities + + def _get_coefficients(self, gaussian_mixture: GaussianMixture) -> Tuple[np.ndarray, np.ndarray]: + means: np.ndarray = gaussian_mixture.means_ + covariances: np.ndarray = gaussian_mixture.covariances_ + if self.covariance_type == "tied": + covariances = np.array([covariances] * gaussian_mixture.n_components) + elif self.covariance_type == "diag": + cov_list: List = [] + for component in range(gaussian_mixture.n_components): + cov_list.append(np.diagflat(covariances[component, :])) + covariances = np.array(cov_list) + elif self.covariance_type == "spherical": + cov_list: List = [] + for component in range(gaussian_mixture.n_components): + var = np.array([covariances[component]] * self.__x_subset.shape[1]) + cov_list.append(np.diagflat(var)) + covariances = np.array(cov_list) + return means, covariances + + def _create_samples(self, mean: np.ndarray, covariance: np.ndarray, target_size: int) -> np.ndarray: + result: np.ndarray = np.empty((0, self.__x_subset.shape[1]), float) + iterations: int = 0 + threshold_dist: float = self.filter_new + while (result.shape[0] != target_size) and (iterations < self.iterations_after_filtration): + iterations += 1 + size: int = max(target_size - result.shape[0], result.shape[1] + 1) + x: np.ndarray = np.random.multivariate_normal(mean, covariance, size=size) + if self.filter_new == -1.0: + result = np.append(result, x, axis=0) + break + elif self.filter_new == 0.0: + mdist: np.ndarray = self._compute_mdist(self.__x_subset, mean, covariance) + threshold_dist: float = float(np.mean(mdist)) + + mdist = self._compute_mdist(x, mean, covariance)[: x.shape[0]] + x = x[mdist < threshold_dist] + x = x[: target_size - result.shape[0]] + result = np.append(result, x, axis=0) + if not self.add_after_filtration: + break + return result + + def _compute_mdist(self, in_data: np.ndarray, mean: np.ndarray, covariance: np.ndarray) -> np.ndarray: + mdist: np.ndarray + try: + data: np.ndarray = in_data + if data.shape[0] < self.cdist_min_count: + data: np.ndarray = np.concatenate((in_data, in_data), axis=0) + mdist = cdist(data, [mean], metric="mahalanobis", VI=np.linalg.inv(covariance))[:, 0] + except Exception as e: + print(f"Can't compute 'cdist' function. Distance threshold is set to 2.0") + print(f"For more information, examine exception: {e}") + mdist = np.full_like(in_data, fill_value=2.0)[:, 0] + return mdist + + def _undersample_majority_classes(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: + maj_class: int + for maj_class in self.maj_int_min["maj"]: + X, y = self._undersample(X, y, maj_class) + return X, y + + def _undersample(self, X: np.ndarray, y: np.ndarray, class_id: int) -> Tuple[np.ndarray, np.ndarray]: + class_idxs: np.ndarray = np.where(y == class_id)[0] + sorted_neigh = sorted(self.neighborhood.items(), key=lambda item: item[1]) + class_idxs: List = [k for k, v in sorted_neigh if k in class_idxs] + size: int = max(0, int(self.class_sizes[class_id] - self.size_to_align)) + X = np.delete(X, class_idxs[:size], axis=0) + y = np.delete(y, class_idxs[:size], axis=0) + + return X, y diff --git a/tests/resampling/test_gmm_sampler.py b/tests/resampling/test_gmm_sampler.py new file mode 100644 index 0000000..f1d597f --- /dev/null +++ b/tests/resampling/test_gmm_sampler.py @@ -0,0 +1,91 @@ +import numpy as np +import pytest +from collections import Counter + +from multi_imbalance.resampling.gmm_sampler import GMMSampler + +X = np.array( + [ + [0.05837771, 0.57543339], + [0.06153624, 0.99871925], + [0.14308529, 0.00681144], + [0.23401697, 0.21188708], + [0.2418553, 0.02137086], + [0.32480534, 0.81547632], + [0.42478482, 0.31995162], + [0.50726834, 0.72621157], + [0.54580968, 0.58025914], + [0.55748531, 0.71866238], + [0.69208769, 0.63759459], + [0.70797377, 0.16348051], + [0.76410615, 0.70451542], + [0.81680686, 0.50793884], + [0.8490789, 0.53826627], + [0.8847505, 0.96856011], + [0.9287003, 0.97580299], + [0.9584236, 0.10536541], + [0.96983103, 0.87666093], + [0.97352367, 0.78807909], + ] +) + +majority_class = 0 +minority_class = 1 +num_classes = 2 + +y_balanced = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) +y_imb_easy = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1]) +y_imb_hard = np.array([0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0]) +complete_test_data = [ + (X, y_balanced), + (X, y_imb_easy), + (X, y_imb_hard), +] + + +@pytest.fixture() +def gmm_sampler_mock(): + def _get_parametrized_gmm_sampler(X, y, undersample): + gmm_sampler = GMMSampler(undersample=undersample) + return gmm_sampler + + return _get_parametrized_gmm_sampler + + +def get_goal_quantity(y): + quantities = Counter(y) + return np.mean((quantities[minority_class], quantities[majority_class]), dtype=int) + + +@pytest.mark.parametrize("X, y", complete_test_data) +def test_output_length_with_undersample(X, y, gmm_sampler_mock): + gmm_sampler = gmm_sampler_mock(X, y, True) + resampled_X, resampled_y = gmm_sampler.fit_resample(X, y) + + y_resampled_count = Counter(resampled_y) + for _, quantity in y_resampled_count.items(): + assert quantity == get_goal_quantity(y) + + assert len(resampled_X) == get_goal_quantity(y) * num_classes + assert len(resampled_y) == get_goal_quantity(y) * num_classes + + +@pytest.mark.parametrize("X, y", complete_test_data) +def test_output_length_without_undersample(X, y, gmm_sampler_mock): + gmm_sampler = gmm_sampler_mock(X, y, False) + resampled_X, resampled_y = gmm_sampler.fit_resample(X, y) + + y_count = Counter(y) + y_resampled_count = Counter(resampled_y) + + assert y_resampled_count[minority_class] == get_goal_quantity(y) + assert y_resampled_count[majority_class] == y_count[majority_class] + + +def test_perform_step_condition(gmm_sampler_mock): + gmm_sampler = GMMSampler() + assert gmm_sampler._perform_step(n_components=2, likelihood=1.0, num_samples=3) + assert not gmm_sampler._perform_step(n_components=2, likelihood=-1.0, num_samples=3) + assert not gmm_sampler._perform_step(n_components=2, likelihood=1.0, num_samples=1) + gmm_sampler.max_components = 1 + assert not gmm_sampler._perform_step(n_components=4, likelihood=1.0, num_samples=3) From bb20635c1e3603c11da712bc008269f9e04034c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Wed, 8 Mar 2023 19:23:11 +0100 Subject: [PATCH 38/48] update docstrings --- multi_imbalance/resampling/gmm_sampler.py | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/multi_imbalance/resampling/gmm_sampler.py b/multi_imbalance/resampling/gmm_sampler.py index 7931554..1236fc2 100644 --- a/multi_imbalance/resampling/gmm_sampler.py +++ b/multi_imbalance/resampling/gmm_sampler.py @@ -22,34 +22,45 @@ class GMMSampler(BaseSampler): """ GGMSampling algorithm that uses creating new examples by sampling from a multivariate normal distribution (whose parameters are estimated from the input data) and removing troublesome examples from the majority class. + Parameters ---------- likelihood_threshold : float, default=0.0 Minimum likelihood change threshold. A value below this threshold will be equivalent to no change. + k_neighbors : int, default=7 The number of analyzed nearest neighbors during the analysis. Used during both undersampling and oversampling. + undersample : bool, default=True A binary value indicating whether to perform an undersampling operation on majority classes. + min_components : int, default=1 Minimum number of components of GaussianMixture. + max_components : Optional[int], default=None Maximum number of components of GaussianMixture. Without upper bound if not specified. + minority_classes : Optional[List[int]], default=None List containing minority classes given by hand - no auto detection of minority classes will be done. + valid_size : float, default=0.25 Size of validation set to perform test for components choosing. + filter_new : float, default=-1 Parameter controlling the behavior after the oversampling operation. Checks if and how to filter newly created examples: -1 -> do not filter out 0 -> filter out by max/mean value of created examples >0 -> specify your own value e.g. 2.0 + add_after_filtration : bool, default=True Value specifying whether to regenerate the examples after filtering. + iterations_after_filtration : int, default=50 This value will potentially avoid an endless loop of deleting and re-generating examples. The upper limit for the number of repetitions. + covariance_type : "full", "tied", "diag", "spherical", default="full" String describing the type of covariance parameters to use in GaussianMixture. Must be one of: - "full" @@ -60,35 +71,48 @@ class GMMSampler(BaseSampler): each component has its own diagonal covariance matrix - "spherical" each component has its own single variance + strategy : str "average" or "median", default="average" The strategy of selecting the number of examples considers the target number in each class. + {random_state} + n_init : int, default=10 The number of initializations to perform in GaussianMixture. The best results are kept. + tol : float, default=1e-3 The convergence threshold in GaussianMixture. EM iterations will stop when the lower bound average gain is below this threshold. + max_iter : int, default=100 The number of EM iterations to perform in GaussianMixture. + Attributes ---------- likelihoods : dict Likelihood of each minority class obtained after fitting the final Gaussian model. + gaussian_mixtures : dict Dictionary containing all Gaussian models for each minority class separately. + class_sizes : Optional[Counter] A dictionary containing the counts of each class. + neighborhood : Optional[dict] Dictionary with information on the nearest points for each example separately. + maj_int_min : OrderedDict A dictionary containing information on which class can be considered majority, which minority and which remaining class - a heuristic matching. + size_to_align : Optional[np.ndarray] ndarray containing information about the quantity considered the gold standard - it is this size that we will want to generate and remove examples. + cdist_min_count : int The minimum number of examples found in the data sample on which distances between points are calculated (by the cdist method). + Examples -------- >>> import numpy as np From 6e70b958bfeed4f000f7e2fd0137dccef7b94156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Wed, 15 Mar 2023 19:04:36 +0100 Subject: [PATCH 39/48] change typing --- multi_imbalance/resampling/gmm_sampler.py | 148 ++++++++++------------ 1 file changed, 69 insertions(+), 79 deletions(-) diff --git a/multi_imbalance/resampling/gmm_sampler.py b/multi_imbalance/resampling/gmm_sampler.py index 1236fc2..de1ccd3 100644 --- a/multi_imbalance/resampling/gmm_sampler.py +++ b/multi_imbalance/resampling/gmm_sampler.py @@ -2,6 +2,7 @@ from copy import deepcopy from typing import Optional, List, Dict, Tuple, Any, TypeVar +import logging import numpy as np from imblearn.over_sampling.base import BaseSampler from imblearn.utils import Substitution @@ -14,6 +15,12 @@ GMMS = TypeVar("GMMS", bound="GMMSampler") +logging.basicConfig( + level=logging.INFO, + format="[%(asctime)s] %(levelname)s %(name)s %(message)s", + datefmt="%d.%m.%Y %H:%M:%S", +) + @Substitution( random_state=_random_state_docstring, @@ -161,24 +168,24 @@ def __init__( random_state: Optional[int] = None, ): super().__init__(sampling_strategy="auto") - self.likelihood_threshold: float = likelihood_threshold - self.k_neighbors: int = k_neighbors - self.undersample: bool = undersample - self.min_components: int = min_components - self.max_components: Optional[int] = max_components - self._minority_classes: Optional[List[int]] = minority_classes - self.valid_size: float = valid_size - self.filter_new: float = filter_new - self.add_after_filtration: bool = add_after_filtration - self.iterations_after_filtration: int = iterations_after_filtration - self.n_init: int = n_init - self.tol: float = tol - self.max_iter: int = max_iter - self.random_state: Optional[int] = random_state + self.likelihood_threshold = likelihood_threshold + self.k_neighbors = k_neighbors + self.undersample = undersample + self.min_components = min_components + self.max_components = max_components + self._minority_classes = minority_classes + self.valid_size = valid_size + self.filter_new = filter_new + self.add_after_filtration = add_after_filtration + self.iterations_after_filtration = iterations_after_filtration + self.n_init = n_init + self.tol = tol + self.max_iter = max_iter + self.random_state = random_state np.random.seed(self.random_state) assert strategy in ["average", "median"], f"strategy '{strategy}' is invalid." - self.strategy: str = strategy + self.strategy = strategy assert covariance_type in [ "full", @@ -186,26 +193,25 @@ def __init__( "diag", "spherical", ], f"covariance_type '{covariance_type}' is invalid." - self.covariance_type: str = covariance_type - - self.likelihoods: Dict = dict() - self.gaussian_mixtures: Dict = dict() - self.class_sizes: Optional[Counter] = None - self.neighborhood: Optional[Dict] = None - self.maj_int_min: OrderedDict = OrderedDict({"maj": list(), "int": list(), "min": list()}) - self.size_to_align: Optional[np.ndarray] = None + self.covariance_type = covariance_type + + self.likelihoods: Dict[int, float] = dict() + self.gaussian_mixtures: Dict[int, GaussianMixture] = dict() + self.class_sizes: Optional[Counter[int]] = None + self.neighborhood: Optional[Dict[int, float]] = None + self.maj_int_min = OrderedDict({"maj": list(), "int": list(), "min": list()}) + self.size_to_align: Optional[int] = None self.__x_subset: Optional[np.ndarray] = None - self.cdist_min_count: int = 10 + self.cdist_min_count = 10 + self.__logger = logging.getLogger("GMMSampler") @property - def minority_classes(self) -> List: + def minority_classes(self) -> List[int]: if (self.class_sizes is None) or (self._minority_classes is not None): return self._minority_classes return self.maj_int_min["min"] def _fit_resample(self, X: Any, y: Any) -> Tuple[np.ndarray, np.ndarray]: - X_resample: np.ndarray - y_resample: np.ndarray X_resample, y_resample = self._to_numpy(X, y) X_resample, y_resample = self._fit(X_resample, y_resample)._resample(X_resample, y_resample) @@ -215,7 +221,7 @@ def _fit_resample(self, X: Any, y: Any) -> Tuple[np.ndarray, np.ndarray]: return X_resample[indices], y_resample[indices] def _fit(self, X: Any, y: Any) -> GMMS: - self.class_sizes: Counter = Counter(y) + self.class_sizes = Counter(y) self._construct_neighborhood(X, y) self._construct_maj_int_min() @@ -227,13 +233,9 @@ def _fit(self, X: Any, y: Any) -> GMMS: @staticmethod def _to_numpy(X: Any, y: Any) -> Tuple[np.ndarray, np.ndarray]: - try: - return np.array(X).copy(), np.array(y).copy() - except Exception as e: - raise e + return np.array(X).copy(), np.array(y).copy() def _fit_each_minority_class(self, X: np.ndarray, y: np.ndarray) -> None: - minority_class: int for minority_class in self.minority_classes: self._fit_single_class(X, y, minority_class) @@ -243,10 +245,10 @@ def _fit_single_class(self, X: np.ndarray, y: np.ndarray, minority_class: int) - valid: np.ndarray train, valid = train_test_split(self.__x_subset, test_size=self.valid_size, random_state=self.random_state) - current_component_count: int = self.min_components + current_component_count = self.min_components - gaussian_mixture_model: GaussianMixture = self._init_model(current_component_count) - gaussian_mixture_model_temp: Optional[GaussianMixture] = None + gaussian_mixture_model = self._init_model(current_component_count) + gaussian_mixture_model_temp = None gaussian_mixture_model.fit(train) likelihood = [float("-inf"), gaussian_mixture_model.score(valid)] @@ -269,16 +271,13 @@ def _construct_neighborhood(self, X: np.ndarray, y: np.ndarray) -> None: neigh_clf: NearestNeighbors = NearestNeighbors(n_neighbors=self.k_neighbors + 1).fit(X) nearest_neighbor_idxs: np.ndarray = neigh_clf.kneighbors(X, return_distance=False)[:, 1:] self.neighborhood = dict() - sample_idx: int neigh_samples: np.ndarray for sample_idx, neigh_samples in enumerate(nearest_neighbor_idxs): neigh_counts: Counter = Counter(y[neigh_samples]) self.neighborhood[sample_idx] = self._check_sample_neighborhood(y[sample_idx], neigh_counts) - def _check_sample_neighborhood(self, sample_class: int, neigh_counts: Counter) -> float: - neighborhood: float = 0.0 - neigh_class: int - count: int + def _check_sample_neighborhood(self, sample_class: int, neigh_counts: Counter[int]) -> float: + neighborhood = 0.0 for neigh_class, count in neigh_counts.items(): class_sizes: List = [ self.class_sizes[sample_class], @@ -294,19 +293,16 @@ def _construct_maj_int_min(self) -> None: middle_size = self._get_middle_size_based_on_strategy() self._fill_maj_int_min(middle_size) - def _get_middle_size_based_on_strategy(self) -> np.ndarray: - middle_size: np.ndarray + def _get_middle_size_based_on_strategy(self) -> int: if self.strategy == "median": - middle_size = np.median(list(self.class_sizes.values())) + middle_size = int(np.median(list(self.class_sizes.values()))) elif self.strategy == "average": - middle_size = np.mean(list(self.class_sizes.values())) + middle_size = np.mean(list(self.class_sizes.values()), dtype=int) else: raise ValueError(f'Unrecognized {self.strategy}. Only "median" and "average" are allowed.') return middle_size - def _fill_maj_int_min(self, middle_size) -> None: - class_label: int - class_size: int + def _fill_maj_int_min(self, middle_size: int) -> None: for class_label, class_size in self.class_sizes.items(): if class_size == middle_size: class_group = "int" @@ -318,9 +314,9 @@ def _fill_maj_int_min(self, middle_size) -> None: self.maj_int_min[class_group].append(class_label) def _set_size_to_align(self) -> None: - maj_q: List = [self.class_sizes[k] for k in self.maj_int_min["maj"]] - min_q: List = [self.class_sizes[k] for k in self.maj_int_min["min"]] - int_q: List = [self.class_sizes[k] for k in self.maj_int_min["int"]] + maj_q = [self.class_sizes[k] for k in self.maj_int_min["maj"]] + min_q = [self.class_sizes[k] for k in self.maj_int_min["min"]] + int_q = [self.class_sizes[k] for k in self.maj_int_min["int"]] if len(maj_q) == 0 and len(min_q) > 0: self.size_to_align = np.mean(min_q, dtype=int) @@ -345,9 +341,9 @@ def _init_model(self, n_components: int) -> GaussianMixture: ) def _perform_step(self, n_components: int, likelihood: float, num_samples: int) -> bool: - likelihood_condition: bool = likelihood >= self.likelihood_threshold - max_components_condition: bool = self.max_components is None or n_components <= self.max_components - num_samples_condition: bool = n_components < num_samples + likelihood_condition = likelihood >= self.likelihood_threshold + max_components_condition = self.max_components is None or n_components <= self.max_components + num_samples_condition = n_components < num_samples return likelihood_condition and max_components_condition and num_samples_condition def _resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: @@ -357,9 +353,8 @@ def _resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarra return X, y def _oversample_each_minority_class(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: - X_copy: np.ndarray = X.copy() - y_copy: np.ndarray = y.copy() - minority_class: int + X_copy = X.copy() + y_copy = y.copy() for minority_class in self.minority_classes: self.__x_subset = X_copy[y_copy == minority_class] X, y = self._oversample(X_copy, y_copy, minority_class) @@ -367,16 +362,13 @@ def _oversample_each_minority_class(self, X: np.ndarray, y: np.ndarray) -> Tuple return X, y def _oversample(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> Tuple[np.ndarray, np.ndarray]: - means: np.ndarray - covariances: np.ndarray means, covariances = self._get_coefficients(self.gaussian_mixtures[minority_class]) probabilities = self._get_probas_for_samples_in_component(X, y, minority_class) - - quantity_to_generate: int = self.size_to_align - self.__x_subset.shape[0] + quantity_to_generate = self.size_to_align - self.__x_subset.shape[0] for component in range(self.gaussian_mixtures[minority_class].n_components): Nk: np.ndarray = probabilities[component] * quantity_to_generate - x: np.ndarray = self._create_samples(means[component], covariances[component], int(Nk)) + x = self._create_samples(means[component], covariances[component], int(Nk)) X = np.append(X, x, axis=0) y = np.append(y, np.full((x.shape[0],), fill_value=minority_class), axis=0) @@ -384,7 +376,7 @@ def _oversample(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> Tupl def _get_probas_for_samples_in_component(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> np.ndarray: X_prob: np.ndarray = self.gaussian_mixtures[minority_class].predict_proba(X[y == minority_class]) - ratios: np.ndarray = np.array([v for k, v in self.neighborhood.items() if y[k] == minority_class]) + ratios = np.array([v for k, v in self.neighborhood.items() if y[k] == minority_class]) ratios = ratios[..., np.newaxis] probabilities: np.ndarray = np.sum((1.0 - ratios) * X_prob, axis=0) + 1e-8 probabilities = probabilities / np.sum(probabilities, keepdims=True) @@ -409,19 +401,19 @@ def _get_coefficients(self, gaussian_mixture: GaussianMixture) -> Tuple[np.ndarr return means, covariances def _create_samples(self, mean: np.ndarray, covariance: np.ndarray, target_size: int) -> np.ndarray: - result: np.ndarray = np.empty((0, self.__x_subset.shape[1]), float) - iterations: int = 0 - threshold_dist: float = self.filter_new + result = np.empty((0, self.__x_subset.shape[1]), float) + iterations = 0 + threshold_dist = self.filter_new while (result.shape[0] != target_size) and (iterations < self.iterations_after_filtration): iterations += 1 - size: int = max(target_size - result.shape[0], result.shape[1] + 1) - x: np.ndarray = np.random.multivariate_normal(mean, covariance, size=size) + size = max(target_size - result.shape[0], result.shape[1] + 1) + x = np.random.multivariate_normal(mean, covariance, size=size) if self.filter_new == -1.0: result = np.append(result, x, axis=0) break elif self.filter_new == 0.0: - mdist: np.ndarray = self._compute_mdist(self.__x_subset, mean, covariance) - threshold_dist: float = float(np.mean(mdist)) + mdist = self._compute_mdist(self.__x_subset, mean, covariance) + threshold_dist = float(np.mean(mdist)) mdist = self._compute_mdist(x, mean, covariance)[: x.shape[0]] x = x[mdist < threshold_dist] @@ -432,29 +424,27 @@ def _create_samples(self, mean: np.ndarray, covariance: np.ndarray, target_size: return result def _compute_mdist(self, in_data: np.ndarray, mean: np.ndarray, covariance: np.ndarray) -> np.ndarray: - mdist: np.ndarray try: - data: np.ndarray = in_data + data = in_data if data.shape[0] < self.cdist_min_count: - data: np.ndarray = np.concatenate((in_data, in_data), axis=0) + data = np.concatenate((in_data, in_data), axis=0) mdist = cdist(data, [mean], metric="mahalanobis", VI=np.linalg.inv(covariance))[:, 0] except Exception as e: - print(f"Can't compute 'cdist' function. Distance threshold is set to 2.0") - print(f"For more information, examine exception: {e}") + self.__logger.error("Can't compute 'cdist' function. Distance threshold is set to 2.0") + self.__logger.info(f"For more information, examine exception: {e}") mdist = np.full_like(in_data, fill_value=2.0)[:, 0] return mdist def _undersample_majority_classes(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: - maj_class: int for maj_class in self.maj_int_min["maj"]: X, y = self._undersample(X, y, maj_class) return X, y def _undersample(self, X: np.ndarray, y: np.ndarray, class_id: int) -> Tuple[np.ndarray, np.ndarray]: - class_idxs: np.ndarray = np.where(y == class_id)[0] + class_idxs = np.where(y == class_id)[0] sorted_neigh = sorted(self.neighborhood.items(), key=lambda item: item[1]) - class_idxs: List = [k for k, v in sorted_neigh if k in class_idxs] - size: int = max(0, int(self.class_sizes[class_id] - self.size_to_align)) + class_idxs = [k for k, _ in sorted_neigh if k in class_idxs] + size = max(0, int(self.class_sizes[class_id] - self.size_to_align)) X = np.delete(X, class_idxs[:size], axis=0) y = np.delete(y, class_idxs[:size], axis=0) From 263a7225ef8a34218b3cf7a8ccba8723f3142a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sun, 23 Apr 2023 11:53:00 +0200 Subject: [PATCH 40/48] add more tests --- multi_imbalance/resampling/gmm_sampler.py | 8 +- pyproject.toml | 1 + tests/resampling/test_gmm_sampler.py | 99 ++++++++++++++++++++--- 3 files changed, 95 insertions(+), 13 deletions(-) diff --git a/multi_imbalance/resampling/gmm_sampler.py b/multi_imbalance/resampling/gmm_sampler.py index de1ccd3..8c4ba78 100644 --- a/multi_imbalance/resampling/gmm_sampler.py +++ b/multi_imbalance/resampling/gmm_sampler.py @@ -279,7 +279,7 @@ def _construct_neighborhood(self, X: np.ndarray, y: np.ndarray) -> None: def _check_sample_neighborhood(self, sample_class: int, neigh_counts: Counter[int]) -> float: neighborhood = 0.0 for neigh_class, count in neigh_counts.items(): - class_sizes: List = [ + class_sizes = [ self.class_sizes[sample_class], self.class_sizes[neigh_class], ] @@ -388,12 +388,12 @@ def _get_coefficients(self, gaussian_mixture: GaussianMixture) -> Tuple[np.ndarr if self.covariance_type == "tied": covariances = np.array([covariances] * gaussian_mixture.n_components) elif self.covariance_type == "diag": - cov_list: List = [] + cov_list = [] for component in range(gaussian_mixture.n_components): cov_list.append(np.diagflat(covariances[component, :])) covariances = np.array(cov_list) elif self.covariance_type == "spherical": - cov_list: List = [] + cov_list = [] for component in range(gaussian_mixture.n_components): var = np.array([covariances[component]] * self.__x_subset.shape[1]) cov_list.append(np.diagflat(var)) @@ -431,7 +431,7 @@ def _compute_mdist(self, in_data: np.ndarray, mean: np.ndarray, covariance: np.n mdist = cdist(data, [mean], metric="mahalanobis", VI=np.linalg.inv(covariance))[:, 0] except Exception as e: self.__logger.error("Can't compute 'cdist' function. Distance threshold is set to 2.0") - self.__logger.info(f"For more information, examine exception: {e}") + self.__logger.error(f"For more information, examine exception: {e}") mdist = np.full_like(in_data, fill_value=2.0)[:, 0] return mdist diff --git a/pyproject.toml b/pyproject.toml index b0e5458..3e75717 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,7 @@ dependencies = [ "matplotlib~=3.6.2", "click~=8.1.3", "scikit-posthocs~=0.7.0", + "pydantic~=1.10.5", ] [project.optional-dependencies] diff --git a/tests/resampling/test_gmm_sampler.py b/tests/resampling/test_gmm_sampler.py index f1d597f..caff78a 100644 --- a/tests/resampling/test_gmm_sampler.py +++ b/tests/resampling/test_gmm_sampler.py @@ -1,6 +1,7 @@ +import logging import numpy as np import pytest -from collections import Counter +from collections import Counter, OrderedDict from multi_imbalance.resampling.gmm_sampler import GMMSampler @@ -45,8 +46,8 @@ @pytest.fixture() def gmm_sampler_mock(): - def _get_parametrized_gmm_sampler(X, y, undersample): - gmm_sampler = GMMSampler(undersample=undersample) + def _get_parametrized_gmm_sampler(*args, **kwargs) -> GMMSampler: + gmm_sampler = GMMSampler(*args, **kwargs) return gmm_sampler return _get_parametrized_gmm_sampler @@ -57,13 +58,14 @@ def get_goal_quantity(y): return np.mean((quantities[minority_class], quantities[majority_class]), dtype=int) +@pytest.mark.parametrize("strategy, filter_new", [("median", 1.0), ("average", 0.0)]) @pytest.mark.parametrize("X, y", complete_test_data) -def test_output_length_with_undersample(X, y, gmm_sampler_mock): - gmm_sampler = gmm_sampler_mock(X, y, True) +def test_output_length_with_undersample(X, y, strategy, filter_new, gmm_sampler_mock): + gmm_sampler = gmm_sampler_mock(undersample=True, strategy=strategy, filter_new=filter_new) resampled_X, resampled_y = gmm_sampler.fit_resample(X, y) y_resampled_count = Counter(resampled_y) - for _, quantity in y_resampled_count.items(): + for quantity in y_resampled_count.values(): assert quantity == get_goal_quantity(y) assert len(resampled_X) == get_goal_quantity(y) * num_classes @@ -72,8 +74,8 @@ def test_output_length_with_undersample(X, y, gmm_sampler_mock): @pytest.mark.parametrize("X, y", complete_test_data) def test_output_length_without_undersample(X, y, gmm_sampler_mock): - gmm_sampler = gmm_sampler_mock(X, y, False) - resampled_X, resampled_y = gmm_sampler.fit_resample(X, y) + gmm_sampler = gmm_sampler_mock(undersample=False) + _, resampled_y = gmm_sampler.fit_resample(X, y) y_count = Counter(y) y_resampled_count = Counter(resampled_y) @@ -83,9 +85,88 @@ def test_output_length_without_undersample(X, y, gmm_sampler_mock): def test_perform_step_condition(gmm_sampler_mock): - gmm_sampler = GMMSampler() + gmm_sampler = gmm_sampler_mock() assert gmm_sampler._perform_step(n_components=2, likelihood=1.0, num_samples=3) assert not gmm_sampler._perform_step(n_components=2, likelihood=-1.0, num_samples=3) assert not gmm_sampler._perform_step(n_components=2, likelihood=1.0, num_samples=1) gmm_sampler.max_components = 1 assert not gmm_sampler._perform_step(n_components=4, likelihood=1.0, num_samples=3) + + +def test_minority_classes(gmm_sampler_mock): + minority_classes = [0, 1] + gmm_sampler = gmm_sampler_mock(minority_classes=minority_classes) + + assert gmm_sampler.minority_classes == minority_classes + + +@pytest.mark.parametrize( + "maj_int_min, expected_size", + [ + ({"maj": [], "int": [], "min": [1]}, 6), + ({"maj": [1], "int": [], "min": []}, 6), + ({"maj": [], "int": [1], "min": []}, 6), + ], +) +def test_set_size_to_align(gmm_sampler_mock, expected_size, maj_int_min): + gmm_sampler = gmm_sampler_mock() + gmm_sampler.class_sizes = Counter(y_imb_hard) + gmm_sampler.maj_int_min = OrderedDict(maj_int_min) + + gmm_sampler._set_size_to_align() + assert gmm_sampler.size_to_align == expected_size + + +def test_compute_mdist(gmm_sampler_mock, caplog): + caplog.set_level(logging.ERROR) + gmm_sampler = gmm_sampler_mock() + mean = [0, 0] + covariance = np.eye(2) + x = np.random.multivariate_normal(mean, covariance, size=2) + + gmm_sampler._compute_mdist(x, mean, np.ones((2, 2))) + + no_exception_check = 0 + for record in caplog.records: + if record.levelname == "ERROR": + msg = record.message + no_exception_check += ( + msg == "Can't compute 'cdist' function. Distance threshold is set to 2.0" + or msg == "For more information, examine exception: Singular matrix" + ) + + assert no_exception_check == 2 + + +@pytest.mark.parametrize( + "strategy, class_count, expected_middle_size", + [("median", [10, 6, 4], 6), ("median", [4, 12, 4], 4), ("average", [4, 4, 12], 6), ("average", [8, 4, 8], 6)], +) +def test_get_middle_size_based_on_strategy(strategy, class_count, expected_middle_size, gmm_sampler_mock): + gmm_sampler = gmm_sampler_mock(strategy=strategy) + + gmm_sampler._fit(X, np.array([*[0] * class_count[0], *[1] * class_count[1], *[2] * class_count[2]])) + middle_size = gmm_sampler._get_middle_size_based_on_strategy() + assert middle_size == expected_middle_size + + +def test_get_middle_size_based_on_strategy_exception(gmm_sampler_mock): + gmm_sampler = gmm_sampler_mock() + gmm_sampler.strategy = "min" + + with pytest.raises(ValueError) as ex: + gmm_sampler._get_middle_size_based_on_strategy() + + assert str(ex.value) == 'Unrecognized min. Only "median" and "average" are allowed.' + + +def test_set_size_to_align_exception(gmm_sampler_mock): + maj_int_min = {"maj": [], "int": [], "min": []} + gmm_sampler = gmm_sampler_mock() + gmm_sampler.class_sizes = Counter(y_imb_hard) + gmm_sampler.maj_int_min = OrderedDict(maj_int_min) + + with pytest.raises(ValueError) as ex: + gmm_sampler._set_size_to_align() + + assert str(ex.value) == "Bad input - can not obtain desire size." From 693b8ffee1747648b4e86bc094021c34f78b51fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Sun, 23 Apr 2023 11:58:53 +0200 Subject: [PATCH 41/48] add future annotations --- multi_imbalance/resampling/gmm_sampler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/multi_imbalance/resampling/gmm_sampler.py b/multi_imbalance/resampling/gmm_sampler.py index 8c4ba78..3421bc3 100644 --- a/multi_imbalance/resampling/gmm_sampler.py +++ b/multi_imbalance/resampling/gmm_sampler.py @@ -1,3 +1,4 @@ +from __future__ import annotations from collections import OrderedDict, Counter from copy import deepcopy from typing import Optional, List, Dict, Tuple, Any, TypeVar From 91f6b582f1d435fce28ec816f6ad4630fe006a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Mon, 24 Apr 2023 17:52:57 +0200 Subject: [PATCH 42/48] add example notebook --- examples/resampling/GMMSampler.ipynb | 257 +++++++++++++++++++++++++++ 1 file changed, 257 insertions(+) create mode 100644 examples/resampling/GMMSampler.ipynb diff --git a/examples/resampling/GMMSampler.ipynb b/examples/resampling/GMMSampler.ipynb new file mode 100644 index 0000000..c1c369d --- /dev/null +++ b/examples/resampling/GMMSampler.ipynb @@ -0,0 +1,257 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "Unzip datasets and prepare data:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.49 0.29 0.48 0.5 0.56 0.24 0.35]\n", + " [0.07 0.4 0.48 0.5 0.54 0.35 0.44]\n", + " [0.56 0.4 0.48 0.5 0.49 0.37 0.46]\n", + " [0.59 0.49 0.48 0.5 0.52 0.45 0.36]\n", + " [0.23 0.32 0.48 0.5 0.55 0.25 0.35]]\n", + "[0 0 0 0 0]\n" + ] + } + ], + "source": [ + "from collections import Counter\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.decomposition import PCA\n", + "\n", + "from multi_imbalance.datasets import load_datasets\n", + "from multi_imbalance.resampling.gmm_sampler import GMMSampler\n", + "from multi_imbalance.utils.data import construct_flat_2pc_df\n", + "\n", + "%matplotlib inline\n", + "sns.set_style(\"darkgrid\")\n", + "\n", + "%matplotlib inline\n", + "sns.set_style(\"darkgrid\")\n", + "\n", + "dataset = load_datasets()[\"new_ecoli\"]\n", + "\n", + "X, y = dataset.data, dataset.target\n", + "print(X[:5])\n", + "print(y[:5])" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({0: 145, 1: 77, 2: 37, 3: 25, 4: 52})" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Counter(dataset.target)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Resample data using GMMSampler algorithm" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "clf = GMMSampler(minority_classes=[2, 3])\n", + "resampled_X, resampled_y = clf.fit_resample(X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare results by plotting data in 2 dimensions" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABSgAAANVCAYAAAB7/RCtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9d5yddZ3//z/eVzllesvMZNJ7JwSQjlhQUXFX0F3LLijuYgVd3VV/LhbQRRTLftddlBVWxfJRV4Vd24oFEZBQDIYWUgmkTjK9nnZd1/v3x8m0zEwyk0w5SZ732y235FzXdc71PtfMmcx5ntf7/TLWWouIiIiIiIiIiIjINHCmewAiIiIiIiIiIiJy6lJAKSIiIiIiIiIiItNGAaWIiIiIiIiIiIhMGwWUIiIiIiIiIiIiMm0UUIqIiIiIiIiIiMi0UUApIiIiIiIiIiIi00YBpYiIiIiIiIiIiEwbBZQiIiIiIiIiIiIybRRQioiIiIiIiIiIyLTxpnsAIiIiIiIiIjLUlVdeyaOPPjpkW2lpKStXruTaa6/l7LPPnqaRiYhMPAWUIiIiIiIiIgVo5cqVfOpTnwIgDEPa2tr4/ve/z9/93d9x1113sWTJkmkeoYjIxFBAKSIiIiIiIlKASkpKOP3004dsO//88znvvPO46667+OhHPzo9AxMRmWBag1JERERERETkBJFMJonH4xhjgHxl5de//nUuu+wyTjvtNE4//XTe/OY38/DDD/ffJ51Oc8MNN/DiF7+Y1atXc+mll/Jf//VfQx63vb2dT37yk5x//vmsWbOGv/7rv2b9+vVT+txE5NSlCkoRERERERGRAmStJQiC/n+3t7dz5513ks1mecMb3gDAF7/4Rb7//e/zj//4jyxbtowDBw5w66238oEPfID77ruPZDLJZz/7WR588EE++tGPUlNTw/33388tt9xCRUUFb3jDG8hkMrztbW+jubmZD37wg9TW1vKTn/yEv//7v+eOO+7gvPPOm87LICKnAAWUIiIiIiIiIgXoscceY9WqVcO2f+hDH2LRokUAHDx4kA9+8INceeWV/fvj8TjXXXcdW7Zs4fTTT+fRRx/lggsu4LWvfS0A55xzDkVFRVRXVwPwv//7v2zevJn//u//Zu3atQC8+MUv5sorr+SLX/wiP/nJTyb7qYrIKU4BpYiIiIiIiEgBWrVqFTfeeCOQr6Ds7Ozk/vvv51//9V/p7e3lgx/8IF/60pcAaG1t5bnnnuOFF17g97//PQDZbBbIB5I/+MEPaGxs5OKLL+biiy/mfe97X/951q9fz4wZM1i1alV/xSbAS1/6Um655RY6OjooLy+fqqctIqcgBZQiIiIiIiIiBai4uJg1a9YM2XbhhRfS29vLHXfcwVVXXcW+ffu48cYbeeqpp0gmkyxevJiGhgYgH2oCXH/99dTX1/PTn/6Uz3zmM3zmM59h3bp13HDDDSxfvpz29naamppGrNYEaGpqUkApIpNKAaWIiIiIiIjICWT16tX86Ec/YseOHVx33XUsW7aMX/ziFyxcuBDHcfjDH/7APffc0398LBbjPe95D+95z3vYt28fv//97/nqV7/KP/7jP/KLX/yC0tJS5s+fzxe/+MURzzd79uypemoicopSF28RERERERGRE8iTTz6J67rE43Ha29u56qqrWLx4MY6Tf4t///33AxBFEel0mle96lV84xvfAKChoYG/+Zu/4bWvfS379u0D4Oyzz2b//v1UV1ezZs2a/j9//OMfueOOO3Bdd3qeqIicMlRBKSIiIiIiIlKAuru72bhxY//tbDbLvffey09+8hPe9KY3sXDhQkpKSrjtttvwPA/P87jnnnv48Y9/DEAqlSKRSLBq1Sr+4z/+A9/3WbZsGTt37uTuu+/mVa96FQBXXHEF3/3ud7n66qt597vfzcyZM3nooYe4/fbb+du//Vt835+Opy8ipxBj+xalEBEREREREZGCcOWVV/Loo48O2RaPx5k7dy6XXXYZf/d3f4fv+zzyyCPccsstbN++neLiYlasWMF73/terrnmGt785jfzkY98hO7ubv6//+//43e/+x1NTU1UV1fzmte8hg984AMkEgkAWlpa+NKXvsR9991HV1cXs2bN4o1vfCPveMc7+iszRUQmiwJKERERERERERERmTb6GERERERERERERESmjQJKERERERERERERmTYKKEVERERERERERGTaKKAUERERERERERGRaaOAUkRERERERERERKaNAkoRERERERERERGZNgooRUREREREREREZNoooBQREREREREREZFp4033AKZbS0sX1k73KERERETGxxiori6d7mHIBCiE30f7vp8KYSyFTtdq7HStxk7Xaux0rcZO12rsdK3GZ/D1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Durq6mhubh5yv+bm5mHNdMbCWo4aUMrU09dERERERERORCNVJY6lIjHojQj3ePgzI3Jo3UcRObUUXEBZV1fHr3/96yHbrrzySq688kr+4i/+AoC1a9eyYcMGrrjiCgD279/P/v37Wbv25GuzLiIiIiIiIieOkaoSj1aR6FuP5g0hrVtylC5yKV3tTXlIOThY1bRuEZlqBRdQep7HvHnzhm2rrq6mrq4OgLe85S1ceeWVnH766axZs4abbrqJl7zkJcyZM2c6hiwiIiIiIiJyTHzr0fk0ZPaEAHTuCIGpDymHBKsKJ0VkihVcQDkW69at49Of/jRf+cpX6Ojo4IILLuAzn/nMdA9LREREREREpF9fVeJoFYl94WT3cyGx2MDb86kMKQd3HVeHcRGZLgUTUG7ZsmXUfffee++wbVdccUX/FG8RERERERGRQtNflThK6Gcih1x7OGSbg8EaS7bdYkIXJrnh9+Cu44XUYVxEJlcmk+HLX/48f/jDvcTjcd785it5y1v+dtrGUzABpYiIiIiIiMiJrK8acayViFk3S835MZofAtsNxjrk2i0l812qz3PIutkpGLWInIq++tV/Y/PmZ/m3f7uNxsb93HTTDdTX1/PSl14yLeNxpuWsIiIiIiIiIieZvmrEvinTY5EPKV38Msi2WfxyQ9Ech7AbjDGTMs6UY2gMQxrDkOZ0rn97czpHYxiScibnvCIyiijCfWEv3jPbcF/YC1E0qadLpVL87Gf/ywc+8I8sW7aciy9+KW9965X85Cf/PannPRJVUIqIiIiIDJLJZLjxxhv59a9/TSKR4B3veAfveMc7jnifPXv28LrXvY7bbruNc845Z4pGKlKYYmbqO1BPBGPAT8ewviXn5I5+hwlWusAlCizJWQ6tm3JgoP4in6gih7UTuy7k4Gndg929oxHQVG+RqeRteY74bx7E6erp3xaVFpN5xYUEyxZOyjm3b99KGAasWbO2f9tpp53Ot7/9TaIownGmvp5RFZQiIiIiIoPccsstPP3009x555186lOf4j/+4z/41a9+dcT73HDDDfT29k7RCEUKVyyI0f4Y+JkYk1T8NymMAS8Vo/EPAa2PRfiRP+b7jlSN2FeJOJZqxJj1aXkspPWpELccWjcH2AhsCI0P5PB7T6xrKSJj5215jsRd92AGhZMApquHxF334G15blLO29LS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iIiIiIiI9BvPMzQG07AnjMGeNBZjDK5rQOGkiMigpYBSRERERERE+p3nGTxPqaSIiGgOShEREREREREREUkiBZQiIiIiIiIiIiKSNAooRUREREREREREJGkUUIqIiIiIiIiIiEjSKKAUERERERERERGRpBnQAWU4HObaa6/l0EMPZd68eTzyyCPJLklERERERERERER6wJfsAvbHnXfeyfLly3nsscfYunUr3/ve9xg2bBgLFy5MdmkiIiIiIiIiIiLSDQM2oGxqauLpp5/mwQcfZNq0aUybNo3Vq1fz+OOPK6AUEREREREREREZIAbsEO+VK1cSi8WYNWtWYtucOXNYtmwZnuclsTIRERERERERERHprgHbg7KiooK8vDwCgUBiW2FhIeFwmNraWvLz87v1PLYNxnTvmL6SQiz/gG2ylOcU5CZ+tvsoOs8vnIDPF+qbJxeyc0ckfu6Lczghfxghn7/3n1gAGJE9JPFzX30Gx+dnE/I5ffPkwvDsjMTPfXUOM4p92H6rb55cSMvf9fnY2zm0dBoOGKlwLuM1pEItqU5t1X1qq+5TW3Wf2qr71Fbdp7bqmb5oL8uY7sZzqeX555/npz/9Kf/4xz8S20pLSznhhBN47bXXKCkpSWJ1IiIiIiIiIiIi0h0Ddoh3MBgkEom02xa/HQqph5yIiIiIiIiIiMhAMGADyuLiYmpqaojFYoltFRUVhEIhsrOzk1iZiIiIiIiIiIiIdNeADSinTJmCz+fjgw8+SGxbunQpM2bMwO6ribdERERERERERESkVw3YJC8tLY0zzzyTG2+8kQ8//JBXX32VRx55hAsvvDDZpYmIiIiIiIiIiEg3DdhFcgCam5u58cYb+ctf/kJmZiYXX3wxX/3qV5NdloiIiIiIiIiIiHTTgA4oRUREREREREREZGAbsEO8RUREREREREREZOBTQCkiIiIiIiIiIiJJo4BSREREREREREREkkYB5QEoHA5z7bXXcuihhzJv3jweeeSRZJck+yASiXD66aezZMmSZJciPVReXs6iRYuYO3cu8+fP57bbbiMcDie7LOmBjRs3cvHFFzNr1iw+85nP8NBDDyW7JNlHl112Gf/f//f/JbsMkZRjjOGuu+7iiCOOYO7cudx55514ntfl/lu3buXSSy9l5syZnHjiibz88sv9WG1y9bSt4urr65k/fz7PPvtsP1SZGnraVh988AHnnnsus2bN4uSTT+bpp5/ux2r7X0+u01asWMH/+3//j5kzZ/L5z3+e5cuX92OlydeTtvrnP//J5z73OWbNmsUZZ5zB3/72t36sNPn25fp/8+bNzJo1a9Bda/akrVatWsV5553HwQcfzBlnnMHbb7/dj5Wmhp6011//+ldOOeUUZs2axXnnncfHH3/c4+MpoDwA3XnnnSxfvpzHHnuMG264gfvuu49XXnkl2WVJD4TDYb7zne+wevXqZJciPWSMYdGiRTQ3N/P4449zzz338I9//IOf/OQnyS5NusnzPC677DLy8vJ47rnnuOmmm/j5z3/OCy+8kOzSpIdeeuklXnvttWSXIZKSHn30UV588UXuu+8+7r33Xl544QUeffTRTveNxWJcfvnl+Hw+nnvuOS6++GKuvvpqPv30036uOjl60lZtLV68mO3bt/dDhamjJ21VUVHBpZdeyty5c3nuuedYtGgRt9xyC//85z/7t+h+1N3rtKamJi677DIOPfRQnn32WWbNmsXll19OU1NTEqpOju621cqVK7nyyiv5/Oc/z/PPP8+5557Lt771LVauXJmEqpNjX67/b7zxxkH1forrblvV19dz0UUXMWHCBF544QVOPPFErrzySqqqqpJQdfJ0t71Wr17N//zP/3D55Zfzhz/8gSlTpnD55ZfT3NzcswMaOaA0NjaaGTNmmLfffjux7Wc/+5k5//zzk1iV9MTq1avNZz/7WXPGGWeYSZMmtTuXkvrWrFljJk2aZCoqKhLbXnjhBTNv3rwkViU9UV5ebr71rW+Z+vr6xLYrrrjC3HDDDckrSnqspqbGHHPMMebzn/+8+d73vpfsckRSzrHHHmueeeaZxO3nn3/eHHfccZ3u++qrr5o5c+a0+734jW98wzz11FN9Xmcq6Elbxb377rvmxBNPNEcffXS7xx7oetJWTzzxhFm4cGG7bddff735zne+06c1JktPrtOefvpps2DBAuN5njHGGM/zzIknnjho3ks9aavFixebiy++uN22iy66yNx99919Xmcq2Jfr/z/84Q/m3HPPHXTXmj1pq8cee8yccMIJJhaLJbadffbZ5p///Ge/1JoKetJejz76qDnrrLMSt+vr682kSZPMhx9+2KNjqgflAWblypXEYjFmzZqV2DZnzhyWLVvWraEoknzvvPMO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/LsX15P2KioqYu3ate22rV+/PvHHqu5SYnWASUtL48wzz+TGG2/kww8/5NVXX+WRRx7pciiGiPSutWvXcv/993PppZcyZ84cKioqEv/JwDBjxgymTZvGtddey5o1a3jttddYvHjxoBnOMdANHz6c0aNHJ/7LyMggIyOD0aNHJ7s0kZRy3nnncdddd7FkyRKWLFnCj3/843bfF6urq2lsbATg9NNPx/M8brrpJjZu3Mjjjz/OG2+8wRe+8IVkld+vuttWPp+v3e+f0aNH4/P5KCgoGDShSU/eV7///e9ZsmQJP/zhD8nOzk58XzpQF/bc23VaRUUFLS0tACxcuJAdO3Zw6623smbNGm699Vaam5s55ZRTkvkS+k1P2uoXv/gFmzZtSvRajr+PBssq3t1tq1Ao1OH3E7T+YaEncwQOZD15X5177rmsWrWK//3f/2Xjxo389Kc/pbS0lM997nPJfAn9qift9YUvfIHf/e53PP/882zcuJG77rqLrVu3ctZZZ/XsoEYOOE1NTebqq682hxxyiJk3b5559NFHk12S7KNJkyaZt99+O9llSA/84he/MJMmTer0Pxk4ysrKzBVXXGFmz55tjj76aPPzn//ceJ6X7LJkH3zve98z3/ve95JdhkjKicVi5kc/+pE59NBDzeGHH24WL17c7vfccccdZ+69997E7dWrV5svf/nLZvr06eakk04yf/7zn5NRdlL0tK3aOu6448wzzzzTX6UmXU/a6qKLLur0+9L555+frPL73J6u0yZNmtTuvbJs2TJz5plnmhkzZphzzjnHfPzxx0moOHm621Ynn3xyp++jwfRvf0/eV20NxmvNnrTVe++9Z8466ywzffp087nPfc688847Sag4uXrSXr/73e/MwoULzSGHHGLOO+88s3z58h4fzzJmZ79xERERERERERERkX6mId4iIiIiIiIiIiKSNAooRUREREREREREJGkUUIqIiIiIiIiIiEjSKKAUERERERERERGRpFFAKSIiIiIiIiIiIkmjgFJERERERERERESSRgGliIiIiIiIiIiIJI0CShEREREREREREUkaBZQiIiIiIiIiB7BIJMLpp5/OkiVLkl2KiEinFFCKiIiIiIiIHKDC4TDf+c53WL16dbJLERHpkgJKERERERERkQPQmjVr+MIXvsCmTZuSXYqIyB4poBQREREREREZoJ5++mmmT5/Oxo0bAVi7di0zZszg1Vdf5Z133uHwww/nt7/9bZKrFBHZM8sYY5JdhIiIiIiIiIj0nDGGCy+8kIyMDH7+859z/vnnU1JSwo9//ON2+02ePJlf/epXHH744UmqVESka+pBKSIiIiIiIjJAWZbFzTffzL///W+++93vsn79er7//e8nuywRkR5RQCkiIiIiIiIygI0dO5bLLruMF198kauvvpr8/PxklyQi0iMKKEVEREREREQGuJUrV+I4DkuWLEl2KSIiPaaAUkRERERERGQAe/XVV3nzzTd54IEHeOGFF3jrrbeSXZKISI8ooBQREREREREZoBoaGrjlllv4xje+wTHHHMP555/PDTfcQDgcTnZpIiLdpoBSREREREREZIC65557CIVCfO1rXwPgyiuvpKmpiZ/97GdJrkxEpPssY4xJdhEiIiIiIiIiIiIyOKkHpYiIiIiIiIiIiCSNAkoRERERERERERFJGgWUIiIiIiIiIiIikjQKKEVERERERERERCRpFFCKiIiIiIiIiIhI0iigFBERERERERERkaRRQCkiIiIiIiIiIiJJo4BSREREREREREREkkYBpYiIiIiIiEgX1q5dyy233MLJJ5/MzJkzmTNnDueeey5PPPEEsVgssd+CBQuYPHky//M//9Plc33hC19g8uTJ/O///m9i2+TJk5k8eTJ33313p4/xPI/58+czefJknn322Xb3Pfvss5x77rnMnj2bmTNnctppp/HTn/6UhoaG/XzVveuCCy7gggsuSHYZIpLCfMkuQERERERERCQVvfzyy1xzzTWMHz+er33ta4wdO5aWlhZee+01fvSjH/HGG29w//33Y1kWALZt849//INwOEwwGGz3XJs3b2bZsmWdHse2bV555RW+853vdLjv3XffZfv27R2233fffTzwwANcdNFFfOMb38Dv97N8+XIeeugh3njjDZ588kn8fn8vtIKISN9TQCkiIiIiIiKym7Vr13LNNdcwf/58fvKTn+Dz7bp8PvbYYzn88MNZtGgRf/rTnzj11FMBmD17Nu+99x6vv/46J554Yrvne/nll5kyZQqffPJJh2PFH7dixQqmTp3a7r6XXnqpw+MikQgPPvggF198Md/+9rcT24866ijGjRvHFVdcwauvvsopp5zSK20hItLXFFCKiIiIiIiI7Oahhx7Ctm1uuummduFk3Mknn8yZZ57ZbtvIkSNpaWnhlVde6TSgPO200zoNKA877DA2bNjAK6+80i6gjMVi/OUvf+Hiiy9u97iGhgZaWlrwPK/Dcx177LF8+9vfZuTIkYltmzdv5t577+Xf//43NTU1ZGdnM3/+fK655hry8vKA1iHqZ599Njt27OAPf/gDkUiEBQsWcPPNN/P444/zm9/8hsbGRo466ihuvvnmdo8744wzaG5u5rnnnsO2bY499liuvfZacnNzO21bz/N46KGHePrpp9m2bRvDhw/n/PPPbzcM/IILLqC4uJhIJMLrr7/OrFmzePTRRzt9PhEZ+BRQioiIiIiIiOzmb3/7G0cccQQFBQVd7nPHHXd02Hbqqafys5/9rN0w73Xr1rFy5Uruv/9+7rrrrg6PcRyHk08+ucMw77feeotwOMyCBQvaPS4/P5+ZM2fy8MMPs337dk488URmz55Nfn4+fr+fr3/964l9m5ubufDCC8nLy+OGG24gKyuL999/n/vuu49QKMTNN9+c2PeRRx7h6KOP5p577mH58uX8+Mc/5uOPP6aoqIhbbrmFzZs3c+utt1JYWMgNN9yQeNwTTzzB6NGjue2226iurubHP/4xGzdu5KmnnkoMf2/rxhtv5Nlnn+Xyyy9n1qxZvPvuu/zoRz9ix44dXHHFFYn9/vSnP/HZz36Wn//8552GsSJy4FBAKSIiIiIiItJGXV0ddXV1jBkzpsN9bRfGAbAsC8dxErdPOeUUFi9e3G6Y98svv8ysWbMYNmxYl8c89dRTefzxx9sN83755Zc5/vjjO8xnCXDvvfdy9dVX8/zzz/P8889jWRYTJ07kxBNP5Ctf+Qo5OTkAbNiwgZKSEu64445Er8ojjjiCZcuW8c4777R7zszMTO655x58Ph9HHXUUzz33HOXl5Tz99NNkZWUB8MYbb/Cf//yn3eNs2+bRRx9N7JOfn88VV1zBG2+8wTHHHNNu3/Xr1/O73/2O73znO1x22WUAzJs3D8uy+MUvfsGXvvSlRO9Mv9/PTTfdRCAQ6LLdROTAoFW8RURERERERNroqrfexo0bmTZtWrv/dh/KPWzYMA455BBeeeWVxLaXX36Z008/fY/HnDNnDsXFxYnHRSIRXn311S4fV1JSwq9+9Steeuklvve973HssceyZcsWfvazn3HaaaexYcMGAKZMmcITTzzB8OHD2bBhA6+99hoPP/ww69atIxKJtHvOgw8+uN1w9sLCQsaOHZsIHgFyc3Opr69v97gFCxa022fBggX4fD7efffdDnW//fbbGGNYsGABsVgs8d+CBQsIh8MsXbo0se+4ceMUTooMEupBKSIiIiIiItJGXl4e6enpbNmypd32oUOH8vvf/z5x+2c/+xmffvpph8efcsop/PSnPyUcDrN+/Xo2bNjAwoUL93hMy7JYuHBhYpj3G2+8gW3bHH300ZSXl3f5uAkTJjBhwgQuuugiotEozz77LDfffDN333039957LwCPPvooDzzwALW1tRQWFjJ9+nTS0tI6BI2ZmZkdnj89PX2PdQMUFxe3u23bNnl5edTV1XXYt7a2FoDTTjut0+dq+1ozMjL2emwROTAooBQRERERERHZzYIFC/jHP/5BQ0NDIrgLBALMmDEjsU9Xi8AsXLiQ22+/nTfeeIOPPvpor3NZxp166qk89thjfPLJJ7z88sucdNJJ+P3+Dvs99thj/PznP+cf//gHaWlpie1+v58vfvGLvPbaa6xZswaAF154gdtvv52rrrqKs88+m/z8fAC+9a1v8dFHH3W7Pfakpqam3W3XdampqUkcq63s7OzEa+gsgNzTMHgROXBpiLeIiIiIiIjIbi677DJisRjXXXddh6HQAC0tLZSWlnb62OLiYubMmcMrr7zCn/70py57C+7ukEMOYfjw4fzhD3/g73//e5ePmzBhAjU1Nfz617/ucJ/rupSWljJp0iQAli5dSnZ2NpdcckkiMGxsbGTp0qW9tvDM66+/3q6N/va3vxGLxTjyyCM77HvooYcCraHmjBkzEv9VV1fz05/+NNHDUkQGF/WgFBEREREREdnN5MmTWbx4Mddccw1nn30255xzDpMnTyYWi/H+++/z+9//nsrKSi655JJOH3/KKadw2223YVkWJ510UrePu3DhQn71q1+Rm5vL3LlzO93n6KOP5vTTT+fuu+9m1apVnHzyyeTn51NWVsZTTz1FWVkZP/nJT4DWeSWffPJJbr/9do477ji2b9/Oww8/TGVlZWIhnf21bds2vvGNb3DhhReybds27r77bubPn8/hhx/eYd/Jkyfz2c9+luuvv54tW7Ywffp01q9fzz333MOIESM6XZhIRA58CihFREREREREOnHyySczffp0nnzySX7/+9+zZcsWjDGMHDmSU089lXPPPbfLQG3hwoXceuutfOYzn2m3gMzenHrqqTz88MOccsop2HbXgx4XL17M3Llz+eMf/8h1111HU1MT+fn5HH300dx2222JFbvPOussNm/ezDPPPMMTTzxBcXExxx57LF/60pe4/vrrWbt2LePHj+9Ru+zutNNOIzs7m//+7/8mPT2ds846i29/+9td7n/bbbfxi1/8IhGmFhQUcOqpp/Lf//3f7VZEF5HBwzLGmGQXISIiIiIiIiIDz4IFC5g7dy633357sksRkQFMc1CKiIiIiIiIiIhI0iigFBERERERERERkaTREG8RERERERERERFJGvWgFBERERERERERkaRRQCkiIiIiIiIiIiJJo4BSREREREREREREkkYBpYiIiIiIiIiIiCSNAkoRERERERERERFJGl+yC0i2qqp6tI65iIiIDDSWBQUFWckuQ3rB7t9H4+dW31N7Tm23f9R++05tt3/UfvtObbfv1Hb7J95+1dX15Ofv/3fSQR9QGoPeiCIiIiKSNF19H9X31H2ntts/ar99p7bbP2q/fae223dqu/3TW22nId4iIiIiIiIiIiKSNAooRUREREREREREJGkUUIqIiIiIiIiIiEjSDPo5KEVERERERERERPaVMQbPc/E8L9ml9DrbtrFtB8uy+vQ4CihFRERERERERET2QSwWpa6ummi0Jdml9JlAIER2dj4+n7/PjqGAUkREREREREREpIeMMVRVlWHbNjk5hTiOr897GvYnYwyuG6OhoZaqqjKKikb02etTQCkiIiIiIiIiItJDsVgUYzxycoYQCISSXU4fCeI4DtXV5cRiUfz+QJ8cRYvkiIiIiIiIiIiI7CPLOrDjtf54fQd2C4qIiIiIiEhSNNsWZa5Ls33gDHcUEZG+oYBSREREREREel1dNMaDH5dSF40luxQREUlxCihFREREREREREQkabRIjoiIiIiIiPSKZttK9JisbInu+v/OtSNy/D7SPJOs8kREJEUpoOwm27awNXdKn/M8g9dHX1h0DvtHX55DGdj0Gewf+gyKiEgyxYd1t/Xc2rLEz5dOG0ma4/R3WSIikuIUUHaDbVvk56ZjORoR39eM61Fd29TrF9e2bZGXl4Zt68tQX/M8l5qaZgUk0o5tW+TmpePY+j3a11zPo7am93+PioiIiIhI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9uzZ8VGWnbVrV0PCphOW1X6xdHC7HJ367tio/zpPfXdser7/Go5ynD702us89d2xOdB/u3c3dElIqYBSRERERPqMadOmsXr16sPetmPHDubMmUNtbS2lpaXAR9O+D94AZ+vWrXzwwQesXr2a73//+wA0Nzdz77338rvf/Y5HH320wzUdaVfcdN8t10/qu2Oj/us89d2xUf91nvqu89R3x6ar+k4BpYiIiIgIUFxcTElJCYsWLYoHlIsWLaKkpOSQ9SeLi4v54x//mNB2zTXXcM0113DhhRf2WM0iIqnCsizMx5IKy1LoIyIdp4BSRERERGS/K664ggcffJBBgwYB8IMf/IAbbrghfvvu3bsJh8NkZ2dTVlaW8L2BQICCggKKi4t7tGYREb/ZlkcsuoFguBjXZGPbFm7rJpxADh55fpcnPgs4rbheKB5YO3YUQwaepwRbPmL7XYCIiIiISKqYOXMm5513HrNmzeKWW25hxowZXHfddfHbL730Uh577DH/ChQRSTG25dHSuIJVi/+XmrUvEbCbiEU3sGbJY6xd/gQ29X6XKD6yrXo2VT0L3k4sCxy7iW0bfkusZR22re2z5SMaQSkiIiIisp/jONx5553ceeedh739z3/+8xG/95NuExHprSxaadi3AWNc6utW0NbaSEukllisGc+4xFr34ITzE6Z/S9/g2I2sW/EMjftqiDRuo6LyOjZveJPdtcvYXbeCMZP+HaxBfpcpKUIjKEVERERERESkU1yTQVHJmRSXfhqAxn2biMWasZ0QFeOvxQkPVzjZRxmyGFQ6HcuyibbsYel7P2F37TIACosmYDsD/C1QUooCShERERERERHpNGNlUlA0MaEtK6uIcNZgbZTTh3meTWZuJSNGX7q/pf3FkD+wkuKyc3G9DP+Kk5SjgFJEREREREREOsW2rf1rTs5NaG9s2MymqpdwrCafKpNUYNFMfd2KhLamhhq82D4sLUEpH6OAUkREREREREQ6xaKZnVv+Fp/WPXrCTIqHfAqAPbtW0dq8RZuh9FGO3cTmta/Ep3X3yx0an+5dtfQx8Gp9rlBSiTbJEREREREREZFOcb0Mhgy/EOO5FA35NIGMcopL24OorJwhBDNH4nma590XGYJk9xvC7tplFJdMY1DZOTTtXcPalc8TzizAtsO4emnIfgooRURERERERKTTXNOP0vLL8EwGxoBLBgOHnAUE8Yzjd3niE88LkVc0nazsQYSzhxNzM8jMraSiMpNw5iBck+t3iZJCFFCKiIiIiIiIyDE5eMMTz2gDFAHXCxLKHou7fxSt59mEso6PH4scoDUoRURERERERESkWxw8xV9T/uVwFFCKiIiIiIiIiIiIbxRQioiIiIiIiIiIiG8UUIqIiIiIiIiIiIhvFFCKiIiIiIiIiIiIbxRQioiIiIiIiIiIiG/SOqCMRqPcddddTJkyhenTp/PYY4/5XZKIiIiIiIiIiIgkIeB3AcfigQceYNmyZTz++ONs3bqVO+64g5KSEs455xy/SxMREREREREREZEOSNuAMhKJ8OKLL/KrX/2KcePGMW7cOKqqqnj66acVUIqIiIiIiIiIiKSJtJ3ivWrVKmKxGJMmTYq3TZ48mcWLF+N5no+ViYiIiIiIiIiISEel7QjK2tpa8vLyCIVC8bbCwkKi0Sh79uwhPz+/Q49j22BMx54zMKgQK5i2XZbynIIB8a/tborO8wvLCQQyuufBhdwBpfGvu+MclueXkBEIdv0DCwCluQPjX3fXz+DI/FwyAk73PLgwJDc7/nV3ncPs4gB20OqeBxcy8z/6+TjaObR0GnqNg8/lgWOd4+Sp746N+q/z1HfHRv3Xeeq7zlPfHZuu7j/LmI7Gc6ll3rx5/OQnP+Gtt96Kt9XU1HDmmWfy9ttvM2jQIB+rExERERERERERkY5I2yne4XCY1tbWhLYDxxkZGiEnIiIiIiIiIiKSDtI2oCwuLqa+vp5YLBZvq62tJSMjg9zcXB8rExERERERERERkY5K24ByzJgxBAIBPvzww3jbokWLqKysxO6uhbdERERERERERESkS6VtkpeZmclFF13Efffdx5IlS3jzzTd57LHHuPbaa/0uTURERERERERERDoobTfJAWhubua+++7jj3/8Izk5OcycOZPrrrvO77JERERERERERESkg9I6oBQREREREREREZH0lrZTvEVERERERERERCT9KaAUERERERERERER3yigFBEREREREREREd8ooOyFotEod911F1OmTGH69Ok89thjfpckndDa2sr555/PggUL/C5FkrRjxw5mz57N1KlTOfXUU/ne975HNBr1uyxJwsaNG5k5cyaTJk3is5/9LI8++qjfJUkn3XTTTfznf/6n32WIfCJjDA8++CAnn3wyU6dO5YEHHsDzvCPef+vWrdx4441MmDCBs846i9/97nc9WG1qSbbvDmhoaODUU0/l5Zdf7oEqU1ey/ffhhx9y+eWXM2nSJM4++2xefPHFHqzWf8lcZ61YsYJ/+Zd/YcKECVxyySUsW7asBytNTcn031/+8hdmzJjBpEmTuOCCC/i///u/Hqw09XTmGn/z5s1MmjSpz19PJtN3q1ev5oorruCEE07gggsu4N133+3BSlNTMv33pz/9iXPPPZdJkyZxxRVXsHz58qSeSwFlL/TAAw+wbNkyHn/8ce69914efvhh/vCHP/hdliQhGo1y6623UlVV5XcpkiRjDLNnz6a5uZmnn36aH/3oR7z11lv8+Mc/9rs06SDP87jpppvIy8vjlVde4Vvf+hY///nPmT9/vt+lSZJef/113n77bb/LEDmquXPn8tprr/Hwww/z0EMPMX/+fObOnXvY+8ZiMW6++WYCgQCvvPIKM2fO5Pbbb2fNmjU9XHVqSKbvPm7OnDns3LmzBypMbcn0X21tLTfeeCNTp07llVdeYfbs2dx///385S9/6dmifdTR66xIJMJNN93ElClTePnll5k0aRI333wzkUjEh6pTR0f7b9WqVcyaNYtLLrmEefPmcfnll3PLLbewatUqH6pODZ25xr/vvvv6/GsOOt53DQ0N3HDDDZSXlzN//nzOOussZs2axa5du3yoOnV0tP+qqqr4j//4D26++WZ++9vfMmbMGG6++Waam5s7/mRGepWmpiZTWVlp3n333XjbT3/6U3P11Vf7WJUko6qqylx44YXmggsuMBUVFQnnUlJfdXW1qaioMLW1tfG2+fPnm+nTp/tYlSRjx44d5pZbbjENDQ3xtq9+9avm3nvv9a8oSVp9fb35zGc+Yy655BJzxx13+F2OyCc67bTTzEsvvRQ/njdvnjn99NMPe98333zTTJ48OeE96stf/rJ57rnnur3OVJRM3x3w3nvvmbPOOsuccsopCd/bFyXTf88884w555xzEtruvvtuc+utt3ZrjakimeusF1980ZxxxhnG8zxjjDGe55mzzjqrT7/ekum/OXPmmJkzZya03XDDDeaHP/xht9eZijpzjf/b3/7WXH755X3+ejKZvnv88cfNmWeeaWKxWLzti1/8ovnLX/7SI7WmomT6b+7cuebiiy+OHzc0NJiKigqzZMmSDj+fRlD2MqtWrSIWizFp0qR42+TJk1m8eHGHpruI/xYuXMi0adN4/vnn/S5FOmHgwIE8+uijFBYWJrQ3Njb6VJEkq6ioiB//+Mfk5ORgjGHRokW89957TJ061e/SJAnf//73mTFjBuXl5X6XIvKJduzYwbZt2zjppJPibZMnT2bLli2HHeG3cOFCPvWpT5GTkxNv+9nPfsa//uu/9ki9qSTZvoP2JXTuvvtu7rnnHkKhUE+VmpKS7b8Dy9YcrK/8jZPMddbixYuZPHkylmUBYFkWJ554Ih9++GFPlpxSkum/iy++mNtuu+2Qx2hoaOj2OlNRstf49fX1zJkzh29/+9s9WWZKSqbvFi5cyOc+9zkcx4m3vfTSS5x22mk9Vm+qSab/BgwYQHV1NYsWLcLzPF5++WVycnIYNmxYh59PAWUvU1tbS15eXsIfXIWFhUSjUfbs2eNfYdJhV155JXfddReZmZl+lyKdkJuby6mnnho/9jyPp556ipNPPtnHqqSzzjjjDK688sr4WluSHt555x3ef/99vvKVr/hdishR1dbWAu0fjhxw4EOu7du3H3L/mpoaBg0axIMPPsipp57KhRdeyJtvvtkzxaaYZPsO4JFHHmHs2LFMnz69+wtMccn2X2lpKRMnTowf79q1i9dff51PfepT3VtoikjmOqu2tjahXwEKCgqO+LrsC5Lpv5EjRzJ69Oj4cVVVFe+8806fea0dLNlr/P/+7//m4osvZtSoUT1YZWpKpu9qamrIz8/n7rvv5pRTTuGyyy5j0aJFPVxxakmm/8477zw++9nPcuWVVzJ+/HgeeOABHnroIfr379/h5wt0VeGSGpqbmw/5NPjAcWtrqx8lifRpc+bMYcWKFfzmN7/xuxTphIceeoi6ujruu+8+vve97/HNb37T75LkKKLRKPfeey/33HMPGRkZfpcjAkBLSws7duw47G0H1gf7+N9vn/S3WyQS4ZVXXuG8887jkUceYcGCBcyePZvnn3+eysrKbqjeX13Zd9XV1Tz33HO8+uqr3VBpaurK/jv4cb/2ta9RWFjYZ0bvJnOddaT79uXrsc5ep+7evZuvfe1rnHjiiXzuc5/r1hpTVTJ9949//INFixbx2muv9Vh9qSyZvotEIvzyl7/k2muv5Ve/+hWvv/46M2fO5Pe//z2DBw/usZpTSTL9V19fT21tLffccw8TJkzg2Wef5c477+SVV16hoKCgQ8+ngLKXCYfDh7xQDhzrQk2kZ82ZM4fHH3+cH/3oR1RUVPhdjnTCgYv9aDTKbbfdxu23397npwSmuocffpjx48cnjGQW8dvixYu59tprD3vb17/+daD977VwOBz/GjjsbArHcRgwYAD33Xcftm0zbtw43n//fV544YVeGVB2Vd8ZY/jmN7/J7NmzD1mGpTfrytfeAU1NTXzlK19hw4YNPPPMM31m1k8y11lHum9fvh7rzHVqXV0d119/PcYYHnroIWy7b04A7WjftbS0cM8993Dvvff26dfaxyXzunMchzFjxjB79mwAxo4dy9///nd++9vf8u///u89U3CKSab/HnzwQSoqKrjqqqsAuP/++zn33HN56aWXuOmmmzr0fAooe5ni4mLq6+uJxWIEAu2nt7a2loyMDHJzc32uTqTvuP/++3n22WeZM2eOpganmbq6Oj788EPOPPPMeFt5eTltbW00NjaSn5/vY3VyNK+//jp1dXXxtXIO/BH1xhtv8MEHH/hZmvRh06ZNY/Xq1Ye9bceOHcyZM4fa2lpKS0uBj6beDhw48JD7FxUVYVlWwoX68OHDj/j46a6r+m7r1q188MEHrF69mu9///tA+8iQe++9l9/97nc8+uij3fi/8E9Xvvagfb3JL33pS2zatInHH3+c4447rlvqTkXJXGcVFxdTV1eX0FZXV3fItO++JNnr1B07dsTD9SeeeKJP//3V0b5bsmQJNTU18YDtgBtvvJGLLrqoT65JmczrbuDAgYwYMSKh7bjjjmPbtm09Vm+qSab/li9fzjXXXBM/tm2b0aNHs3Xr1g4/X9/8CKIXGzNmDIFAIGEB5kWLFlFZWdlnP3ES6WkPP/wwzz33HD/84Q/5whe+4Hc5kqTNmzcza9ashClxy5YtIz8/v0//cZwunnzySebPn8+8efOYN28eZ5xxBmeccQbz5s3zuzSRwyouLqakpCRhnatFixZRUlJy2DBjwoQJVFVV4bpuvG3t2rUMGTKkR+pNJcn0XXFxMX/84x/j7w3z5s2jqKiI2bNn893vfrenS08Jyb72PM9j1qxZbN68mSeffLLPrW+XzHXWhAkT+OCDDzDGAO0jeP/5z38yYcKEniw5pSTTf5FIhC996UvYts1TTz1FcXFxD1ebWjradyeccMIh73MA3/nOd7jlllt6uOrUkMzrbuLEiYd8oLNu3bo++fv1gGT6r6ioiLVr1ya0rV+/Pv4BWEcoseplMjMzueiii7jvvvtYsmQJb775Jo899tgRp3aISNdau3YtP/vZz7jxxhuZPHkytbW18X+SHiorKxk3bhx33XUX1dXVvP3228yZM6fPTu1IN0OGDKGsrCz+Lzs7m+zsbMrKyvwuTeSIrrjiCh588EEWLFjAggUL+MEPfpDwt9vu3btpamoC4Pzzz8fzPL71rW+xceNGnn76af76179y2WWX+VW+rzrad4FAIOG9oaysjEAgQEFBQZ8OP5J57f3mN79hwYIFfOc73yE3Nzf+901f2YjzaNdZtbW1tLS0AHDOOeewb98+vvvd71JdXc13v/tdmpubOffcc/38L/gqmf77xS9+waZNm+KjnQ+81vrqLt4d7buMjIxD3ueg/cOIjq4B2Nsk87q7/PLLWb16Nf/zP//Dxo0b+clPfkJNTQ0zZszw87/gq2T677LLLuOFF15g3rx5bNy4kQcffJCtW7dy8cUXd/wJjfQ6kUjE3H777WbixIlm+vTpZu7cuX6XJJ1UUVFh3n33Xb/LkCT84he/MBUVFYf9J+lj+/bt5qtf/ao58cQTzSmnnGJ+/vOfG8/z/C5LOuGOO+4wd9xxh99liHyiWCxm/uu//stMmTLFTJs2zcyZMyfhPef00083Dz30UPy4qqrKXHXVVWb8+PHm85//vHnjjTf8KDslJNt3H3f66aebl156qadKTUnJ9N8NN9xw2L9vrr76ar/K73GfdJ1VUVGR8HpavHixueiii0xlZaW59NJLzfLly32oOLV0tP/OPvvsw77W+vLv82Reex+n68nk+u799983F198sRk/fryZMWOGWbhwoQ8Vp5Zk+u+FF14w55xzjpk4caK54oorzLJly5J6LsuY/ePORURERERERERERHqYpniLiIiIiIiIiIiIbxRQioiIiIiIiIiIiG8UUIqIiIiIiIiIiIhvFFCKiIiIiIiIiIiIbxRQioiIiIiIiIiIiG8UUIqIiIiIiIiIiIhvFFCKiIiIiIiIiIiIbxRQioiIiIiIiIiIiG8UUIqIiIiIiIj0Yq2trZx//vksWLDA71JERA5LAaWIiIiIiIhILxWNRrn11lupqqryuxQRkSNSQCkiIiIiIiLSC1VXV3PZZZexadMmv0sREflECihFRERERERE0tSLL77I+PHj2bhxIwBr166lsrKSN998k4ULFzJt2jSef/55n6sUEflkljHG+F2EiIiIiIiIiCTPGMO1115LdnY2P//5z7n66qsZNGgQP/jBDxLud/zxx/PEE08wbdo0nyoVETkyjaAUERERERERSVOWZfHtb3+bf/zjH9x2222sX7+eb3zjG36XJSKSFAWUIiIiIiIiImls+PDh3HTTTbz22mvcfvvt5Ofn+12SiEhSFFCKiIiIiIiIpLlVq1bhOA4LFizwuxQRkaQpoBQRERERERFJY2+++SZ/+9vfeOSRR5g/fz7vvPOO3yWJiCRFAaWIiIiIiIhImmpsbOT+++/ny1/+Mp/5zGe4+uqruffee4lGo36XJiLSYQooRURERERERNLUj370IzIyMrj++usBmDVrFpFIhJ/+9Kc+VyYi0nGWMcb4XYSIiIiIiIiIiIj0TRpBKSIiIiIiIiIiIr5RQCkiIiIiIiIiIiK+UUApIiIiIiIiIiIivlFAKSIiIiIiIiIiIr5RQCkiIiIiIiIiIiK+UUApIiIiIiIiIiIivlFAKSIiIiIiIiIiIr5RQCkiIiIiIiIiIiK+UUApIiIiIiIiIiIivlFAKSIiIiIiIiIiIr5RQCkiIiIiIiIiIiK++f8B7WO+7GORJFsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "n = len(Counter(y).keys())\n", + "p = sns.color_palette(\"husl\", n)\n", + "\n", + "pca = PCA(n_components=2)\n", + "pca.fit(X)\n", + "\n", + "fig, axs = plt.subplots(ncols=2, nrows=2)\n", + "fig.set_size_inches(16, 10)\n", + "axs = axs.flatten()\n", + "\n", + "axs[1].set_title(\"Base\")\n", + "sns.countplot(x=y, ax=axs[0], palette=p)\n", + "X = pca.transform(X)\n", + "df = construct_flat_2pc_df(X, y)\n", + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[1],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")\n", + "\n", + "\n", + "axs[3].set_title(\"GMMSampler\")\n", + "sns.countplot(x=resampled_y, ax=axs[2], palette=p)\n", + "resampled_X = pca.transform(resampled_X)\n", + "df = construct_flat_2pc_df(resampled_X, resampled_y)\n", + "sns.scatterplot(\n", + " x=\"x1\",\n", + " y=\"x2\",\n", + " hue=\"y\",\n", + " style=\"y\",\n", + " data=df,\n", + " alpha=0.7,\n", + " ax=axs[3],\n", + " legend=\"full\",\n", + " palette=p,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pipeline example" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.95 0.97 0.96 36\n", + " 1 0.75 0.63 0.69 19\n", + " 2 0.50 0.60 0.55 10\n", + " 3 1.00 1.00 1.00 6\n", + " 4 1.00 1.00 1.00 13\n", + "\n", + " accuracy 0.86 84\n", + " macro avg 0.84 0.84 0.84 84\n", + "weighted avg 0.86 0.86 0.86 84\n", + "\n" + ] + } + ], + "source": [ + "from imblearn.pipeline import Pipeline\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.neighbors import KNeighborsClassifier as KNN\n", + "from sklearn.metrics import classification_report\n", + "\n", + "dataset = load_datasets()[\"new_ecoli\"]\n", + "\n", + "X, y = dataset.data, dataset.target\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)\n", + "pipeline = Pipeline(\n", + " [(\"scaler\", StandardScaler()), (\"gmm_sampler\", GMMSampler()), (\"knn\", KNN())]\n", + ")\n", + "pipeline.fit(X_train, y_train)\n", + "y_hat = pipeline.predict(X_test)\n", + "print(classification_report(y_test, y_hat))" + ] + } + ], + "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.9.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From e5b8710597def2639f621dc8daafdf4e2656b30e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Tue, 25 Apr 2023 20:08:31 +0200 Subject: [PATCH 43/48] black + new code --- examples/resampling/GMMSampler.ipynb | 26 +++++++++++------------ multi_imbalance/resampling/gmm_sampler.py | 3 +++ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/examples/resampling/GMMSampler.ipynb b/examples/resampling/GMMSampler.ipynb index c1c369d..552daee 100644 --- a/examples/resampling/GMMSampler.ipynb +++ b/examples/resampling/GMMSampler.ipynb @@ -88,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "pycharm": { "name": "#%%\n" @@ -96,7 +96,7 @@ }, "outputs": [], "source": [ - "clf = GMMSampler(minority_classes=[2, 3])\n", + "clf = GMMSampler()\n", "resampled_X, resampled_y = clf.fit_resample(X, y)" ] }, @@ -109,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "pycharm": { "name": "#%%\n" @@ -122,13 +122,13 @@ "" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABSgAAANVCAYAAAB7/RCtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9d5yddZ3//z/eVzllesvMZNJ7JwSQjlhQUXFX0F3LLijuYgVd3VV/LhbQRRTLftddlBVWxfJRV4Vd24oFEZBQDIYWUgmkTjK9nnZd1/v3x8m0zEwyk0w5SZ732y235FzXdc71PtfMmcx5ntf7/TLWWouIiIiIiIiIiIjINHCmewAiIiIiIiIiIiJy6lJAKSIiIiIiIiIiItNGAaWIiIiIiIiIiIhMGwWUIiIiIiIiIiIiMm0UUIqIiIiIiIiIiMi0UUApIiIiIiIiIiIi00YBpYiIiIiIiIiIiEwbBZQiIiIiIiIiIiIybRRQioiIiIiIiIiIyLTxpnsAIiIiIiIiIjLUlVdeyaOPPjpkW2lpKStXruTaa6/l7LPPnqaRiYhMPAWUIiIiIiIiIgVo5cqVfOpTnwIgDEPa2tr4/ve/z9/93d9x1113sWTJkmkeoYjIxFBAKSIiIiIiIlKASkpKOP3004dsO//88znvvPO46667+OhHPzo9AxMRmWBag1JERERERETkBJFMJonH4xhjgHxl5de//nUuu+wyTjvtNE4//XTe/OY38/DDD/ffJ51Oc8MNN/DiF7+Y1atXc+mll/Jf//VfQx63vb2dT37yk5x//vmsWbOGv/7rv2b9+vVT+txE5NSlCkoRERERERGRAmStJQiC/n+3t7dz5513ks1mecMb3gDAF7/4Rb7//e/zj//4jyxbtowDBw5w66238oEPfID77ruPZDLJZz/7WR588EE++tGPUlNTw/33388tt9xCRUUFb3jDG8hkMrztbW+jubmZD37wg9TW1vKTn/yEv//7v+eOO+7gvPPOm87LICKnAAWUIiIiIiIiIgXoscceY9WqVcO2f+hDH2LRokUAHDx4kA9+8INceeWV/fvj8TjXXXcdW7Zs4fTTT+fRRx/lggsu4LWvfS0A55xzDkVFRVRXVwPwv//7v2zevJn//u//Zu3atQC8+MUv5sorr+SLX/wiP/nJTyb7qYrIKU4BpYiIiIiIiEgBWrVqFTfeeCOQr6Ds7Ozk/vvv51//9V/p7e3lgx/8IF/60pcAaG1t5bnnnuOFF17g97//PQDZbBbIB5I/+MEPaGxs5OKLL+biiy/mfe97X/951q9fz4wZM1i1alV/xSbAS1/6Um655RY6OjooLy+fqqctIqcgBZQiIiIiIiIiBai4uJg1a9YM2XbhhRfS29vLHXfcwVVXXcW+ffu48cYbeeqpp0gmkyxevJiGhgYgH2oCXH/99dTX1/PTn/6Uz3zmM3zmM59h3bp13HDDDSxfvpz29naamppGrNYEaGpqUkApIpNKAaWIiIiIiIjICWT16tX86Ec/YseOHVx33XUsW7aMX/ziFyxcuBDHcfjDH/7APffc0398LBbjPe95D+95z3vYt28fv//97/nqV7/KP/7jP/KLX/yC0tJS5s+fzxe/+MURzzd79uypemoicopSF28RERERERGRE8iTTz6J67rE43Ha29u56qqrWLx4MY6Tf4t///33AxBFEel0mle96lV84xvfAKChoYG/+Zu/4bWvfS379u0D4Oyzz2b//v1UV1ezZs2a/j9//OMfueOOO3Bdd3qeqIicMlRBKSIiIiIiIlKAuru72bhxY//tbDbLvffey09+8hPe9KY3sXDhQkpKSrjtttvwPA/P87jnnnv48Y9/DEAqlSKRSLBq1Sr+4z/+A9/3WbZsGTt37uTuu+/mVa96FQBXXHEF3/3ud7n66qt597vfzcyZM3nooYe4/fbb+du//Vt835+Opy8ipxBj+xalEBEREREREZGCcOWVV/Loo48O2RaPx5k7dy6XXXYZf/d3f4fv+zzyyCPccsstbN++neLiYlasWMF73/terrnmGt785jfzkY98hO7ubv6//+//43e/+x1NTU1UV1fzmte8hg984AMkEgkAWlpa+NKXvsR9991HV1cXs2bN4o1vfCPveMc7+iszRUQmiwJKERERERERERERmTb6GERERERERERERESmjQJKERERERERERERmTYKKEVERERERERERGTaKKAUERERERERERGRaaOAUkRERERERERERKaNAkoRERERERERERGZNgooRUREREREREREZNoooBQREREREREREZFp4033AKZbS0sX1k73KERERETGxxiori6d7mHIBCiE30f7vp8KYSyFTtdq7HStxk7Xaux0rcZO12rsdK3GZ/D1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Durq6mhubh5yv+bm5mHNdMbCWo4aUMrU09dERERERERORCNVJY6lIjHojQj3ePgzI3Jo3UcRObUUXEBZV1fHr3/96yHbrrzySq688kr+4i/+AoC1a9eyYcMGrrjiCgD279/P/v37Wbv25GuzLiIiIiIiIieOkaoSj1aR6FuP5g0hrVtylC5yKV3tTXlIOThY1bRuEZlqBRdQep7HvHnzhm2rrq6mrq4OgLe85S1ceeWVnH766axZs4abbrqJl7zkJcyZM2c6hiwiIiIiIiJyTHzr0fk0ZPaEAHTuCIGpDymHBKsKJ0VkihVcQDkW69at49Of/jRf+cpX6Ojo4IILLuAzn/nMdA9LREREREREpF9fVeJoFYl94WT3cyGx2MDb86kMKQd3HVeHcRGZLgUTUG7ZsmXUfffee++wbVdccUX/FG8RERERERGRQtNflThK6Gcih1x7OGSbg8EaS7bdYkIXJrnh9+Cu44XUYVxEJlcmk+HLX/48f/jDvcTjcd785it5y1v+dtrGUzABpYiIiIiIiMiJrK8acayViFk3S835MZofAtsNxjrk2i0l812qz3PIutkpGLWInIq++tV/Y/PmZ/m3f7uNxsb93HTTDdTX1/PSl14yLeNxpuWsIiIiIiIiIieZvmrEvinTY5EPKV38Msi2WfxyQ9Ech7AbjDGTMs6UY2gMQxrDkOZ0rn97czpHYxiScibnvCIyiijCfWEv3jPbcF/YC1E0qadLpVL87Gf/ywc+8I8sW7aciy9+KW9965X85Cf/PannPRJVUIqIiIiIDJLJZLjxxhv59a9/TSKR4B3veAfveMc7jnifPXv28LrXvY7bbruNc845Z4pGKlKYYmbqO1BPBGPAT8ewviXn5I5+hwlWusAlCizJWQ6tm3JgoP4in6gih7UTuy7k4Gndg929oxHQVG+RqeRteY74bx7E6erp3xaVFpN5xYUEyxZOyjm3b99KGAasWbO2f9tpp53Ot7/9TaIownGmvp5RFZQiIiIiIoPccsstPP3009x555186lOf4j/+4z/41a9+dcT73HDDDfT29k7RCEUKVyyI0f4Y+JkYk1T8NymMAS8Vo/EPAa2PRfiRP+b7jlSN2FeJOJZqxJj1aXkspPWpELccWjcH2AhsCI0P5PB7T6xrKSJj5215jsRd92AGhZMApquHxF334G15blLO29LS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iIiIiIiI9BvPMzQG07AnjMGeNBZjDK5rQOGkiMigpYBSRERERERE+p3nGTxPqaSIiGgOShEREREREREREUkiBZQiIiIiIiIiIiKSNAooRUREREREREREJGkUUIqIiIiIiIiIiEjSKKAUERERERERERGRpBnQAWU4HObaa6/l0EMPZd68eTzyyCPJLklERERERERERER6wJfsAvbHnXfeyfLly3nsscfYunUr3/ve9xg2bBgLFy5MdmkiIiIiIiIiIiLSDQM2oGxqauLpp5/mwQcfZNq0aUybNo3Vq1fz+OOPK6AUEREREREREREZIAbsEO+VK1cSi8WYNWtWYtucOXNYtmwZnuclsTIRERERERERERHprgHbg7KiooK8vDwCgUBiW2FhIeFwmNraWvLz87v1PLYNxnTvmL6SQiz/gG2ylOcU5CZ+tvsoOs8vnIDPF+qbJxeyc0ckfu6Lczghfxghn7/3n1gAGJE9JPFzX30Gx+dnE/I5ffPkwvDsjMTPfXUOM4p92H6rb55cSMvf9fnY2zm0dBoOGKlwLuM1pEItqU5t1X1qq+5TW3Wf2qr71Fbdp7bqmb5oL8uY7sZzqeX555/npz/9Kf/4xz8S20pLSznhhBN47bXXKCkpSWJ1IiIiIiIiIiIi0h0Ddoh3MBgkEom02xa/HQqph5yIiIiIiIiIiMhAMGADyuLiYmpqaojFYoltFRUVhEIhsrOzk1iZiIiIiIiIiIiIdNeADSinTJmCz+fjgw8+SGxbunQpM2bMwO6ribdERERERERERESkVw3YJC8tLY0zzzyTG2+8kQ8//JBXX32VRx55hAsvvDDZpYmIiIiIiIiIiEg3DdhFcgCam5u58cYb+ctf/kJmZiYXX3wxX/3qV5NdloiIiIiIiIiIiHTTgA4oRUREREREREREZGAbsEO8RUREREREREREZOBTQCkiIiIiIiIiIiJJo4BSREREREREREREkkYB5QEoHA5z7bXXcuihhzJv3jweeeSRZJck+yASiXD66aezZMmSZJciPVReXs6iRYuYO3cu8+fP57bbbiMcDie7LOmBjRs3cvHFFzNr1iw+85nP8NBDDyW7JNlHl112Gf/f//f/JbsMkZRjjOGuu+7iiCOOYO7cudx55514ntfl/lu3buXSSy9l5syZnHjiibz88sv9WG1y9bSt4urr65k/fz7PPvtsP1SZGnraVh988AHnnnsus2bN4uSTT+bpp5/ux2r7X0+u01asWMH/+3//j5kzZ/L5z3+e5cuX92OlydeTtvrnP//J5z73OWbNmsUZZ5zB3/72t36sNPn25fp/8+bNzJo1a9Bda/akrVatWsV5553HwQcfzBlnnMHbb7/dj5Wmhp6011//+ldOOeUUZs2axXnnncfHH3/c4+MpoDwA3XnnnSxfvpzHHnuMG264gfvuu49XXnkl2WVJD4TDYb7zne+wevXqZJciPWSMYdGiRTQ3N/P4449zzz338I9//IOf/OQnyS5NusnzPC677DLy8vJ47rnnuOmmm/j5z3/OCy+8kOzSpIdeeuklXnvttWSXIZKSHn30UV588UXuu+8+7r33Xl544QUeffTRTveNxWJcfvnl+Hw+nnvuOS6++GKuvvpqPv30036uOjl60lZtLV68mO3bt/dDhamjJ21VUVHBpZdeyty5c3nuuedYtGgRt9xyC//85z/7t+h+1N3rtKamJi677DIOPfRQnn32WWbNmsXll19OU1NTEqpOju621cqVK7nyyiv5/Oc/z/PPP8+5557Lt771LVauXJmEqpNjX67/b7zxxkH1forrblvV19dz0UUXMWHCBF544QVOPPFErrzySqqqqpJQdfJ0t71Wr17N//zP/3D55Zfzhz/8gSlTpnD55ZfT3NzcswMaOaA0NjaaGTNmmLfffjux7Wc/+5k5//zzk1iV9MTq1avNZz/7WXPGGWeYSZMmtTuXkvrWrFljJk2aZCoqKhLbXnjhBTNv3rwkViU9UV5ebr71rW+Z+vr6xLYrrrjC3HDDDckrSnqspqbGHHPMMebzn/+8+d73vpfsckRSzrHHHmueeeaZxO3nn3/eHHfccZ3u++qrr5o5c+a0+734jW98wzz11FN9Xmcq6Elbxb377rvmxBNPNEcffXS7xx7oetJWTzzxhFm4cGG7bddff735zne+06c1JktPrtOefvpps2DBAuN5njHGGM/zzIknnjho3ks9aavFixebiy++uN22iy66yNx99919Xmcq2Jfr/z/84Q/m3HPPHXTXmj1pq8cee8yccMIJJhaLJbadffbZ5p///Ge/1JoKetJejz76qDnrrLMSt+vr682kSZPMhx9+2KNjqgflAWblypXEYjFmzZqV2DZnzhyWLVvWraEoknzvvPMO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/LsX15P2KioqYu3ate22rV+/PvHHqu5SYnWASUtL48wzz+TGG2/kww8/5NVXX+WRRx7pciiGiPSutWvXcv/993PppZcyZ84cKioqEv/JwDBjxgymTZvGtddey5o1a3jttddYvHjxoBnOMdANHz6c0aNHJ/7LyMggIyOD0aNHJ7s0kZRy3nnncdddd7FkyRKWLFnCj3/843bfF6urq2lsbATg9NNPx/M8brrpJjZu3Mjjjz/OG2+8wRe+8IVkld+vuttWPp+v3e+f0aNH4/P5KCgoGDShSU/eV7///e9ZsmQJP/zhD8nOzk58XzpQF/bc23VaRUUFLS0tACxcuJAdO3Zw6623smbNGm699Vaam5s55ZRTkvkS+k1P2uoXv/gFmzZtSvRajr+PBssq3t1tq1Ao1OH3E7T+YaEncwQOZD15X5177rmsWrWK//3f/2Xjxo389Kc/pbS0lM997nPJfAn9qift9YUvfIHf/e53PP/882zcuJG77rqLrVu3ctZZZ/XsoEYOOE1NTebqq682hxxyiJk3b5559NFHk12S7KNJkyaZt99+O9llSA/84he/MJMmTer0Pxk4ysrKzBVXXGFmz55tjj76aPPzn//ceJ6X7LJkH3zve98z3/ve95JdhkjKicVi5kc/+pE59NBDzeGHH24WL17c7vfccccdZ+69997E7dWrV5svf/nLZvr06eakk04yf/7zn5NRdlL0tK3aOu6448wzzzzTX6UmXU/a6qKLLur0+9L555+frPL73J6u0yZNmtTuvbJs2TJz5plnmhkzZphzzjnHfPzxx0moOHm621Ynn3xyp++jwfRvf0/eV20NxmvNnrTVe++9Z8466ywzffp087nPfc688847Sag4uXrSXr/73e/MwoULzSGHHGLOO+88s3z58h4fzzJmZ79xERERERERERERkX6mId4iIiIiIiIiIiKSNAooRUREREREREREJGkUUIqIiIiIiIiIiEjSKKAUERERERERERGRpFFAKSIiIiIiIiIiIkmjgFJERERERERERESSRgGliIiIiIiIiIiIJI0CShEREREREREREUkaBZQiIiIiIiIiB7BIJMLpp5/OkiVLkl2KiEinFFCKiIiIiIiIHKDC4TDf+c53WL16dbJLERHpkgJKERERERERkQPQmjVr+MIXvsCmTZuSXYqIyB4poBQREREREREZoJ5++mmmT5/Oxo0bAVi7di0zZszg1Vdf5Z133uHwww/nt7/9bZKrFBHZM8sYY5JdhIiIiIiIiIj0nDGGCy+8kIyMDH7+859z/vnnU1JSwo9//ON2+02ePJlf/epXHH744UmqVESka+pBKSIiIiIiIjJAWZbFzTffzL///W+++93vsn79er7//e8nuywRkR5RQCkiIiIiIiIygI0dO5bLLruMF198kauvvpr8/PxklyQi0iMKKEVEREREREQGuJUrV+I4DkuWLEl2KSIiPaaAUkRERERERGQAe/XVV3nzzTd54IEHeOGFF3jrrbeSXZKISI8ooBQREREREREZoBoaGrjlllv4xje+wTHHHMP555/PDTfcQDgcTnZpIiLdpoBSREREREREZIC65557CIVCfO1rXwPgyiuvpKmpiZ/97GdJrkxEpPssY4xJdhEiIiIiIiIiIiIyOKkHpYiIiIiIiIiIiCSNAkoRERERERERERFJGgWUIiIiIiIiIiIikjQKKEVERERERERERCRpFFCKiIiIiIiIiIhI0iigFBERERERERERkaRRQCkiIiIiIiIiIiJJo4BSREREREREREREkkYBpYiIiIiIiEgX1q5dyy233MLJJ5/MzJkzmTNnDueeey5PPPEEsVgssd+CBQuYPHky//M//9Plc33hC19g8uTJ/O///m9i2+TJk5k8eTJ33313p4/xPI/58+czefJknn322Xb3Pfvss5x77rnMnj2bmTNnctppp/HTn/6UhoaG/XzVveuCCy7gggsuSHYZIpLCfMkuQERERERERCQVvfzyy1xzzTWMHz+er33ta4wdO5aWlhZee+01fvSjH/HGG29w//33Y1kWALZt849//INwOEwwGGz3XJs3b2bZsmWdHse2bV555RW+853vdLjv3XffZfv27R2233fffTzwwANcdNFFfOMb38Dv97N8+XIeeugh3njjDZ588kn8fn8vtIKISN9TQCkiIiIiIiKym7Vr13LNNdcwf/58fvKTn+Dz7bp8PvbYYzn88MNZtGgRf/rTnzj11FMBmD17Nu+99x6vv/46J554Yrvne/nll5kyZQqffPJJh2PFH7dixQqmTp3a7r6XXnqpw+MikQgPPvggF198Md/+9rcT24866ijGjRvHFVdcwauvvsopp5zSK20hItLXFFCKiIiIiIiI7Oahhx7Ctm1uuummduFk3Mknn8yZZ57ZbtvIkSNpaWnhlVde6TSgPO200zoNKA877DA2bNjAK6+80i6gjMVi/OUvf+Hiiy9u97iGhgZaWlrwPK/Dcx177LF8+9vfZuTIkYltmzdv5t577+Xf//43NTU1ZGdnM3/+fK655hry8vKA1iHqZ599Njt27OAPf/gDkUiEBQsWcPPNN/P444/zm9/8hsbGRo466ihuvvnmdo8744wzaG5u5rnnnsO2bY499liuvfZacnNzO21bz/N46KGHePrpp9m2bRvDhw/n/PPPbzcM/IILLqC4uJhIJMLrr7/OrFmzePTRRzt9PhEZ+BRQioiIiIiIiOzmb3/7G0cccQQFBQVd7nPHHXd02Hbqqafys5/9rN0w73Xr1rFy5Uruv/9+7rrrrg6PcRyHk08+ucMw77feeotwOMyCBQvaPS4/P5+ZM2fy8MMPs337dk488URmz55Nfn4+fr+fr3/964l9m5ubufDCC8nLy+OGG24gKyuL999/n/vuu49QKMTNN9+c2PeRRx7h6KOP5p577mH58uX8+Mc/5uOPP6aoqIhbbrmFzZs3c+utt1JYWMgNN9yQeNwTTzzB6NGjue2226iurubHP/4xGzdu5KmnnkoMf2/rxhtv5Nlnn+Xyyy9n1qxZvPvuu/zoRz9ix44dXHHFFYn9/vSnP/HZz36Wn//8552GsSJy4FBAKSIiIiIiItJGXV0ddXV1jBkzpsN9bRfGAbAsC8dxErdPOeUUFi9e3G6Y98svv8ysWbMYNmxYl8c89dRTefzxx9sN83755Zc5/vjjO8xnCXDvvfdy9dVX8/zzz/P8889jWRYTJ07kxBNP5Ctf+Qo5OTkAbNiwgZKSEu64445Er8ojjjiCZcuW8c4777R7zszMTO655x58Ph9HHXUUzz33HOXl5Tz99NNkZWUB8MYbb/Cf//yn3eNs2+bRRx9N7JOfn88VV1zBG2+8wTHHHNNu3/Xr1/O73/2O73znO1x22WUAzJs3D8uy+MUvfsGXvvSlRO9Mv9/PTTfdRCAQ6LLdROTAoFW8RURERERERNroqrfexo0bmTZtWrv/dh/KPWzYMA455BBeeeWVxLaXX36Z008/fY/HnDNnDsXFxYnHRSIRXn311S4fV1JSwq9+9Steeuklvve973HssceyZcsWfvazn3HaaaexYcMGAKZMmcITTzzB8OHD2bBhA6+99hoPP/ww69atIxKJtHvOgw8+uN1w9sLCQsaOHZsIHgFyc3Opr69v97gFCxa022fBggX4fD7efffdDnW//fbbGGNYsGABsVgs8d+CBQsIh8MsXbo0se+4ceMUTooMEupBKSIiIiIiItJGXl4e6enpbNmypd32oUOH8vvf/z5x+2c/+xmffvpph8efcsop/PSnPyUcDrN+/Xo2bNjAwoUL93hMy7JYuHBhYpj3G2+8gW3bHH300ZSXl3f5uAkTJjBhwgQuuugiotEozz77LDfffDN333039957LwCPPvooDzzwALW1tRQWFjJ9+nTS0tI6BI2ZmZkdnj89PX2PdQMUFxe3u23bNnl5edTV1XXYt7a2FoDTTjut0+dq+1ozMjL2emwROTAooBQRERERERHZzYIFC/jHP/5BQ0NDIrgLBALMmDEjsU9Xi8AsXLiQ22+/nTfeeIOPPvpor3NZxp166qk89thjfPLJJ7z88sucdNJJ+P3+Dvs99thj/PznP+cf//gHaWlpie1+v58vfvGLvPbaa6xZswaAF154gdtvv52rrrqKs88+m/z8fAC+9a1v8dFHH3W7Pfakpqam3W3XdampqUkcq63s7OzEa+gsgNzTMHgROXBpiLeIiIiIiIjIbi677DJisRjXXXddh6HQAC0tLZSWlnb62OLiYubMmcMrr7zCn/70py57C+7ukEMOYfjw4fzhD3/g73//e5ePmzBhAjU1Nfz617/ucJ/rupSWljJp0iQAli5dSnZ2NpdcckkiMGxsbGTp0qW9tvDM66+/3q6N/va3vxGLxTjyyCM77HvooYcCraHmjBkzEv9VV1fz05/+NNHDUkQGF/WgFBEREREREdnN5MmTWbx4Mddccw1nn30255xzDpMnTyYWi/H+++/z+9//nsrKSi655JJOH3/KKadw2223YVkWJ510UrePu3DhQn71q1+Rm5vL3LlzO93n6KOP5vTTT+fuu+9m1apVnHzyyeTn51NWVsZTTz1FWVkZP/nJT4DWeSWffPJJbr/9do477ji2b9/Oww8/TGVlZWIhnf21bds2vvGNb3DhhReybds27r77bubPn8/hhx/eYd/Jkyfz2c9+luuvv54tW7Ywffp01q9fzz333MOIESM6XZhIRA58CihFREREREREOnHyySczffp0nnzySX7/+9+zZcsWjDGMHDmSU089lXPPPbfLQG3hwoXceuutfOYzn2m3gMzenHrqqTz88MOccsop2HbXgx4XL17M3Llz+eMf/8h1111HU1MT+fn5HH300dx2222JFbvPOussNm/ezDPPPMMTTzxBcXExxx57LF/60pe4/vrrWbt2LePHj+9Ru+zutNNOIzs7m//+7/8mPT2ds846i29/+9td7n/bbbfxi1/8IhGmFhQUcOqpp/Lf//3f7VZEF5HBwzLGmGQXISIiIiIiIiIDz4IFC5g7dy633357sksRkQFMc1CKiIiIiIiIiIhI0iigFBERERERERERkaTREG8RERERERERERFJGvWgFBERERERERERkaRRQCkiIiIiIiIiIiJJo4BSREREREREREREkkYBpYiIiIiIiIiIiCSNAkoRERERERERERFJGl+yC0i2qqp6tI65iIiIDDSWBQUFWckuQ3rB7t9H4+dW31N7Tm23f9R++05tt3/UfvtObbfv1Hb7J95+1dX15Ofv/3fSQR9QGoPeiCIiIiKSNF19H9X31H2ntts/ar99p7bbP2q/fae223dqu/3TW22nId4iIiIiIiIiIiKSNAooRUREREREREREJGkUUIqIiIiIiIiIiEjSDPo5KEVERERERERERPaVMQbPc/E8L9ml9DrbtrFtB8uy+vQ4CihFRERERERERET2QSwWpa6ummi0Jdml9JlAIER2dj4+n7/PjqGAUkREREREREREpIeMMVRVlWHbNjk5hTiOr897GvYnYwyuG6OhoZaqqjKKikb02etTQCkiIiIiIiIiItJDsVgUYzxycoYQCISSXU4fCeI4DtXV5cRiUfz+QJ8cRYvkiIiIiIiIiIiI7CPLOrDjtf54fQd2C4qIiIiIiEhSNNsWZa5Ls33gDHcUEZG+oYBSREREREREel1dNMaDH5dSF40luxQREUlxCihFREREREREREQkabRIjoiIiIiIiPSKZttK9JisbInu+v/OtSNy/D7SPJOs8kREJEUpoOwm27awNXdKn/M8g9dHX1h0DvtHX55DGdj0Gewf+gyKiEgyxYd1t/Xc2rLEz5dOG0ma4/R3WSIikuIUUHaDbVvk56ZjORoR39eM61Fd29TrF9e2bZGXl4Zt68tQX/M8l5qaZgUk0o5tW+TmpePY+j3a11zPo7am93+PioiIiIhIctxxxw+prq7ijjvuSWy75547aWio5/rrb0liZb1HAWU32LaF5djUPPsXYpU1yS7ngOUrzCPv7JOwbatPAkrbdnjtz7dSV7OpV59bdsnJG8WxJ3+/T86hDGy2beHYNotfe5/SuoZkl3PAGpmTyVXHztJnUEREkibH7+PSaSOB1qHdz60t46zxJRSG/In70b9RIiI9csIJJ3PVVd+isbGBjIxMPM/jn//8O9/73nXJLq3XKKDsgVhlDbGyimSXIfuhrmYTVRWrk12GyKBVWtfA2qodyS5DRERE+kiaZ3YN4d4572RhyE9JfJvCyX3Sdm5PzeMpMvjMmjWHrKxs/vWvNzjppFNYtux9otEoc+cekezSeo3G2omIiIiIiIiksPjcng9+XJoIKkVk8LBtmwULTuQf/3gVgL///VWOPfY4fL4Dp9+hAkoRERERERHpdfHh3jn+A+cCWkQkWU444WSWLHmbxsYGXn/97xx//EnJLqlX6V8KERERERER6XWJ4d4pPhw5Pnw6FYdOx2urbIkmtlW2RBPD51OxZhHpG9OmTWfIkCE8/vivMKZ12PeBRAGliIiIiIiIDFrx4dOXThu5a/7MXravc0jGa2vrubVliZ/7smYRST3HH38STz31OGec8TmcA+yzr4BSREREREREpA+1DRp7EirGh8nHV0QHtCq6yCB2/PEn8atfPXLADe8GBZQiIiIiIiIyyLTt0RgfPt0bQ6ebbYvaSO+ttp0YJh/atU2roosMXtXVlZSUDGXGjJnJLqXXKaAUERERERGRLu3r8ORU1ldDp2sju573GzNHU+d6AJ3OIXmgtKWI9L3Kyko+/PADfv3rRzj99M9hWVayS+p1CihFRERERESkS/s6PDlV9HXAGn/+6poGqsLtg8jfrNwCgM+2iLdaPAjdl6He8Z/Vc1JkcGloqOe2225m2rTpnHvu+ckup08ooBQREREREZEDVmcBa9vALz6/477O7Rh//kDAR2Tn8G6AzQ0tbKxvBmB0VhrOfvR4Sgz1BoWTIoPQmDFj+etfX092GX1KAaWIiIiIiIi009kcjYmfB8Dw5L3Vj9vmNeyc37G353a0ga9MGQFAfsjPS2vLgV2L3KgnpIjILgooRUREREREpJ3O5miEfRue3NcsC8xuOd/e6oddr8HnszlyeD7NxtBsWz0OXuO9MYNBH1t3NPPsmtZjFIUCiR6ZsTadJxNB6AAPJw/EuUlFJHnsZBcgIiIiIiIisi8sy8LfHMS/H31vWlyPf26u4rFPNicCt55I8wxDfQ6T8jIpCPoT2+NBZInj4DsAs7t4CPzgx6X71G4iIm2pB6WIiIiIiIi009kcjZBaw5Mty8Ku9bPljQhZYxyypvuIsqtH357q9/lsWlyPMteltiVK0LLAtBkCTu/2CtQiNyIie5bSAWUkEuG2227jxRdfxO/3c8455/Dtb38by7JYsWIFN9xwA59++ikTJkzgpptuYvr06ckuWUREREREZMBrtyhLaNf2VBmeHA8ny96IYlzYsdYFdoWUe6u/LObyaDeHgPdEbqDzILI/F7npr1XLO53bs4+OKSIHvpQOKH/4wx+yZMkSHn74YRobG/n2t7/NsGHD+OxnP8tll13GGWecwe23386TTz7J5Zdfzl//+lfS09OTXbaIiIiIiMgBI9V6/+0eTsbtHlImQ5pnCCV5te3OVi3vq+eP299gV0QkZQPK2tpannnmGR599FEOPvhgAC666CKWLVuGz+cjGAxy9dVXY1kW3//+93n99dd55ZVXOPvss5NcuYiIiIiIyIGjP3v/dYff+Kha4bYLJ+PqN7hkjQtgZcQSC+d0FrDubQg4QEbAR1lEi8DsLt52XbVbKoTYIrJ34XCYu+++g9de+zvBYJBzz72A8847P2n1pGxAuXTpUjIzM5k7d25i22WXXQbA9ddfz5w5c7Cs1qXQLMti9uzZfPDBBwooRUREREREDmARohTMDVD5b2ip9hLbLQeKj/LjZkTareqd5hnw+6iLxlqHPu8MG/c4hB0oi/RtT8Te1HZYd18PvU60XRftpnBSZGC4//6fsnLlJ/z0pw9QVraNW2+9kZKSEo477oSk1JOyAWVpaSnDhw/n+eef54EHHiAajXL22WfzjW98g4qKCiZMmNBu/4KCAlavXt3j4+zMOCXF6LwMfDqHIsmlz+CBT+dYRAaziBOh8KhdIWU8nKQgimc6BmR9Pew52Tobdg0aei0yYHgeTuk2rIYmTGY67sihYNt9drjm5mZeeOEP3HXXT5k8+SAmTz6I9evX8swzv1NAubumpiY2btzIU089xW233UZFRQU/+MEPSEtLo7m5mUAg0G7/QCBAJBLp8XEKCrJ6q2TpJXl5GckuQfaTzqFIcukzKCIig0E8pKxaAjkHOR3CyXrHojLc2pvQ1+avOvFehfEehW2He7cd1q1FYPYs1eYmFRmofKvWEfzrm9j1jYltXlYG4RPnEZs8rk+OuWbNp7hujBkzZia2HXzwIfzqV4/ieR52H4ajXUnZgNLn89HQ0MCPf/xjhg8fDsDWrVt58sknGT16dIcwMhKJEAqFOnuqPaqqqqeTP7C14zi2Lvb6UU1NI67r7X3HHtA57F99cQ5lYNNnsH/pMzg4WJb+0CoiEnEiFBzpJ2Z37DlZGY7yg7c/BeArU0Yktsd7FcZ7FLYd7t12WHdbqd4TsTtzavZ2iJhqc5OKDES+VesIPfvnDtut+kZCz/6ZlrNP7pOQsqqqkpycXPx+f2Jbfn4BkUiYuro68vLyev2Ye5OyAeWQIUMIBoOJcBJg7NixbNu2jblz51JZWdlu/8rKSoqKinp8HGPYa0Ap/U/nZODTORRJLn0GRURksIhYUdiHf/d8PpuyWOtKO73VK9Jv+4i4/b+CeHfm1FSIKJJiPI/gX98EYPeZeyxaf60F//ovYhPH9Ppw75aWlnbhJJC4HY32fHRyb0jZgHLmzJmEw2HWr1/P2LFjAVi3bh3Dhw9n5syZPPjggxhjsCwLYwz/+c9/+PrXv57kqkVERERERCRZ2i4WUx+JMTorDYCsgI8jh+djA0WhAIUhPy2ux6O7zUu5Pz0RI/Ue9csga3KAiD85F/igodciA4VTuq3dsO7dWYBV34BTug139PAu99sXgUCQaDTablv89r6MTu4N/T+ovJvGjRvHZz7zGa655hpWrlzJG2+8wS9/+UvOO+88Fi5cyI4dO7j11ltZs2YNt956K83NzZxyyinJLltERERERESSJL5YzIMfl/KHNWUELYugZfHCunIe+2QzHrt6Ffo6ye3SPEOJ41DiOIlAkjaPKdk5JHx3ftdPxdtRdqx12f5GjEA00GGf/tL2NWiuTJHUZTU09ep+PTFkyBDq6mqJxXb1+K6uriIYDJKZmZwphFI2oAS46667GDVqFOeddx7f+973+PKXv8wFF1xAZmYmv/jFL1i6dClnn302y5Yt45e//CXp6enJLllERERERERSmM9nU+a6HRbBKXNdylyXeseizHXx+bp3uRzw/NS859G8rTUMjNSbpIeUIpL6TGb3Mqzu7tcTEydOxnF8fPzx8sS2Dz/8gClTpiVlgRxI4SHeAFlZWdx5552d3nfwwQfz3HPP9XNFIiIiIiIikqq6GqL9hYlDyQr4yPI77YZ2x7VdBOf8qSP4zYrNfG36yL0OlbZMgPL3YjRs9WjT4TIRUhbN77/h3m2Ht2ulcZHU544cipeVgVXf2GEOSmidg9JkZeKOHNrrxw6FQpxyymncddePuPbaG6ioqODJJ3/Ntdfe0OvH6q6UDihFREREREREuqurxWKKgjsXizFQ1s3czmfY6wIz9SZKZSDG9voIY3LSCQC2scEy+LMtcPovJIwPb4fUXGlcRHZj24RPnEfo2T9jaL9QTvw3R/jEo3t9gZy4b37zO9x1120sWvR1MjIyufjiyzn22AV9cqzuUEApIiIiIiIig0a8l2XbHpZfnTYSv8+mIRIj7HocPTy/dQh4aNdj4j0S2/ZUrGyJsj6/iYNm5BDZ4OHDIVrtkT3OoWC2Q4sdTsprFJGBITZ5HC1nn0zwr29itVkwx2RlEj7xaGKTx/XZsUOhENdddxPXXXdTnx2jJxRQioiIiIiIyIBmWWBZFl6bno5drWad6GUZgqOH5+MBYc9jZWUjv/pkMwBfmTKi3bDvtj0S2/ZUjHMKLY4OFlLxZoz0Eht/iUXdCpfM6T6ixOgru4elcfFwVUO9RVJfbPI4YhPH4JRuw2powmSmtw7rTtJckMkyuF6tiIiIiMhehMNhrr32Wg499FDmzZvHI488stfHbN68mVmzZrFkyZJ+qFCk9/hwCHj+ve+YwiwL/OEAVPqxrV2XuHtbzTrH72NqYRaeMTREXZpjbuK+lpjHkcPzOXp4/l6P77MtRgXSaQy7FB/hxxllqFwZpW6tS8Ny8Pdhv6C2q5a3DVSfW1vGgx+XJsJLEUlxto07ejixaRNxRw8fdOEkqAeliIiIiEg7d955J8uXL+exxx5j69atfO9732PYsGEsXLiwy8fceOONNDU19WOVIvvPh4/m1Rbhao+8w/zEnOjeH5Ri4uFk+RsxYk2G4qP82IUxPOPt9bFpnqEs5vLrlVvIDwVI9zuMzkoj4hl+u3orQzNCfGPGKKbmZrTrgbn7Qjyba1sIrnEIbzcECjwycn0QcCEKdWtdQkV+nKE2rrv3mnqTa0GzMTTblnpRikjKU0ApIiIiIrJTU1MTTz/9NA8++CDTpk1j2rRprF69mscff7zLgPKPf/wjjY2Nnd4nkqri4WTNip097N6F/MMGVk/KtuFktKE1gCv/d3SvIWXbYdHhnaFhdUuEoBPCsS0c28IAAdsizbJaF8ppE/DtvhDPH6vLGT4hjeEmQE6Jj4Z1HoWT/dQ5UZqzXcpyXLKNQ1oftEFXq5afNb6EjKCP9XVNpOVmaMEcEUl5g6/PqIiIiIhIF1auXEksFmPWrFmJbXPmzGHZsmV4Xsewo6amhsWLF3PzzTf3Z5ki+6VDOAk0lXlUv+sRqe/fXn77qrNwEsB4rSEllb52w73bajssemtDC1+ZMoKvTBnBMcPy2VjfTGPU5QsTh3LxtJGtPSf3wjWGP1WUU3J4gNrlLvXrXKqWxsgu9PH41s388uNNfTbUuu0w9sLQroC5MOQnzbL415bqPjmuiEhvUw9KEREREZGdKioqyMvLIxAIJLYVFhYSDoepra0lP7/9fHS33347Z511FhMnTtznY1pW57d33y57p7bbO8exiW2xqV0RZfdmai73qP4gRto0H1EvtecutCwLrwXcFtPhdeBBdIchWGBhOnkvuBaETWuo+frWapyd+eaRO+ebtICp+ZkMDfpbh0bv9hw+z49lIOpEyQ34uGzaSAq8EBVvx8CAHbDwIlD9TowzppXwx4ptO2vuvdffFdeCmGdoNoamSOs5rApHIdh6f24gNRfN0Wd336nt9l1vtN1ga/fWBcl2/dz2//tLAaWIiIiIyE7Nzc3twkkgcTsSibTb/u9//5ulS5fy4osv7tcxCwqyerRd9k5tt2dRv0e0HJq2tA+qfFkWudN8hPIDXTxyz4xrsJz+u1o3+Qa/30f5m1FMmzw1b4ZD7lQfTrDzWqprGlgwqhCA/JCfP2+sBGBUdhpjc9IByAz4GJmf2eGx0UaPindiuC2G4qMyKMyxKa7z2PZaFOrB8xu8fIMBmnd4hN+Bs48ezg7PI+j4EscsTAv2Ykvs1BzmomkjWVPXxKaGFt4uqyUQ8PHipsrELpdNH8nIwtT9fOizu+/Udvtuf9qupaWF6mobx7Hw+Q7cQcqeZ2HbNnl5GYRCoXb35ef3zntPAaWIiIiIyE7BYLBDEBm/3fYLeUtLCz/4wQ+44YYbOnxR76mqqnpMm5zIslovlnbfLnuntuu+jBl+IlGPps2tQ7r9WRZ5R/gI5dv71H6OZeOW+XDSweRE8fqpl56VYZE3158IKfMO9uGMjFJT3wL1nT8mHHP5V2kVAOdPHUEkEuPo4flkB3xcPm0kjoFc26aysv0T+Dw/dR8YGje1rvYd/adLwRE2xjH4Cy2itdASddlU35x4TOFBftY3NbJkc01i26XTRkJj+98zvSVgSLy2zoTDsQ6vKxXos7vv1Hb7rjfaLhqN4HkermuIxQbGFBn7wnUNnudRU9OI39+6oFq8/aqr63slpFRAKSIiIiKyU3FxMTU1NcRiMXy+1q/KFRUVhEIhsrOzE/t9+OGHlJaWsmjRonaPv/TSSznzzDN7NCelMXR6YdTVdtk7td3eRawoubNa5yyM1hmK5vuI+iNAsMft51g2sTIf29+OYvug5Bg/Vnb3Qsq2C9bk+Hs+/NgYg5UbpXien0iNITjGI2rcPR6nsmXXauVh1yNsDDFjuPeDDSyaPqp1URy3tRdknN+0hpMNm3Y9d3OFR9XbUHC4Tfqk1t6cOz7Y9dyFB/nZOLSRJdU17G5P7RuIBcCCiNPzELOzRXPOGl+SmJ8yx+/DpOAQ7zh9dved2m7f7U/bDbY276yteqsNFFCKiIiIiOw0ZcoUfD4fH3zwAYceeigAS5cuZcaMGdj2rqFbBx98MH/5y1/aPfakk07ihz/8IUcffXS/1iyyr6J2a0hpeRYRX6TjXI7d4Fg2bnlrOIkBLwplr0cpOcYP3Qgp4wvWQGvPwn1ZbdoYg5cbJZBjE6NjOLn7cdra2tDCZ0YUUJgWwOliIjXHsYlssGjY1HFezuYKj4ZPbTJmGPJn+GiJ+uFjyJ3ko2V8lN+tag0ndw8J6aJdArEAFf+KYdkWhUcFehxS7r7COLQumFMS35bC4aSIJEckEuHii8/n29++mtmzD01aHQooRURERER2SktL48wzz+TGG2/kRz/6Edu3b+eRRx7htttuA1p7U2ZlZREKhRg9enSHxxcXF1NQUNDfZYvss6gdhX2cNm33cDKubUhpsqKYfuhiZIzB7SKc7MrRw/OJD8jcXN+CMaa1d+XOYC/eo9N1PQIjDFlVDvUbW4/hzIB6J4YTsqDEJua6OCGLrEmGtIIgjblRGjwX1wLHdC8kjIeT4VoDGCr/zT6FlHHx3pR7CkRFJPk8N8KOmuXkFMzCsiyMMdRVvU923nRsZ9/mBO6ucDjMTTddx/r16/r0ON2hgFJEREREpI1rrrmGG2+8ka985StkZmbyzW9+k5NOOgmAefPmcdttt3H22WcnuUqR5NvXyKur4dadhYO9pbOhzx7wl02VBOzWnpM+2+K5tWWJx7Tt0Rm1omTP9AOtIWW9E+PRDZsJ5MLFhSMY6mvdL0aMyvwo93+4kSOH5xPzTJc9M9tqH062aqn29iukTPSmVDgpkrI8N8KKd79PbcU7DBt7DmOnXcG6j+9j2/pnyB0yl6mH3dpnIeX69eu46abr+uWPSN2hgFJEREREpI20tDTuuOMO7rjjjg73rVq1qsvH7ek+kQORZzyc4hhFR/jb9aK0/a3zUHrZ0U7nO+xquHVX4WBv6GzoM0DAtgjGA8S9XKO3DSnDIZdALnhWxwdF3dZ+mTZw8bSRpFnWHnsx+hyHprWmXTgZ11Lt0VxqExhv47oH7gIcIoPRrnDyXQC2rv89dVXv07hjLQC1Fe+y4t3v91lI+cEH/2H27DlcdtkVnHDCvF5//p5SQCkiIiIiIiL7xN0tpIwvkuN1c5GcZIj3pvT5bA7Ky8Bnul5Qpm2o2GxblEVbsKbb1IejiXCysiWKmwYby2tJd+xEr9B/bammKBQgLeRv7THaRa/QmOuSNs4iu9lhx9r2w9RzJjqExphE6Nm2lv1ZXEhEkm9HzXJqK95pty0eTrYy1Fa8w46aj8ktnNXrxz/rrHN6/Tn3hwJKERERERER2WfxkLL4CD9OOnsNJzsbbg3dX0imLcuyCEQDuL5Ylwvk7C7Rm9IA9s5elWmt/9vTXJF76vkZNobSxjAXTB7GW1uq290Xt6deoVErRtY0H7ArpMyZ6JA5FaJ0XJynNxYXEpHkyimYxdCxn2fb+me63GfY2HPIKTik/4pKIgWUIiIiIiIisl9c42EXx/Ass9eek10Nt+7patOWZeFr9LP19Qg5k32ExtLtkLKtQCyAFQ3DPq1j3spnW4zOCjE+J52SUKBboWu8F2S8B2TbkNKy6TKcFJEDg2VZjJt2JTuqPtit52SrjOzxjJ12BVY35rE9ECigFBERERERkf3mGW/fV87poXg4WfZ6FDcM1R/GyKfnIWV8cRr/KJtLJ4wiN2CD2/mL2FvPz2DQR5qB2jZhQnd6ZLZfjCceUnYeTsZDzf5aXEhE+o4xhnUf39dpOAmtw73Xf/wzxk67clCElAooRUREREREZK8sC3p7sde2oV9PhnW3DSfjqj+MkVFo05Duke139hrUtVs5uxYc2ybtCD9WUaw1bN3Nnnp+DvU5FOZlUllZT20nx+rJnJFRq+tek3XRGK+sr2BB4RBygz5qw7E+XVxIRPpOXdX7exzeDa0L5+SXzOuTOShTjZ3sAkRERERERCR1+CMBArH2K8ZaloWvKUAg0rsryaZ5hhLHocTZe6CYqM/zUfUft104GVdRE+GhDzcnwsCutAsndzIebH87iqnwYVv7fqkcD10vnTayNXRlV2/JB1aUUhaJUua6iV6QlS2tt8tcl2Z7z72kgrbDsfYQyv4a5fSsoeQG1edIZKDKzptO7pC5tJ1eIiN7fJs9LHKHzCU7b1q/15YM+m0mIiIiIiIiALRUe2x/M4ZlwZB5ASK+yM5w0k/Za1Fsv0Xx/ACRQCRpNUbtKIVzA5S/YYg2tAk1LQjl25jazoNOBxvL2Li2i9cC0caO+xkPwhUe6QU2ntWxF2Vch56fbbqWtutpuVvoGvMMa+ua9mkhHceyyanw0fBRhALHZvsbYU6fP5TYaJcsv7OrFg3xFhkQbCfA1MNuZcW736e24h2GjT2HsdOuYN3H97Ft/TPkDjmMqYfdiu307h+GUpUCShEREREREcEfCVC2JEp0h8EAFW/GGDIvgIlC2Wutw6ndsKH8jdheQ8qeDGnuKWMgGoxQPD9A+RsxvLGGel+MUL5NlR3BYDrMy5jpWcS2+ghXe2RNc4hlRSmZ76fsjSjerukcyZnokDFl74vTdAghu+j4uPuckT7bIj/k5/ypIwi7HlsbWigKBfa6erlj2XjbfVS+FSWIBTbEIobtb0Q59JRs/Ok7V05XOCkyoMRDyh01H5NTcMjOhXO+SUHJfLLzpvVbOPnmm+/1y3H2RAGliIiIiIjIIBeIBlp7Trbs6r0XqTNUvu6ROdbGa5PXRRv2HlLGhzRD38yL2DakXFPZwq83b8GqNZidq/S07ZV42bRRhMpDVLwb3flYh+zpDrHs9iFlzkSn11fObtsOAI6Bl9aWAxA2hs+MKOjW6uX+qJ/SJZEOixDFIoaKJVHGnOCnxUper1YR2Xe2E2g3x6RlWYNizsndaQ5KERERERGRQcxnOzSVGqI72qdfFhYt5R7RWgjmt790jDYYIjVg2/13SdlsW+3maYyHlKEiCyu0K5xsy8LCa7YS4SRA/TqXHcvB5zm4O0PK3IN8vR5O9qaoP0rR4f5ET02/bTEqK40x+WkMPTJAxInu+QlERFKcelCKiIiIiIgMYjHPJW2shRdxaF6/a7uHIf9QH4E8qPtX+/kYhxzmxymJ4Xq7trcd1h0f0pz4uc1w630d7h3vjdi2R6YxkBWwuWTaiMSxnltbxlnjSxiS5se02PjLbNzdnqt+nYvj95E+xcbNjpKeZRPtsNcu+zpkPT5XZbwugLPGl1AY8hOzIOTYZFj2Xodmu8bDKYpRfKSf8rei2AbSAhYl8/142ZHW4d0iIgOYAkoREREREZFBLmrFyDjIh9/vULm8NYjLneojbZLBbrIZNi/A1jdbhxAPOcyPb3gM17QPLXcfzhzX3UVgOtNZ6NlZ4Jl4zp3bC0N+im2HQDBA5VYXl/a1OkHIGG0Rw8MYQ2wP4WT8tT2wopSYZ7h42khKAv5uhZSJ2kK7trUb0m1ot8DOnrQNKSuXRik+2o+XE02Ek30576eISF9TQCkiIiIiIiLErBj5h4SIRmPgWGRMMpgdNlveiJBe7DBsXoBo2HQaTkL7la076zEY36cnC7l0Fnr2JPCMOBEKjwxQ+RY0VXtEPYMTtCg5NkAsPYLpZjgIrStwb6xvZm1dE2m5Gb0+r2Z3xEPK4ScGiPjb95zs63k/RUT6kgJKERERERERAcAXssg4CKA1nIwvINOwubWHYe5sm0gn4STQaU9GoFuLwPSWeEjaNgiNh5Rb/m0oLWsm/wgf5UGXIWbv82fuvgo3QEvMo9kYyly32z0V24a3XYW0zU6Y2mhTh+25/nTS3GDitms8XCcMnZ8GEZEBSQGliIiIiIiIJLi2i123a3XruIbNLgZD7iw/Ubtni7LEg76eDj3urFfmnnpkJkLS3Y4RcSLkHelnR5WPP1Rv40tDhnXr+FWxGA8s39T6HDuf87ertzJ0a4iAbSWGe6fvpSdmu/C2i9dfG23igVWvdtj+9cknkGYHO3nE3uf91FBvERkoFFCKiIiIiIhIgs841K722oWTcY1bPHImOlg51h6HR+/eY7CzBW66o6v5JUscB8ey8Uf8RAJdLxLTNsCrCrfwUuV2wq7X5cI9ltX+dYUcm8+MKKAl5vHb1VsB+OLEYYR8rb0v1+8c7p3u2/Nr6qv5Ifc276eGeovIQKGAUkRERERERBKixMg5xI8XtWkqazOO2ILiI/14ObG9zt2Y5hnYGUy2HSLdWyt6O5ZNbIuP8vcjFM/zY+VGO62pJwv32JaNvcOHlWmIWq31Zlg203MzaDaGoVtDbGtsIeSzKQkF2vfi3Et7aH5IEZE9U0ApIiIiIiIyCDmOjet2PpFh1I6Sd5gf3qU1pNwZTlpFMbwu5qDc3f4ucLO7eK/MvICPWKmPiveiYKDsjSgl8/14XYSU3WFbNlT52PavKOlDbXLn+Ila0UQPzjLXJWBbif07zKtpdfHEXdjXIe+7a9tTNQqsqm0EYHJuBn56viiRiAweFRXb+elP72Lp0vcIBoMcf/yJXHbZFQSDnU8p0dcUUIqIiIiIiAwygViA8FbwD3OJ4Xa6TyKkXApZY5wehZN9Ic0zZPr87cJJAON2HVJ2Z2Xx3IAPKnyU/yuK8VqHsQOJkDL+PBdPG8m6HU2MTU/HZ3cvkexskZ3KlijNxrC2rolDCrNI62m6uVubxEPe9bEYj32yGYCbj5jESJ/CSRHpnDGG6677HllZWfzsZw9SX7+D2267Gdt2uOKKbyWlJgWUIiIi0i22bWF384JM9p3nmS7nUhMR6Q2BWICKf8UI1xryD/YRGsseQ8r8Q/3E7J6Hkz1d4KZbtUcDbP9PBNu1MY6XGFltXKh4J8bQ4/2E7Uhi/72tLG5bdrtwMi4eUubN8RPZ2ZOyJOBnZGYBde+6FB7ix8rqeu7LuK56kYaNYWN9M+OPmEShr/WyPNefztcnn9DhOXL96XRxekTkALCluZpmN9Jhe5oTYHhafp8cc9OmjXz88Uf88Y9/Jj+/AICLL76cn/3spwooRUREJHXZtkVeXoYCyn7geYaamkaFlCLSJ9qGkwDVH8bIpzWkdLtIwSLWrt6Ke9NuMRjbt2sY9G4L3AA9Dyc9P/XrXIoODVD6pzCBbBv8rSGlE4Tio31EnO7XCuB4DnXrXDrLXpvKPXKbHayM1ikmc8J+Kv4dw60zVLweoeQYP2RFu/372rUgtnPf+IrgYdejzGpt9xw7xNDOVuveQzjZtr3rIzFGZ6Ulfi6zWv/N1kreIqlrS3M1l7z/yy7vf2jWZX0SUubnF/DjH/9vIpyMa2xs6PVjdZcCShEREdmreO/J1S/W0FwVS3Y5B6y0Ah8TT8/Dti0FlCLS63YPJ+OqP4xRgI/guP0/Rl8tBhPw/NS8Y6hf7REo8Bh+UpAtf2kNKe0Mj5Jj/MQy9jwH5e4ri+O1LoaTO8ffOrR7266U0vgh/ygf29LCZFg2ORF/a9vVtT6/F4Gy16OJkLKr48aPWdkS5ak129hY39xuFfCtDS08vaV6n9tr9x6awZ2h5B/W7PtcnyLSfzrrOdmT+/dVVlYWhx9+ZOK253k8++zvmDPnsD45XncooBQREZFua66K0VQe3fuOIiKSejzo6lo31mIImb7rJR8P6vZpWHebcDLWZIg1GSDK8JOClL0RYeRRQdysCMZt/7x+z4+xDDGr9Q9r7YZ7t6khYu1aEKhxm4flaw0nf1G+gepNUa6ZNoGKf+8KJ+PiIeXw4wNEguFOa08cMwQ+22J0VhrTCjJpDMd4bm0ZZ08o4fKpo/FsjxzNGSkiSXL//feyatUqHnrosaTVoIBSRERERERkEIgGI5QcG6DstdjOkK9VziSHzCkkgrx90dViMPGh3Ynh3t0I4NqucJ3j+qh+x6NlC8Sadz22qdQDouSd47Curgl/xCLbbyeGMgc8P1VLPIIFNumTfMTY82uLh5TW+xZZ423Ks8NUb2p9LQ12jNyDAmxf0nH4ePZYBzew9wkic/w+vj51V+/Nup09HQvtIL6/OxQdFcTLjtLTJYi6swiQVvIWkT25//57efrpJ7npph8xbtyEpNWhgFJERERERGQQMKZjSBkPJ6PE9mMt6a4Xg4nryTDj+HNdOm0kWY5NqMimudwlmGcTrvHAgOWzsH0WVU0RHtu8GW+LlzhGPJxs3t76H/i6FVLWOTHsQ2zKrTBlTbt6RG5uaoEiyJ3rp/rdGPbOFDF3skP6QRDrRtvt3nuzDrCiNs0VHlazvWu4eHb357Ts8LydLAIUP56ISGfuuedOnn/+Ga6//mY+85njk1pLSgeUf/3rX7nyyivbbTv55JO59957WbFiBTfccAOffvopEyZM4KabbmL69OlJqlRERERERCT1tQ0pmzYZ0iYYonsJ7rojZkF45zyMPtvC6aVMLIZLaBzk4VDzUWtIaU3zaMl3Ced41HhRPKs1MaxsiWIHbcJVYdKLHdje+hy1n8SIh5TxfTtbkbyzkBV2Ba2jMkKcd9hIat+JkTtpVzjZU5ZlkWeCnF80nKyoDxfwouxzSCkisi8eeeSXPP/8M9x4460cd9wJyS4ntQPKNWvWcNxxx3HLLbcktgWDQZqamrjssss444wzuP3223nyySe5/PLL+etf/0p6enoSKxYREREREUlt8ZAyNMkh6u19eHJ3hBybz4wooCXm8XZZDY5l9WiYcdvVqOPDxHcNEXfJm+AnD4faj1xa8j0eXl2KweDL2fUcz68rx62DaJPhkskjSW9zuVv7SYxgTgDL54Ax2ENiHUJKn8/myOGtq+XawL92Ll4Tt6mxhaZxUYYfH8RkuB3CycrmMNtibuL1drVydjAWoOIvEdJ3hpNxXhTK/xVl+IkBWuzO57Tck84WARKR1JbmBPbr/n21YcN6HnvsYc4//6scfPAhVFVVJu4rKCjsk2PuTUoHlGvXrmXSpEkMGTKk3fbf//73BINBrr76aizL4vvf/z6vv/46r7zyCmeffXaSqhURERERERkYjIGY2b9wcvdQ8a0t1Rw5PJ+IZ8CGjKBvV1C3l7CsO0PER41z8Af9bAm6xJoNBgNY+HIsDAZjDL5MG7eTtdyyRjr4QhZb/hnGsqH4SH+HkLLF9fjn5ioALpk2MhFQtg1ag45FLDNMZ4t2V7dEu7WCedQXZcihfsrfbj+npWXDkMP8RJyOc112R1eLAIlI6hqels9Dsy7rdLXuNCfA8LT8PjnuG2+8huu6PPbYwzz22MPt7nvzzff65Jh7k/IB5VFHHdVh+7Jly5gzZw7WzomFLcti9uzZfPDBBwooRURERERE+kFXQ6K3NbYAsLauibTcjG7NPdnZYi9tg8E8v4/wZou61VGCo2wunjwCgBqi/GFTOb4cizPHF1MY8mN7NoHtNvHL/ayRDtnjfWz5Z2uvRONB+VvRDiGlz0DQsjgkN5thNenMK8znzcrqDvM57m/05xoPpzhG8RG7QkrLhuKj/VDQsWeniBzY+iqE3JMLLvgqF1zw1X4/7p6kbEBpjGH9+vW8+eab/OIXv8B1XRYuXMiiRYuoqKhgwoT2KwsVFBSwevXqHh/H2p+ZoKXP6LwMfDqHIsmlz+DAt7dzqHMsIqnIBr4yZUTi5+7qbLGXtsFgwPVRtcklUmfgI3YN3z4E3LDB79m79ncgUORne3aMYI5N9gQfW/7Rfsh0IqQ8yk+kKEZ1JEplS5RDcrM5qDqH0nVhDpmQx5xpuVgBA27nsWSzbVEVixH1DHVNMVwLHLPbCuadDPduG1Juf7c1LO2vcNLBwef6iPgimM66goqIJEHKBpRbt26lubmZQCDAT37yEzZv3swPf/hDWlpaEtvbCgQCRCIdu8TuTUFBVm+VLL0kLy8j2SXIftI5FEkufQYHPp1DERkIOuv1+K8t1T2ae7K7IlaUgrl+qpawc2XuVpYDwQIbz24f7EX8EYrmB8AxePUetg+83dazsQPgpO/qCRoPJ7d/1HpdWbYMCpr8jJ4bALvz11AXjfHA8k1srG/Gtm1GZgRxLKtbK5jHQ8qRCwNEfNF+Cycjm2y2r4hQPN+PmxlVSCkiKSFlA8rhw4ezZMkScnJysCyLKVOm4HkeV111FXPnzu0QRkYiEUKhUI+PU1VV3+n8IW05jq0LhX5UU9OI6/buP846h/2rL86hDGz6DPYv/R4d+LpzDi1Lf2gVkeTqrNcj0GFIdJyDg7HMXoO4ePC5e7gZsaMUHL4rpHSCUDIsyCVDhyce125/X+s1o5VjUTLfT9kb0URI6YSg5Bg/sfQobsx0CCfjqlZHGZYeJPtgX6ernef4fVw8bSRr65oIe4a3tnact3JPIa1rPFwnvE9zTu7OsiDgBYjYnYeO8XCy6v3W11H+RlQhpYikjJQNKAFyc3Pb3R4/fjzhcJghQ4ZQWVnZ7r7KykqKiop6fAxj2GtAKf1P52Tg0zkUSS59Bgc+nUMROZD4cAhvtPFnWJ2uoN1WIvjsJNSLh5S1H1jkTLGJOVFKTGsYahmDz/YR3a2rpDEGNyeaCCkt365w0hhDjt/HKcOL2L5u1+NKMkIE7Na5NKKVBivmtLt6TiwQ5EJjOMZbW6o5emTBPi0Q1BssC3zNAcr+HaNwjh8vt33ouHs4CeCGFVKKSOroybQg/eqNN97g8MMPp7m5ObHtk08+ITc3lzlz5vD+++8nfoEaY/jPf/7DzJkzk1WuiIiIiIjIoBXv9Zjo+diGD4fwBpuqD2KUvxWFCh+2te+XohE7Ss5sEgEjtAZ0/nCAHf+BgBvo8Ji2IWXbcBJaA1GfE6PoaD+ZhTvnvLQtgpZFVrZNyTxfojdmXHxY+IMfl7Ybzr2tsYWN9c2srWtKrHDe1+LhZPnrMaL1hrI3o9i1/sSisgBOi4+qDzrW44ah8r0Yfs/fL7WKiHQlZQPKWbNmEQwGue6661i3bh2vvfYad955J5dccgkLFy5kx44d3HrrraxZs4Zbb72V5uZmTjnllGSXLSIiIiIiMuikeYYSx6HEcdotCJMIJ5e1hmPxxWn2N6SMEusQTpa/EaN+o0vlErfLkNLLjRJL73xxmGgwxrQTMpg0JgO/bRHIshgyz0c00L21DhzL4itTRvCVKSP67UK7bTgZa97ZgSdGh5DSTYtSNNcPuy2w5kuzGHK4j6jd8/UcRER6U8oGlJmZmTz88MNUV1fz+c9/nu9///t88Ytf5JJLLiEzM5Nf/OIXLF26lLPPPptly5bxy1/+kvT09GSXLSIiIiIiIoBjOYQ37Qon4xIhZZWvXS+/fdE2nIw2tAZ0LRVepyGlYxwsz+pyCo00z+DzRxl+lI/skc4ew8m2PUbPGl8CwNtltQxNCzA9N4OpuRkdepK25etk0Zx9EXADbH9zVzgZFw8pA9HWNnCNhzM01i6k9KVZFB/jI5YW0bQiIpJ0KT0H5cSJE3n00Uc7ve/ggw/mueee6+eKREREREREBp/EnIuwa27FvfDwCOY6na6g7YQsnAyI7efqMP5o+3AyrjWkhMIj/ETsKD58NK+x8GVY+IbFcOl6DsyIEyFnto+o6bpXYVcLBBUEO18gqK2AF6BptSFtgk3UinbvhXYh6sQomO2j/F9Rdp/Ws+BgHzFfmzkn24SU1R/FKJ6vcFJEUkfK9qAUERERERGR1NB2zsXuzq3Ydt5Hu03XGF/6zp57of0Px4xjCBV2flmbXmzj2V5rOLnaomZFjIp3o8S2+nD2cikcNX0zf2TAC1D5tkv1ihh17xv8Zv/mfvSMBwUxio/203bEfOFsH/6RHi5uu/3jIeXQ41M/nAy4AfwmpftUiUgvUkApIiIiIiIifWL3kLI3w0mAqBUl+2CLrDHth0znT/cRGu8BViKcjOtuSNmVZtuizHUpc12abSsx3Puy6SPJDXQdqMXDyZaK1q6ODaVu74eUTtfhZJxrPMJ2ioeT0QDbX4/RuBKFlCJ9ZPPmUr7znSs58cT5nH32aTzxxK+SWo8+6SIiIiIiItJB22HdlS27hiJXtkQh1P2h3m1DSitIr4WTca0hpR9wqN/gJsJJY0F4bftwMq7i3ShFR/ixh8bwvK6He3cm3psU4NJpIylxHNJ9DoV5mVRW1nc6aD3gBqhcsiucjGsodQGHnFn+/Rru7RkPuyDGiJMCxAKxLsPJgSAQbZ1XM7LDENnR2j4ZB/mIWv2zKrpIsmxtCtPseqQ5NsPSg316LM/zuOqqbzFlyjQeeeRxNm/exI03fp/CwiJOOmlhnx67KwooRUREREREpIO2QVxbz60tA1rDubRuLvYSX0HbGNMnPffiIWXG8AB2YYwYLhYWaUMdnE/BDbffP5BtEciHSDfDyb2FtXvqOQmAZehq0XLLAfZzLk5oDSnDgfDed0xh/siucDKu9lOFlHLg29oU5utLPk3cfuDwSX0aUlZXVzNx4mS++93/j/T0DEaOHMWcOXP58MMPkhZQaoi3iIiIiIiI9DnP671wcvdh1tAaUlrFEWI7ew8aY4ilRyk51o/T5jo/cChE5rlsspsTj92btnNwxgNaaA1rV9Q2si0c5dOahi6fr84XI3iYhVNk4bXZJWuMQ/bBloI3wA0baj/02oWTcbWfurg1DnY3z5fIQNPsenu83dsKCwu5+ebbSE/PwBjDhx9+wLJl/2HWrDl9etw9UQ9KERERERER6SA+tyK09hSMB3NnjS+hMOQnx+/rcqXqvmTv7M3Ydph1vCen67avp21IWfZaFCdoESly+cUnGzs8dl95wMMfl5Ib8nPR5OGE6Bii1UVjPLxiPQvHFTGGTNztpk04uX8reQ8E3VkF3gla5M60iTZ4hGvb35871Yed7xJLwvtNpC/Fh3WXNra02x6/3R/Dvc855wzKy8s46qj5fOYzC/r0WHuigFJEREREREQ6SPPMrvAutGt7YchPieMkJ5y0bKxqH3ZG93sXGWOoz4wSW+DhWrA9smsYdHyINux5Ts09hbUZQR9vbathYUERWdsDOMUeruk4B6Rn4JXt27lqbjbOJovQGAZFOAkd5+3sKhSO+iMMOTpAxb9iiZAyd6qP9ImGGOplKgeW3Yd1t3X3J5sTP/f1cO9bb72Tqqoqfvzj2/nf/72b//7vq/rsWHuigFJERERERERSnm3ZNLXYlO1opr7ZxTY2nuV1K2SsjcR4cGXX82nCnoOzzsLao4fnkxH00RSO8dmiYrylFqWNEYbN9RMeBrbfojHSft5Kz8DqlgZGjAsRsSzS+nYUZ1Ltbd5O6Px8RXy7Qsq0YY7CSTlgdXcYd18P9z7ooKkARCJhbr75eq644r/x+/19eszOKKAUERERERGRPWrbgzAZQ7tty4ZKH2WNzfxxczlnjS7h0LRc3muu7XbI2Ns84P9WbObskhJYatNY7VHvtbDtHy0Mmxsgc6Ld6SJDz/ZwkSEHB8tYxAbYPJV7W2QJum6DiC/CkHkBPMdTOCkHrDSne8vCdHe/nqiurmL58o845pjPJLaNGTOOaDRKY2Mjubm5vX7MvVFAKSIiIiIiInvUrgdhksLJ8n9HCR5qc3pRMZv+EmbkhHQohveaa/GsPfcw2tt8mvF9uvPa4s/VYgyFbgCW2jRUutj2rhBh6zsRZmVkMSErgzX1jfv60nFwiGyyie0wZE73EbNifbIKeiqKOJFklyDSp4alB3ng8EmJOSjbDuv+zpQRjMwI9dkclFu3buX737+KZ599iSFDigBYteoTcnPzkhJOggJKERERERERSWG2sWna7uHLsMg3Qba8H6E4LcS2VS2MtNKZc2g2MX/rnI9dhYx7nU8Tuh28xp+rxbYYmZXGZhOlgWYAhmaE8O9cadrUwecOKmYH0X1aZCgeTla939qD0OCQOzmIawzRQOqHd70ZCoscqLoKH0dmhBifldZnx50yZSqTJ0/htttu5pvf/A5lZVu5//57ufDCi/rsmHujgFJERERERERSVowYmdN8BDP9bH45gu1a+HMAC2rWxRiZF2LoNB9RYv0adoU8g5UeY8Rn/Gx/uYVYGPy2RdCyyB7vkDUVopZHOk6PFxnaPZy0gIZPDdEql7ShNmljAikfUvZmKCxyoNt9GHdfDOtuy3Ecbr/9x9x99518/etfIxRK45xzvsj/+3/n9ulx90QBpYiIiIiIiKQ216J+k4sTsog1GnzGYmx+OsYyNG1wKRgXwErv3vDn3pxP0xhDLCvG7FOzqHgzBi2QPc4haxq4jts6UWUPj2nbNu5Wh6r3WxeWsQDLtQlXebRUgB2wcKOQOTH1Q0oR6Z62w737alj37goLh/CjHy3u8+N0lwJKERERERERSWkRK0r+4QGMa2gqbQ3psD1wLEqO8hPLiGC6udBtb8+nGXQNdmaMCSekU/1phIzJBrCwqgI4+TFc4/bomJ7nESiEUL5NuNpLhJPGA1+mRVqxTfWqCM3lFkPmDYyQMtmLLIkMBP0RSqayvu0zKiIiIiIiItILIr4IBUc5pI20wOeBAyVH+zEFUbwkB17GGNKKbTKmeoDFjmWGba9HiJY6OFbPVxWP+CIUHukQyrfxwiYRThYd6ad6VQQvApF6Q6wWHMcmEAniT+H+R2meocRxKHEc0hROikgnFFCKiIiIiIjIgBDxRSg8yiFUaKdMONmW5drsWGao39i6aE/l0uh+hZQFRzqkjWjtNdk2nAQYcpgfu8TFrvex7e8RGpaT0iGliMie6LeXiIiIiIiIDBitPSn9xJzUCiejjR51H+4KJ+Mql0YpxI9/JLjG7eLRnWt9rQGsmEXTVq9dOOkb4WI3OJS9HsUNQ91aF3DInL5zwSARkQFEAaWIiIiIiIgMKBErmliAJlW4zdBc1nlRjaUuBcNtXGtXQNlsW9RFW4PEHL+vy6HPEScCDgTHOuS7Ppx0q0M4GaeQUkQGKg3xFhEREREREdlPoUKb4mN9OCGr3fa0ITYFc+3WULWNumiMBz8u5cGPSxNB5Z7EcAlO8HCGx3A8m5rlbrtwMvG861yod7Asq+OdIiIpSgGliIiIiMhO4XCYa6+9lkMPPZR58+bxyCOPdLnvP//5Tz73uc8xa9YszjjjDP72t7/1Y6Uikorc9Aglx+wKKdOG2BQcbhNxWsPJZtuizHUpc118vp5fjru4eMYjQpT82a2L6LRjQdFhfrzsKMakzvB3EZG9UUApIiIiIrLTnXfeyfLly3nssce44YYbuO+++3jllVc67Ldy5UquvPJKPv/5z/P8889z7rnn8q1vfYuVK1cmoWoRSRXGQGxnSJk5wmkXTkJrr8kHVpRy3/JNVLbs2l7ZEk0El81293o+tl3pG0iEk86wGK5JsfHvg5i92/nc/baItNIclCIiIiIiQFNTE08//TQPPvgg06ZNY9q0aaxevZrHH3+chQsXttv3xRdf5IgjjuDCCy8EYPTo0fz973/nT3/6EwcddFAyyhcZtOJzOe5pHsf+FA8pcw/1ETFRmm2LqliMqGeoCUeJeIbS+mbW1DZx5PB8bOC5tWWJx186bSRpTvdW/W4NKQNUvg3Z4x2FkynGsSI0N6wiLXMCrpeGbXuEG1cRSh+Ga3KSXZ5ISlFAKSIiIiJCa6/IWCzGrFmzEtvmzJnDAw88gOd52PauwUdnnXUW0Wi0w3PU19f3S60iskt8LseeBHt9zRiI7Fykpi4a44Hlm9hY3wzAiKw0AH67eisAX5kyYr+OFfFFKDw6gGsrnEwljhWhuvx1Nm94lcKS2QwfewYNtStZt/JpMrNGMXbKeQopJSVcddW3yM3N4/vfvzGpdSigFBEREREBKioqyMvLIxAIJLYVFhYSDoepra0lPz8/sX38+PHtHrt69Wreeustzj333B4fd/d1LOK3tb5Fz6nt9s+B0H7Jqr0nbeezLEZnpRHxDNsaWwA4e0IJBUE/ALkBH1YPe4JGrUi3j5+KDoT33u4sy6WluQoLqCr7Dy2N5TQ2bAPjEY3swJhIr7zeA7Ht+ktvtF1vtrvxILwFgsPB6qcJGV999c+89da/OOWU07u1v2V1bLfeagMFlCIiIiIiQHNzc7twEkjcjkQiXT6uurqab37zm8yePZvjjz++x8ctKMjq0XbZO7Xd/kmF9ovUefgyLGxf51e+lc1hqnfO4bgj4hH4/9m77/C6rjrf/++19j5VvRdXWXK3nGKnO4QS6sAdCDDAMCEJw4RcJuHemQeYG/IDMnMvhDJMYegwCUkooZehDoFASEh1cOLeZdmyZPV2+t5r/f44lixZki3ZR9Xf1/P4eXzWPtp7nb11jr0/Z631Dbr0G0PIyd7iloYDlEdCM9LXzkSKrmSGrp5BSqPB4eMO9THkuLxj3WKODSZJeIZHW7oIOZq3NFTTk8oQ0JrawgirSvLP6fjWt/gZcMPnnxKMPK8zeQ6HzIXfvdwpIJr3JoJBh64T28ikThAMaILhMlZf9E7yC5fm9Gjne+6sNajTUrHx2hai8zl3yWSS7m6N46hzKnw1xBpo/yXE9kDeGqh8zfSHlH19fXz+859h3br1KHXm/huj0FpTUpJHOBweta20NDfvWwkohRBCCCGEAEKh0Jggcujx6f8ZH9LZ2cktt9yCtZbPfOYzo6aBT1ZX1wAji+0qlb1ZOr1dnJ2cu/MzF86fUuAmgpz4g0dJo4tb7eEzdtpyq+fzlZ1HR7V9e3fL8N//Zv0SiE38xUIutXo+X9l1lGDA5aZVNcPHHa+PVy0q5fhgdtSkoxS/O9pFSClWF0To7Jz6EhFaaWynS6LNkL8OPOUNb0toRW86+7g4OLn1OUf2eSbP4Vz43ZsOWivCectJp58dbosWVpLxwud0vceTi3OntSU5uBfHDREIr8BaMJmjpJM9hAs2YO3CHJ6Zi3OXyaQxxuD7Fs87tyUWrIGuXyniewEUsT2WExbKXmmnNaT893//F175ytfQ2dmBtWfuv+9bjDH09MQIBLJfYgydv+7ugZyElBJQCiGEEEIIAVRVVdHT04Pnebhu9r/JHR0dhMNhCgsLxzz/xIkTw0VyHnjggVFTwKfCWsa9MZqoXZydnLvzM1vnTylwEkHaHvXw4pb2pzJUXhHAqR67tmJRwM0GaGQrYP/wYBtvqK+mPBwY3m7PEMidb2GdoZ8fOj4nd9GVzMDJQYfeWTIdBfz1+iVElDprf8ejlcZ2uJz4YwZrAOOQv8Elc3Lty960NypsDJ9hfc6h13N6ZXFOfjczUwWIFtJ7V2tDrPcFDu/9ARZQSmOtoadzJ44bonb56/BNJGfHO9dzp1Q2nDyw8+so7bKq8SaUCrBv+334XoL6tW89GVIu3JGU5/N7d76/r6eHk1mK+F4LqGkLKbdufYbnn/8TDzzwEP/8zx+ffH/HOVe5es9KQCmEEEIIIQSwdu1aXNdl27ZtbN68GYCtW7fS2Ng4ZmRkPB7nXe96F1prHnjgASoqKmajy0IsGEqBmwxy4mQ4CdnpjX4Mgv1BKEyPCikjxp4qiHMyRCsPB6geajtLmHa+hXWGfv50Pzhwqhr3/7xo2ZgQVQN3XdZAyNEUBBzylKbIc7FxhRfJYCd5p6+Vhs4R4STQd9AnU6uJFRksdkph43iv51wri4ssRZyO409irSEcLmXlxptpPfIInSf+RE/nLqoXXws6dwHluVM4ThClHHwvyb4XvgZK4XtJtA7guGFg4YaTs2n8cHLI9IWUqVSKT33qY/z93/8DodD4M0RmgwSUQgghhBBCAJFIhNe//vXcfffdfOxjH6O9vZ17772Xe+65B8iOpiwoKCAcDvOlL32J5uZmHnzwweFtkJ0KXlCwkNZQE2JmBE2Q9if9U+GkA6VrA3Q96+GEFItfHSIZSsyr0XWeZ04FpiczgMdbuvmb9Uuy7RaCvkvPs4Zkt6H6RQG8vLOHlForVLdL24hwckjnQJr79xzDyQfLqf1I2DjzfJPP8jVvo+XQT6ld/gqsqqC27nU4TpDSqktQbu2UR81OpDPZz3HTy4hLTnEgSsQ/+xqi1oITWsGqxpvYu/1r+H4KAKVdVm64kWB0FUaKw0+LVAvE955pqHU2vMzfYAkvyd1x77vvK6xevZYrrrgqdzvNAQkohRBCCCGEOOnOO+/k7rvv5qabbiI/P5877riDV7ziFQBs2bKFe+65hxtuuIFf/epXJJNJ3vzmN4/6+Te84Q18/OOTnyolhMjKOBnKNgdoe9Rg/ZPh5FaPdI8lWAjtz2YouyJA2smM+dmh6d5FAfeMIyfHTMvm3KcxjzfFHEZX4z5bf4ImQM+zhlhrNv1pezQzqZDSGEswH4LFilT3ac/T4IQUdpx1Oyfzeka+ltOnzJ9tVKoYy7dFLG74C3wTwFrwbZSqpX+GJYTJ4fnsSg3ypT0Pj8wnuW319UT0ZIscKbQTHFUQRymNdgJkR/bJtZ8OoUUQXW0nGEEJYImuzj4vl37zm/+mq6uLl7/8WuDUetu/+91v+PWv/5Dbg02BBJRCCCGEEEKcFIlE+MQnPsEnPvGJMdv27t07/Pdf/vKXM9ktIRY8YywUZKi+LkC6HTqfHgonFToKiQ6frqf0uCHl8HTvSU7rHulcRxaON8UcoCw0/jTzkYFmUcAl6LmjwkkAPzX5kDLtpqm4KkjHE95wSKlcqKkJ8a7abJoxlbBx+PWMeC1TmTIvJub5gVGPfRNkLgV+SilM5ij7t9+H7yVR2kWhMH6afdvvZ1XjTbihFTkNVEWW0tlCOCOnc5+SDSenYw3K//iPL+F5pwpqfeELnwHgf/7P9+b2QFMkAaUQQgghhBBCiFlnjMUpNJgjmnSfpWi1Qzpm8L1sMJLoMKRaHdxlGt+fX3NORwaaGvD7FLG2sa/BT0H/PkPhJc5wsZuJjAwp0/2W6i0BTCBDtR0bnErYKCailCGd7MbzEmgdYOWGG9HaZd/2+/G9FKlEJ25oGbIO5fQYP6ScvnASoLq6ZtTjaDQPgMWLcziP/BxIQCmEEEIIIYQQYk7IeB7RtQEW5wVIdkB0qaZ7dwbrQfFal8Big3eO4eRkKn+fS3g3tN9QyCViAf/M+zDG4pR6VF4WoP2ZzKjBdHm1mqKNirQdO5V9PEMhpUmAXzj5IjsTOX2kp4SZC58xikjhBurXvgXHjRCMrsJaWNV4E6lkF3nFl2KMhJPTaXRIybSGk3OZBJRCCCGEEEIIIeYMgyWTUPTu8tBBKLssgDGWSIPFO8uowjM538rfZ9pv1HUoL8mns3NgUpN3fWtwakeHlHm1mpJNmrSeXDg5JO2mUYVqTDh5LmHjqHMk4eQFwxhNuKARUMMFcZzQCvLCy+dFOJlwUvRm4mPaJ1soaC4YCinzN1hCi5jRcPKuu+6euYOdgQSUQgghhBBCCCHmBBeX+F5F754MbqHC64e+nT41r3RJkZrt7uXUyJAy1uJTcunUw8kh442clLDxwlEWyufda64fU8Ubf/L7sFaf9nhs21zVm4nzxb0Pj2mfWqGg2ac0Oa3WPd9IQCmEEEIIIYQQAqXGD7pmimtd4vsUvXuyoyQNFrdQYYzlxGMZKrYEyQTTOTnWZCt/T7ehkLK42iGtzi2cFKI8XAiDilFv3ymEk0LMBRJQCiGEEEIIIcQFTilwE0EGm3x0oca3s1CERlm0q0Y1maEhYUqh1Dg/c44mW/l7JvjW4Kv5VfRHCCFybX6M1xVCCCGEEEIIMS2UAjcZ5MSjHice97CdLnoWqjN4+ITrDaUbRo+jCRYqKre4pAO5GT0pxExyVD+OTg4/1jqBowZmsUdCzE0SUAohhBBCCCHEBWpkOOnFLRhofzwDcySklHBSzGeO6qdp37dpP/ZrHJ3E0Unam39J8/7vSki5wMzm8hgzYSZen0zxFkIIIYQQQogL0Onh5NAMamvgxB8zVF0dQJd7mBme7p0NKaE8GCBczQURTjpa4xuZ5r2QuK6ls+UJ+nsO0t9zEGsN1ni0tz4DQEH7M5RWvxRP1oo8b8WBKLetvn7c9ulei9M5WYgqnU4RDM6fgjxTlU5ni5Q5zvTFiBJQCiGEEEIIIcQFSCmFSYGfHjsyxhrIDFqCZTlc+HEKPHwCyyzpCyC0C/pBks0QWmLIKG+2uyOmKOGk6M3Ex7QX2yhl1dcQH2yjp2s3J1qeGN5WWrGBkqorJJzMkYgfGr9a9wycX60dIpF8Bgd7AAgGQ6hcLpg7y6y1pNMpBgd7iETy0Xr6RtbPm4Dy1ltvpbS0lI9//OMA7Nq1i4985CPs27ePhoYG/vEf/5ENGzbMci+FEEIIIYQQYn4wxqKKMlRvCdD2WAZGZGNlF7uElhm8WSwFfCGMKAz6Qbqe8kl0GIpjDnlrXAkp55neTJwv7n14TPttq68noktYtuoNDD7bTCYTAyAYKmRpw5+T8fNmuqtimhQWlgIMh5QLUSSSP/w6p8u8CCh/9rOf8fvf/543vOENAMTjcW699VZe97rX8fGPf5xvfetbvPvd7+bXv/410Wh0lnsrhBBCCCGEEPODtRZTnA0pTzyWAbLhZHCWw8kLwchwEqB3nw9ISLmQODrJ8SMPD4eTAOlUP21Hf0flouvxbWT2OidyRilFUVEZBQUl+P7Ce+86jjutIyeHzPmAsre3l09+8pM0NjYOt/385z8nFArxgQ98AKUUd911F48++ii//OUvueGGG2axt0IIIYQQQggxvwyFlFVbAhDXqNoMnpVwcjqdHk4OGQopo2tcPAkp57Wo69B94jHajz8NQGnFeozx6e3aQ9uxxwmGCiiuvA7fXzjTgS90Wmu0Ds52N+atOR9QfuITn+DP//zPaW9vH257/vnn2bRp0/C8fqUUl156Kdu2bZtyQLmAlgZYUOS6zH9yDYWYXfIenP/Odg3lGgtxZgFlCcbjqGQagi7paB7pWahKPV9Ya7ElGYqX5dHTl5zt7ix8Fsw4a38C+GmQj/j5L+H51FZcSnf7TiJ55Sxa8XqwFqV+QDrVR3H5xRJOnqcJ1/8MRIn4C7dgzUI1pwPKJ554gmeffZb/+q//4u677x5u7+jooKGhYdRzy8rK2L9//5SPUVZWcL7dFDlWUiJrccx3cg2FmF3yHpz/5BoKcX6iXgae24U5chxsNgRyK0oJXnUxg6HwLPdu7rLW4gQkMJkJaTdNxZYgHY95pPpOBZUFyx0KNyoyKjOLvRO5YAFDKQ0b3gEqiG+y/7Yvqb8B8PBt8Wx2b0E48/qfElDON3M2oEylUnzkIx/hwx/+MOHw6P9EJBIJgsHRw2aDwSDpdHrKx+nqGhj6P8uEHEfLjcIM6umJ4fu5XRBbruHMmo5rKOY3eQ/OLPkcnf8mcw2Vki9ahRiPzXjwp92YppbR7R3dmEefIfyyq0jqOXsbJC4gp4eUEk7OT8WBKLetvn7cdnzwbUk2rTzJt/kz2LvZISMbxbmYs/8yf/azn2XDhg1ce+21Y7aFQqExYWQ6nR4TZE6GtZw1oBQzT67J/CfXUIjZJe/B+U+uoRDnxvb0Y460jL+tdwC3fwCKS2a4V0KMbyikjB22RBuQcHIeivih8UfrLYBlXM81aJSRjeJczNmA8mc/+xmdnZ1ccsklAMOB5K9+9Ste+9rX0tnZOer5nZ2dVFZWzng/hRBCCCGEEHOHTabAnCHhH4yjSkrkSwAxZ6TdNJHVDhmzABItsaBI0Chm0pwNKB988EE871TVsn/+538G4H3vex/PPPMMX/nKV7DWopTCWstzzz3HbbfdNlvdFUIIIYQQQswBKhg48xMiYQknxZzjSTgphLjAzdmActGiRaMe5+Vl171atmwZZWVlfPrTn+ajH/0ob33rW3nooYdIJBK8+tWvno2uCiGEEEIIIeYIVVKErqnAtHaM3ZYXwS+StVuFEGIhONv6n2J+mbMB5Znk5+fzpS99iY985CN85zvfYfXq1Xz5y18mGo3OdteEEEIIIYQQs0iFAqjLG1GPPYft6j3VnhdBv2gzsUBwVMEKIYS40Ex3EZuZCg4X8vqfF6J5E1B+/OMfH/V448aN/PCHP5yl3gghhBBCCCHmqlgoTOglV+AODMJgHMIh/MICYoGATO8W50yrDAqLb4PZx9qgSOObqRdrFWI2TffakhIcinMxbwJKIYQQQgghhJispHKgsCj7Z4iEk+IcaZ2hr+OPGD9DadWLsMolMbCD3q7d1C5/HcbKbD6x8MgUajGTJKAUQgghhBBCCCEmoLUi3red5oO/ALI5dySvkoO7vo21Pq4TpmrZn81uJ8UFx9EJrA1h0QBolcIqjTFnKRQ2BTISUswkCSiFEEIIIYQQQogJGGPJK6ynsKiO/r7DtDSdmhobDBVRXnMlxsit9YVkutdwPBtHxWg59GPKKi8mnL+GTHqQrtbf4QbyKSq/HP8sIaWnfFI2M267ELNFPkWFEEIIIYQQQogz8G0RdWvfxt7nv0gy0Q2A1gFWb7wFq6umZW1TR6WwKoAxQyPkPFAGY4K5P5iYkulew/FMXCdDa9Mv6Wp/ge7OXTSseyv9Ha0cP/IIFlgZKiBSeBG+P/EvZcb6HIl1jtuOmsbOC3EGElAKIYQQQgghhBBnoLUhNnCEVLJvuM2YDD0dOyitKsWQ29DQUUnaW35NXsESokUbwRoGup/G8xKUVl2LLyHlBcs3ASpqr6K3ey/pVD8HdnydYDAb7RSVNBApqDtjOAlQ6Ia5ZeV147Zjzq1fsz2qVMx/ElAKIYQQQgghhBATUAqSg7s5uOshrPUJhgoJBAuJDRzjWNPDKO1QUrUlZ8dzHENX6x9oO/Y4SmlWrAHfi9O0/ycAuIEohWVX4cts3AuStaDcWlY13szOrZ8Dm/1FiEQrWL76LXim4Kz7yHiGx1v3jWlvLFzKySUtp2xoVKlRhow59ct565qXESEoQaU4KwkohRBCCCGEEEKICVgL4UgloVARxvqsanwn2onQtOdbxAaPk1+4DGtzV5jEGE1JxUV0tT1HMtnDwd0PDW+L5tVQULxGwskLnCZFZ/sLWOsPz8hOJnuIDzYTzluLseeYMuZAxoyePn6gv43HW/fNyPR3Mb9JQCmEmBe0VmgtC6JMN2MsxkzDIkpCCCHEBUKp7P9X7HQsSihmjdUVrGy8BWsNOFX4FpaveStepg8dWJrTNSitBaUraWi8hd1/+jy+lwQgGCqkYcON+LYkdwcTOVEYjFARjI5qcxyD7+c+KNQ6TVfboxxv/h0A+YVLsWaAdLqHA7u+xaoNf0Uwunbe/Z8+oAJ4ePLZeQGTgFIIMedprSguieLo2fsm8ELhG0NvT3ze/YdGCCGEmG1BawjGYtDRDVpDRSnJaBRPKk4sCNaCVRXZAiIn/5vk2yJ0oCgbKOb4Mis8BvoODoeTAJn0ILH+ZqJFxcOFcxaqub6eYXEgym2rrwfA1Zr8dAfxgaMUBUPggbaddLY8Q3nti/FNJKfHtjZIftFytBOkoHApy1e/FUcn2LH1Kzg6SDBccdb/y4/s/+ntzMLo3KAfpOc5n6J1Afz8jISUFygJKIUQc57WCkdrPvaHb9Pc1z7b3VmwlhZV8sFr34LWSgJKIYQQYgrCxsd5fjf+geZTjUoR3riK9Ko60ue6qJuY86yFhFb0ZTy6ewaJaEX4LAVKzkYrn8HerTTt+zEAkWglxk+TSvVyaM93qF+riRRuxJxjMZP5YDarZE9GxA8R0SGUAuMdY9+Ob+B5CQJWUVy+nv077iOZ6MbLxKle+mf4NpyzY1sLgfBK1lz017jBUnybT0lJDasab0HpIIaySfd/jFkKJzuf9El2GpJdhqprJaS8UElAKYSYN5r72jnQfXy2uyGEEEIIMUwphXu8bXQ4CWAt/vN7CZaXkC4tnZ3OiRnRl/H4ys6jBIMuN62sodpxzm+HyiUcrcRxw4RCJdSvfwfWZjiw/T58kyEUKc/plPLpoJQaFTCd/nihsBYcN59wtJzB/qMcPfRLjh95BN9PoZSmoLgOq4LDo25zNTLUWtCBZfjm1Ohd5dbMamg9NCozQZoD/W3D7foMw4tHhpMAfgpO/CEjIeUFKucB5Tve8Q4++9nPUlhYOKq9u7ubd73rXfzgBz/I9SGFEEIIIYQQYlYEjYfZc2jC7XbvIQLXlJJZwKPdRG4ZY3FDK1i98Z04bgGGEpSGhsZbsMZDubVzOqB0dJJM6jhuaBnGOGidwUs2EwgtxrezP/ox14wtpm7t2zm4837ig634fgqAutVvIlp08ajp+LkcGXr678Bs/04MjcpMOCkihcFR29avXjJm+njQBugaEU4OGQopa14aJB1MzUTXxRyRk4Dy0Ucf5YUXXgDgmWee4Ytf/CLR6OgFYo8cOUJLS0suDieEEEIIIYQQc4IyBpLpiZ8QT2WfI9O8F5yhqd2dycxwW1cqAydzpqKAS+Qcl80xxqIDSxn6cWsBVYlyZz+IOhNHJ2hr/gXtx5+hbvUbKCy7mN72pzly4KfULL2OipqXLsiQEuNhRqwXCpBJ95NN5C6s9/5kp4/72qeg3iXRZYZHmA6J1jrYgJSqv9DkJKCsq6vjq1/9KtZarLU899xzBAKB4e1KKaLRKB/96EdzcTghhBBCCCGEmBN810WXFEKiY9ztqqIU33HgPNclFHPP0NTukX5w4NTU1r9Zv4TIeUz3Hi+InMvhJAA2yUDvYcByeO8PKS7dQW/3PgD6ew5QUXMNwwnuAqFtJ/t33Esy2YNSmkCwgHSqj6OHfolSiqLyqzE2cPYdXWB8a3BqPCovD9D+dGY4pCyocyhshIzyZreDYsblJKBcsmQJDzzwAAB33nknd911F/n5+bnYtRBCCCGEEELMWRmrCG9YidfaOTY9ch1oWIov4eSCVBRw+Zv1S+hMZvjhwWwweUNDNWWhwPB2LrDCg74toWHDzRzY8TUS8Y7hcDKvYBH1627Et4Vn2UPWXKsyfSbW+hjjo5RmxZo3kVe4gkO7v8Fg/1F8PwPMzPoOrk7gmcjwx5Cr4xjy5nTxy9NDyoLlEk5eyHK+BuU999wDQEdHB57njVnUtLa2NteHFEIIIYQQQohZkygqJnztJszWndhYAgBVlI++rJF4ft5M5RNihkWMzY6QHFGguSwUOFUkZw4HQ9NJOUWUVGwgceSR4bayyo2gCsZM5Z3IXKoyfVZOFasa30ky3kqkoBHfOtStfTuDPXvIL70UY4Jn38d5UAoGeg9zaNf3WLbqjaAr0LaXpr3fpXb5y3FDdfMipKx9cQBVYCScvIDlPKB8/PHH+dCHPkRraysA1trhil1KKXbv3p3rQwohhBBCCCHErPGAeE0VwVeW4CaSoBReJELCcbASTooLiNYZejue4viIcBKg+eAvcdwI+SWbMOY8q5zPMdaCcqqIFFYPB4HGFlNQdtWY0dPTMTJU08e+F+5jcKCL/dvvo2HDX3Jw7w+JDbQQGzjO+k23Yyg7t53PEN8adHFmVoLUzmQ/x03vmPB8qpXVxfnLeUD5T//0T2zcuJEvfOELMs1bCCGEEEIIMWNcBaajh7zeQQi6pKNR0jNUoMIYS9IJQP6Itebm7qAlkUNDU71DIZeI5YJeb1TbQVpPhpN5BYtYseaNHNj5LRLxDlqafsPaklUYime3k9PAWsbMHh1vaYfpGBlqVQGLV7yKPS98i2Symx3PfnZ4W+3yl2FU4bz4LJqtUZ5dqUG+tOfhMafoXCqri/OT84Cyra2Nr371qyxZsiTXuxZCCCGEEEKIcUV8D2fbXryjrfgnq2q7laUEr7yIwVBklnsnFrKIsURdh/KSfDo7B+ZDFjRtfEpZ2XgLLU2/YtnKN2IopmHDzTTv/wGL61+Hb4tnu4sLjjGaiprLSSQGadr34+H2miUvorjiSnw/57GPENMi518nbt68ma1bt+Z6t0IIIYQQQggxLleDs2Mf/v4jYE7Nqbbt3ZjfP0PYz8xi74S4cFhr0YElLF/9dnxbjLVgKGP5mhtRTvXcr0I+TyUTnXS2PjuqradjB9brQalZ6pQQU5TzKP2yyy7jH//xH/nd737HsmXLCAQCo7bffvvtuT6kEEIIIYQQ4gIWSiTwDzaPu832DeL2DUBp6TnvP4AlmEigfB8TCpIKhfHncNEJIWaTtRbPD49qO/3xfKK1QtOHoWh4GrKrB05WyJ6ZJSTOxFH97N/+DWIDLQCUlK2ht3sfyWQ3+7ffx6qN78Ln3D//hJgp01IkZ8OGDXR1ddHV1TVqm5LoXgghhBBCCJFrqTT4Z6hG0z+AKisbs0bcZOSlEvDsDkxrZ3ahuVCQyLp6MvVLSamFVezjbLRWhNJptJfBOk5Og1pXZYNm0mkIBkhHo2SkwJCYZVor/NQR9u3+FivWvJlApB7jtbP/hQepXf4yIoWNsx5SWsIUl6+lt/sISxteS2nlFZT27ODQnu9SWNoAKjIv1qAUIucB5YMPPpjrXQohhBBCiAtMOp3m3//93/npT3/KwMAAV199NX/3d39HfX398HM6Ozu59tpr2b179yz2VMwJgQAoxYTzR6PRcwonI34G+8jT2IHYqcZUGv9Puwkohbey7oIZSRmyPoEDxzC7DmASKQgGCDcsxa5ZQdwJnH0HZxD1M6jn92CaWrJBs9YEl9USuHgNcTeYo1cgxNRp+ti35yFSyR72bb+fFWvexNFDvySZ6OLQnu+yYXMNUDmrfTQ2mA1L85bhhBaT8QJEiy5izcXFBILV+FbW4D2TslA+715z/bhVvM+neJGYupwHlD/60Y/OuP31r399rg8phBBCCCEWmH/5l3/hkUce4QMf+ADWWr7+9a/zxje+kX/+53/m+uuvH37euYROYuFJRyIEF1VgjrWP3RgOYkoKz2m/Tncv/shwcgR/1wFCS2uJB3IXoAUUBBNxVCqDDbpkolHSdvZnobka3J0H8XccONWYzmB2HUQPxghecfE5V0sPYFHP7sA0t55qNAZz+Bg6nSZ49aUzVoldiNMZilix+s3s23E/vpdk/85vAKCUZvmqN2BV2ZwYnRgIRHFCK4anoBujcYIr8OXfyLMqDxfCoBr7/ZaEkzMu5wHlZz7zmVGPfd+nq6sL13XZuHGjBJRCCCGEEOKsfvGLX/Av//IvbNq0CYA/+7M/45Of/CT/+3//bz71qU/x6le/GpAlhERWBkVwUyM6uRX6B4fbVSSEc+1mYqEwTHGko9YK29U78ROSaXQ6DTkKKKN+BvXCHsyhlmyhH6UI1JYTuKyRWGB21+8LJZKYPYfHtPvKkDxyFGf9clqjp96LxYEoET80uX3H4/hH28bdZlraCcZipPMKzq3jQpwnYyyByApWrHkT+3d8fbi9avFVFJRegufNnfD89C/s5As8Md/kPKD87W9/O6YtFovx4Q9/mNWrV+f6cEIIIYQQYgFKJpMUFxcPP1ZK8Q//8A9orXn/+9+P67pccskls9dBMefEgiHCL76CUCqB09kH4RCmqJDBYAh7DtOwrQUVPUMwqDXWyc0alAEFattuzKFjozpgWjpQqT8RfvHlJGdxvUuVSII3djhRxvgcGewgeLyJe+0R0sYD4LbV1xPRkwsoSSQnnpoPEE+CBJRiFhmvnaMHfzGqreP4s5SUrccJrZDK5ELkyIzE/Xl5edxxxx3cd999M3E4IYQQQggxz11xxRV88pOfpLu7e1T7+9//ft7ylrfwd3/3d3zzm9+cpd6JuSqlHZwlNcSXLmKwvJx4IHjOo4istdjKcnDGv2XSi6tIR3OztlswHsc0HR+/H509uAOD426bMROcg2GBAJ49x/mQgbOMmQme3/qWQpwPVw9waOeDJBNdKKWpWXItjhvG91Ps234/yo6zrIQQ4pzM2HjkPXv2YIyUYRNCCCGEEGd311130dvbyzXXXMPjjz8+atuHPvQhbrvtNr70pS/NUu/EXJerEU3JSAR3y6Vw2khJVVIIl67LWZVplUpnp3VPtD2dJppOkt/TTX5vD9FMGq1nbnkDLy8PVZQ/7jYdDNIRVZhzPOlefv6E+1b5Ubz8vHParxC5YMindvn1aO1St/qNVC55Nas23ITjhqlefA3o4tnu4hklnBStpmfMn4STmu2uCTFGzqd433jjjWPWAorFYuzdu5ebb74514cTQgghhBALUFVVFd/+9rc5ePAg27dvH7P99ttv59WvfjWve93rZqF3YiFwNQRT2Zv0TDBIZpxiNL6FeFUl4T97EaqjJzsdubQIr7iIpHP+t1Ih6xMYjOFmMjgbV+J39eG3jB6R5dRUoHv78R77E34mO4WacJDo5Y0kqqvwZ2B6acpxyLv6YvzfPg2p9IjOafJedDlHdIpri5ZxIN1La6Jv6vvecinmd89gY4nhdhUJo6/dRMINzIkiJOLCZIwiUtjIhs3VWFWG52nc8ArWXfq3oIswZm5Xme/NxPni3ofHtE9pGQYhZkjOA8orrrhiTFswGOR973sfV111Va4PJ4QQQgghFrD6+nre8IY38Pjjj3PXXXcNr0v51FNP8eEPf5jy8vLZ7aCYd5RS5CVi2O37McfawEKwtpxQ42riBQXDVXCH+BZioQhqSQSl1Jjt59YHyEvEsY//Cb+7D2MtuqcPtaSawLp6MrsOZp8YcHHKi/Ce2w1qxOS3ZBr/seeIvPIaBvPPrUL5VFgLsYIioq/agjrRie3sRRXmE60poefYERq27scay8al1fQtW4KjJj9Rz1qI5eUTecU1OD19MBCDgjxMSRGxQEgKfYhZZ4wCKoeD8uxnQAXIBFEhcirnAeXtt98+/PfBwUF836eoqCjXhxFCCCGEEBeIH/7wh3z4wx/mta99LR/4wAd48skn+clPfsKNN9446v+eQkxGNBnHPPwENnFqiqM5egLauoi+8hoGI+NPKbY2d1Vxw14mO2JwIJbdt1JQVIBtagFHo6vLMW2duMtqMC3tmPECP2Oxe5twL7sILweh6dlYa4kFw6ilS9DLlxLOpPF/+0dKunuAk+tEHu6mui1O8JVLSE5hYJm1EHeDUFGBqqw8dZ4lnBRCiAtGzgNKgPvvv5+vfvWrdHZ2AlBaWsrb3vY2+Q+kEEIIIYSYsvr6er7xjW/wvve9jw984AO4rssXv/hFtmzZMttdE/OMoxU0tYwKJ4dlPOyew7ibGqc98HN6+/FPhpNDfMdBl5dCzwCBTevx1tShigrw/vvxCfYC9A6gjc9USwsopQgYH218/EBgSmtpWmuzFc6PtaF6Bgmr04rYJH2cPUdxLl6Lfw4jzGTEpBBTZ4yHUqcyfa0VnKFwVdRRKNTw+00pH4XC2BkrUyLEGDkPKD/3uc/x9a9/nf/1v/4Xl1xyCcYYnnvuOT772c8SDAa59dZbc31IIYQQQgixgB09epSPfexjPPHEE9x+++3s2bOHO+64g/e85z3ccsstuO60fOcuFiDHGDjaNuF229qBm0njOdNXOVopstOYx2GUyhbkCQYYLCwmaA2BaHj8QBWgMA/jOExlIcqw8XFb27F7DmFTaZzSIsLr6okXFWKYXOEdB4s9dHTC7eZoK4F1DfiuVOAWYropZels24q1YZzQCpRSeKlDZFL9hPKXjXn+ZSU1pNoex5Q1ogPLUGQY7H0ON5BHOG+thJSTlHBS9Gbio9qKA1Eivqztea5y/r+573znO3z0ox/lpS996XDb2rVrqaqq4qMf/agElEIIIYQQYkpe85rXcMkll/CjH/2I5cuXA/Dwww/z//7f/+MHP/gBv/jFL2a3g2LesEqB60z8BMfBTmH9xHPqgwXyIhM/QSlsIDs/OqM1wfUr4dFnx32qXl2HN4VwMmgNzvO78Q80n+pPLIFpOUH0usuIVVZMck/2ZNIqhJhNWhmSAzs5euB7eB6sbLwJlGLf9vsxfpq6dW/mvWtfTvrkqPA8BxLHH+NE8x/oOb6VVY03k4i1cnjvj1BKs6rxHQSja3Ky1u5UjRf4wdwN/cYrQCTFh85PzgPKwcHB4f84jlRXV0d3d3euDyeEEEIIIRa4j3zkI7zpTW8a1Xb99ddz5ZVX8m//9m+z0ykxL3lAaNVy6OgZd7tuWErSdWGab85NcREqGsbGk2P7sLiKdDQCNhtmZirLCGxchb/jAJiTc6ZdB3fTehKFhWitcE4GhpmzhJXBWGxUOHmqQxZ/605CL79mUv33rCa0YjG0j39/p5fWkAoGp/08CjHfQq2cUw5uMB/tBPBTg+zd/jUAjJ/GcUKEAkVEVTFDgyIVEC1dS/fxZ/AycfZs+zLGeABEIuUEwxWzEk6CVBwXU12sZBIuueQS7r33Xow5teCI7/v853/+Jxs3bsz14YQQQgghxAJ3ejg5JD8/n//v//v/cnqsVCrFBz/4QTZv3syWLVu49957J3zurl27ePOb38xFF13EG9/4Rnbs2JHTvojcsxa8qgr0oqox21RFCWbZohm5OU8EQ+jrNqPyR4+kVFVlsGk9GXtqdGJKOSTX1KP/7EU4112G+5LL0a+5jsTyxYTSKaL7DhP87RMEf/80+R0dhK037jG1VnCia8I+2f4YTiIxqf5bazG1laiy4jHbVF4Eu7oOX8JJMQOGQq3T/4wXWs43CSdFq+kZ8yfhjCjwZSyB8ApWNt6EdkIYP43x02gdYFXjTTihFaNqTVkLgXADqzbciFJ6OJwMh0up33AThtKZfplCDMv5CMo777yTt7/97fzxj39k/fr1AOzcuZN0Os1Xv/rVXB9OCCGEEEKInPnkJz/Jjh07uP/++zl+/Dj/8A//QG1tLa961atGPS8ej3Prrbfyute9jo9//ON861vf4t3vfje//vWviUajs9R7MRlJxyV85UW4XT3ZdRSNRa1YjF9eSmIa154cyVpLrKCQ8Cu24AwMQjINeREy+Xmk1Ngp6J5VeOEohE/9buXHE5iHn8AkRozCbO3AqVtEaNOGMfuxFs66xOQE07azS2NqrAX/ZOWbuBMk+qLLcI61Yg8exRqDXlqDrVtMPBQGySeFOC/nNaLwDEswKDxSyW6sPTWozPMS+N4gOlAmharErMl5QFlfX88HP/hBent7OXToEKFQiEceeYTPfOYzrFmzJteHE0IIIYQQIifi8Tjf/e53+cpXvsL69etZv349+/fv5xvf+MaYgPLnP/85oVCID3zgAyiluOuuu3j00Uf55S9/yQ033DBLr0BMVlK7UFGBW5MdSen7hpm+J7eWbCBaXDLln3UV2O37sImxU8TN4RYCK5aQKh09EspaC1XlE+5TFRfgRcJj2qNeGt3RjW05gQoGYPkiUgUFZJQm7gbQK5bhLl+MspaU6+L7VsJJIWaI1opM8hBH9n4D46fQTnb9WuOn2bf9/jGjKLXyGOzdyuG9PwIgGCrC8xJ4XoJ9L9zHqo23oAPLJKQUsyLnAeWDDz7Iv/7rv/KhD32Iu+++GwCtNe973/v4P//n//AXf/EXuT6kEEIIIYQQ523Pnj14nscll1wy3LZp0ya++MUvYoxB61OrIz3//PNs2rQJdXKUilKKSy+9lG3btk05oDx9oMvQY6lBMnUTnTulIGAtyhh818U7Of14aDQgQFBZ3HQaqzWZYHBOT1EOZVKYM1UjP3wMt7J81OsDSOdFCa6vx995cPQPOA7OZRtIudnbw6HzF02nsL99Er9/RNXxvU2ENjSg1jaQURprLRmls6Mzjb1gf2/lfXt+zvn8qQkGBqsFcC0m8doUPl56cHjNyaEiOfu334/vp8mkB3DDhqHV/ZRSKOWigEheFQ0bbiKd7Gb/jgdQSp/8M0uffbNwLc/nfVsciHLbmutHt7lRlJngBxagXH/u5TygvO+++/j0pz/NS17ykuG2f/iHf2Dz5s3cc889ElAKIYQQQog5qaOjg5KSEoLB4HBbeXk5qVSK3t5eSkeMSOvo6KChoWHUz5eVlbF///4pH7esrGBK7eLsRp47G0tgmlsxew5h0x6qshRn7QpUVRlKKaxvsK3t+M/vw3Z0g+MQrluMXr8CXVI0i69iYqbb4LkanImnZEdL8sbdZi9vxCyuxOw+jE2mUOUlOKuXo6rKCevs/srKCrC+wXt0NzaZguBpt437msivW4SzpDqnr2shkPft+Znq+evqGyB4+u8nEAq5lBfNjWvRmeynKzU4pr0slE95uHDCn5vsazMllxEIOASC+RSXr0MpRTD416STfVTUbEaftnRFUfE1hMNh8gqXkFewCGuXEgy6OG6EotKG0w83c5KW9170qjHN2fM0vdfy3N63BSzNeU/mp9LS3FyfnAeUPT09LF069jLV1dXR2dk5pX0dOXKEf/qnf+K5556jqKiIv/qrv+Jd73oXAEePHuVDH/oQ27Zto7a2lg9+8INs2bIlJ69BCCGEEEJceBKJxKhwEhh+nE6nJ/Xc0583GV1dA6OmFyuVvVk6vV2c3ennLmR8nOd2Yg4dO/Wkrj7Y34z7siuJFReR19OL9/CTpypkA7ywD9XcCi+5gkQgOPZAsyyAIlBShGkb//7KWVRN/5l+f4pKCFxVkh1R6mh8A3QPjjp/4VQau78ZPH/8Y+xtIplfMGaU5oVK3rfn51zPX0QHuWXFi8e2+0E6Owdy18HzcNz08qU9Y9eSfPea62Ew+6VAXKfo9UYX9knYNJeX1/PY8b2j2lMpb9RrUwrKazbR25ugqysbhGq9lEDEp7snCYxdCsKNbCCRsiRS2f0oZzmeZZbPmaKMcYKuDHQOTr5f451LyI5ujJrRa3fK+/b8DJ2/7u6BnISUOQ8oN23axH/8x39wzz33EIlkq9KlUim++MUvjpouczbGGG699VYaGxv54Q9/yJEjR/j7v/97qqqqeO1rX8vf/u3fsmrVKr7//e/z8MMPc/vtt/Pzn/+c2traXL8kIYQQQghxAQiFQmMCxqHH4XB4Us89/XmTYS3j3hhN1C7ObujcuQOD+CPDySGej791F+EXX4H//N7R4eTQPnoHcDq6obZ6zl2HNIrQxasxD/eMCRBVWTF+ecl4L2n0PiyAhnHyR2tBWYOdIJwEsKn08HPnCq18UB7mZAihFGiVxDdTf1+eK3nfnp+pnr+IHyKixikY48+hpVAnWpZ1xGsdryCOUYZbVr2Y9auXjGovdqPY096aWrsYc2p/vm8ZmtY9nuz2EV2ZMyfr/J1LcSF5356fXJ27nAeUH/7wh3nnO9/Jli1bWL58OQDNzc2Ul5fz+c9/ftL76ezsZO3atdx9993k5+ezfPlyrrrqKrZu3Up5eTlHjx7loYceIhqNUl9fzxNPPMH3v/997rjjjly/JCGEEEIIcQGoqqqip6cHz/NwT67F19HRQTgcprCwcMxzT58d1NnZSWVl5Yz1V5yZ4yjssdHrNGbXDLXZm9HOHoLxGOn27gn3YZuP4yypxfPm3ijBWGER0Zdfjd15AHOiC+U66PolmPqlOalG7gWDOGXF2K7ecberxdVzavSkVj7x/ueJx05QUftSjA3hJQ/Q0foMi+peh2/zZ7uLQkyJtpoIQWr0aYW0Jv7e4LwlnBS9mXFGHwaiRPyzVA4X4jzlPKBcunQpP//5z/nDH/5AU1MTruuyfPlytmzZguM4k95PZWUl//Zv/wZkK84999xzPPPMM3zkIx/h+eefZ926dUSj0eHnb9q0iW3btk25v/N+4dwFSq7L/CfXcH6T6zf/yTWc/852DeUa597atWtxXZdt27axefNmALZu3UpjY+OoAjkAF110EV/5ylew1mbXMTz5/9XbbrttNrouzkJbi8pkIJnKvnkiIYzjAgocPeE0Ztyc3y7ljLEwmF9A4MpLcDNpjNKkgoExI6POVVpp8i5eg//bp8YMj1EFeZjKsjkz4khrRTp+gEN7voe12WFkRWWr2b/jQXw/hVKa2rrX4xsJWMT8YJQhY3wSpGk1PcPt0x0Unsvow1zS2qLpx7dF2ZHcSuGoPnxbOGc+b8T0mZZ/cYPBIC972ctytr+XvvSlHD9+nJe85CW88pWv5GMf+9iYb6fLyspoa5u4kt1EZBHjuadkggW9xfwh13B+k+s3/8k1nP/kGs6OSCTC61//eu6++24+9rGP0d7ezr333ss999wDZEdTFhQUEA6HedWrXsWnP/1pPvrRj/LWt76Vhx56iEQiwatf/epZfhUXJq3VyZvXU3ewvm9Ri6pxduyH7v7hKckADMRxVizG5EXQS2tGr1E5glqxZE6OnhwpYyHjnlwnM0fhJGQzyURZKZGXXoHdthvT1QeOg15WA42riLlzZ21OYyyhSC1FJQ30du+j9eijtB59FADXjVBReyWWMLM16Tf7+2klYFnAtDJYwNpT1bK18vDN5AdpjZQxPkdinRzob+Px1n3D7TMVFAIoFHbEe2boi9Hp+j3W2pKK7eHI/p/QsP4dOMFavFQz+3d9g+Wr30ggvFLeQwvc3P1KcITPfOYzdHZ2cvfdd3PPPfdM66Lk43EcLTcKM6inJ5bz6SJyDWdWrq+hXL+ZJe/B+U+u4fw3mWs4tDC5yK0777yTu+++m5tuuon8/HzuuOMOXvGKVwCwZcsW7rnnHm644Qby8/P50pe+xEc+8hG+853vsHr1ar785S+PmuEjpl/Ez+B092I7elDRMFSXY/1T18ArKiBYXYHfeloxmYCLXrkMv7sX1bgK1d6FHUyMeopeuYxM8cQVdi8EvoVYWSnBl1yJm8lglSIVCjEXM1vfFrBs1V+Q2fGfxAZbT7YqVm28GSe4HGNmJ9lwlMaccHELwIukJWA5G9OOo0P4tggArXrBZLC6Yk6du1FToZXFz/SDtZRHa4n4YUzmCAP9Rygsv4JiJ8ptq68fs4/iQPS8p2snnGxBmK6+AVLGG87gz2ekpVGGjPXJLnSpAUWCNHHVRSSTQrmLsNNwMTQ9HNz9bXwvyb7t97Js5eto2vdjvEyMQ7seYt2mO/Bscc6PK+aOeRFQNjY2AtliO+973/t44xvfSCIx+j8QuV6UXMwuuSbzn1zD+U2u3/wn13D+k2s4OyKRCJ/4xCf4xCc+MWbb3r2jK6lu3LiRH/7whzPVNXGavHQS+8jT+P2Dpxq1xly3CaeiHA+VLX5TXox77Sb8/UcglUZVlaHrFpE5dAzV3Uf62ssIXH81zvF2bHMrBF1UwzIypcWk1LmNflpIrIWUckgFT56LORhOQvZLm1TyBMnEyDVFLT2dO6morQZmfnq3ozT+CZf2JzO4YUXVi4ISUk5AKRjoa2L/C/9JMFxC3Zq3YbE07f4mmfQAKxvfCXMopByaCq0A4w8SG2gBLH+36a9YpB32bf8aXibOUmspKr+ayOnrSMKocLI4MDrETJDmQH8b+izrufRm4nxp78MEgy7ptDc83vG21deT54bAehibjX2UUmidwffPHANlrE/TwAl8L5mdYu2GOdB/HM/EoPl3rGq85WRIOYkTNQXGFlO/9i/YvzN7zQ/s/CYAWgdYsfYtGIontZ/Tz+XI9ulcv1OcvzkbUHZ2drJt2zauv/7UL1ZDQwOZTIaKigoOHTo05vmyKLkQQgghhBALX0ABz+3CjgwnAYzBf2Ib4Zdfw2A4ijKGzIGjADjLalGugxmM4z2fnTKpQiEwlngghK5bilO/DAtzflr3VASVxU2nsUqRDobwZ2kk4XRSSuGnDrF/+wP4fgrXjRCOlDE4cIzW5kdRSlNW/RKMnbmQcmQ4iQUvYTnxqCch5QSUMvR17SWd6iOV6uPw7m9grWFwILv8wkDvfgrLyvHt5BdgnqmCL1oHUdrBGI/B/iPsOfJbjJ9GO0Ei+TXYScQuET80aup2q+kZNbV7yhSkYrtJp3opKL0MawOYzFG6O7dTXvuSs1e2t4ZsQTGLn0niZWIYPIyXJJPuI+guOve+TcBYTSR/HUvqXk7zwV8Mty9teA2hvNWTXl/39HM5TMLJOW/OBpTHjh3j9ttv5/e//z1VVVUA7Nixg9LSUjZt2sS9995LMpkcHjW5detWNm3aNJtdFkIIIYQQQsyAYCKBaTkx/kZjoa0TVbcMLxAgWF6CaTmBf3TsevWqtgKjFfgWY+ysTQOeDo6CaG8v/gv7sJ09qIBLeMUS7KrlxKdh/ciAgmAyCb6PCQZJBYMzdj6ttbjBQoKhQjLpQVY23kwwVMaRfd+hr+cgefmLgfOvbD5Zp4eTQySknJgxmqol15JKJjh6+NcM9DcPb1uy4lUUlG3GN1OrDjcTBV8soFSQ/IKlDPYfAQvGT6OUw8oNN87KuokKhfEHOLDzGxjjsXylJa9wKfu330cmE8NYn8pFr8A3Yz8HigNRbl39Mg70t2FNBs87OXPVeOAoVq77S0LRNUzHW1spRSbVzPHmR0e1tzT9hryC5Si3Rt4zC9ycDSgbGxtZv349H/zgB7nzzjtpaWnhU5/6FLfddhuXX345NTU13HnnnbznPe/hkUce4YUXXhhewFwIIYQQQgixcCnf54x3yIkkSkHGKMKNDZjWjux075FCQezyRTmrej2XKAWR7h683z41/Lqt52N3HkC1dRK+7jKSTu4Cu7xMCrbtwTS3gjGoSJho40rSSxeRVjpnxzkTQxkNG27G92I4wWV4xrJ05ZtJp9oJhOowdmb6AYBVmKQdtyaP8SzWA1DMVtGeuSoQiFJatYm2Y38kk4ll24L5lFZegjdOmDZ3KCzZEYenWPxMgmDEYqcw6nPI+UxTtli0DhGJVhIbPE7T/p+gtYsxHloHKCxZiWX88xnxQ0QI8sfWfWBTDPQfwdrsZ8htq19KKK962t5Lmi72bv8aXiaG1gGqF19N67HHyaQH2b/jPtZe8h5Zg3KBm8FP6alxHIfPf/7zRCIR3vKWt3DXXXdx44038o53vGN4W0dHBzfccAM/+clP+NznPkdtbe1sd1sIIYQQQggxzfxQEBU5wwio8pLh0XvxwiKcl16BKivOblMKXVuBc/2VxMMLs6hR0BrMn3aPDWUB29WL293LWZa2m7Sw72F//wymqeVUGJpI4j+9nWDTMbTO0YEmwVCGDiwdvva+LcANNcxsOAn4+ASWGsovGT0eSAeg+kUBTGFmWoqMzHfx2AkO7frmcDgJkEkPcmj3t3BU3yz2bGIKhbUJYv1HMdaAUgQCeVhrOLj7IRL921Fq6ktGRPwQNbpkzJ/JT00PsmLdjUQi5QAY4wGKlRv+ilB09XgfDSNfFNamGBw4OhxOAhg/w8EdD6DpPsMPnzurCqld9jK0E2TlhhupWPxqVq77S7QOsGj5yzGcW2FAx9FnfCzmjjk7ghKgqqqKz372s+NuW7ZsGV//+tdnuEdCCCGEEEKI2ZYKhog2rsJ/evvYjYV5+KXFww99C7HSEoIvvRI3lQIU6VCITPYufMb6PJPcVArT1Tvhdtvciq6uwvfPf61Nt7cPv6d/3G3+jv2El1RPy5TyiZx+SWcrCMyGlFCOS+efvFHh5EJaSiBXHMfS3vIkgyendi9Z8UqM8WlpepiBviZ62rdSWv1SvDmyjuDwCEcF1h9koPcwFlhSvpr8sjXse+Fe0ql+jMmgMNhpGhtWHIjy7jXXEwq5pFIjq3jn4afayXgjiwtbkokuglGPM0VBJYEI76zbRGJwMShFQdEyjMlAXxP9sTbi/YeJFpfl/PfYGJfC8svZULYSqyrwPAjlr2XDZe/FqlKMmXrRMkfHifXsJq94Pb4J46g0sd4d5BWuxLfnFniK6TOnA0ohhBBCCCGEOJ0xlvTSRQQBs30fNpECrXEWVeJefRH91hk129JaSKFJhSKz1ueZZJUGrccdQQmgArmZ3q21wnb0TPyEZAqdSsMMBpRzyXBIqQMEi5Fw8gx8X1Gz9DoG+9uJ5FVTXHk1ymbXJUwluimpumrK4eR0VnMeWYhFBUrwCzMY6xNQVaBgVeM7ScRbiRY0Yuz4wVouivhE/BBRHaK8qIDOzgGszS7xYFLH2L/9vuHp0oFgHqlkL0f2/4TlQEHp5cPVvU8X9sKsyKujo/cQ+UXLCQeXAoaBRBclDa8jr3jjtBXbMsYFKoY/v41Rox5PhaNjHD/8X3Se2Eb14uNUL3kZnW1Pcuzwf1NcuoqlK998zqMyxfSQgFIIIYQQQggx76SVxqtbSmhRVTYEcxzS0QiRsgLoHJjt7s2qTDhEaOUybGc3ZjABqfToJyyvzcnoSWs581R7pbAX+HRKH5/AEotRC6sI03QIhYuprfsfWFzMyTUnSyuvBTx8M/UvF2aqmrO14IRW4HBqBK9yqogWVp1xKnUui/h0Jvs5bnrBglaKIuWTxkdpJzutO1LJwZ0PEhtsRWk3m2Ke4dfRN2HKF10PNnByiQRNQcmmk9tmruDUebEW30sB0Hbscfp69pOItQPg+2ng/D8DRW5JQCmEEEIIIYSYl4yxJNzg8Ag9JfkPLhAaHMRxNcb3cRdVYiMhMvubIZ3BWVNHuiA3o4astdiqsglHa+raStKRyAVfC8a35oI/B5NlbHTUNH3fBmGCgi5zydilBWZ2BYmu1CBf2vPw8K9Z1A3yuro/Y1k4SjC6Gt/AinU3kow1EylsxPdHf3HgOh6e7454nME3oVGvwdh5Ekye5Nt8lqx8I/B9erp2D4eTBYXLqVvzNnxblLO1eEVuXNhfZwkhhBBCCLGAOY4moBWOI3dhFwJHQeRYC/7P/0B650Fsdz/+jv2Y53YR2rwO5/oryWxYldPK2slIFOfqi7Mh5QiqIIratI7MOVQwFkKcn7iX5r86Wuh38rB+R7ZRFeG4eWSSR0cVr9J003LwuziqFwBHD3K86cdYv3UBBHhBovk1o1oieZWgpjZCVcwMGUEphBBCCCHEAuNoiAwMwMGj2J5+VFEBNCwlUZCPL4HRghWOx/GeemF46JavNUQjKAXe4eOkr91MepLX39UKbQxGK7wzzIT0LSRqqwi/5kWo1g5sIoGqKMWUFjN4ga49KcRsU1gG4ifo620i3vYMKzfcTDLezoGd38RxgqxsvBknuByt+jiw/QHisTYSiU7q172No/t/Rk/Xbvq697Hm4nfjUzbbL+ecODpN94k/0HLktwBo7WKMR3vr02gnQOXil2NseJZ7KUaSgFIIIYQQQogFRCuItrbjPfbcqWm37d1wsJnI1ZcQX1R9xnXRxPyklEKd6IRx1jm0Fvy2TgLxBOlI9Iz7sb4hf2AAs68JevohP0p4dR2p4qJs5fNx+FYRi0TRDcuzBTqMXagF0oWYJxRKO6Agmehiz/NfwssksNZHOwG0EwIslgjlNZtpPvBTYgMtbH/6X7E2u0hnWcVGUHnzeHmCBN3tOwAoKFrOirV/QfP+/6Knaze9nbuoXLQFkIByLpGAUgghhBBCiAUknE5lR9GdnkIai//0dsKvLiEelOltC41SYE8vhjOStRNW9R6itcIcOor3m6dPPbe7D918nMjmDaiGZaTPUGBEisAIMXnTWWXcAo5bRF7BEvqBTHoQgEAwn5WN70Q51SfXyQxQVH4lS0yGo4d+NRxOVtZcRsXi6/HN9AR4Silg9BcZWqucfob4poj69Tdyovk3VC97BZ4pYsnKNxII/TeVi7ZgKMnZsURuSEAphBBCCCHEAqIHY/gTBVXpDHowBqUSUC40xlhURemE21UkjAmdecp1MJ3Cf3rHcDjpWAOJFMQSmP9+nGgkSLC4mFgkipUhkkKcl1xWGS8L5fPuNdePHu2oLAU2ST/ZMBBAKzc71XnE8xRJBvuOjNpfbKAFbJLpGGGotcJPHcE3KQLhlVgLynaQ6G8hUtiIMU7OjmUopWbFDXhedp++yadm+Z/j+072uAt0xRNHZzA2MBwAa539TDdmbpehmdu9E0IIIYQQQkzN2UagyPzuBcsrLkSVjz8qyLloFamzjJx1YnFIJAHQ1kB3H7Z3AJvxsMk09kQ3/sN/JC8+mPO+CyHOXXm4kFpdQs3JP4ucIsoSrTRv/RxgcZwQoEiletm//T6UzRbOcdQgR/d/n56uPQDknSwoExs8zsFdDw4XzskVpbLh5L7t97F/x4NkkvvRtpMDO77GgV3fJta7Da28nB5zKJwc+Xghf7+idZqe9sfwU4dQCrTyifc9T6L/heGgcq6SEZRCCCGEEEIsIDY/Co4D/jjDcByNzc+b+U6JGZHULtFrN+Hs3I9/6Bh4Pqogit64mmRN1dmnT44cVZXOYFOZ0ZutgXQGu+MA7hUXnbF4jhBiFimPxGAr1voEQ4WsaryF+GArh/d+j3R6AC/TTyBcibUOgVABADWLt1C19GV0t2+l+cBPCQTymZbISJEduuil2b/9AdxAhHSqH6X0iCeIc+Foj572xzl66Fc4ToiVjTeRSfVxaM93AWhY7xDO3zhnl+OQgFIIIYQQQogFJBWOEG5swN+2d8w2Z30DyWgEJFhasOJuEPeS9QTXNqCswQ8ESLqBSd2QmmgEJxRAZXyIJU7GBENzBB1UJAy+wbScIJhK4wWkSrcQc5ExQUqqX4R2AhSUrAKnhryiSlasgUCwEDdUf/IzIUL1kldTWFJPtGA1GS9MUfkVrAwVEslfgW/zc9ovay06sIzVjTey89l/RREkncqgsCytfxkFRSvwbO6meF9oLAHyi5bjuGF8L8neF+7FGh+whCOlhCM1czacBJniLYQQQgghxILiWUg31OFceymqpAACLqq4AOeaS8isqluQo960VriuRmsZeQPgGYgHQ8RCEZLanfQNaSocxrlkLXByDJPnQSoDqTTOujrs8fYRY5vm7k2uECIbUhZXXItyarI1sqxDtOhi3HDDqCnOvo0QLbx4uCCOMQEihRflPJwcohkkmejAS8dJxFrReGRSPfhekiP7foime1qOeyEwxuKGVrCq8Wa0drHGAyzBUCErN7wTo8pnu4tnJCMohRBCCCGEWGDSSpOpqSFYVYH2fXzHIaHdBVfYRGuIxOKoo63Ynj5USRFm5RK0G8L3z++1uhocYzBak1mAoe54jLHoVcsJuC726e3YQ8dQBVGc1XWYvkH8nftxykswKxaTCoVmZCSu46hR1zLXlX6FWMj804qiTFQk5fTPy4k+P3PxfrR2gKa93yeZ6ASliQ224GcS7H/hQdZceivaCWHOs4r5hc0nnezGjDiJvpfCy/TjhMrn9PqbElAKIYQQQgixAFlrSSkHXGeoYXY7lGNaK6IdnfiPPgveyRux5ja8fYeJXnUJsYrycW+clYKQ7+HG4mAMJhIhFQ7jn3yuoyyR/gHs3iZsTx9uNExo7QpSpSVkznMCmtYKa+2cvhQqGMA3FmddPU5NBba9i8zzeyGRQgUDoBXuunri9lRl4Oni6BQDXX+ioHQ9vinA0T7x/u1E8pdgKJvWYwshRtM6Q6J/D5H8Onybj1aGdHwfwXAlhtJJ7kORjvdicQhHy1hU9wqC4VIObH8Aa32Mn8EYWTriXGltiPdt49Ce7zE0ctL3Uvh+in3b72dV4004oRVz9t8gCSiFEEIIIYQQ804oncI8se1UODnEN3h/3Eb41dcSd0ff6GoFeb29+E8+j98fyzYGA0Q2ria1fDG+4xBt68D7w7PD1dBt7wAc7yB08Rrsqjo8O/Vp5GHr4fYPQkcPhALYilKSkQj+OexrJtgjraSbWgiuXoYqKUT3D6JcF1VRgiotwn92J3krFuPVVJLU03NL6agkHccfobX59xSV7GD56rfQ37Obw3t/SCRSRkPjLRJSCpEDWlusVcOhlVIWUKNCLK0z9Hc+xZEDP6W4dDXLVr2Z+OARDuz6FpFwGfUbbppUSGmMJRhZxcr1f0k8dpyezv10dx6gfsPbSSe7Kau6kowJTM8LvQBYC0plP5PDkVJWbrgFzxtk3/b7UShQDtkFPOZmQikBpRBCCCGEEGLecQZi+InU+BuTKfRADEpGB5SRRBzvkach451qTGfwn91BKBLEryzHf3bHcDg5kv/CXkKLq/Ei0Sn1M+ql4Yk/4bd1Dbcprcm/bD22sACTyWAL8klFInhz5J7RcTVqMIb/6FZsUQGB6zZj9h/BHGnFbN2FqirHb+vEWVJD6PKNpHTui1pkI5JsgNvXc4C9z3+BZKInu0XNzWBXiPlGa59Y7zYiebUotwalIB3fD0oRCK88FVpan3SqD4De7r2ktn+ZZKIbazw8P4ExaZQzuYH6ijSJRA/dHXuIDRwnEMjjRMtWovmVNO37AUtXvgnfFkzjq164rNVEChuz1bojVRhVjhuqZFXjTYDGDS2f00tkSEAphBBCCCGEmJNcDaFEAtIZCAayId7QuofmLAsg+qNHVmqtUM2to8PJEcwL+whuKSAdS4y/P2NRPX0whYDS0Qq959DocBLQgzG8nzyC+/Kr8V/YB44mvHE16fplpFXu6pgqpQiZDE7GwypNKnz2tTnNYBxVkIftGwRAlxXhP7YVe7QNFQyg8qIYne2jOdpKYPVyUiUlOevzcD9smPKal2CxtDb/nmQiWzgjEimnYcPNMnpSiNPEdYreTHxMe3EgSsQPjWnXymewZyuH9/6QYKiAlY03k0kPsn/Hg6AUKzfcOBxS+jZM+aKXAdB69A8kYu0ABIIFrNxwC8qpnsK0YZ+BnoPEBo5TVNJA3eo3c6LlMVqP/oFIpBxr0+d6CgRgjCKUt374ezZjLE5wxfDf5zIJKIUQQgghhBBzTtTPoLbtxRw6Br4BRxOqW0xw42riTgCbF8lWyRkvqNQamxc9rUlj2yeuDmsHYqizVWawFqUmv5xnKJXCP3h0dD8ymey0ccC2daCK8rF9g/h/2k2oKJ9MZUVO1gcLWEO4vRP/+b2Y3oHsVPYVizFr68dMfR/JnujE7+zBWVePv+sgurIUf/s+sCenDxbkjZ4c2Hwcp7wM35+GijnKJRwePW3UDRWgdHBGCvQIMRc4Og42g2+Lso9VGkUcn2KszQaTe/sG6M3E+fKe3wz/XEA7aKu5bfX1RPTYgBIUgUA+SjukU/3s3fYVjMlgjEcgkIfjRBg1HdgGyS9aBkf/MLyHcLgMJ1DAVN7+vs1jyco3Ec1/nLKaq8mYAsoXvQw3EKW4fKN8+ZADp/8bMl8K5OXu6zkhhBBCCCGEyIGgsqitOzD7mxm+8/UN5kAz6pkdBDGkIhGc1cvH/Xln1TLS0dEBpbUWVZQ/4TFVJIwfCqIi493Ik51WXFp0xvAwoCHse4Ssnx2xaUx29OfQLgAGT41wsrEEKnBqvTV/10EC9vyTN60VodYTeL9/djgMJZ3B33MYHttK2Iw/itRxNKa5Fb+5DVOUj3v9lajCfFQkhCopRBUVYGdoerWjfQZ6tnJ4349O9i17XQZ6D3Nk77dx9MCM9EOI2eToOC2HfszhPd/CUX04Ok33iUfZ+/yXwLSjFPR6cb64+2EO9LdxJNY5/Cdzli9cjNWE8tawct1fopTG8xIY4+G6EVY23oIOLBkOtrQyJGO7ObDrIQDUyZHeA/1NNO/7Lo4anNLr8k0+ZbWvxDfZqdzGhCmperGEkxc4CSiFEEIIIYQQc0owFsc0t427zRxtJRiP41mFt74BZ/MGVF4EABUN42xaj7dhFZnTgkTfN1C3eML1C/Xq5SQiUfSm9eM+R6+vJzXB9G5HQf7gAMEnt6F/+SjOrx8nergZ7SpUQd7w85S1o4r66IpSbGzElMxYAu2fZRTnJATTacy2PWNfQ2kRTmE+oXgcR08QNDrZ9ST9I62k9zbhez7ULcZmMpjB2NjnL62ZntGTJOnr3gdYItEK1m+6g9qlLwYgNtiK8aYWiAgx3ziOIjFwgK725xnoa+Lw7m/RcfxhjjU9TDLZQ2vzb3B05uw7OhOlUXqocMrJJqVRymFkIRWlUnSdeA5rPIKhQtZvuoOaJdcC0N93GC/TPeWlYU//qPN9WVv2QidTvIUQQgghhBBzSzxx5nnU8SRE80kqF12/jODSGhzfx7gOTlUpqc6BcYuUJvMLCF91Ef5T20fdHeu6RXh1S/A8Q7K2isjLr8LsPIjt64dIGL22nkxlGRnG3kArBdHeXrzfPMnIeY7+09vRnUtwN64k8/g2AKxSqICbXQczGsbmR7FNx0/trCAP3zn/WzQ3lcIfuZZmKEhwzXLs0TbM83swh48SWbcSW7+UWPDUiFHfN+jltbDj4MkGg7fnMMH19XhHT6ACgeH1JwH0kmoyRYXn3d/x+CaPxSveQDBUQEXtFnzKKK95CdoJUFiyGpzayc+1F2Ie8n1LpGANi+tezrHDv2agv4mB/iYACovqWLT8NXj+1CteJ5zsWpUBrYnEj7F/+4MYkyHsRsEYMpkY+7bfy6rGW1BubXYNShNhcf0bcJwwlYu2gFND+aKXoZRDQUkDOrBU3o7ivElAKYQQQgghhJgzlAIdDaPXLMdmPPzWTmw8OfpJgVO3McZYkk4AnABKwcSTuMEDEotrCZeXoHr6wfOgpIh0NDpcnMazioGiYgLXXIrjeRjHJaPUhDffQWvwn9vFeIuwmUNHcVYvw7m8Ef+FfdhkCpUfgeICnIvXkN5zeNTz9fqGcUPQqbIjQkTHGtyGJXi/fSo7vdzRoBX+jv2oIy1EX3YV8cCpkFJXlKEblmIONGcbPJ/MgaMEXnEVtn8Q096DDrio1XV41ZWkdPZauEAoGc+eV2uhpJBUJHper8e3eVQteS2ef3JUpw1RWnUdxgbmzZpqQpwP3wQpr76G3s5dDA60ANkRjsvXvHF4Tcqp6s3E+eLeh1mRX8ImHeNwfyuhYAEv3XQ7Op3gwK5v4nsJvEw/Abd2RF/yqal7PcYEsBasDVNe+7KT78ecvNxZo5UB24nVZRjjnFyi4wToInwzwbIfIuckoBRCCCGEEELMCQEM4RNdmB174eAxCAcJrF2BcRy8A9liM6ogipefd5Y9Tcy3EAtFoDpyxoI3GavIOCdHJ53h5ttNpjCdvRNuN4daSG3aQGBRFSqRAkej02nSf9wGyZPVaoMB3EvWkizNTTXsTCSMW12OPt4OjsYcOQ4nq3JniwopHGvwB+I4za3olXXD1V1VJIR/8VrcxVXY/UcglUEtrsRbXEMqGsXJZLBak1HOcEgYwBA61Iz/pz2nihYpRXB9PXptA6nzWFlsKJwc4huXM14QIeYBrTy0iuOZ7AhkrUHTh2+LR4XvjkrT2frYcDgJYK3h8J7vUbfmbaNCSq0Ut6y8bvhxQ2E1EYIUB6IwzsoRhwZ7CBSWc9HaN6GjlfQ7pVTnFdCw7i9RShGMrhlTg8w/bcSmb6Y+gnOuMcYjMbCLg7sfYtnK/0Fh2WWkE0fYv/1rVNReRkXtyySknCESUAohhBBCCCFmnaMVocMteE9vzz7Oj0JXL97j23DW1+PUVmB6+tFbNpFwAznJqGZi1I/VCmNMtnJ2QbZ6ts7LI/zyq9GDccBi8vKIh8P4JjcdSqMJXbYe++MT6LJi7N6m7AYFqqQwOyJVKYiEsU0tuPXLSI8Y6ZjSDsmKCgJVFQD4qGyA6Vu8kyMmR568UE8v/tZdp71wi9lxgEBpEenqqnk/wkqIXNHKY7DnWdqOPU7DhptRThnJwd007fsRDev/6uR0aZtdg7J/D8eaHgagoGg5+UXLaG3+PQN9TbQ0/ZzFK95EMVFuW3s9qZQ36nOxOBAl4ofGDSeH7O3vJJlfQldnO39VuApjNeG8NaD0mHByoUonezl+5DcY43F47w+pXnyCzrbn8LwE7S1PUV51Kajq2e7mBUECSiGEEEIIIcSsCyWT+M+fKuziuy5ORSkqk8G0tOP+j5eQzs8nFgzNqem9mXAIt7oM29Y17na1tAbfH91fY8lOqy4JjW7MZb9CYUKbN6AcjWk5AdZAOIRNpbHp7MRrFQlng0rFuIFvZjigmLhvAQ12T9OE2+3OAwSqKkhLfVYhskwHTft/grWGA9vvo2bZS2ja98OTAdl3WbXxVjw//+QalA2UV11MOtnH8jVvAxXGcUJ0tj1L7dLr8U2AKLC0tJzOzoHRXwRMst7WkcGe0d2z+oIapByOlrNi3V9xYMf9JOLttB17HADHCbGy8R1YXX1BnY/ZJAGlEEIIIYQQYtbpeAI/Nboira81hE6GePEk8ZLSOVcYJY0meMk6/N88CenR/dcNS8gUjL8qZsgE8bWPN9kUYYocazC7D0FeBF2/FPOn3dj+kVW4T07prl+Cp/Q5n1dlzOhK5KexiVS2MrkjAaUAR8fA+vg2O7XZUWkgjqF4Vvs1o5xK6lbfwKE93yeR6OTQnu8CEAjms2LNW/BNAUPvT99Eqa173alzZqG0agullZdiVRHadIDOLg2hlELZdpQqwLfhCQ9fHIhy2+rrx22fpo+jOU855SypfzX7tt8/3FZefTGhyHK8C/SczAb5V0IIIYQQQggx+/RZiqk4zpm3z6J4YSHOK69Br6tHlxSiqstwrtuMd9E6Umpsv4OZICd+75Fq0rhM/LqUmnqBGaUgP5lA7TqICgcxL+xDhYOoaHh0uZpIGFVWjFlUNbz+5Lkw2kGVnKGSd1F+TiqTi/nP0XGOH/4vmvZ8C0f14+g03e1/YN/zX0bZjtnu3lkppXD06LTKdaY+D9oYh4LSS6ms2TSqvX7tW9CBxWNGiPsmbzjQzT4OYlURqdgedjz7Gfq7nsb3UvjpZnb/6YucaPlvHHVaYbERIn6IGl0y5k/Ev3DXWfSSTRzc/e1RbSdanqa/eytaS0I5UySgFEIIIYQQQsw6Ly8vW+F6PI6DPVMINsuMsQyGoyQb15C5/hoy111BrKqSlB4/nGx/zCPdb+l6fvyQMmw88nt6yDvcRP6JdqLp5Fnz2yGRdArz2yfxdx9CLa2FaJjME8+j1zfgXrYeVVWGXlyJ85LLsddtzq6NeR48Y1Gr67JVPsah1+WmMrmY3xxHER84QOeJbfT3HaZpz7foOP4bjh3+NclkN8ePPIyXmXgk7mxTSmEyR+nr/CNaZ4tbabroOP7fOGpq/dYaEgP76DyxbVT7kX0/BtM5uX0Q43jTbzEmw5H9P6Fp34/Yv/1reJkYHcefwfjdU+rThSwR7+Dw3u/ie8nstO71f0kkWglYmvb9GMzcD88XCgkohRBCCCGEELMu5QbQV1w07khJd/N6kuGJpyzOFb6xpFFkzPgzpkeGk0NODynz0kn0757Cf/gJ/Gd24j/6LPYXfyDa1X3WkFIphW7vwsYSAKT3Hsa9bjPOymV4z+/FP9GJc80l8PrrGahbRtw5v3BySKKgAPfaTajoiGsUDuJcfXHOKpOL+c33LdH8NSxenp1a3N93mNbm3wPZ4i+L6l6DG4jOZhcnpBRY7zj7t9/HkQM/o7f9cRzVycEdD3D8yO9oPfIzHJWY9P6s38qBnV/HGI9AMJ/aZS8GVHa6965v4OrBs+7DM/nUrX0b0bwaANpb/oiXiaF1gJUbbkS5tef4ameXo2NoOhkaPK51Gk0HerLf0JyDSLSCFWvfSihSysrGdxAuuIiGDTcRzatmxZo3ga6ctmOL0WSsvRBCCCGEEGLWWWtJlJcRedUWOHwM29kDBXmolctIFBbg2/k9Ci+oAvQ8548KJ4f07PJYVBMikG9QT+7CdPWNfkI6g//os0Re8yJiwYmDWsdR2NYRo32SadLP70OXF6M3rwdr8WsrGXSCOS3K41uIVVcSetW1OLF4toJ3NEo8FDqv6eNiYfFtkPKaLfR07SI2cBwApTR1a96EsUWz3LuJWQuOGyUcKSOTiXH00K843vx7fC8JKPKLlmFVcNKFVLQupXrxFjranmVV4y24wRpC4TKOHPgvFq14JYbx160du6Mylja8hr3P/+dwU1nlRsL59Xje1F/nbHN0jJZDP2Kgr5lVG9+J45bS1fp72o49zqoN78AN10/b54kOLGHNRbfh28KTxyhjZeNfY8jDGBnXN1MkoBRCCCGEEELMCb6xDEbzcDauRWOxgOfbBVFBNUOG4ouDpB61ePGTL0hB+YoMBdFu1HPHcBZV4B9sRgcCmNPXn8x4qM4e1KKaCevZWGshMjbANJ29mM5ecF3UhtWcYdnLc2aMJeEEoHBE0CThpBjBUWk62x4fDicBrDU07fk+y9e+DSiYvc6dhW+LqFv7dg7tepDBgWMnw0moW/Xn5JdswpjJv6l8G6K85iWU11yGoRzPt+SXXMqGzXVYVY6ZxLKWSin8dDMHdj00qr2jbSt5BYsoKL0cY+dP3KOUIpNso7tjJ9Ya9r1wL8Vlq2k//jQAbcceY0lDDTDBMiDnyVqLZ0cvI+KZufv7uFBJFCyEEEIIIYSYU3zfkPFtNpxcIKwFL5ym6kUubjQbPlasTBM9uhW7dSv+sTYYiGM7e1E9fWg7TkoRT5yxcI7vW9Syiad2OisWkQ7lZlq3EFPhOIr44B6OHf41kJ3WXbPkRUB2uvfxwz+f02tQAljr43upUW2eF+dcSl/7NoRvy4YL4hjj4NvJhZMAjhqgad/3hqd1r1j7VqL52eneRw78FGvap9yn2WStxQ2voH7tW1FKk071DYeThcX1LKl/Pb6ZnnBSzB0SUAohhBBCCCHEDBgZUobLNXmmFT3YfXKs6MmBosEANplGJdNjd1BSdNYpjsn8fJzNG+C0IFOVFWPWrcSbetFhIc6b71uiBQ2UVW6koGg5dWveRsWi61m8/HrC4RJqlr1szq5BCaDp5uCO+0kkOgBFMJQdKXz00H/T2/74cOGcmeLbfOpWv4VwpJSGxhupXHQlK9bdSF5+LctXvR7tVM1of3LBGEV+0RoKS+pHtS9t+DMMc7dImsid+TPmVwghhBBCCCHmuaGQsuZKBb9txoyYv+6f6MRZV4+/bQ/EEqhIeHirKszDLx57kx5wFMr38bWDbyweimTdEsLV5Tj9g+B7qEAAU5hPLBSSaddi1vgmyqIVrwebwbdFYKG06kWUVm3CqrldTMlaD9+kAEXd6tdTWLKaQ7u+yUB/c3bk53gjnqe1P6DcWlZfdBuGQpRSWFVK/YZbgCj+FKaczxVap+lo/T193ftHte/bfj+rNv41SldOuLyFWBgkoBRCCCGEEEKIGWQt+CqD9kdXsjBdfeiVS3EuWo3ZfwRlLVYpVHU5+vJGBp3A8HOD1hDs7sHuOQzJFMHKUmhYSjyah48G4+Pt3I/t7sve1AdcIusbyDQsI6XmX3ghFgbfjB4l6dsgEORsJbCUYlQ4dfrj6aTpAqVY1fhOYoNHKShehZfuo27d2+nr2k5h2WaMmbh41XSxFjxbOGqwtD9P101USuElj9LS9BsACotXUF59CYf3/pB0qo+jB37E8jXvwPNn/jyLmSMBpRBCCCGEEGLBcrQilEyg40nQCi8vSsoNDq/9Nls81yVcU4k/0DS6fX8zurwY93UvxuRFwHXJRKKkR0Q4AQyB3fvxdx489YPdfXCgmbyXXomJhvF/+xSMnCae8fC37SEQDJCpWyrVtcW84ehB/HQPKrAkW1Fbp/DSbTjBJdNeYVnTxYHt92Gtz8qN76SwZA2Hd3+LwYFjrGq8mZLKa8lkFv57SSlQyow6345j8f2zRcuTk12DcglLVrySvu4DLF/9FqwqoH5tiJamX7Ok4Q0STl4AJKAUQgghhBBCLEhBawgeaMZ/YR9+JjtaUedHybtiI/Gy0lmd7ewZYNVyONICqcyobWYwjldSRCw0flGIUCw+Opwc3qmP2b4XZ1ktZrw1LAGzYz/BRVUkXSmWI+Y+Rw9ydP/36e89xMoNNxKKLqX92G9oO/YYK9a8iWjRxdMWUmoNycFWksnu4crSwWARA/1NAAz0HMANLWahxypKgfWOMzhwhILSzRgTQNNDd9tWSiuvwbe5KV5jTJDiymsoqdycHQlqIVLYyKqNdVJR+wIhRXKEEEIIIYQQC45SiuCJdvytuyBzaiq1HYzj//4ZovHYLPYuK56Xh3P91ehlNeA6EHDRyxfhvPxq4uHxC4ZoraCtc+KdpjJwYuLtNp7E8aZedXguchyN4+jT6wGJBcT3+hnoa8L3U+zf8SDN+79F69FHsdbQ3f4CisS0HdsYCOevY8Wav0ApTSrZMxxO1i59MaVV12LMwg4nAfBb2bf9Xpr2/Zj+zqdwVDcHdz7AscMPc+LoL3FU7q6BMcFR09SNURJOXkAugHeTEEIIIYQQ4kJhrSVoDS4Gs+PA+E/yfOyR4zjrV+H7szeM0hjLYDSPwJWXEEilAEiFQtnRlWeagm4mLshh0xlUft7EPxtwsc78HqcSwBAaGIQjx7GpNGpxFaa8lPiINTrFwqDdRaxsvJn927+G5yXo6dwNQHHpKpY0vBHfnOF3PQeM0eQX1xMKl5BMdGX7pAOUVV+KITStx54rtI4QDBWRSQ9y5MBPcY88gpfJfsETyavCIu87kRvz+18mIYQQQgghhCA7DTEvmcR/ajvOw4/jHjyKbu9ET1Rdt6MHPWLondaKiJ8hv6+X/J5u8lJJZirHyxiIB0LEAyfDyTMwxkJ1+cRP0Aq7tCY7P3UcTv0SUuH5u5ZbwBpCew/h//Ix/N2HMIeO4T+6FfvbJ8nLpGa7e2eltTo56lOGfU6GMZZguJaikvpR7VWLr8Ew/SPrHD1A055vD4eT2T5l2P/CfWDaL4jRuz7F1K+7kWh+DcBwOLls5esoKLscY2Xcm8iNOR1Qnjhxgve+971cfvnlXHvttdxzzz2kTn6zePToUW6++WYuvvhiXvOa1/DYY4/Ncm+FEEIIIYQQsyUvEcf8+nHMjv3YngFM/yBkfFRPP3qc0YiqKH94DUqtIdrZhfrVY/j//Uf8h5/E/Pz3RPYeIngy4HQ1RDJpIl4ad5bvojL5eei6RWM3aIWzaT3x/ALcLZdmp42PoBZVYtY1zOqo0fMVGhjAf2Hf2A29A7DzAK6em4mRqyA/Pkhk937CT28j71gL0Uz6ggi4zoejU7S3/Jqujh2j2g/s/CZe6uC0nj+tFbG+ffT1ZEdi1yy9jvq1b0EpTTLZQ0/7n3B1N1pn309KgaN70co7027nJWstpy/aa40BLFobHH1qyQylwNXxGe6hWAjmbNRtreW9730vhYWFfOMb36Cvr48PfvCDaK35wAc+wN/+7d+yatUqvv/97/Pwww9z++238/Of/5za2trZ7roQQgghhBBiBrka7M4D2EQKgtlbHL+tk8CaOrwnX0Cl0xAaMR1TKVixBN/Pho/RWAz/d8+AP2JtRs/H37aHYGEeweJC7I4DmGNtAIRqKwlvaCAWzZ+VauAp5aAuXY9bVY7ZcwhSaVRpMXpDA/GiQnxjiVdXEn7NdaiePkhnoKSQTH4eKeWc/QBzlONoONwy4XZzuIXg+pV4gblVAMhREDnagvfkC6em7h86hoqGyXvZlQxOsN7ohU4pMF4HbUcfB7LTumuWXsf+HV/H8xIcO/RL6tfdjGenZ5q3MZa8wkYW1/Vh/DTlNS/BqgAr1igG+o5QULyMHc9+jhVr3kQ4fy1+ppU9279G7bKXUFCyecGMLNT0cHDnA8Tj2c+/QDCfTHqQ5oM/oz6UD1h6OnaxeMXrMeTjpQ5y5NCvWb7mLzCUzm7nxbwyZ98xhw4dYtu2bTz++OOUl2enMLz3ve/lE5/4BC960Ys4evQoDz30ENFolPr6ep544gm+//3vc8cdd8xyz4UQQgghhBAzKZhKY462jWqzgwlMdQXOuhWYpuOocDgbJroOzuWNJAuyVWIdR2GPHB8dTo7gxBJ4T28fVRXbNLVAawd5r7h61sKlpHZRSxcTXFyN8g1+wCVjFZzMv3wLsVAYqsPZKrzzd9DkMKXAps4wjdvzUBNN6Z9F4Xgc76kXxlwEG09intlB8NrNpOf25MZZYS1op5aGdW+js20rSxpuwKpCVjbezLGDP2f5mr/Am+Y1KH0bpKRqC1iDb0NgIVq0kYLiZezZ9hW8TIwDO7/B0vrXcLz5d6RT/TQd+AmrNy+l00QYecWLA1Ei/vxbt9KaFJ6XHSG5fOX/oLB0LQd3fZ1UsgetDAd2fRdrwRqfqsVXsX/HN/D9FEf2fpe6tTfiGQngxeTM2YCyoqKCr371q8Ph5JDBwUGef/551q1bRzR66hd906ZNbNu2bYZ7KYQQQgghhJh9FsYJ4LwDzTiLKnFfeQ1+MIDVGltUSCIcZmiWs1YKOnrG3asqyse2nEDFk2PXdEylYd8R3IvXnnXdyOlirc2OiHSdcV//qefNXJ+mk+8b1KIqONI67nZdWoQXmFsFO5RSqPauMdNjh9i2TgKJJOmIhDjjMVYTzl/HkpUr8E0UrMUNLWfF+pvw/Jk5Z8YET3ussaqE+nVvZ9/2+8ikB2na/xMAlHJYsvZNfLVpO62J/lE/d9vq64noiQPKhJOiNzN2avSsB5tONSsbbyE+cJT8kkvxjUv92hvp6dxGXsEqqhZdQ9uxx+np2k1PV7aIkeOGWbTilRjyOOOHkxAjzNmAsrCwkGuvvXb4sTGGr3/961x55ZV0dHRQWVk56vllZWW0tbWdvpuzkjU/5ia5LvOfXMP5Ta7f/CfXcP472zWUayzEKZlQiOCiCsw4wZXf0g4rlhCrqToV1I24XzYWVHEBajCOU12GCriYeBL/eAe6uAB7uAU7wRvOtJzAXb8Sz5lbt1WOVoRSKZQx+IEAKcedlanouWYtmKpyVH4UO3hakKMU6pI1pPWZw9qZphTZMPtMz5lg9K7IMlaDPRVGGmMxzG6gay3owGLqVr2BfTseHG6vWnQlFK6ktfnAlPfZm4nzxb0Pj2k/W7A53awFJ1BLQUk1vsl+FlpdQmnVdWR8RdWSV5CMd9LbvXf4Z1Y1vgM3VJct6iXEJM2tf0nP4FOf+hS7du3ie9/7Hl/72tcIBkd/ixEMBkmnz/zBP56ysumv/CWmpqRkeofpi+kn13B+k+s3/8k1nP/kGgoxNRkDoQ2roLWT09MpVV6CX1E64ShC3zc4K5eh43HM83sxiRSqrIjghobsiMuCPEwsMf4POxo7x4qyRP0Meuch/APN2HQGXZhH3kWrSVVXklkA04jjbpC8l16JemEv5mgr+AZVUohzyVoSpWVzbrSoMRYqSibcriIh/PD8m/Z7ocuuj3mcpv0/HtXefvwplpQspzJcQHtyYJZ6l1uOTpKKHSEYXQEE0DpDOn6IUHQpSkVIJY4x0Nc06mfamv/AkoZKIH82uizmqXkRUH7qU5/i/vvv51//9V9ZtWoVoVCI3t7eUc9Jp9OEw+Ep77ura+Cs/4g5jpYbhRnU0xMbXrA8V+QazqxcX0O5fjNL3oPzn1zD+W8y11Ap+aJViJHi+flEX3kN6tBR1JHj4DjohqWYZYtIOBNP+w1ZH3/7PtjXjB2IgbHY1k68E50EXv0izKVr4Q/PjfuzumEpScedcPruTAtbH/74HH5b13Cb7Y/h/+E5wlduxF+2ZEGMaIqFwrhXXETwotUoa/GCQRLamXPh5BCvqBBdUYIdZykBZ+NqYsHQnPkdEpPjqH727vw66VR/dlr3ilfQevQPZNKDHNjxdV677q+4/+g+/Dm4JupUODrJieZfcuL4kyytfzWlVVfR0/4sRw78hKrFV1NetZH92x/A91M4bpjC4jp6OrNTvZX+EYtX3IBvZfkCMTlzPqD8v//3//Ktb32LT33qU7zyla8EoKqqigMHRg+Z7uzsHDPtezKsXThrsiwkck3mP7mG85tcv/lPruH8J9dQiKkxxhKLRCnbcinJNfVYpUg67lkDucBgDL/pOCocQleWoTzvZDEdl8zeJvQrrkZVl2FHhH4AqrwYs7R2TgV+bl//qHByJP/5vYRqKkm4c6vC9bnyDHjBEQNU5s5lGCOpXaJbNuHsOoB/8Fi2mE9BFL1xNcmaqjn1OyQmx1DIspV/zoFd32TFmjcTLVhHQXED+7bfR/WSa/jv3s55H04CYFPEBlsAaD74C3q79tDfexiAwd4mqhdfTUHRMgb6m1nVeDPBcA2h8H9zouVJyiovwjL1QWTiwjWnA8rPfvazPPTQQ/zLv/wLr3rVq4bbL7roIr785S+TTCaHR01u3bqVTZs2zVZXhRBCCCGEEHOAcvTJNRc566g0pRR0dAPZfMvXGkYuJRVPopJpzNWX4nb2YA8cAWNR9Uvwq8rPODJzpmk9cbEfAJtI4SRTkL8wAsr5Ju4GcS9eR3Bt/fDaoEk3IOHkPGUMBKOr2LD5vRhbjOcrlLuIdZf8LUkd4sWZFC+uGf0zxYEozLPlRn1bRN3at3N49zcY7D86HE7m5deyYt2NeKaEpSvfjO/1oQNL8HxL5aLrKau6GO0uyq4fKsQkzdmA8uDBg3z+85/n1ltvZdOmTXR0dAxvu/zyy6mpqeHOO+/kPe95D4888ggvvPAC99xzzyz2WAghhBBCCDG/2GwF7DPRmqQTQFVX4iyqRgGeb+bcKGdrgeCZA1OrNY4axKrgcGVirZMo6+NbWcZjunkGvMCI9SYlnJzXlNJ4fumIxwrPlOD6UKPHmdZ8lnCyOBDlttXXj9s+m8GmUvkUl61hsP/ocFtR6SqULgADvi1AuQXDYbtvIyh3ifx6iymbswHlb37zG3zf5wtf+AJf+MIXRm3bu3cvn//857nrrru44YYbWLZsGZ/73Oeora2dpd4KIYQQQggh5htrwVaUZhd1HSdxVCUFZKKR4ed63tydsmmtxVaWgdbZ4V2nUZWl+FFF8/7vkFewiNKaFwOGzmMPk073sWjFGzDnsVacg4ObccmE0jIqUCx4jkoT691JXuEqfJuH1obk4C7C0VoMpWffwTgifmj8at2zGE5qnaGv8xmOHf71qPbjzb/DccMUV16DMYExH59z7QscMT/M2YDy1ltv5dZbb51w+7Jly/j6178+gz0SQgghhBALmbWWT3/603zve9/DGMOb3vQm3ve+96H1+FPUtm3bxsc//nH27t1LZWUl73rXu3jzm988w70W5ysVjRK+dC3+1l2jNwRcnMs3ktDOnF7fcKRkNEr0sg14T28fnRCEQ7iXb6C5/XF6u/fS270Xaw3GZGg79jgA0fxaSqtffE7HdXDINGvatqep3hJAl2QkpBQLlqPSdJ94lGNND1NSvo6lK29gsHc/h/Z8l0i0ivr1N55zSDnXaBuj9ejvgaFp3W/l8J7vMth/lBMtf6Sk8iJg4ir1QkzFnA0ohRBCCCGEmEn33XcfP/3pT/nsZz+L53m8//3vp6ysjL/+678e89yOjg7+5m/+hre97W18/OMfZ+fOndx5551UVFTw4he/eOY7L86ZZxWpFcsIlZVk15gcjEN1OSyrJRaJzquRQL6FxLJFhMuLUd19aGtRARdbXEAsr4Cy6BUM9DXR33OQ482/G/65krI1lFRehu+rKR9zKJzs/JMHQNsfMlRfKyGlWLisMmS8OAA9nbtIJjpJxjuzob+fAuvD1N9Kc5JPMasa30nL4V+wuP7PMZRQt/bttBz8MTXLXo6xEk6K3JGAUgghhBBCCOCBBx7gve99L5s3bwbgfe97H//+7/8+bkD58MMPU15ezt///d8DsHz5cp566in+67/+SwLKeSiDIlNUhHv5RSjAAL5v583IyZF8FDgOprkVv7UTawyEgoQ3NJCpW0Ld6r9g59Z/x8tkA5ZgqJClq27A8/NRUwxVTg8nIZvNSEgpFjJjwlQtegVYONHyRxKxdgDC4RJWNt6CURWz3MPcsRaUU8XSVW/D87PTz40tZsnKt+Kb0Lz6AkfMfRJQCiGEEEKIC96JEydobW3lsssuG27btGkTLS0ttLe3U1lZOer51157LWvXrh2zn8HBwWnvq5g+nj//77YjXhrz26ewg/FTjak0/tZdBLXleP6R4XASIJ3qp7P1KUqrr8PaqVX4djMubS+kx7RbHzqf9ah+aYCUGrtdiPnOqiB5BYtGtQUjpSgnmv2GYwGxluFwcsjpj4XIBQkohRBCCCHEBa+jowNgVBBZXl4OQFtb25iAcvHixSxevHj4cVdXFz/72c+44447pnzs00etDT2e6mg2kbtzp07uwM7g8CBHQSiZRA/GADD5eaTCYaaSmSoFur0Xf2Q4OWJb8rln0ZsLUWSr8BrjMdB7iONNvyEQiFBccc3wcyfDC6WpuiZA++MZ7IhCHk5EUXmNS8ZJo+Z/5jsp8r49P/Pp/GltiPU+z+G930cBSrtY4zHQc5CjB77PkoYbMDZ/xvozn87dXCPn7vzk+vxJQCmEEEIIIS4IyWSSEydOjLstHj853TV4agTZ0N/T6TOPAEsmk9xxxx2Ul5fzlre8Zcr9KisrmFK7OLupnjsbT2IHYlhApdOYzl7QCl1VjiotQgUD09LP4eOnM5jdh/D/tBu8bNKnAy6hS9ai19RN6fjengM4wfFv87QXJC9QSkX1elasewvWGg7u/CaZ9CAVNReRV1AITO382RJLMOjQ/piHNeCEofrFQSKVGrjwRlnJ+/b85PL8WWuHv2wY7/G5SiV6aD28g2BAU1JxEYvqXk57y5O0t/wRR3u4Ok5hSc15H2eq5Hfv3Mm5Oz+lpbk5fxJQCiGEEEKIC8Lzzz/PO97xjnG3vf/97weyYWQoFBr+O0AkEplwn7FYjPe85z00NTXxzW9+84zPnUhX18CodbyUyt4snd4uzm6q585REOnqwd+6A6esBE50Yg8fQxUV4AcCWKVwNq4ivaqOjBq/mnsu5Hd34z2+bXRj2oPH/oQbCTNYMrlCFEoposEgftob/wk6RF7pSpzIWgZj2QC+dsWbwHokUgUk0wPn9LunCxTFlwfofs6j5CqXuBMj1jn5n18I5H17fnJ9/hw1QF/XCxSVbcK3YbRK0t/9HIUljRjON0xxqV3+egpLdpNJ9ZHxgpRUvZRAqBw/M4Dnu3R2Dpz/i5gk+d07d3Luzs/Q+evuHshJSCkBpRBCCCGEuCBcccUV7N27d9xtJ06c4FOf+hQdHR3DU7eHpn1XVIxf8GBwcJB3vetdNDc3c//997N8+fJz6pe1jHtjNFG7OLvJnrvwwADeI0+hQkG07+Htbcr+fGcvurIE33Hxn99LsLyEdGnptPQ1oCxm18EJt5vdB3Gv2UxmEuvaWWux1eWgNZixP6CX1pAKF+OP2OTbwnH2M7XfPd9adGmGqpcESDtp7Dxcg08pRdB4KGPw3QCZc3zvyfv2/OTi/DlqgCP7vktv9z6q4p3ULL2etqO/pe3Y4xSV7GLZqrfg2/MLU6zS9HXvp/PEdgb6Wli68gbSqV5aDj9CpO0F6tffjGFmK1zL7965k3N3fnJ17iSgFEIIIYQQF7yqqipqa2vZunXrcEC5detWamtrx6w/CWCM4fbbb+fYsWM8+OCD1NfXz3SXxXlyNdjdh8A3OFVl+HsPn9poLQwmUEUFWMDuO0zg6tKzhoRaq5M3upO/W9O+jx2ITbjd9sfQvg/KmdT+kpEokWsuwf/jnxiZRKrSIrh4Dd403YQba0np9LysfB62Pm7LCeyew9hUGqe8mNC6ehIFhVNaA1TkztBM7JFvJa3VJKvCK5TOLotwouUJerv3kkp0Z/fhBIHzn+ZtcQgEigDo6dpDbPCzpFP9ALiBPJRy5uV7QYjZJAGlEEIIIYQQwNve9jb++Z//merqagA+/elP8853vnN4e3d3N6FQiLy8PL73ve/x1FNP8YUvfIHCwsLh0ZaBQIDi4uLZ6L6YIjfjYTt7Tj5wsfHk6Cek0yhrsUpBPIWylomCjYifwenuxXb1oiJhbFUZyUh0UuGWcRzcgjzswNjCNgCqMA/jOJOuDOxbSNRUEX7NdaiObkimoKwYr6iQpCO3f6cLWR9n6078w8eG22wsAUdPEHnJ5cTKSmVk1QxTCqzXSibdSyi6GmM1WvUQ7ztMXlEjvjnzmqy+zWdJ/Q1gDT1du4fDyZKytSypv4H/v707D4+yvvf//7zve5ZsBLKQQAhEIES2CAiCrVir1bpURavH435Uqp62FK+vx+rR1qW1PT0Vu3lsa1uP1H2rSkXb2npq/XVRUKrsS8Ia9gQCJJlkkrnvz++PwOiwSCYkuWeS1+O6uK7cn5nMvPnck0nu13wWtws2sPG8DAaWnokxHtu3/CMeTvYbMJzjjr/8sCOTReST6TeUiIiIiAgwc+ZMdu3axaxZs3Ach0svvZTrrrsufvull17KxRdfzNe+9jXeeOMNPM/j5ptvTniMqVOn8uSTT/Zw5XIwy2q/0LGMh2s7uIcZdeU5Nk44iGkE09yCXZiHt2nbR3ew7fZwErAG5uFa9mHnsWW3tmDeWoi7r/GjRscm89OTaB5cfNSQss1YhMeMhK21h/+/jBnZoendH+caaMrIxBo2BMvq6KizvinY0JgQTsZ5Ht6i5YTP/DQtHRy9KsfOssBr20bVsrm0tUUoH3slmdklrF3xFE0NWygrbyG34CQ8c7SNoxyC4cSQMBjOBSvQZSMbDTZOICPxWe0gWLZGT4p0ggJKERERERHAcRzuvPNO7rzzzsPe/uc//zn+9f/+7//2VFmSJBNpIWtHLd6q9VjRVoKDCrHKhxHJyk4I6tosh9DxI+AfH+BuqyM0djje5u1w4D45We0ZQ8CB8mHxkNO2LYKxtvYRlaEg/HM55uPhJIDr4f7jAzLO+wxNGVlHrTman0d4amX7Lt5t+ze4CQYInDiW5mMYkZvsdPO+xrYt2Hbk3XzMngac5mbIOvYRd5IcYwzGi1G94hlCoRyiLXv233L0tN6xWti55U/s3Lqg/dgJ47pRdm5dgGXZFA89G9fLOMqjfDLbbmX39rfZsrH990IgmEWsLcKe3Wuwqn7D0FGX4nr+vW4cuxnPZMY/U3GsZgwhPKOwXVKXAkoREREREekVQsYj9t5S3OXrgP2DmOr3QfUmsj53Mo39PhpRZYwhVlKEM6IUb91mYtvqCHz2JNxFKyDmYkIhrAH9sE+qJJKVDQayYq3YG7bgrd0ErkeguACroD9tu/YeOkXc9bB27sIqyz5qSNiGhXfcUDIGD8Tavx6l1y+bSDijU2sgWhbYlsH1PpqSHnAMMffY197rdY7aJeqznmQMWIHBVFRez5qlj9HW2hgPJ8vKzye3cBreUaZ4Qwv76tvfA/IKx1JWfiEbq+dTX7echj0bKC5tAY4toLRMK0372kfe5g4YwfDR/8rOzX9l2+a/0RypxXhRwJ+A0rH3sWnNbygeeirBjFHYVjPbN/2enNwysgdMxPMUUkpqUkApIiIiIiK9QnBfA6Zq06E3tMXwPlhJ6DNTaf1Y4NRiOYRPHEdwVBlmay1uOIhz2TkY18OzbdysDJrtAMa0rzPJ//c+7q498e/31myASDPh8z6Du6cBE2kmtqUWoq0AmEi0fT29DoSMroGmUAYUfCw46WQ4aWJbaWisIWfAZDwTwKae3Ts+JG/gp3DNsQUzvYnnGSgpgsWrD3u7nd+fWKY//eXYLWAieLSvgWnbMWyzF88q7PVT9o0BO5BFIJBFW+tHo5NDGXnQgRGArhnAyHHXUrftbwwsOZ02r31NyozMPAoHfxrXDDjmGl2Tw7BR/0LW9r9SOOgUYl4uA0vPxAlmkjdwAh4Fx/wcnRFwotRUzWPP7jXs27uBUeOuZnftEmq3vc/Ore8xekIuwcyKXv8akvSkgFJERERERNKe41iwefsRbzc7dhFsaab1oCnXUcshmtsfe/9U6kMu3E176OfsqEsIJwEs24aYi7twaftu343NhE4Yhbu3EXdbHVbhgB4NAiwLcLfFR54dN8olN380a5c/RVPjVtpaGxhY+nm8Y5ze2ptEc7IJHz88cRd3gICDPWUcrXbP78bs2C3sqPkDe3etprzyepxAAXvrFrJl/RtUVF6DEx6F5xlsuw2LFlyvX88W2M1sq551y5+kObKz/dgO4nltVK94lvKxV5CRPQbP2J/4GB55DCz9Aq7bfj/XZDOw9Lz4cVdwTQ4Dh5xDLNb+oYfrZZA/6AxcH0cqu14Gg4Z9ln17NxBri7B6yWPx2wqKKgllDjnsmrwiqaDrfjpFRERERET8dAzrLXqeOWKY6Dg2Zl3iRiq2MZg9+zBNzXjrN2MXF2Dq6on9eSFOVgbWkCLcvP6drqczjAHLziAYbA+sNlS9ysoPfkZT41YAwhmFYDRG5ePasGmrrMA57SSs4gKsAf1wKspwzp5O04ABPb6Dt2VBrHUHO7cupKWlnuqlc6nb+ic2Vc0j0rCR9auew7H2YNtt7K1bwLoVj+NYe3q2yG5kWRax1j00N7evDVpWfgFjT/wKoXAuxovRsGcdFm0deqyDw8iuDCcPOBBOfvQc/i4JYIzBDpZRUXldQntO7jCGjrwY1zv6mrgiflFAKSIiIiIiac91DQwpPuLtdn5/YuFw55/ATgweLDeGaWkFx4bgx9bEs8BduY7g5LE0O0dbK6/reeQxcty1ZGUNAohPkS0rv4Dcwql4CigPEbUcmooH0nbaVNwzP03LpHE0ZmXjx0AzY8AJDWXkmMuwLJuWlnq2bXwbt62BUDiXwkEnsXnd79mz8+9sqn6Nxn2b2bbxjwScWM8X2w2MMTih4Ywafw3HjbqQ/oVTwRnMqPHXUzLsNIpKz8Q1x/BzzP6Rxr2YbUWo3bYwoS3StJ3myOZe/3+X9KaAUkREREREeoXYgFys0sOElI6NNXls+3TdTnBdD6t8WGJjtH0Ul8HCKh+G1xLFKsrHKi7AC4Vw29xOPVe3sejxqcrpxBhoMxZRyyF29I2iu5Xn2WQPGE9ewZj22jA4wX5UnHAd2zcvpG7Hh9Ss+wMA2f2GMHjY54m5qRU8W5bBtryPHVvYdsc61hgIZoyiX/5UXC8Y3zincMjncb3MpOpwrL3gbcPan8w5djMmVoPdS5MQ225hR80b1G57H2jfwCcQzMJzW6la9iRudH28L7qL4ySGwLYNtq1kVI6ul/5YioiIiIhIXxO1HJxTJuFMq8Qa0A8rKwO7bDDO50+hOS+v09N1jYFYQT7W4IEfNR644M7OxB5eSqxuL24ggGs77TmgTwmITT1rlz9BJNK+HmcwmA3Axqr5NOxeiG31jpF2vZltx9hbu5DddcvjbQabmrVvMGT4aThOeP/9ApSPvQqXAT5Veni2Da3Na2hpXIFteViWhYltpmHXu9h2x6ZnG0PCaF9jwHWT+4DBsfayfuWzrFnyv5jYZgJOC9s2vMbKD35Ja2R17wwpTYj+eRVYdoCCohMYPuYaKiqvIxDMIjOriGAoD9ON6xbYdoyG3QvB24llgW0bok0riLWsU0gpR5VaH7OIiIiIiIgcA7tfNs3DhxEYWoLlebjBIG0exzx6sMUJkPGpiQS212KqNmK15mCPGIo1MJ/WVesT1r+0CgfQlpXcSK+uYFlg3Bba2hoAKBt1If3zR1O97EkiTdtojtTSryCmdShTmGWB27qFDVWvApCdU8LAwSexsfpVGveup7WlnuKhp7F101/xvBib1/+BISMuSpm1BW3bojWymuplT2GMR/nYKwhl5LFm6VzaWhspMx65BSd3+1IDlmXRGt1FU+NmPC/GmqVzyc4Zwp7d7Tu219cuY1DZccCh08UtK3E524OPU5lnbMLZoxkz4UsEwkXE3EzsYBnHn3ADjpPTrWG2bbXRsOs9NlS9SjhjAKMqbyDaXEfVimew7QAV4/8NJzyiWwNSSW/6zSQiIiIiIr2K5xmiltM+17ALp+u2OEGs0iEES0twjEdgey1tf12UeKdwCPukSpotu8enVBsDljOYisobiDTWkJM3GdcLMHLcteyp+4C8ok/jagfvlGYMBEKDKR3+eeprlzFi7DU4wTwsK0bVkscpGX4me3dvoKBoArt2LmbXziUEglkUDzsfNwWmeRtjCIRyCQQzaY3uo3rFs9hOEDfWgm0HCGcWgBXo9p8NYwzBjBGUj7ua6uVP0dbaGA8nC4snMajsXFzv0HDStsFr3YQTKsT1svaP/tyCHcjCMwO6t+gu4hkbOzQ8vlu3MQYrUIrb3e9HlkMgmI1l2URb9rDqw1/gulGMF8MOZGA7YbTOhHwS/9/BREREREREOsG2LcKtrThNTeB5mOwsjJvdrc9pjKG1/dkJDCoi49xTYf1mTGMEq7gQM6SIpows30YJta/XV0JO3mA8r31KpUceecVn4KbYsphyeK4XIr94OgVFU4iZXLw2yC2YyJgTs9ix7Z8cV3EZ2GFsJ8je3WsoHHwynpcal/btIfkgRlXewJolj9LW2ogbc7Esm/JxVxHOHoPXQ2t8eh5k5pSRnTOEhn0b4+3FpafgmWwODstsG6JNK6le/jR5heMoHXkRbdFdVC2dSygjjxFjr06bkPLg95+eeDvyPJvM3EpGjoHqFc8Ra2sC2peZqKi8AStQkjYjUcUfqfEuJiIiIiIikgTHtsiqrcN9dzFupKW9MRDAPXE0wbJSWntguf0YFo05/XAmjsOy2kduep7xfT6oMWBM4npvCifTi+uFgFD8OOb2I7PfKI7LGdk+TdeDwWVfYNDQz2KsQr9fcgexwLiHhmSeC8ajp7bCcOxmtq5/LSGcBFiz9NdUVF6PFShNqNEiyt7dq/G8GLt2LibW2kSkaRttbU24bitt0V0Ewt27hmP6s7CdYPvI0/39ZNkOlq3oSY6uNy4LKyIiIiIivVxmUyOxt9/DHAgnAWIxvA9XEd6+s9t3qv041/WIxbz2cFKkm7gmN2ENQdfLxCO1wknLAhPbzJqlc4m1NWHZAQLBLIzxqF7xbHzjnO5m2xbR5hpqt/8TaJ/WXVF5DbYdoK21ka0b/oRjtyR8j+uFKR56NgMHTwFg755q2tqasO0g5eOvJpgxUuHkJ2jfEGcl1cufwRgPJ5CBZdm0RvdRtfSx+MY5IkeigFJERERERNKK49iYdZvBPXzQ4S6rIuSl1m7VjmXIjjaTs7OWnO07yG6OELAUdkjvYlkWrtuC57Zh2wFGjbuK0RNuIhTOxRhv/7Tf7g8oPc8QyhjB8IoZFBafSMnwCwhnj6N83FXkDhjB0PKLibmHrkHpmSyKSqYltGXlDCIre1iPTU0/wLIgYDcm7H7t2E3Ydqq+b8RoiezE82IEQzmMnnATI8f8K5Zl09YWIda6r0c/OJL0o3G2IiIiIiKSVmwM7NpzxNtNQwSnLQYhp+eK+gQBy5CxcQvu+8s/mmttW4THjsQZPbJ9Qx+RXsDzDIHwSEaNvwbPayOcPQZjYFTlDTQ31JA9YFK37+Adr8UEyMmbQr/8E+K7nIezx3Dc6GG43qFr1VqWhddWQ9XSXye0N+6roWbtPIaMmNFju6VbFuDtoGrlM5SNuohAeASW2cOGlc9SNOTTZOZWxteYTRWeF6T/wE9TZjnk9B+JFSghM3cQI8eAE8gkkFGuUebyiTSCUkRERERE0oqHhTWg3xFvt7Iy8AKpMxYjY88+3AVLEheC9AzesmqC2zXtUXoXYyCQUU4oazSe99HGOTl5U3osnDzAM4GEUNHzOGw4CeDYLWzf9Of4tO6Kyn+LT/fetXMJ0UhNwmjG7uRYjaxb+QyRxh2sWfo4rZFVrF/5NPv2bmDtyufB3d4jdSTL80L0H3hKfEMcz7PJ6FdJMLMipZYikNSUOr+1RUREREREOsB1PRgxFNZsPOyGNPbYkbQEApACo3UCjoVZs/6It5vlawkNLiaqsSPSi7T/WFoJx65J7SQ+5oYpHTkDz22jeOh0QlnHMzj7OCzLJrtfKaGsnhsB6JocyspnsGbp47ixFlYvmRu/rXT4WeAU9MRM+U5x3cT3MmP03iYdo1eKiIiIiIiknZZ+/XBOmQTBj425sCzs0cOJlQ5OmamEtudBQ+SIt3vNLdix1FovU6Svck1/yo6/glDW8ftHW2YyaOh55ORNxvN6bikGY8AJj6B83BUJ7YWDTiR/0HQ8L3SE7xRJXxpBKSIiIiIiaSdmoLlkEOHzBmDva2zfMCc3G2dQAdF9LZAa+SSebUNe7hHXzLT65RALBHu2KJEk2baVEPoffNybxA5aZ9I1Gb68n9jsZeuGPye01detYODgkwiER/Ta/pe+SyMoRUREREQkLbkGIqEMGgsLaSwuoikrGyuUWmFfzDVYo8rAPvyll1M5ijYtQikpzLbqaW1ejW21zyl27CaiTcuw7TafK+u9HLuRDauepWHfJgAKiyfhOGHcWAtrlj6OiW31uUKRrqeAUkREREREpBs19+tH4NTJWJkZHzWGgjhTK2kpyNPmEZKybKuedSueYs3SJ2hpWknAibB57SusWfok++oWKKTsJoYsioacjGXZDB1xNkNGXkJF5b/hOGHyCsdiBwb4XaJIl9MUbxERERERkW7kGmgaVET43Ok4jREwBi8ri+aMDFxN05QUZtwoba0NGC9G9YpnycoqoqmxffReS6SO/iYGpNao5d7A82wyc09g3OQirEAhsVgAJzyCMZNuxg7k4XqZfpco0uU0glJERERERKSbeZ6h2QnR2H8AjQPyiITCCicl9TmDGDX+ekLhXIwXi4eTxSXTKB52Dq5RUNZdPM/G2CXxDXGMAWOXKJyUXksBpYiIiIiIiIgcwhhwgv3JzCpKaM/NK8cY7SQtIl1HAaWIiIiIiIiIHMKxm9i89mX21lcDYFntEUL1iudoaVoZ3zhHRORYKaAUERERERERkQSWBW7bbvbsXgO0T+seN/lr7dO9jUvt1gVYVovPVYpIb6FNckREREREREQkgTFgBYYyavy17N21kqLSs/BMBqMqr2f7prcYMvx8XC/L7zL7FMuysMwOLLs/rhcGwDa7aIlEgbC/xYkcI42gFBEREREREZFDGAPBjHKKSs/G9TLaQ0tnMKUjLsU1uX6X16dYloXXtpGVHzxC7eY/4ThRbFNH1dK5rFvxAo7V6HeJIsdEIyhFRERERERE5LCMAfdjG+IYAzFtkNPjHCvK9i3/INYWYdvmv9EWi9C0dxMtzXV47l7yijcTyhqD5xm/SxXpFAWUIiIiIiIiIiIpLOaFKBl+Pm6shfpdq6jb/k8ALCyGj76EUNYoXIWTksbSYop3a2sr559/PgsWLIi31dTUcN111zFx4kTOO+88/va3v/lYoYiIiIiIiIhI9/FMDqUjzwWseFtO7lDyi07AM45/hYl0gZQPKKPRKLfeeitVVVXxNmMMX/3qVyksLOSll15ixowZzJo1i61bt/pYqYiIiIiIiIhI90P9IOIAACJKSURBVLC8OqqWPgF8NFKycd8mNq97A1s7qkuaS+mAsrq6mssuu4xNmzYltL/77rvU1NTw7W9/m5EjR3LzzTczceJEXnrpJZ8qFREREREREZG+KOC0HXJsWUe48zE8x+b1r9PSvAuwGF5xMXkFYwDYsfnvRCPrse0uflKRHpTSAeXChQuZNm0azz//fEL74sWLGTt2LFlZWfG2yZMn8+GHH/ZwhSIiIiIiIiLSV9mmji3rXsKx9gLgWPvYsv5l8HZ2aUgZc4OUjriA7JzBjBh9KTn5JzF01CUMKBjD4LLTCWeP0AY5ktZSepOcK6+88rDttbW1FBUVJbQVFBSwffv2pJ+jqz/VkK6h85L+dA7Tm85f+tM5TH9HO4c6xyIiIv5yrL1ULf01zc11RJvrGTHmMjaseYW99dU07FnP8RNuxiWvy57PI5/y8TfgmSw8zwZyGDbqUnL65bB3n8JJSW8pHVAeSXNzM6FQKKEtFArR2tqa9GMVFPTrqrKki+TlZftdghwjncP0pvOX/nQO05/OoYiISBqwsigcPJmadW/QsG8jSxb+EGNcAAqKJwGZXf6UMS8xw3BNNsFQDtDQ5c8l0pPSMqAMh8Ps2bMnoa21tZWMjIykH2vXrgbMUT5ocBxbFwo9qL6+Cdf1uvQxdQ57VlefQ52/nqWfwfSnc5j+OnIOLUsftIqIiPjJ9YLkFU3Hc9vYsvHP8XByUOkpFA7+LK4X9rlCkfSRlgFlcXEx1dXVCW11dXWHTPvuCGM4akApPU/nJP3pHKY3nb/0p3OY/nQORURE0oBppmHfxoSmpn2bwbQACihFOiqlN8k5kgkTJrB8+XJaWlribYsWLWLChAk+ViUiIiIiIiIifYVjNbBxzQvsq18LQHbOYAAa9m1k/cpn4xvnpIqDd/nWrt+SStIyoJw6dSqDBw/mzjvvpKqqil/+8pcsWbKESy+91O/SRERERERERKRPcAiG2pdbKSk7nVEn3MTQ4WcDEAxlg+X4WVwCx9pHZO8ibDvWfmw307RnIY7d7HNlIu3Scoq34zj87Gc/4xvf+AZf/OIXKSsr46c//SklJSV+lyYiIiIiIiIifYBrsigZfgEDCkeTlXM8bbEM8oqnE87KJ6tfOa6XGut3O9Y+1q96hoa9Gxg2soG8oilsXf87arcvYuDgjQwedh6uyfK7TOnj0iagXL16dcJxWVkZTz31lE/ViIiIiIiIiEhf53pZZOVOxHXN/uNgwnFq8DCmfeTkprW/p3bb+zRHagEwngukUq3SV6XlFG8RERERERHpfQJ2JGFdPMeOYFuejxWJHN3BYWRqhZPgmgGMGHM12f1KAeLhZGHxJEqGX4BrUmOkp/RtCihFRERERETEdza7Wb/yCWLR9di2hWM1snnty7Q0LldIKXKsrDAZmQUJTZnZRRhCPhUkkkgBpYiIiIiIiPgqYEfYsOp59u3dwJqlvybWUk1N9Uvsrl1G9Yrn8GJbsLThsEinOHYz2za8xq6diwGw7SAANeveYG/t3+Mb54j4SQGliIiIiIiI+Mo1WQwZcTaOE8aNtbDyw19Rv2slAMVDTsYJDsSk1qxZkfThNbG3vhpon9ZdOfX/xad719cux0I7eYv/FFCKiIiIiIiIr4yBQHgEo8ZfldCeVziG4qFn43oZPlUmkv48q5CKyusZVPppSoZfQMzLZ+TYqykqOYnjxlyJ6/Xzu0QRBZQiIiIiIiLiP5tGdmx+J6Ft3571tLZsTdg4R0SSYwzgDKJo6Hm4XhbQvnHO4OMuwjMDfK1N5AAFlCIiIiIiIuIrx25i87p58WndA/KPj0/3XrP013htNVqD0geO3Yr9sdTAslxsS+sVpiNjwHUDCW2xmONTNSKHUkApIiIiIiIivjJkklc4DsuyGVR6CmXHX8moyn/DccL0yx2GE+ivNSh7mGNHqdv2FtGmVdg22LZL055FNO5ZpJBSRLpc4Oh3ERERERERSX0aYZe+PM8mq/8ExkzKJxAqJuaGCYRHcPyELxEIDsA1WiOvJzl2jN07/srWjW9h2wFGjb+a1ug+1q9+BYCRY4Jk9Z+M5yk1FpGuoYBSRERERETSWgBDRnMEdu3B3eaQ3S+HaFY2bSixTCeeZ2MHy3C99mNjwA4OxVUG1uM8EyQ3bzTBze/Q1tbE6iWPA+0nIjNrIFn9yhROikiXUkApIiIiIiJpK2Q8QlXrcZesAWNwQwHcNpfQmBHYY8uJWlpjLZ0cPI1b07r9YYzBDg6l4oTrWfnhL/HcVgBC4VzKx1+HR4HPFYpIb6M1KEVEREREJG2FdtfjLl6dmGQZg7diLcGddZr2LdJJlhUj0rgVz22Lt8XaIkSbaxM2zkk3jmMfdGxh2wbHao23WZaFY0d7ujSRPi2N31ZERERERKQvC1rgrVx3xNvNirUENQRPJGm2FaOxftH+NScNGRn5BILZeF6M6uVP0RpZnZbhv2O3ENm7CMduBtr/n62R1bQ2LaNu+1s4VhTLsvDaati24VUcq9HnikX6Dk3xFhERERGRtGR7LkSaj3i7aYliuy44uuwRSYoVIBjKxbYdwhl5lI+/DjfWTNXSuRjACWQDFgfWpUwHtt3Czs1/Yvvmv1M0eColx51Dw56VtEV3Ub3sacJZAzHGI3/geKqW/pq2tiY8r40hIy7G9TL9Ll+k19NvahERERERSUuu4xAoGIDZe/hRTtaAXNxAIJ0yFJGU4HkQzh7NqMp/IxTOx6MAO2gxqvJ6oH3zIpNmo5MtXNpaGwDYuW0hjQ2biDTupGTYp+iXN5zWaAPbNr3N9pq/YoyHbQcpHDQFg8JJkZ6gKd4iIiIiIvsZY3jwwQc5+eSTmTp1Kg888ACe5x31+xoaGjj11FN5+eWXe6BKOSDmgXX8cRx2QTzLwh47krb0ylBEUobnQSizIr4hTvvGOaXYwdK0CycBXC+bIcNnUFBUCUCkcTvgsWfXWsZMmkV27ggAjGl/zx81/mpCWRV04FeAiHQBBZQiIiIiIvvNnTuX1157jYcffpiHHnqI+fPnM3fu3KN+35w5c9i5c2cPVCgHa+6XS+C0KVg5H41ysrIycE49keYBA/wrTKQX8LzEINKY9N5Z3RAmJ/e4hLac/mW0tTXR0rw7oX3fnnVYRhvliPQUTfEWEREREdnviSeeYPbs2UyZMgWA2267jZ/85CfMnDnziN/z/vvv8+677zJw4MCeKlM+xjXQVDSQ0OenE4g0EwgFaA0EiQRDh4QrItJ3tW/88z4bq18DwLIcbCdIOCObZQvnYDtZ2HaYzKwCmhq3s23T21hAweDT8UyGv8WL9AEaQSkiIiIiAuzYsYNt27Zx0kknxdsmT57Mli1bjjg6srW1lbvvvpt77rmHUCjUU6XKQTzP0OIEacrNxS4tpiUQVDgpIgksq5na7e8DhqzsYiqn/j/yCkbHh4TatsWo8ddQPv5L9M8fBViEMwvACvpat0hfoRGUIiIiIiJAbW0tAEVFRfG2wsJCALZv357QfsAjjzzC2LFjmT59eqef17IOf3xwuxyd+u7YqP86T313bHqi/zzTjxFjrmbrhj8wuOzzeORTMvwCdta8yQkn30FbW5RgRjmugeMqLqO5qYaMnOPxPCelz6tee52nvjs2Xd1/CihFREREpM9oaWlhx44dh70tEokAJIyEPPB1a2vrIfevrq7mueee49VXXz2mmgoK+iXVLkenvjs26r/OU98dm+7vv37k9r+aQDAzftwv9xKCwYN36u5HXkFJN9fStfTa6zz13bHJz++a/lNAKSIiIiJ9xuLFi7n22msPe9vXv/51oD2MDIfD8a8BMjMTL16NMXzzm99k9uzZ8VGWnbVrV0PCphOW1X6xdHC7HJ367tio/zpPfXdser7/Go5ynD702us89d2xOdB/u3c3dElIqYBSRERERPqMadOmsXr16sPetmPHDubMmUNtbS2lpaXAR9O+D94AZ+vWrXzwwQesXr2a73//+wA0Nzdz77338rvf/Y5HH320wzUdaVfcdN8t10/qu2Oj/us89d2xUf91nvqu89R3x6ar+k4BpYiIiIgIUFxcTElJCYsWLYoHlIsWLaKkpOSQ9SeLi4v54x//mNB2zTXXcM0113DhhRf2WM0iIqnCsizMx5IKy1LoIyIdp4BSRERERGS/K664ggcffJBBgwYB8IMf/IAbbrghfvvu3bsJh8NkZ2dTVlaW8L2BQICCggKKi4t7tGYREb/ZlkcsuoFguBjXZGPbFm7rJpxADh55fpcnPgs4rbheKB5YO3YUQwaepwRbPmL7XYCIiIiISKqYOXMm5513HrNmzeKWW25hxowZXHfddfHbL730Uh577DH/ChQRSTG25dHSuIJVi/+XmrUvEbCbiEU3sGbJY6xd/gQ29X6XKD6yrXo2VT0L3k4sCxy7iW0bfkusZR22re2z5SMaQSkiIiIisp/jONx5553ceeedh739z3/+8xG/95NuExHprSxaadi3AWNc6utW0NbaSEukllisGc+4xFr34ITzE6Z/S9/g2I2sW/EMjftqiDRuo6LyOjZveJPdtcvYXbeCMZP+HaxBfpcpKUIjKEVERERERESkU1yTQVHJmRSXfhqAxn2biMWasZ0QFeOvxQkPVzjZRxmyGFQ6HcuyibbsYel7P2F37TIACosmYDsD/C1QUooCShERERERERHpNGNlUlA0MaEtK6uIcNZgbZTTh3meTWZuJSNGX7q/pf3FkD+wkuKyc3G9DP+Kk5SjgFJEREREREREOsW2rf1rTs5NaG9s2MymqpdwrCafKpNUYNFMfd2KhLamhhq82D4sLUEpH6OAUkREREREREQ6xaKZnVv+Fp/WPXrCTIqHfAqAPbtW0dq8RZuh9FGO3cTmta/Ep3X3yx0an+5dtfQx8Gp9rlBSiTbJEREREREREZFOcb0Mhgy/EOO5FA35NIGMcopL24OorJwhBDNH4nma590XGYJk9xvC7tplFJdMY1DZOTTtXcPalc8TzizAtsO4emnIfgooRURERERERKTTXNOP0vLL8EwGxoBLBgOHnAUE8Yzjd3niE88LkVc0nazsQYSzhxNzM8jMraSiMpNw5iBck+t3iZJCFFCKiIiIiIiIyDE5eMMTz2gDFAHXCxLKHou7fxSt59mEso6PH4scoDUoRURERERERESkWxw8xV9T/uVwFFCKiIiIiIiIiIiIbxRQioiIiIiIiIiIiG8UUIqIiIiIiIiIiIhvFFCKiIiIiIiIiIiIbxRQioiIiIiIiIiIiG/SOqCMRqPcddddTJkyhenTp/PYY4/5XZKIiIiIiIiIiIgkIeB3AcfigQceYNmyZTz++ONs3bqVO+64g5KSEs455xy/SxMREREREREREZEOSNuAMhKJ8OKLL/KrX/2KcePGMW7cOKqqqnj66acVUIqIiIiIiIiIiKSJtJ3ivWrVKmKxGJMmTYq3TZ48mcWLF+N5no+ViYiIiIiIiIiISEel7QjK2tpa8vLyCIVC8bbCwkKi0Sh79uwhPz+/Q49j22BMx54zMKgQK5i2XZbynIIB8a/tborO8wvLCQQyuufBhdwBpfGvu+MclueXkBEIdv0DCwCluQPjX3fXz+DI/FwyAk73PLgwJDc7/nV3ncPs4gB20OqeBxcy8z/6+TjaObR0GnqNg8/lgWOd4+Sp746N+q/z1HfHRv3Xeeq7zlPfHZuu7j/LmI7Gc6ll3rx5/OQnP+Gtt96Kt9XU1HDmmWfy9ttvM2jQIB+rExERERERERERkY5I2yne4XCY1tbWhLYDxxkZGiEnIiIiIiIiIiKSDtI2oCwuLqa+vp5YLBZvq62tJSMjg9zcXB8rExERERERERERkY5K24ByzJgxBAIBPvzww3jbokWLqKysxO6uhbdERERERERERESkS6VtkpeZmclFF13Efffdx5IlS3jzzTd57LHHuPbaa/0uTURERERERERERDoobTfJAWhubua+++7jj3/8Izk5OcycOZPrrrvO77JERERERERERESkg9I6oBQREREREREREZH0lrZTvEVERERERERERCT9KaAUERERERERERER3yigFBEREREREREREd8ooOyFotEod911F1OmTGH69Ok89thjfpckndDa2sr555/PggUL/C5FkrRjxw5mz57N1KlTOfXUU/ne975HNBr1uyxJwsaNG5k5cyaTJk3is5/9LI8++qjfJUkn3XTTTfznf/6n32WIfCJjDA8++CAnn3wyU6dO5YEHHsDzvCPef+vWrdx4441MmDCBs846i9/97nc9WG1qSbbvDmhoaODUU0/l5Zdf7oEqU1ey/ffhhx9y+eWXM2nSJM4++2xefPHFHqzWf8lcZ61YsYJ/+Zd/YcKECVxyySUsW7asBytNTcn031/+8hdmzJjBpEmTuOCCC/i///u/Hqw09XTmGn/z5s1MmjSpz19PJtN3q1ev5oorruCEE07gggsu4N133+3BSlNTMv33pz/9iXPPPZdJkyZxxRVXsHz58qSeSwFlL/TAAw+wbNkyHn/8ce69914efvhh/vCHP/hdliQhGo1y6623UlVV5XcpkiRjDLNnz6a5uZmnn36aH/3oR7z11lv8+Mc/9rs06SDP87jpppvIy8vjlVde4Vvf+hY///nPmT9/vt+lSZJef/113n77bb/LEDmquXPn8tprr/Hwww/z0EMPMX/+fObOnXvY+8ZiMW6++WYCgQCvvPIKM2fO5Pbbb2fNmjU9XHVqSKbvPm7OnDns3LmzBypMbcn0X21tLTfeeCNTp07llVdeYfbs2dx///385S9/6dmifdTR66xIJMJNN93ElClTePnll5k0aRI333wzkUjEh6pTR0f7b9WqVcyaNYtLLrmEefPmcfnll3PLLbewatUqH6pODZ25xr/vvvv6/GsOOt53DQ0N3HDDDZSXlzN//nzOOussZs2axa5du3yoOnV0tP+qqqr4j//4D26++WZ++9vfMmbMGG6++Waam5s7/mRGepWmpiZTWVlp3n333XjbT3/6U3P11Vf7WJUko6qqylx44YXmggsuMBUVFQnnUlJfdXW1qaioMLW1tfG2+fPnm+nTp/tYlSRjx44d5pZbbjENDQ3xtq9+9avm3nvv9a8oSVp9fb35zGc+Yy655BJzxx13+F2OyCc67bTTzEsvvRQ/njdvnjn99NMPe98333zTTJ48OeE96stf/rJ57rnnur3OVJRM3x3w3nvvmbPOOsuccsopCd/bFyXTf88884w555xzEtruvvtuc+utt3ZrjakimeusF1980ZxxxhnG8zxjjDGe55mzzjqrT7/ekum/OXPmmJkzZya03XDDDeaHP/xht9eZijpzjf/b3/7WXH755X3+ejKZvnv88cfNmWeeaWKxWLzti1/8ovnLX/7SI7WmomT6b+7cuebiiy+OHzc0NJiKigqzZMmSDj+fRlD2MqtWrSIWizFp0qR42+TJk1m8eHGHpruI/xYuXMi0adN4/vnn/S5FOmHgwIE8+uijFBYWJrQ3Njb6VJEkq6ioiB//+Mfk5ORgjGHRokW89957TJ061e/SJAnf//73mTFjBuXl5X6XIvKJduzYwbZt2zjppJPibZMnT2bLli2HHeG3cOFCPvWpT5GTkxNv+9nPfsa//uu/9ki9qSTZvoP2JXTuvvtu7rnnHkKhUE+VmpKS7b8Dy9YcrK/8jZPMddbixYuZPHkylmUBYFkWJ554Ih9++GFPlpxSkum/iy++mNtuu+2Qx2hoaOj2OlNRstf49fX1zJkzh29/+9s9WWZKSqbvFi5cyOc+9zkcx4m3vfTSS5x22mk9Vm+qSab/BgwYQHV1NYsWLcLzPF5++WVycnIYNmxYh59PAWUvU1tbS15eXsIfXIWFhUSjUfbs2eNfYdJhV155JXfddReZmZl+lyKdkJuby6mnnho/9jyPp556ipNPPtnHqqSzzjjjDK688sr4WluSHt555x3ef/99vvKVr/hdishR1dbWAu0fjhxw4EOu7du3H3L/mpoaBg0axIMPPsipp57KhRdeyJtvvtkzxaaYZPsO4JFHHmHs2LFMnz69+wtMccn2X2lpKRMnTowf79q1i9dff51PfepT3VtoikjmOqu2tjahXwEKCgqO+LrsC5Lpv5EjRzJ69Oj4cVVVFe+8806fea0dLNlr/P/+7//m4osvZtSoUT1YZWpKpu9qamrIz8/n7rvv5pRTTuGyyy5j0aJFPVxxakmm/8477zw++9nPcuWVVzJ+/HgeeOABHnroIfr379/h5wt0VeGSGpqbmw/5NPjAcWtrqx8lifRpc+bMYcWKFfzmN7/xuxTphIceeoi6ujruu+8+vve97/HNb37T75LkKKLRKPfeey/33HMPGRkZfpcjAkBLSws7duw47G0H1gf7+N9vn/S3WyQS4ZVXXuG8887jkUceYcGCBcyePZvnn3+eysrKbqjeX13Zd9XV1Tz33HO8+uqr3VBpaurK/jv4cb/2ta9RWFjYZ0bvJnOddaT79uXrsc5ep+7evZuvfe1rnHjiiXzuc5/r1hpTVTJ9949//INFixbx2muv9Vh9qSyZvotEIvzyl7/k2muv5Ve/+hWvv/46M2fO5Pe//z2DBw/usZpTSTL9V19fT21tLffccw8TJkzg2Wef5c477+SVV16hoKCgQ8+ngLKXCYfDh7xQDhzrQk2kZ82ZM4fHH3+cH/3oR1RUVPhdjnTCgYv9aDTKbbfdxu23397npwSmuocffpjx48cnjGQW8dvixYu59tprD3vb17/+daD977VwOBz/GjjsbArHcRgwYAD33Xcftm0zbtw43n//fV544YVeGVB2Vd8ZY/jmN7/J7NmzD1mGpTfrytfeAU1NTXzlK19hw4YNPPPMM31m1k8y11lHum9fvh7rzHVqXV0d119/PcYYHnroIWy7b04A7WjftbS0cM8993Dvvff26dfaxyXzunMchzFjxjB79mwAxo4dy9///nd++9vf8u///u89U3CKSab/HnzwQSoqKrjqqqsAuP/++zn33HN56aWXuOmmmzr0fAooe5ni4mLq6+uJxWIEAu2nt7a2loyMDHJzc32uTqTvuP/++3n22WeZM2eOpganmbq6Oj788EPOPPPMeFt5eTltbW00NjaSn5/vY3VyNK+//jp1dXXxtXIO/BH1xhtv8MEHH/hZmvRh06ZNY/Xq1Ye9bceOHcyZM4fa2lpKS0uBj6beDhw48JD7FxUVYVlWwoX68OHDj/j46a6r+m7r1q188MEHrF69mu9///tA+8iQe++9l9/97nc8+uij3fi/8E9Xvvagfb3JL33pS2zatInHH3+c4447rlvqTkXJXGcVFxdTV1eX0FZXV3fItO++JNnr1B07dsTD9SeeeKJP//3V0b5bsmQJNTU18YDtgBtvvJGLLrqoT65JmczrbuDAgYwYMSKh7bjjjmPbtm09Vm+qSab/li9fzjXXXBM/tm2b0aNHs3Xr1g4/X9/8CKIXGzNmDIFAIGEB5kWLFlFZWdlnP3ES6WkPP/wwzz33HD/84Q/5whe+4Hc5kqTNmzcza9ashClxy5YtIz8/v0//cZwunnzySebPn8+8efOYN28eZ5xxBmeccQbz5s3zuzSRwyouLqakpCRhnatFixZRUlJy2DBjwoQJVFVV4bpuvG3t2rUMGTKkR+pNJcn0XXFxMX/84x/j7w3z5s2jqKiI2bNn893vfrenS08Jyb72PM9j1qxZbN68mSeffLLPrW+XzHXWhAkT+OCDDzDGAO0jeP/5z38yYcKEniw5pSTTf5FIhC996UvYts1TTz1FcXFxD1ebWjradyeccMIh73MA3/nOd7jlllt6uOrUkMzrbuLEiYd8oLNu3bo++fv1gGT6r6ioiLVr1ya0rV+/Pv4BWEcoseplMjMzueiii7jvvvtYsmQJb775Jo899tgRp3aISNdau3YtP/vZz7jxxhuZPHkytbW18X+SHiorKxk3bhx33XUX1dXVvP3228yZM6fPTu1IN0OGDKGsrCz+Lzs7m+zsbMrKyvwuTeSIrrjiCh588EEWLFjAggUL+MEPfpDwt9vu3btpamoC4Pzzz8fzPL71rW+xceNGnn76af76179y2WWX+VW+rzrad4FAIOG9oaysjEAgQEFBQZ8OP5J57f3mN79hwYIFfOc73yE3Nzf+901f2YjzaNdZtbW1tLS0AHDOOeewb98+vvvd71JdXc13v/tdmpubOffcc/38L/gqmf77xS9+waZNm+KjnQ+81vrqLt4d7buMjIxD3ueg/cOIjq4B2Nsk87q7/PLLWb16Nf/zP//Dxo0b+clPfkJNTQ0zZszw87/gq2T677LLLuOFF15g3rx5bNy4kQcffJCtW7dy8cUXd/wJjfQ6kUjE3H777WbixIlm+vTpZu7cuX6XJJ1UUVFh3n33Xb/LkCT84he/MBUVFYf9J+lj+/bt5qtf/ao58cQTzSmnnGJ+/vOfG8/z/C5LOuGOO+4wd9xxh99liHyiWCxm/uu//stMmTLFTJs2zcyZMyfhPef00083Dz30UPy4qqrKXHXVVWb8+PHm85//vHnjjTf8KDslJNt3H3f66aebl156qadKTUnJ9N8NN9xw2L9vrr76ar/K73GfdJ1VUVGR8HpavHixueiii0xlZaW59NJLzfLly32oOLV0tP/OPvvsw77W+vLv82Reex+n68nk+u799983F198sRk/fryZMWOGWbhwoQ8Vp5Zk+u+FF14w55xzjpk4caK54oorzLJly5J6LsuY/ePORURERERERERERHqYpniLiIiIiIiIiIiIbxRQioiIiIiIiIiIiG8UUIqIiIiIiIiIiIhvFFCKiIiIiIiIiIiIbxRQioiIiIiIiIiIiG8UUIqIiIiIiIiIiIhvFFCKiIiIiIiIiIiIbxRQioiIiIiIiIiIiG8UUIqIiIiIiIj0Yq2trZx//vksWLDA71JERA5LAaWIiIiIiIhILxWNRrn11lupqqryuxQRkSNSQCkiIiIiIiLSC1VXV3PZZZexadMmv0sREflECihFRERERERE0tSLL77I+PHj2bhxIwBr166lsrKSN998k4ULFzJt2jSef/55n6sUEflkljHG+F2EiIiIiIiIiCTPGMO1115LdnY2P//5z7n66qsZNGgQP/jBDxLud/zxx/PEE08wbdo0nyoVETkyjaAUERERERERSVOWZfHtb3+bf/zjH9x2222sX7+eb3zjG36XJSKSFAWUIiIiIiIiImls+PDh3HTTTbz22mvcfvvt5Ofn+12SiEhSFFCKiIiIiIiIpLlVq1bhOA4LFizwuxQRkaQpoBQRERERERFJY2+++SZ/+9vfeOSRR5g/fz7vvPOO3yWJiCRFAaWIiIiIiIhImmpsbOT+++/ny1/+Mp/5zGe4+uqruffee4lGo36XJiLSYQooRURERERERNLUj370IzIyMrj++usBmDVrFpFIhJ/+9Kc+VyYi0nGWMcb4XYSIiIiIiIiIiIj0TRpBKSIiIiIiIiIiIr5RQCkiIiIiIiIiIiK+UUApIiIiIiIiIiIivlFAKSIiIiIiIiIiIr5RQCkiIiIiIiIiIiK+UUApIiIiIiIiIiIivlFAKSIiIiIiIiIiIr5RQCkiIiIiIiIiIiK+UUApIiIiIiIiIiIivlFAKSIiIiIiIiIiIr5RQCkiIiIiIiIiIiK++f8B7WO+7GORJFsAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABScAAANVCAYAAACK9ksgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOz9eZyddX3//z/e13KW2bfMTPY9IRshgOyICyoqtoK2Li0otriCVlv1Z2kVtIji0m9tUSpUxeWjVoXWaisuiICExWDYQlYCWSeZfT3bdV3v3x8nZ5bMTDKTzHKSPO+3W27Jua7rnOt9rpkzmfM8r/f7Zay1FhEREREREREREZEp5kz3AEREREREREREROTUpHBSREREREREREREpoXCSREREREREREREZkWCidFRERERERERERkWiicFBERERERERERkWmhcFJERERERERERESmhcJJERERERERERERmRYKJ0VERERERERERGRaKJwUERERERERERGRaeFN9wBEREREREREZKirrrqKxx57bMi28vJyVq5cyXXXXcc555wzTSMTEZlYCidFREREREREitDKlSv51Kc+BUAYhrS3t/P973+fv/qrv+Luu+9m6dKl0zxCEZHjp3BSREREREREpAiVlZVxxhlnDNl2wQUXcP7553P33Xfz8Y9/fHoGJiIygbTmpIiIiIiIiMgJIplMEo/HMcYA+YrKr3/961x++eWcfvrpnHHGGbz1rW/lkUce6b9POp3mxhtv5KUvfSmrV6/msssu4z/+4z+GPG5HRwef/OQnueCCC1izZg1//ud/zvr166f0uYnIqUmVkyIiIiIiIiJFyFpLEAT9/+7o6OCuu+4im83ypje9CYAvfvGLfP/73+dv//ZvWb58OQcOHOC2227jQx/6EPfffz/JZJLPfvazPPTQQ3z84x+nrq6OBx54gFtvvZWqqire9KY3kclkeMc73kFLSwsf/vCHqa+v5yc/+Ql//dd/zZ133sn5558/nZdBRE5yCidFREREREREitDjjz/OqlWrhm3/yEc+wuLFiwE4ePAgH/7wh7nqqqv698fjca6//nq2bNnCGWecwWOPPcaFF17I61//egDOPfdcSkpKqK2tBeC///u/2bx5M//5n//J2rVrAXjpS1/KVVddxRe/+EV+8pOfTPZTFZFTmMJJERERERERkSK0atUqbrrpJiBfOdnV1cUDDzzAP//zP9PX18eHP/xhvvSlLwHQ1tbG888/z4svvshvf/tbALLZLJAPI3/wgx/Q1NTEJZdcwiWXXMIHPvCB/vOsX7+eGTNmsGrVqv5KTYCXv/zl3HrrrXR2dlJZWTlVT1tETjEKJ0VERERERESKUGlpKWvWrBmy7aKLLqKvr48777yTq6++mn379nHTTTfx9NNPk0wmWbJkCbNmzQLygSbADTfcQGNjIz/96U/5zGc+w2c+8xnWrVvHjTfeyGmnnUZHRwfNzc0jVmkCNDc3K5wUkUmjcFJERERERETkBLJ69Wp+9KMfsWPHDq6//nqWL1/Oz3/+cxYtWoTjOPzud7/j3nvv7T8+Fovxvve9j/e9733s27eP3/72t3z1q1/lb//2b/n5z39OeXk5CxYs4Itf/OKI55szZ85UPTUROQWpW7eIiIiIiIjICeSpp57CdV3i8TgdHR1cffXVLFmyBMfJv8V/4IEHAIiiiHQ6zWte8xq+8Y1vADBr1iz+4i/+gte//vXs27cPgHPOOYf9+/dTW1vLmjVr+v/8/ve/584778R13el5oiJySlDlpIiIiIiIiEgR6unpYePGjf23s9ks9913Hz/5yU94y1vewqJFiygrK+P222/H8zw8z+Pee+/lxz/+MQCpVIpEIsGqVav4t3/7N3zfZ/ny5ezcuZN77rmH17zmNQBceeWVfPe73+Waa67hve99LzNnzuThhx/mjjvu4C//8i/xfX86nr6InCKMLSxCISIiIiIiIiJF4aqrruKxxx4bsi0ejzNv3jwuv/xy/uqv/grf93n00Ue59dZb2b59O6WlpaxYsYL3v//9XHvttbz1rW/lYx/7GD09Pfx//9//x29+8xuam5upra3lda97HR/60IdIJBIAtLa28qUvfYn777+f7u5uZs+ezZvf/Gbe9a539VdkiohMBoWTIiIiIiIiIiIiMi308YeIiIiIiIiIiIhMC4WTIiIiIiIiIiIiMi0UToqIiIiIiIiIiMi0UDgpIiIiIiIiIiIi00LhpIiIiIiIiIiIiEwLhZMiIiIiIiIiIiIyLRROioiIiIiIiIiIyLRQOCkiIiIiIiIiIiLTwpvuAUy31tZurJ3uUYiIiIiMjzFQW1s+3cOQCVAMv48Wvp+KYSzFTtdq7HStxk7Xaux0rcZO12rsdK3GZ/D1guP/nfSUDyetRd94IiIiIjJtiun30WIaS7HTtRo7Xaux07UaO12rsdO1Gjtdq/GZqGulad0iIiIiIiIiIiIyLRROioiIiIiIiIiIyLRQOCkiIiIiIiIiIiLT4pRfc1JERERERERERORYWWuJopAoiqZ7KBPOcRwcx8UYM2nnUDgpIiIiIiIiIiJyDIIgR2dnG7lcerqHMmlisQQVFTV4nj8pj69wUkREREREREREZJystbS2NuE4DpWVdbiuN6kVhlPNWksYBvT0dNDa2kR9/ZxJeX4KJ0VERERERERERMYpCHJYG1FZOYNYLDHdw5kkcVzXpa3tAEGQw/djE34GNcQRERERERERERE5Rsac3PHaZD+/k/vqiYiIiIiIiEyylGNoCkNSzskznVNEZKoonBQRERERERE5Dp25gDue3U1nLpjwxy4Enwo/ReRkpTUnRURERERERIpUIfgEuHbVXJKuO80jEhGZWAonRURERERERMYp5Zj+SsmWdG7g70M9MSp9j2Rkp2t4IiInDIWTY+Q4Bkcl9JMuiiyR/gMXERERETlpDQ71TuQAb3BFY8E9O5r6/328VY6F61QIPkHhp4icnBROjoHjGGqqSjCuluicbDaMaOvoU0ApIiIiInKS0jTlsZns8FNEThyf//w/0dbWyuc//8/92/75n2+lp6ebf/zHz0zjyCaGwskxcByDcR3a7/4lQUv7dA/npOXVVVN95atxHKNwUkREREREilql73HtqrlAvqLxnh1NXLG4kbqE378fva8RkQlw6aWv4aMf/RC9vT2UlpYRRRH3338fH//4P0z30CaEwslxCFraCZqap3sYIiIiIiIiJ5SR1mfs/3fixJyinIzsQOXioanWdQmfxsK243w+hfCzEHwCCj9FTlHr1p1FeXkFv//9g7z61a/lySf/SC6X45xzzpvuoU0IhZMiIiIiIiIyqUaaogwD05Q1RXm4/vAzMbBtIsNPETlxOI7DK17xKn7721/z6le/lvvu+zWXXPJyPO/kiPW0iKKIiIiIiIic0hzHkIjix9wEtVDlWOmfHEGBiBSfSy99DY8++gi9vT088MB9vPKVr57uIU0Y/eQUERERERGRSTXS+owwME15OqcoO47BtPnsfSRL/fk+TnVu3Gvg91c5TsJzGHztNJVb5NS1atVqZsyYwfe+922szU/1PlkonBQREREREZFJNdL6jDBomvI0B5NND+WwITQ9mKPx4mMLKCfLkGs3iWMavC7oibgGqMip4JWvfDU/+MH3eMMb/hT3JFoKoyimdWezWS6//HIeffTRYfu6u7u5+OKLufvuu4ds/9nPfsall17K2rVr+cAHPkBbW9tUDVdEREREREROcIcHk0B/QGna/WOe4n2iKqwLesezu/tDShEpLq985avJZjMn1ZRuKIJwMpPJ8JGPfIRt27aNuP8LX/gCBw8eHLLtqaee4oYbbuC6667jhz/8IV1dXXziE5+YiuGKiIiIiIjIcShMU57uNRpjQYwD6weCyQIbwsH1OWJB7LjPkXIMTWFI6hQLOkVkcrS1tdDYOJM1a9ZO91Am1LSGk9u3b+fP//zP2bVr14j7//CHP/DII48wY8aMIdu/+93v8trXvpY3vvGNnHbaadx666387ne/Y/fu4d3fREREREREpHgkI0uj69LoutM6dTjrZqk/18ccNjPSuDDjHJ+slz3ucxSqEYu1ErEQnjaFIS3pXP/2lnSuf7uCVZHp19LSwn33/ZqvfvUrXH75n2LMyfW6nNZw8rHHHuPcc8/lhz/84bB92WyWf/zHf+STn/wksdjQT6yefPJJzj777P7bM2fOZNasWTz55JOTPmYRERERERE58UXWQm2OhgsGAkrjQsMFPtQVz5qTk2nwVO5CkyKAe3Y0aYq3SBHp6enmlls+TWVlFW99619O93Am3LQ2xHn7298+6r7bb7+dlStXctFFFw3bd/DgQerr64dsq62tpampadixR3OShc0nDX1dREREjkz/V4qIHL/IWpxDAeXBR3LUn3f8weTgxjKFasSWdK6/EZCazYjIeC1YsJBf/eqB6R7GpCnKbt3bt2/nBz/4AT/96U9H3J9Op4dVU8ZiMbLZ8Zfd19aWH9MYZfJUV5dO9xBEREREROQUUQgo51wWI+tlj7tislCNONjgqsRrV80d6L49zQrrf0I+QC2M84rFjdQl/P5jpqubuoicGoounLTW8g//8A988IMfpK6ubsRj4vH4sCAym82STCbHfb7W1m7sUX7Ouq6jwGwKtbf3EobRdA9DRESkqBmjD1lFRCZKZC1pJwPT/DbEcZwpfS+UjOxAUJoY2F6X8GksbFcwKSKTrOjCyX379vHHP/6RLVu28PnPfx6AVCrFpz71Kf73f/+X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k8ZijMHzDCiYFBEZkhROioiIiIiISMr5vsH3lUiKiAx1mnNSRERERERERERE0kLhpIiIiIiIiIiIiKSFwkkRERERERERERFJC4WTIiIiIiIiIiIikhYKJ0VERERERERERCQtBnU4GY1GufzyyznooIM48sgjue+++9JdkoiIiIiIiIiIiPRQIN0F7I2bb76ZJUuW8MADD7Bp0yZ++MMfMnz4cE466aR0lyYiIiIiIiIiIiK7MWjDyZaWFh577DF+85vfMG3aNKZNm8by5ct58MEHFU6KiIiIiIiIiIgMAoN2WPfHH3+M67rMnj07uW3OnDksXrwY3/fTWJmIiIiIiIiIiIj0xKDtOVlVVUVBQQGhUCi5rbi4mGg0Sn19PYWFhT16HtsGY3p2zEB5MVZw0DbZgOcU5Se/tvspNi8snkAgEOmfJxdy80cmv+6PczihcDiRQLDvn1gAGJlbkvy6vz6D4wtziQSc/nlyYURuVvLr/jqHWWUB7KDVP08uZBRu/3zs7hxaOg37jIFwLttrGAi1DHRqq55TW/Wc2qrn1FY9p7bqObVV7/R1e1nG9DSaG1iefvppfv7zn/Ovf/0ruW39+vUcd9xxvPTSS5SXl6exOhEREREREREREdmdQTusOxwOE4vFOm1rvx2JqGeciIiIiIiIiIjIQDdow8mysjLq6upwXTe5raqqikgkQm5ubhorExERERERERERkZ4YtOHklClTCAQCvPfee8ltixYtYsaMGdj9NdGWiIiIiIiIiIiI9JlBm+JlZGRw+umnc8011/D+++/z4osvct9993HeeeeluzQRERERERERERHpgUG7IA5Aa2sr11xzDX/729/Izs7mggsu4Gtf+1q6yxIREREREREREZEeGNThpIiIiIiIiIiIiAxeg3ZYt4iIiIiIiIiIiAxuCidFREREREREREQkLRROioiIiIiIiIiISFoonNwHRaNRLr/8cg466CCOPPJI7rvvvnSXJHsgFotx2mmnsXDhwnSXIr1UWVnJ/PnzmTt3LvPmzeOGG24gGo2muyzphbVr13LBBRcwe/ZsPvWpT3HvvfemuyTZQxdffDH/3//3/6W7DJEBxxjDLbfcwqGHHsrcuXO5+eab8X1/p/fftGkTF110ETNnzuT444/n+eefT2G16dXbtmrX2NjIvHnzePLJJ1NQ5cDQ27Z67733OPvss5k9ezYnnngijz32WAqrTb3eXKd9+OGH/Nd//RczZ87k85//PEuWLElhpenXm7b697//zec+9zlmz57NZz7zGf7xj3+ksNL025Pr/w0bNjB79uwhd63Zm7ZatmwZX/rSlzjggAP4zGc+wxtvvJHCSgeG3rTX3//+d04++WRmz57Nl770JZYuXdqrYymc3AfdfPPNLFmyhAceeICrr76aO++8kxdeeCHdZUkvRKNRvvvd77J8+fJ0lyK9ZIxh/vz5tLa28uCDD3L77bfzr3/9i5/97GfpLk16yPd9Lr74YgoKCnjqqaf48Y9/zK9+9SueeeaZdJcmvfTcc8/x0ksvpbsMkQHp/vvv59lnn+XOO+/kjjvu4JlnnuH+++/v9r6u6/KNb3yDQCDAU089xQUXXMAPfvADPvnkkxRXnR69aauOFixYwJYtW1JQ4cDRm7aqqqrioosuYu7cuTz11FPMnz+f6667jn//+9+pLTqFenqd1tLSwsUXX8xBBx3Ek08+yezZs/nGN75BS0tLGqpOj5621ccff8yll17K5z//eZ5++mnOPvtsvvOd7/Dxxx+noer02JPr/2uuuWZIvZ/a9bStGhsbOf/885kwYQLPPPMMxx9/PJdeeik1NTVpqDp9etpey5cv5//9v//HN77xDf70pz8xZcoUvvGNb9Da2trzgxnZpzQ3N5sZM2aYN954I7ntl7/8pTnnnHPSWJX0xvLly81nP/tZ85nPfMZMmjSp07mUgW/FihVm0qRJpqqqKrntmWeeMUceeWQaq5LeqKysNN/5zndMY2Njctsll1xirr766vQVJb1WV1dnjjrqKPP5z3/e/PCHP0x3OSIDztFHH22eeOKJ5O2nn37aHHPMMd3e98UXXzRz5szp9H3xW9/6lnnkkUf6vc6BoDdt1e6tt94yxx9/vDniiCM6PXZf15u2euihh8xJJ53UadtVV11lvvvd7/ZrjenSm+u0xx57zBx77LHG931jjDG+75vjjz9+yLyXetNWCxYsMBdccEGnbeeff7657bbb+r3OgWBPrv//9Kc/mbPPPnvIXWv2pq0eeOABc9xxxxnXdZPbzjzzTPPvf/87JbUOBL1pr/vvv9+cccYZyduNjY1m0qRJ5v333+/x8dRzch/z8ccf47ous2fPTm6bM2cOixcv7tHwE0m/N998k0MOOYQ//vGP6S5F9kBJSQn33nsvxcXFnbY3NTWlqSLprdLSUn72s5+RnZ2NMYZFixbx1ltvMXfu3HSXJr1w00038bnPfY4JEyakuxSRAaeyspLNmzdz8MEHJ7fNmTOHjRs3dtvT78033+Swww4jOzs7ue2uu+7ii1/8YkrqTafethUkpua56qqr+NGPfkQoFEpVqWnX27Zqn/pmR/vq70y9uU5bvHgxc+bMwbIsACzL4sADD+S9995LZclp05u2OuOMM/je977X5TkaGxv7vc6BoLfX/3V1dSxYsIBrr702lWUOCL1pqzfffJNPf/rTOI6T3PbEE09w9NFHp6zedOtNe+Xn57NixQoWLVqE7/s8+eSTZGdnM3r06B4fT+HkPqaqqoqCgoJOvwgVFxcTjUapr69PX2HSY1/+8pe5/PLLycjISHcpsgdyc3OZN29e8rbv+/zhD3/g0EMPTWNVsqeOPfZYvvzlLyfnwpLB4fXXX+ftt9/mv//7v9NdisiAVFVVBST+GNOu/Y9qFRUVXe6/fv16ysvLueWWW5g3bx6f/exnefHFF1NTbJr1tq0A7r77bqZOncqRRx7Z/wUOIL1tq5EjRzJr1qzk7ZqaGp577jkOO+yw/i00TXpznVZVVdWpHQGKiop2+p7b1/SmrcaPH8/++++fvL18+XJef/31ffZ9tKPeXv/feOONnHHGGUycODGFVQ4MvWmr9evXU1hYyFVXXcURRxzBF77wBRYtWpTiitOrN+11yimn8KlPfYovf/nLTJ8+nZtvvpk77riDvLy8Hh8v0FeFy8DQ2tra5S+07bdjsVg6ShIZ0hYsWMCHH37I448/nu5SZA/ccccdVFdXc80113DDDTdw5ZVXprsk2Y1oNMrVV1/Nj370IyKRSLrLEUmbtrY2Kisru93XPs9Yx98Zd/X7YktLC0899RSnnHIKd999NwsXLmT+/Pn88Y9/ZMaMGf1QfWr1ZVutWLGCRx55hD//+c/9UGn69WVb7fi83/72tykuLt5ne+T25jptZ/cdKtdze3pNW1tby7e//W0OPPBAPv3pT/drjQNFb9rqtddeY9GiRTz77LMpq28g6U1btbS08Otf/5rzzjuP3/zmNzz33HNccMEF/OUvf2HYsGEpqzmdetNedXV1VFVV8aMf/YiZM2fy8MMPc9lll/HUU09RVFTUo+MpnNzHhMPhLm+U9tu6SBNJrQULFvDAAw9w++23M2nSpHSXI3ug/aI7Go3yve99jx/84AdDaojeYHTnnXcyffr0Tj2YRYaixYsXc95553W77/vf/z6Q+B0xHA4nvwa6HbnhOA75+flcc8012LbNtGnTePvtt3n00Uf3iXCyr9rKGMOVV17J/Pnzu0zvsq/oy/dVu+bmZv77v/+bNWvW8NBDD+2zo4d6c522s/sOleu5Pbmmra6u5utf/zrGGO644w5se2gMEu1pW7W1tfGjH/2Iq6++esi8j3bUm/eV4zhMmTKF+fPnAzB16lT+85//8Kc//YlvfvObqSk4zXrTXrfccguTJk3iK1/5CgDXXXcdJ598Mk888QQXX3xxj46ncHIfU1ZWRl1dHa7rEggkTm9VVRWRSITc3Nw0VycydFx33XU8/PDDLFiwQMOBB5nq6mree+89jjvuuOS2CRMmEI/HaWpqorCwMI3Vye4899xzVFdXJ+fHaf8l6q9//SvvvvtuOksTSalDDjmEZcuWdbuvsrKSBQsWUFVVxciRI4HtQ3JLSkq63L+0tBTLsjpd7I8dO3anzz/Y9FVbbdq0iXfffZdly5Zx0003AYmeJ1dffTXPP/889957bz++itToy/cVJOaXvPDCC1m3bh0PPPAA++23X7/UPRD05jqtrKyM6urqTtuqq6u7DPXeV/X2mraysjIZmv/ud78bUr+r9bSt3n//fdavX58M29pddNFFnH766UNiDsrevK9KSkoYN25cp2377bcfmzdvTlm96dab9lq6dCnnnntu8rZt2+y///5s2rSpx8cbGn9OGEKmTJlCIBDoNFnyokWLmDFjxpD565FIut1555088sgj3HbbbZx66qnpLkd6acOGDVx66aWdhq0tWbKEwsLCIfXL7mD1+9//nmeeeYann36ap59+mmOPPZZjjz2Wp59+Ot2liQwYZWVlDB8+vNP8WYsWLWL48OHdhh8zZ85k+fLleJ6X3LZy5UpGjBiRknrTqTdtVVZWxt/+9rfk95+nn36a0tJS5s+fz/XXX5/q0lOut+8r3/e59NJL2bBhA7///e/3+TnwenOdNnPmTN59912MMUCiV+4777zDzJkzU1ly2vSmrVpaWrjwwguxbZs//OEPlJWVpbja9OppWx1wwAFdvj8B/OQnP+E73/lOiqtOj968r2bNmtXlDzGrVq0aEj/32vWmvUpLS1m5cmWnbatXr07+oaonlFbtYzIyMjj99NO55ppreP/993nxxRe57777djr8QkT61sqVK7nrrru46KKLmDNnDlVVVcl/MjjMmDGDadOmcfnll7NixQpeeuklFixYMGSGcAx2I0aMYMyYMcl/WVlZZGVlMWbMmHSXJjKgfOlLX+KWW25h4cKFLFy4kFtvvbXT74u1tbU0NzcDcNppp+H7Pj/+8Y9Zu3YtDz74IK+88gpf+MIX0lV+SvW0rQKBQKfvP2PGjCEQCFBUVDRkApPevK8ef/xxFi5cyE9+8hNyc3OTvy/tq4t47u46raqqira2NgBOOukktm7dyvXXX8+KFSu4/vrraW1t5eSTT07nS0iZ3rTVPffcw7p165K9ldvfR0Nlte6etlUkEuny/QkSf1To6ZyAg11v3ldnn302y5Yt4xe/+AVr167l5z//OevXr+dzn/tcOl9CSvWmvb7whS/w6KOP8vTTT7N27VpuueUWNm3axBlnnNHzAxrZ57S0tJgf/OAHZtasWebII480999/f7pLkj00adIk88Ybb6S7DOmFe+65x0yaNKnbfzJ4VFRUmEsuucQceOCB5ogjjjC/+tWvjO/76S5L9sAPf/hD88Mf/jDdZYgMOK7rmp/+9KfmoIMOMocccohZsGBBp+9zxxxzjLnjjjuSt5cvX26+8pWvmOnTp5sTTjjB/PWvf01H2WnR27bq6JhjjjFPPPFEqkpNu9601fnnn9/t70vnnHNOusrvd7u6Tps0aVKn98rixYvN6aefbmbMmGHOOusss3Tp0jRUnD49basTTzyx2/fRUPrZ35v3VUdD8VqzN2319ttvmzPOOMNMnz7dfO5znzNvvvlmGipOr96016OPPmpOOukkM2vWLPOlL33JLFmypFfHsozZ1ldcREREREREREREJIU0rFtERERERERERETSQuGkiIiIiIiIiIiIpIXCSREREREREREREUkLhZMiIiIiIiIiIiKSFgonRUREREREREREJC0UToqIiIiIiIiIiEhaKJwUERERERERERGRtFA4KSIiIiIiIiIiImmhcFJERERERERkHxaLxTjttNNYuHBhuksREelC4aSIiIiIiIjIPioajfLd736X5cuXp7sUEZFuKZwUERERERER2QetWLGCL3zhC6xbty7dpYiI7JTCSREREREREZFB6rHHHmP69OmsXbsWgJUrVzJjxgxefPFF3nzzTQ455BD++Mc/prlKEZGds4wxJt1FiIiIiIiIiEjvGWM477zzyMrK4le/+hXnnHMO5eXl3HrrrZ3uN3nyZH73u99xyCGHpKlSEZHuqeekiIiIiIiIyCBlWRbXXnstr732Gt/73vdYvXo1V1xxRbrLEhHpMYWTIiIiIiIiIoPY2LFjufjii3n22Wf5wQ9+QGFhYbpLEhHpMYWTIiIiIiIiIoPcxx9/jOM4LFy4MN2liIj0isJJERERERERkUHsxRdf5NVXX+Xuu+/mmWee4fXXX093SSIiPaZwUkRERERERGSQampq4rrrruNb3/oWRx11FOeccw5XX3010Wg03aWJiPSIwkkRERERERGRQer2228nEonw9a9/HYBLL72UlpYWfvnLX6a5MhGRnrGMMSbdRYiIiIiIiIiIiMjQo56TIiIiIiIiIiIikhYKJ0VERERERERERCQtFE6KiIiIiIiIiIhIWiicFBERERERERERkbRQOCkiIiIiIiIiIiJpoXBSRERERERERERE0kLhpIiIiIiIiIiIiKSFwkkRERERERERERFJC4WTIiIiIiIiIjuxcuVKrrvuOk488URmzpzJnDlzOPvss3nooYdwXTd5v2OPPZbJkyfz//7f/9vpc33hC19g8uTJ/OIXv0humzx5MpMnT+a2227r9jG+7zNv3jwmT57Mk08+2Wnfk08+ydlnn82BBx7IzJkzOfXUU/n5z39OU1PTXr7qvnXuuedy7rnnprsMERmgAukuQERERERERGQgev7557nssssYP348X//61xk7dixtbW289NJL/PSnP+WVV17hrrvuwrIsAGzb5l//+hfRaJRwONzpuTZs2MDixYu7PY5t27zwwgt897vf7bLvrbfeYsuWLV2233nnndx9992cf/75fOtb3yIYDLJkyRLuvfdeXnnlFR5++GGCwWAftIKISP9SOCkiIiIiIiKyg5UrV3LZZZcxb948fvaznxEIbL98PvrooznkkEOYP38+f/nLXzjllFMAOPDAA3n77bd5+eWXOf744zs93/PPP8+UKVP46KOPuhyr/XEffvghU6dO7bTvueee6/K4WCzGb37zGy644AL+93//N7n98MMPZ9y4cVxyySW8+OKLnHzyyX3SFiIi/UnhpIiIiIiIiMgO7r33Xmzb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/8o//MM/cPfddwOgtebd7343/+t//S/+6I/+KN+nFEIIIYQQQogZZ7SDG49iu3pHv0NBdERjmnyysQhozYjOOwMKc1WJmViU0MoazOGTI+6iaxeTKRilenEUSinCZ1oInto9fBy9CYKHniD6ih1QPr3r7gkxloUWImmtSCcOcfrYr8hkfMBSUr6Oowd+gLWGtqM/42833EK3P5A4puhqP0DUT3Bg15dZsvyFHD/0U4zxOdrwn6y97E78aVxHc65cL2kslB95Dyfvvfde/vmf/5kXvehFg9ve+973sn37du655x4JJ4UQQgghxKyVTqf50Ic+xH//938TiUR429vextve9rZR77t3714++MEPcuDAAerr6/nQhz7Epk2bpnnEYjbJWgivq4NTLaPud9bXkWBqpnQDZKIxwquXEzQcHbFP1y4hE4v1j1Phbt2AEwkRNB7PTeN2HZy6ZZjNa9DGEO/rBWsxsSipUBgzSqVlyPiY3QdGbAdyVZzHTsPyRfl8ikJM2kILkYyxhGMrqaq5lpNHfkNH6146WvcCEImWsWzFazCmhIL+flNaGcqjbRzc+w2sDTja+EMAvFCcug1/Ou0NfiZ7veZKqCmGy3s42dHRwfLly0dsX7lyJa2trRM61rFjx/jwhz/MM888Q3FxMX/2Z3/G29/+dgBOnDjBP/zDP7Bz506WLFnC3//937Njx468PAchhBBCCLEwfeITn2D37t3cd999nD59mve+970sWbKEV7ziFcPul0gkuOOOO3jNa17Dxz72Mb7xjW/wjne8g1/+8pfEYuOrOhPzU7qshPC2DQQ7959b01FrnC1rSFeWTem5sxacTWtwwyGChiOQzoLn4tQvx6yvIzOk63VSu7ib1xFavRKVzWI9l0w0SqilDZ54nqAn9+FeRcPEtq4ftdO44/vY7pEhwADb0o690PRxIcSkjRbCnR/AGRthWd3NdLYdpaf7RP9WxerNt2FVxbBlYY3VxIo3Ul1zDU0nHx3cvnLtrWivZtQvKGajhRZCzxd5Dye3bdvG//k//4d77rmHaDS3Vkk6neZzn/scW7duHfdxjDHccccdbN68me9///scO3aMv/3bv6W6uppXv/rV/NVf/RVr1qzhe9/7Hg888AB33XUXP/3pT1myZEm+n5IQQgghhFgAEokE3/nOd/jiF7/Ixo0b2bhxI42Njdx/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Ee666y5ee+01srKyuPHGG7nuuuvSXZaIiIiIiIiIiIj0wqAOJ0VERERERERERGTwGrTTukVERERERERERGRwUzgpIiIiIiIiIiIiaaFwUkRERERERERERNJC4eRxKBaL8b3vfY/Zs2dzyimn8NBDD6W7JDkC8XicCy64gKVLl6a7FOmjuro6FixYwJw5czj11FP5t3/7N2KxWLrLkj7YvHkzN954IzNnzuT000/nwQcfTHdJcoRuvvlm/tf/+l/pLkNkwDHGcM899zBv3jzmzJnD3Xffjed5h/z82tpavvrVrzJ9+nTOOeccfvvb36aw2vTqa1/t1dbWxqmnnsoLL7yQgioHhr721QcffMAVV1zBzJkzOffcc3n22WdTWG3q9eU57cMPP+Qf/uEfmD59Ol/84hdZvXp1CitNv7701RtvvMHFF1/MzJkzufDCC/njH/+YwkrT70ie/7dt28bMmTOH3LNmX/pq3bp1XHnllZxwwglceOGFvPPOOymsdGDoS3/94Q9/4POf/zwzZ87kyiuvZM2aNX16L4WTx6G7776b1atX88gjj3DnnXdy33338bvf/S7dZUkfxGIxbrvtNqqrq9NdivSRMYYFCxYQiUR4/PHH+dnPfsaf//xn/v3f/z3dpUkveZ7HzTffTH5+Pi+++CL/9E//xP3338+SJUvSXZr00auvvspf/vKXdJchMiAtWrSIV155hfvuu497772XJUuWsGjRooN+biKR4JZbbsHn8/Hiiy9y44038p3vfIf169enuOr06EtffdLChQupr69PQYUDR1/6qqGhga9+9avMmTOHF198kQULFvDDH/6QN954I7VFp1Bvn9M6Ozu5+eabmT17Ni+88AIzZ87klltuobOzMw1Vp0dv+2rt2rXMnz+fL37xiyxevJgrrriCb37zm6xduzYNVafHkTz/33XXXUPqftqrt33V1tbGDTfcQEVFBUuWLOGcc85h/vz5NDU1paHq9Oltf1VXV/OP//iP3HLLLbz00ktMnjyZW265hUgk0vs3M3Jc6ejoMFVVVeadd95Jtv385z83V199dRqrkr6orq42F110kbnwwgtNZWVlj2spA19NTY2prKw0DQ0NybYlS5aYU045JY1VSV/U1dWZb37zm6atrS3Z9o1vfMPceeed6StK+qylpcWcdtpp5otf/KL57ne/m+5yRAacz33uc+b5559Pvl68eLE544wzDvq5r7/+upk1a1aPn4tf+9rXzFNPPdXvdQ4Efemrvd59911zzjnnmJNPPrnH1x7v+tJXTzzxhDnvvPN6tP3gBz8wt912W7/WmC59eU579tlnzZlnnmk8zzPGGON5njnnnHOGzL3Ul75auHChufHGG3u03XDDDeanP/1pv9c5EBzJ8/9LL71krrjiiiH3rNmXvnrkkUfM2WefbRKJRLLtC1/4gnnjjTdSUutA0Jf+WrRokbn00kuTr9va2kxlZaVZuXJlr99PIyePM2vXriWRSDBz5sxk26xZs1ixYkWvpp9I+i1btoy5c+fy9NNPp7sUOQLFxcU8+OCDFBUV9Whvb29PU0XSVyUlJfz7v/87WVlZGGNYvnw57777LnPmzEl3adIHP/7xj7n44oupqKhIdykiA05dXR07duzgM5/5TLJt1qxZbN++/aAj/ZYtW8ZJJ51EVlZWsu0Xv/gFX/rSl1JSbzr1ta+ge2meH/zgB9xxxx0EAoFUlZp2fe2rvUvf7O94/Z2pL89pK1asYNasWViWBYBlWZx44ol88MEHqSw5bfrSV5deeinf+ta3DjhHW1tbv9c5EPT1+b+lpYWFCxfyz//8z6ksc0DoS18tW7aMs846C8dxkm3PP/88n/vc51JWb7r1pb/y8vKoqalh+fLleJ7HCy+8QFZWFqNGjer1+ymcPM40NDSQn5/f4xehoqIiYrEYu3btSl9h0mtXXXUV3/ve98jIyEh3KXIEcnJyOPXUU5OvPc/jN7/5DfPmzUtjVXKkzjzzTK666qrkWlgyOLz99tu89957fP3rX093KSIDUkNDA9D9x5i99v5RbefOnQd8/tatWykrK+Oee+7h1FNP5aKLLuL1119PTbFp1te+AnjggQeYMmUKp5xySv8XOID0ta9GjBjBjBkzkq+bmpp49dVXOemkk/q30DTpy3NaQ0NDj34EKCwsPOQ9d7zpS1+NHz+eSZMmJV9XV1fz9ttvH7f30f76+vz/f/7P/+HSSy9lwoQJKaxyYOhLX23dupWCggJ+8IMfcPLJJ3P55ZezfPnyFFecXn3pr/PPP5/TTz+dq666imnTpnH33Xdz7733kpub2+v38x2rwmVgiEQiB/yFdu/reDyejpJEhrSFCxfy4Ycf8txzz6W7FDkC9957L42Njdx1113827/9G9///vfTXZIcRiwW48477+SOO+4gFAqluxyRtIlGo9TV1R302N51xj75O+On/b7Y2dnJiy++yPnnn88DDzzA0qVLWbBgAU8//TRVVVX9UH1qHcu+qqmp4amnnuLll1/uh0rT71j21f7nvfXWWykqKjpuR+T25TntUJ87VJ7njvSZtrm5mVtvvZUTTzyRs846q19rHCj60ldvvfUWy5cv55VXXklZfQNJX/qqs7OT//zP/+Taa6/lV7/6Fa+++io33ngj//Vf/8WwYcNSVnM69aW/WlpaaGho4I477mD69Ok8+eST3H777bz44osUFhb26v0UTh5ngsHgATfK3td6SBNJrYULF/LII4/ws5/9jMrKynSXI0dg70N3LBbjW9/6Ft/5zneG1BS9wei+++5j2rRpPUYwiwxFK1as4Nprrz3osW9/+9tA9++IwWAw+TFw0JkbjuOQl5fHXXfdhW3bTJ06lffee49nnnnmuAgnj1VfGWP4/ve/z4IFCw5Y3uV4cSzvq706Ojr4+te/zqZNm3jiiSeO29lDfXlOO9TnDpXnuSN5pm1sbOT666/HGMO9996LbQ+NSaK97atoNModd9zBnXfeOWTuo/315b5yHIfJkyezYMECAKZMmcJf//pXXnrpJf7H//gfqSk4zfrSX/fccw+VlZV8+ctfBuCHP/whn//853n++ee5+eabe/V+CiePM6WlpbS0tJBIJPD5ui9vQ0MDoVCInJycNFcnMnT88Ic/5Mknn2ThwoWaDjzINDY28sEHH3D22Wcn2yoqKujq6qK9vZ2CgoI0VieH8+qrr9LY2JhcH2fvL1G///3vef/999NZmkhKzZ07l3Xr1h30WF1dHQsXLqShoYERI0YA+6bkFhcXH/D5JSUlWJbV42F/7Nixhzz/YHOs+qq2tpb333+fdevW8eMf/xjoHnly55138tvf/pYHH3ywH/8VqXEs7yvoXl/ypptuYsuWLTzyyCOMGTOmX+oeCPrynFZaWkpjY2OPtsbGxgOmeh+v+vpMW1dXlwzNH3300SH1u1pv+2rlypVs3bo1Gbbt9dWvfpVLLrlkSKxB2Zf7qri4mHHjxvVoGzNmDDt27EhZvenWl/5as2YN11xzTfK1bdtMmjSJ2traXr/f0PhzwhAyefJkfD5fj8WSly9fTlVV1ZD565FIut1333089dRT/PSnP+Xv//7v012O9NG2bduYP39+j2lrq1evpqCgYEj9sjtYPfbYYyxZsoTFixezePFizjzzTM4880wWL16c7tJEBozS0lLKy8t7rJ+1fPlyysvLDxp+TJ8+nerqalzXTbZt2LCB4cOHp6TedOpLX5WWlvLaa68lf/4sXryYkpISFixYwI9+9KNUl55yfb2vPM9j/vz5bNu2jccee+y4XwOvL89p06dP5/3338cYA3SPyv3b3/7G9OnTU1ly2vSlrzo7O7npppuwbZvf/OY3lJaWprja9OptX51wwgkH/HwC+Jd/+Re++c1vprjq9OjLfTVjxowD/hDz8ccfD4n/7+3Vl/4qKSlhw4YNPdo2btyY/ENVbyitOs5kZGRwySWXcNddd7Fy5Upef/11HnrooUNOvxCRY2vDhg384he/4Ktf/SqzZs2ioaEh+Z8MDlVVVUydOpXvfe971NTU8Je//IWFCxcOmSkcg93w4cMZPXp08r9wOEw4HGb06NHpLk1kQLnyyiu55557WLp0KUuXLuUnP/lJj98Xm5ub6ejoAOCCCy7A8zz+6Z/+ic2bN/P444/z3//931x++eXpKj+lettXPp+vx8+f0aNH4/P5KCwsHDKBSV/uq+eee46lS5fyL//yL+Tk5CR/XzpeN/E83HNaQ0MD0WgUgPPOO4/W1lZ+9KMfUVNTw49+9CMikQif//zn0/lPSJm+9NUvf/lLtmzZkhytvPc+Giq7dfe2r0Kh0AE/n6D7jwq9XRNwsOvLfXXFFVewbt06/u///b9s3ryZ//iP/2Dr1q1cfPHF6fwnpFRf+uvyyy/nmWeeYfHixWzevJl77rmH2tpaLr300t6/oZHjTmdnp/nOd75jZsyYYU455RSzaNGidJckR6iystK888476S5D+uCXv/ylqaysPOh/Mnjs3LnTfOMb3zAnnniiOfnkk839999vPM9Ld1lyBL773e+a7373u+kuQ2TASSQS5l//9V/N7Nmzzdy5c83ChQt7/Jw744wzzL333pt8XV1dbb785S+badOmmb/7u78zv//979NRdlr0ta8+6YwzzjDPP/98qkpNu7701Q033HDQ35euvvrqdJXf7z7tOa2ysrLHvbJixQpzySWXmKqqKnPZZZeZNWvWpKHi9OltX5177rkHvY+G0v/7+3JffdJQfNbsS1+999575tJLLzXTpk0zF198sVm2bFkaKk6vvvTXM888Y8477zwzY8YMc+WVV5rVq1f36b0sY/aMFRcRERERERERERFJIU3rFhERERERERERkbRQOCkiIiIiIiIiIiJpoXBSRERERERERERE0kLhpIiIiIiIiIiIiKSFwkkRERERERERERFJC4WTIiIiIiIiIiIikhYKJ0VERERERERERCQtFE6KiIiIiIiIiIhIWiicFBERERERETmOxeNxLrjgApYuXZruUkREDqBwUkREREREROQ4FYvFuO2226iurk53KSIiB6VwUkREREREROQ4VFNTw+WXX86WLVvSXYqIyCEpnBQREREREREZpJ599lmmTZvG5s2bAdiwYQNVVVW8/vrrLFu2jLlz5/L000+nuUoRkUOzjDEm3UWIiIiIiIiISN8ZY7j22msJh8Pcf//9XH311ZSVlfGTn/ykx+dNnDiRRx99lLlz56apUhGRg9PISREREREREZFByrIs/vmf/5m33nqLb33rW2zcuJH//b//d7rLEhHpNYWTIiIiIiIiIoPY2LFjufnmm3nllVf4zne+Q0FBQbpLEhHpNYWTIiIiIiIiIoPc2rVrcRyHpUuXprsUEZE+UTgpIiIiIiIiMoi9/vrrvPnmmzzwwAMsWbKEt99+O90liYj0msJJERERERERkUGqvb2dH/7wh3zta1/jtNNO4+qrr+bOO+8kFouluzQRkV5ROCkiIiIiIiIySP3sZz8jFApx/fXXAzB//nw6Ozv5+c9/nubKRER6xzLGmHQXISIiIiIiIiIiIkOPRk6KiIiIiIiIiIhIWiicFBERERERERERkbRQOCkiIiIiIiIiIiJpoXBSRERERERERERE0kLhpIiIiIiIiIiIiKSFwkkRERERERERERFJC4WTIiIiIiIiIiIikhYKJ0VERERERERERCQtFE6KiIiIiIiIiIhIWiicFBERERERERERkbRQOCkiIiIiIiIiIiJp8f8DZba5CFtPfhsAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -191,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -201,14 +201,14 @@ " precision recall f1-score support\n", "\n", " 0 0.95 0.97 0.96 36\n", - " 1 0.75 0.63 0.69 19\n", - " 2 0.50 0.60 0.55 10\n", + " 1 0.75 0.47 0.58 19\n", + " 2 0.44 0.70 0.54 10\n", " 3 1.00 1.00 1.00 6\n", " 4 1.00 1.00 1.00 13\n", "\n", - " accuracy 0.86 84\n", - " macro avg 0.84 0.84 0.84 84\n", - "weighted avg 0.86 0.86 0.86 84\n", + " accuracy 0.83 84\n", + " macro avg 0.83 0.83 0.82 84\n", + "weighted avg 0.85 0.83 0.83 84\n", "\n" ] } @@ -224,9 +224,7 @@ "\n", "X, y = dataset.data, dataset.target\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=42)\n", - "pipeline = Pipeline(\n", - " [(\"scaler\", StandardScaler()), (\"gmm_sampler\", GMMSampler()), (\"knn\", KNN())]\n", - ")\n", + "pipeline = Pipeline([(\"scaler\", StandardScaler()), (\"gmm_sampler\", GMMSampler()), (\"knn\", KNN())])\n", "pipeline.fit(X_train, y_train)\n", "y_hat = pipeline.predict(X_test)\n", "print(classification_report(y_test, y_hat))" diff --git a/multi_imbalance/resampling/gmm_sampler.py b/multi_imbalance/resampling/gmm_sampler.py index 3421bc3..18fa5c0 100644 --- a/multi_imbalance/resampling/gmm_sampler.py +++ b/multi_imbalance/resampling/gmm_sampler.py @@ -359,6 +359,7 @@ def _oversample_each_minority_class(self, X: np.ndarray, y: np.ndarray) -> Tuple for minority_class in self.minority_classes: self.__x_subset = X_copy[y_copy == minority_class] X, y = self._oversample(X_copy, y_copy, minority_class) + X_copy, y_copy = X, y self.__x_subset = None return X, y @@ -367,9 +368,11 @@ def _oversample(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> Tupl probabilities = self._get_probas_for_samples_in_component(X, y, minority_class) quantity_to_generate = self.size_to_align - self.__x_subset.shape[0] + for component in range(self.gaussian_mixtures[minority_class].n_components): Nk: np.ndarray = probabilities[component] * quantity_to_generate x = self._create_samples(means[component], covariances[component], int(Nk)) + X = np.append(X, x, axis=0) y = np.append(y, np.full((x.shape[0],), fill_value=minority_class), axis=0) From 5da701e6ee6a19a5f9d41e9928c96b97fd7f9952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Thu, 27 Apr 2023 21:03:47 +0200 Subject: [PATCH 44/48] fix docs --- multi_imbalance/resampling/gmm_sampler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multi_imbalance/resampling/gmm_sampler.py b/multi_imbalance/resampling/gmm_sampler.py index 18fa5c0..e9fb65c 100644 --- a/multi_imbalance/resampling/gmm_sampler.py +++ b/multi_imbalance/resampling/gmm_sampler.py @@ -124,7 +124,7 @@ class GMMSampler(BaseSampler): Examples -------- >>> import numpy as np - >>> from algorithms.gmm_sampler import GMMSampler + >>> from multi_imbalance.resampling.gmm_sampler import GMMSampler >>> from sklearn.datasets import make_blobs >>> from collections import Counter >>> blobs = [800, 100] From aff0cafe8e6b508e544966dd6a30ffff93eac563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Wo=C5=BAny?= Date: Wed, 3 May 2023 20:27:36 +0200 Subject: [PATCH 45/48] merge oversamples at the end --- multi_imbalance/resampling/gmm_sampler.py | 25 ++++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/multi_imbalance/resampling/gmm_sampler.py b/multi_imbalance/resampling/gmm_sampler.py index e9fb65c..362dcda 100644 --- a/multi_imbalance/resampling/gmm_sampler.py +++ b/multi_imbalance/resampling/gmm_sampler.py @@ -354,29 +354,34 @@ def _resample(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarra return X, y def _oversample_each_minority_class(self, X: np.ndarray, y: np.ndarray) -> Tuple[np.ndarray, np.ndarray]: - X_copy = X.copy() - y_copy = y.copy() + X_oversample = [] + y_oversample = [] + X_oversample.append(X) + y_oversample.append(y) for minority_class in self.minority_classes: - self.__x_subset = X_copy[y_copy == minority_class] - X, y = self._oversample(X_copy, y_copy, minority_class) - X_copy, y_copy = X, y + self.__x_subset = X[y == minority_class] + X_subset_oversample, y_subset_oversample = self._oversample(X, y, minority_class) + X_oversample.append(X_subset_oversample) + y_oversample.append(y_subset_oversample) self.__x_subset = None - return X, y + + return np.vstack(X_oversample), np.hstack(y_oversample) def _oversample(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> Tuple[np.ndarray, np.ndarray]: means, covariances = self._get_coefficients(self.gaussian_mixtures[minority_class]) probabilities = self._get_probas_for_samples_in_component(X, y, minority_class) quantity_to_generate = self.size_to_align - self.__x_subset.shape[0] - + X_subset_oversample = [] + y_subset_oversample = [] for component in range(self.gaussian_mixtures[minority_class].n_components): Nk: np.ndarray = probabilities[component] * quantity_to_generate x = self._create_samples(means[component], covariances[component], int(Nk)) - X = np.append(X, x, axis=0) - y = np.append(y, np.full((x.shape[0],), fill_value=minority_class), axis=0) + X_subset_oversample.append(x) + y_subset_oversample.append([minority_class] * x.shape[0]) - return X, y + return np.vstack(X_subset_oversample), np.hstack(y_subset_oversample) def _get_probas_for_samples_in_component(self, X: np.ndarray, y: np.ndarray, minority_class: int) -> np.ndarray: X_prob: np.ndarray = self.gaussian_mixtures[minority_class].predict_proba(X[y == minority_class]) From 957b160a66c013a1988bad46b846ee03ee6743c1 Mon Sep 17 00:00:00 2001 From: Adam Wojciechowski Date: Tue, 30 May 2023 10:56:29 +0200 Subject: [PATCH 46/48] Data difficulty module created, source file added --- .../data_difficulty/data_difficuulty.py | 868 ++++++++++++++++++ 1 file changed, 868 insertions(+) create mode 100644 multi_imbalance/data_difficulty/data_difficuulty.py diff --git a/multi_imbalance/data_difficulty/data_difficuulty.py b/multi_imbalance/data_difficulty/data_difficuulty.py new file mode 100644 index 0000000..7ea9c44 --- /dev/null +++ b/multi_imbalance/data_difficulty/data_difficuulty.py @@ -0,0 +1,868 @@ +from sklearn.neighbors import NearestNeighbors +from sklearn.cluster import KMeans +from sklearn.mixture import GaussianMixture +import numpy as np +from abc import ABC, abstractmethod +from matplotlib import pyplot as plt +from numpy.typing import NDArray +from matplotlib.figure import Figure +from typing import Optional, List, Dict, Tuple, TypeVar +from seaborn import heatmap + + +__author__ = 'Adam Wojciechowski' + + +class Summary: + """A class to quickly run all of the implemented algorithms + in form of a report with outputs in the form of various plots. + """ + def fit(self, + X: NDArray, + y: NDArray, + classes: Optional[List[int]] = None, + k: int = 5, + n_jobs: int = -1) -> None: + """Creates the summary report. + + :param X: The examples + :param y: The labels + :param classes: List of classes to be processed, defaults to None + :param k: No neighbors, defaults to 5 + :param n_jobs: No threads for distributed KNN action, defaults to -1 + """ + self.X, self.y = X, y + self.classes = classes + self.k, self.n_jobs = k, n_jobs + print('Start computing imbalance ratios...') + imbalance_ratio = ImbalanceRatio() + self.imbalance_ratio_results = imbalance_ratio.fit(self.y) + print('Imbalance ratios: ') + for k, v in self.imbalance_ratio_results.items(): + print(f'class {k} : {v}') + + print('Start data difficulty study...') + print('KNN based method') + knn_data_difficulty = KNNDataDifficulty(classes=self.classes, + k=self.k, + n_jobs=self.n_jobs) + self.knn_data_difficulty_results = knn_data_difficulty.fit_plot(self.X, + self.y) + print('Kernel density function based method') + kernel_data_difficulty = KernelDataDifficulty(classes=self.classes, + k=self.k, + n_jobs=self.n_jobs) + self.kernel_data_difficulty_results = kernel_data_difficulty.fit_plot(self.X, + self.y) + print('Continuous data difficulty') + continuous_data_difficulty = ContinuousDataDifficulty(classes=self.classes, + k=self.k, + n_jobs=self.n_jobs) + self.continuous_data_difficulty_results = continuous_data_difficulty.fit_plot(self.X, + self.y) + + print('Class neighboring study...') + border_class_matrix = BorderClassMatrix(classes=self.classes, + k=self.k, + n_jobs=n_jobs) + self.border_class_matrix_results = border_class_matrix.fit_plot(self.X, + self.y) + + print('Class homogeneity study...') + print('KMeans Elbow') + kmeans_elbow = KMeansElbowMethod(classes=self.classes, + cluster_count_selection=list(range(1, 15))) + self.kmeans_elbow_results = kmeans_elbow.fit_plot(X=self.X, + y=self.y) + print('Gaussian mixture Elbow') + gaussian_mixture = GaussianMixtureElbowMethod(classes=self.classes, + cluster_count_selection=list(range(1, 15))) + self.gaussian_mixture_results = gaussian_mixture.fit_plot(X=self.X, + y=self.y) + + +class ImbalanceRatio: + """A class which performs imbalance ratio computations + resulting in imbalance ratio values for each class. + """ + def fit(self, + y: NDArray) -> Dict[int, float]: + """Main class method performing computations. + + :param y: The labels + :return: Imbalance ratio values for each class in y + """ + classes, cardinalities = np.unique(y, return_counts=True) + maj_class_id = np.argmax(cardinalities) + return { + classes[i]: cardinalities[maj_class_id] / cardinalities[i] + for i in range(len(classes)) + } + + +class DataDifficulty(ABC): + """An abstract class serving as parent class to: + + * KNNDataDifficulty + * ContinuousDataDifficulty + * BorderClassMatrix + * KernelDataDifficulty + + """ + def __init__(self, + classes: Optional[List[int]] = None, + k: int = 5, + n_jobs: int = -1) -> None: + """Class constructor. + + :param classes: List of classes to be processed, defaults to None + :param k: No neighbors, defaults to 5 + :param n_jobs: No threads for distributed KNN action, defaults to -1 + :raises TypeError: Raised if classes attribute is of invalid type, + because the validity of this attribute is esential for all of the + child classes + """ + if classes is not None and type(classes) is not list: + raise TypeError('Wrong type of classes parameter! Should be None or list.') + self.classes = classes + self.k = k + self.knn = NearestNeighbors(n_neighbors=self.k, n_jobs=n_jobs) + + @abstractmethod + def fit(self, + X: NDArray, + y: NDArray) -> None: + """Main class method performing the algorithm, to be implemented + inside child classes. + + :param X: The examples + :param y: The labels + """ + pass + + def _induce_classes(self, + y: NDArray) -> NDArray: + """Method for automatic minority class list induction + if none was provided by the user. + + :param y: The labels + :return: An array of minority class labels + """ + distribution = np.unique(y, return_counts=True) + majority_cardinality = max(distribution[1]) + return distribution[0][distribution[1] < majority_cardinality] + + +class KernelFunction(ABC): + """An abstract class serving as parent class to: + + * EpanechnikovKernelFunction + * TriangularKernelFuntion + * UniformKernelFunction + + """ + def __init__(self, kernel_bandwidth: float) -> None: + """Class constructor. + + :param kernel_bandwidth: The bandwidth of the krenel function. + The kernel function will return positive values, if + the argument `u` will be in range + (-kernel_bandwidth / 2; kernel_bandwidth / 2) + """ + super().__init__() + self.kernel_bandwidth = kernel_bandwidth + self.scaling_factor = 2 / self.kernel_bandwidth + + @abstractmethod + def K(self, u: float) -> float: + """Kernel function. + + :param u: The argument of the kernel function K + :return: The numerical value K(u) + """ + pass + + +KernelFunctionSubclass = TypeVar('KernelFunctionSubclass', bound=KernelFunction) + + +class EpanechnikovKernelFunction(KernelFunction): + """Epanechnikov (parabolic) kernel function. + """ + def __init__(self, kernel_bandwidth: float) -> None: + """Class constructor + + :param kernel_bandwidth: The bandwidth of the krenel function. + The kernel function will return positive values, if + the argument `u` will be in range + (-kernel_bandwidth / 2; kernel_bandwidth / 2) + """ + super().__init__(kernel_bandwidth) + + def K(self, u: float) -> float: + """Kernel function. + It is defined as: + K(u) = (3 / 4) * (1 - u ** 2), for |u| <= 1 + K(u) = 0, otherwise. + + :param u: The argument of the kernel function K + :return: The numerical value K(u) + """ + if np.abs(self.scaling_factor * u) <= 1: + return (3 / 4) * (1 - np.square((self.scaling_factor * u))) + else: + return 0. + + +class TriangularKernelFuntion(KernelFunction): + """Triangular (linear) kernel function. + """ + def __init__(self, kernel_bandwidth: float) -> None: + """Class constructor + + :param kernel_bandwidth: The bandwidth of the krenel function. + The kernel function will return positive values, if + the argument `u` will be in range + (-kernel_bandwidth / 2; kernel_bandwidth / 2) + """ + super().__init__(kernel_bandwidth) + + def K(self, u: float) -> float: + """Kernel function. + It is defined as: + K(u) = 1 - |u|, for |u| <= 1 + K(u) = 0, otherwise. + + :param u: The argument of the kernel function K + :return: The numerical value K(u) + """ + if np.abs(self.scaling_factor * u) <= 1: + return 1 - np.abs(self.scaling_factor * u) + else: + return 0. + + +class UniformKernelFunction(KernelFunction): + """Uniform (constant) kernel function. + """ + def __init__(self, kernel_bandwidth: float) -> None: + """Class constructor + + :param kernel_bandwidth: The bandwidth of the krenel function. + The kernel function will return positive values, if + the argument `u` will be in range + (-kernel_bandwidth / 2; kernel_bandwidth / 2) + """ + super().__init__(kernel_bandwidth) + + def K(self, u: float) -> float: + """Kernel function. + K(u) = 1 / 2, for |u| <= 1 + K(u) = 0, otherwise. + + :param u: The argument of the kernel function K + :return: The numerical value K(u) + """ + return 1 / 2 if np.abs(self.scaling_factor * u) <= 1 else 0. + + +class KernelDataDifficulty(DataDifficulty): + """Kernel approach to data difficulty discovery. + """ + def __init__(self, + classes: Optional[List[int]] = None, + k: int = 5, + n_jobs: int = -1, + kernel_type: str = 'epanechnikov') -> None: + """Class constructor. + + :param classes: List of classes to be processed, defaults to None + :param k: No neighbors, defaults to 5 + :param n_jobs: No threads for distributed KNN action, defaults to -1 + :param kernel_type: Type of kernel function to be used, defaults to 'epanechnikov'. + currently available kernel types: + + * 'epanechnikov' + * 'triangular' + * 'uniform' + + """ + super().__init__(classes, k, n_jobs) + self.kernel_type = kernel_type + + def fit(self, + X: NDArray, + y: NDArray, + kernel_bandwidth_override: Optional[float] = None) -> Dict[int, List[float]]: + """Method for running the algorithm. + + :param X: The examples + :param y: The labels + :param kernel_bandwidth_override: An optional float value to be set as kernel bandwidth. + If not set the algorithm uses automatic bandwidth tuning method, defaults to None + :return: Dictionary {class_label : [scores for the examples of a given class]}. + The ordering inside the lists is as if iterated over a minority class + """ + if self.classes is None: + self.classes = self._induce_classes(y) + self.X, self.y = X, y + if kernel_bandwidth_override is None: + self.kernel_bandwidth = self._bandwidth_tune() + else: + self.kernel_bandwidth = kernel_bandwidth_override + self.kernel_object = self._get_kernel_object(self.kernel_type, + self.kernel_bandwidth) + c_scores = {} + for c in self.classes: + c_scores[c] = [] + # x - currently considered from minority class + for x in self.X[self.y==c]: + # list of weighted distances between same (c) class examples + c_weighted_distances = [] + # list of weighted distances between x and any other example + any_weighted_distances = [] + # xx - every other from any class + for xx, y_of_xx in zip(self.X, self.y): + if np.all(x == xx): continue + distance = np.linalg.norm(x - xx) + weighted_distance = self.kernel_object.K(distance) + any_weighted_distances.append(weighted_distance) + if y_of_xx in self.classes: + c_weighted_distances.append(weighted_distance) + c_weighted_sum = np.sum(c_weighted_distances) + any_weighted_sum = np.sum(any_weighted_distances) + # when conditions is met, according to authors + # there is 'not enough info' to compute the score + if any_weighted_sum == 0.: + c_scores[c].append(-1.) + else: + c_scores[c].append(c_weighted_sum / any_weighted_sum) + # round to eliminate numerical stability errors + c_scores[c] = list(np.around(c_scores[c], decimals=10)) + return c_scores + + def fit_label_difficulty(self, + X: NDArray, + y: NDArray, + kernel_bandwidth_override: Optional[float] = None) -> Dict[int, List[str]]: + """Performs self.fit() method, but translates scores to + safety levels (safe, border, rare, ...). + + :param X: The examples + :param y: The labels + :param kernel_bandwidth_override: An optional float value to be set as kernel bandwidth. + If not set the algorithm uses automatic bandwidth tuning method, defaults to None + :return: Dictionary {class_label : [safety levels for the examples of a given class]}. + The ordering inside the lists is as if iterated over a minority class + """ + c_scores = self.fit(X, y, kernel_bandwidth_override) + return { + c: [self._switch_case(score) for score in scores] + for c, scores in c_scores.items() + } + + def fit_plot(self, + X: NDArray, + y: NDArray, + kernel_bandwidth_override: Optional[float] = None) -> List[Figure]: + """Performs self.fit() method, but presents its results + as a histogram. + + :param X: The examples + :param y: The labels + :param kernel_bandwidth_override: An optional float value to be set as kernel bandwidth. + If not set the algorithm uses automatic bandwidth tuning method, defaults to None + :return: List of plots, each for every class specified in classes + """ + c_scores = self.fit(X, y, kernel_bandwidth_override) + plots = [] + for k, v in c_scores.items(): + fig = plt.figure() + plt.title(f'Class {k}') + plt.hist(v) + plt.xlim((-1., 1.)) + plt.xlabel('Bins') + plt.ylabel('Safe scores') + plt.show() + plots.append(fig) + return plots + + def _switch_case(self, + score: float) -> str: + """Helper, switch-case-alike method to map + score to name. + + :param score: safe score + :return: A safe level name + """ + if 1 >= score > .7: + return 'safe' + elif .7 >= score > .3: + return 'border' + elif .3 >= score > .1: + return 'rare' + elif .1 >= score > 0: + return 'outlier' + elif score == 0.: + return 'zero' + elif score == -1: + return 'not enough info' + else: + raise ValueError('Score value out of spec!') + + def _bandwidth_tune(self) -> float: + """A method for automatic kernel bandwidth tuning. + + :return: A numerical value being the kernel's bandwidth + required to compute scaling factor in kernel object + """ + self.knn.fit(self.X, self.y) + kernel_bandwidth, counter_for_avg = 0., 0 + for c in self.classes: + for x in self.X[self.y==c]: + # return all k nearest distances + distances, _ = self.knn.kneighbors([x], + self.k + 1, + return_distance=True) + # only accumulate the kth distance + kernel_bandwidth += distances.squeeze()[self.k] + counter_for_avg += 1 + kernel_bandwidth /= counter_for_avg + return kernel_bandwidth + + + def _get_kernel_object(self, + kernel_type: str, + kernel_bandwidth: float) -> KernelFunctionSubclass: + """Helper, switch-case-alike method to map krenel type (str) + to an actual, appropriate kernel function object. + + :param kernel_type: name of the kernel function as specified in + class constructor + :param kernel_bandwidth: A numerical value being kernel's bandwidth + either computed automatically (self._bandwidth_tune() method) or + acquired with kernel_bandwidth_override attribute in self.fit() method + :return: Kernel Function object respective to kernel_type + """ + if kernel_type == 'epanechnikov': + return EpanechnikovKernelFunction(kernel_bandwidth) + elif kernel_type == 'triangular': + return TriangularKernelFuntion(kernel_bandwidth) + elif kernel_type == 'uniform': + return UniformKernelFunction(kernel_bandwidth) + + +class KNNDataDifficulty(DataDifficulty): + """Class which performs DataDifficulty algorithm, + resulting in a dictionary. (see self._get_names_dict method) + """ + + def __init__(self, + classes: Optional[List[int]] = None, + k: int=5, + n_jobs: int=-1) -> None: + """Class constructor. + + :param classes: List of classes to be processed, defaults to None + :param k: No neighbors, defaults to 5 + :param n_jobs: No threads for distributed KNN action, defaults to -1 + """ + super().__init__(classes, k, n_jobs) + + def fit(self, + X: NDArray, + y: NDArray) -> Dict[int, Dict[str, int]]: + """Method for running the algorithm. + + :param X: The examples + :param y: The labels + :return: Dictionary {class_label : {safe_level_name : count}} + """ + if self.classes is None: + self.classes = self._induce_classes(y) + self.X, self.y = X, y + self.knn.fit(self.X, self.y) + non_c_count = {} + for c in self.classes: + non_c_count[c] = self._get_names_dict() + for x in self.X[self.y==c]: + neighbors = self.knn.kneighbors([x], self.k + 1, return_distance=False) + neighbors = np.squeeze(neighbors)[1:] + neighbors = self.y[neighbors] + count_non_c = sum(neighbors != c) + non_c_count[c][self._switch_case(count_non_c)] += 1 + return non_c_count + + def fit_plot(self, + X: NDArray, + y: NDArray) -> List[Figure]: + """Performs fit method and returns its results as histograms. + + :param X: The examples + :param y: The labels + :return: List of plots, each for every class specified in classes + """ + fit_dict = self.fit(X, y) + plots = [] + for k, v in fit_dict.items(): + fig = plt.figure() + plt.title(f'Class {k}') + plt.xticks(rotation=90) + plt.bar(v.keys(), v.values()) + plt.xlabel('Type') + plt.ylabel('Count') + plt.show() + plots.append(fig) + return plots + + def _get_names_dict(self) -> Dict[str, int]: + """Method for safe level dictionary creation. + + :return: safe level dictionary + """ + return {'safe': 0, 'border': 0, 'rare': 0, 'outlier': 0} + + def _switch_case(self, + count: int) -> str: + """Helper, switch-case-alike method to map + count to name. + + :param count: Non-c neighbor count + :return: A safe level name + """ + if count < 2: + return 'safe' + elif count < 4: + return 'border' + elif count < 5: + return 'rare' + else: + return 'outlier' + + +class ContinuousDataDifficulty(DataDifficulty): + """Class which performs DataDifficulty algorithm, + resulting in a histogram. (see self.fit_plot method) + """ + + def __init__(self, + classes: Optional[List[int]] = None, + k: int = 5, + n_jobs: int = -1) -> None: + """Class constructor. + + :param classes: List of classes to be processed, defaults to None + :param k: No neighbors, defaults to 5 + :param n_jobs: No threads for distributed KNN action, defaults to -1 + """ + super().__init__(classes, k, n_jobs) + + def fit(self, + X: NDArray, + y: NDArray, + similarities: Optional[NDArray] = None) -> Dict[int, List[float]]: + """Method for running the algorithm. + + :param X: The examples + :param y: The labels + :param similarities: Similarity matrix, defaults to None + :raises ValueError: When user passed a non-minority class to + classes inside the constructor + :return: Dictionary {class_label : [scores for the examples of a given class]}. + The ordering inside the lists is as if iterated over a minority class + """ + induced_classes = self._induce_classes(y) + if self.classes is None: + self.classes = induced_classes + elif not set(self.classes).issubset(set(induced_classes)): + error_msg = '''Cannot perform this method on non-minority classes! + (majority class has been passed to classes)''' + raise ValueError(error_msg) + if similarities is None: + all_classes = np.unique(y) + self.similarities = np.zeros(shape=(all_classes.shape[0], + all_classes.shape[0]), + dtype=np.int64) + # self.classes are the classes to be processed + for c in self.classes: + # all_classes is a set of every possible class in the dataset + for cc in all_classes: + if c == cc: continue + # if current cc (any kind of class) is a minority class + if cc in self.classes: + self.similarities[c, cc] = 1 + else: + self.similarities = similarities + self.X, self.y = X, y + self.knn.fit(self.X, self.y) + c_scores = {} + for c in self.classes: + c_scores[c] = [] + for x in self.X[self.y==c]: + neighbors = self.knn.kneighbors([x], self.k + 1, return_distance=False) + neighbors = np.squeeze(neighbors)[1:] + neighbors = self.y[neighbors] + non_c_neighbors = neighbors[neighbors != c] + # if no non-c neighbors, the score is zero + if not np.size(non_c_neighbors): + c_scores[c].append(0.) + # else, the score is calculated according to the formula + else: + safe_score = [self.similarities[c,neighbor] for neighbor in non_c_neighbors] + safe_score = sum(safe_score) + safe_score /= self.k + c_scores[c].append(safe_score) + return c_scores + + def fit_plot(self, + X: NDArray, + y: NDArray, + similarities: Optional[NDArray] = None) -> List[Figure]: + """Performs fit method and returns its results as histograms. + + :param X: The examples + :param y: The labels + :param similarities: Similarity matrix, defaults to None + :return: List of plots, each for every class specified in classes + """ + c_scores = self.fit(X, y, similarities) + plots = [] + for k, v in c_scores.items(): + fig = plt.figure() + plt.title(f'Class {k}') + plt.hist(v) + plt.xlim((0., 1.)) + plt.xlabel('Bins') + plt.ylabel('Safe scores') + plt.show() + plots.append(fig) + return plots + + +class BorderClassMatrix(DataDifficulty): + """Class which performs Border Class Matrix algorithm, + resulting in a border class matrix. + """ + + def __init__(self, + classes: Optional[List[int]] = None, + k: int = 5, + n_jobs: int = -1) -> None: + """Class constructor. + + :param classes: List of classes to be processed, defaults to None + :param k: No neighbors, defaults to 5 + :param n_jobs: No threads for distributed KNN action, defaults to -1 + """ + super().__init__(classes, k, n_jobs) + + def fit(self, + X: NDArray, + y: NDArray) -> NDArray: + """Runs the algorithm. + + :param X: The examples + :param y: The labels + :return: Border class matrix + """ + if self.classes is None: + self.classes = self._induce_classes(y) + self.X, self.y = X, y + all_classes_count = int(np.max(y)) + 1 + neighbor_matrix = np.zeros((all_classes_count, + all_classes_count), + dtype=np.int64) + self.knn.fit(self.X, self.y) + for c in self.classes: + for x in self.X[self.y==c]: + neighbors = self.knn.kneighbors([x], self.k + 1, return_distance=False) + neighbors = np.squeeze(neighbors)[1:] + neighbors = self.y[neighbors] + non_c_neighbors = neighbors[neighbors != c] + if not np.size(non_c_neighbors): continue + for neighboring_class in non_c_neighbors: + neighbor_matrix[c, neighboring_class] += 1 + return neighbor_matrix + + def fit_plot(self, + X: NDArray, + y: NDArray) -> Figure: + matrix = self.fit(X, y) + fig = heatmap(data=matrix, + annot=True, + cmap='jet') + plt.title('Per class crossovers') + plt.show() + return fig + + +class WCSSElbowMethod(ABC): + """An abstract class serving as parent class to: + + * KMeansElbowMethod + * GaussianMixtureElbowMethod. + + This class computes within-cluster sum of squares + for each cluster, created by underlying clustering method, + and produces an elbow plot. Upon the analysis of this plot + user can assess how many clusters a given class comprises of. + """ + def __init__(self, + classes: List[int], + cluster_count_selection: List[int]) -> None: + """Class constructor. + + :param classes: List of classes to be processed, defaults to None + :param cluster_count_selection: List of cluster counts to be put on + x axis of the elbow plot + """ + super().__init__() + self.classes = classes + self.cluster_count_selection = cluster_count_selection + + def _induce_classes(self, + y: NDArray) -> NDArray: + """Method for automatic minority class list induction + if none was provided by the user. + + :param y: The labels + :return: An array of minority class labels + """ + distribution = np.unique(y, return_counts=True) + majority_cardinality = max(distribution[1]) + return distribution[0][distribution[1] < majority_cardinality] + + @abstractmethod + def _cluster(self, + n_clusters: int) -> NDArray: + """Performs clustering, which would in n_clusters clusters, + with some clustering algorithm, to be implemented inside child classes. + + :param n_clusters: No clusters for the clustering method + :return: An array of new labels (not y) artificially created by + clustering algorithm + """ + pass + + def _wcss(self, + X: NDArray, + clustering_induced_labels: NDArray) -> float: + """Computes within-cluster sum of squares for all clusters, + for a given cluster labeling. + + :param X: The examples + :param clustering_induced_labels: cluster-induced labels + :return: WCSS value + """ + meta_sum = 0. + for label in np.unique(clustering_induced_labels): + X_with_label = X[clustering_induced_labels == label] + mean = np.mean(X_with_label, axis=0) + sum_of_squares = 0. + for data_point in X_with_label: + sum_of_squares += np.square(data_point - mean) + meta_sum += sum_of_squares + return meta_sum.sum().item() + + def fit(self, + X: NDArray, + y: NDArray) -> Dict[int, List[Tuple[int, float]]]: + """Runs the algorithm, resulting in a dictionary. + + :param X: The examples + :param y: The labels + :return: A dictionary {class_name : [(cluster_count, wcss for the given cluster_count), ...]} + """ + self.X, self.y = X, y + if self.classes is None: + self.classes = self._induce_classes(y) + wcss_dict = {} + for c in self.classes: + X_c = self.X[self.y == c] + wcss_dict[c] = [] + for cluster_count in self.cluster_count_selection: + clustering_induced_labels = self._cluster(X=X_c, + n_clusters=cluster_count) + # results for a single cluster + wcss_results = self._wcss(X_c, clustering_induced_labels) + # add to the results of all clusters + wcss_dict[c].append((cluster_count, wcss_results)) + return wcss_dict + + def fit_plot(self, + X: NDArray, + y: NDArray) -> List[Figure]: + """ + Performs fit method and returns its results as plots. + :return: List of plots, each for every class specified in classes + """ + wcss_dict = self.fit(X, y) + plots = [] + for k, v in wcss_dict.items(): + fig = plt.figure() + plt.title(f'Class {k}') + x, y = list(zip(*v)) + plt.plot(x, y) + plt.xticks(x) + plt.xlabel('Clusters') + plt.ylabel('WCSS') + plt.show() + plots.append(fig) + return plots + + +class KMeansElbowMethod(WCSSElbowMethod): + """Performs elbow method with KMeans as underlying + clustering algorithm. + """ + def __init__(self, + classes: List[int], + cluster_count_selection: List[int]) -> None: + """Class constructor. + + :param classes: List of classes to be processed, defaults to None + :param cluster_count_selection: List of cluster counts to be put on + x axis of the elbow plot + """ + super().__init__(classes, cluster_count_selection) + + def _cluster(self, + X: NDArray, + n_clusters: int) -> NDArray: + """Performs clustering with KMeans. + + :param X: The examples + :param n_clusters: Desired cluster count + :return: An array of clustering induced labels + """ + kmeans = KMeans(n_clusters=n_clusters) + kmeans.fit(X) + return kmeans.labels_ + + +class GaussianMixtureElbowMethod(WCSSElbowMethod): + """Performs elbow method with GaussianMixture(Expectation/Maximization) + as underlying clustering algorithm. + """ + def __init__(self, + classes: List[int], + cluster_count_selection: List[int]) -> None: + """Class constructor. + + :param classes: List of classes to be processed, defaults to None + :param cluster_count_selection: List of cluster counts to be put on + x axis of the elbow plot + """ + super().__init__(classes, cluster_count_selection) + + def _cluster(self, + X: NDArray, + n_clusters: int) -> NDArray: + """Performs clustering with GaussianMixture(Expectation/Maximization). + + :param X: The examples + :param n_clusters: Desired cluster count + :return: An array of clustering induced labels + """ + gm = GaussianMixture(n_components=n_clusters) + return gm.fit_predict(X) From b3e4301f35421614165769990843f0b6b8603493 Mon Sep 17 00:00:00 2001 From: Adam Wojciechowski Date: Tue, 30 May 2023 11:00:38 +0200 Subject: [PATCH 47/48] correct typo --- .../data_difficulty/{data_difficuulty.py => data_difficulty.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename multi_imbalance/data_difficulty/{data_difficuulty.py => data_difficulty.py} (100%) diff --git a/multi_imbalance/data_difficulty/data_difficuulty.py b/multi_imbalance/data_difficulty/data_difficulty.py similarity index 100% rename from multi_imbalance/data_difficulty/data_difficuulty.py rename to multi_imbalance/data_difficulty/data_difficulty.py From 1d1b04a6a7993de7654885bb4edeb132e1452411 Mon Sep 17 00:00:00 2001 From: Adam Wojciechowski Date: Tue, 30 May 2023 11:14:38 +0200 Subject: [PATCH 48/48] exemplary notebook with instructions on how to use --- examples/data_difficulty/X.npy | Bin 0 -> 3968 bytes examples/data_difficulty/X_altered.npy | Bin 0 -> 2048 bytes .../data_difficulty/notebook_example.ipynb | 1142 +++++++++++++++++ examples/data_difficulty/y.npy | Bin 0 -> 1088 bytes examples/data_difficulty/y_altered.npy | Bin 0 -> 608 bytes 5 files changed, 1142 insertions(+) create mode 100644 examples/data_difficulty/X.npy create mode 100644 examples/data_difficulty/X_altered.npy create mode 100644 examples/data_difficulty/notebook_example.ipynb create mode 100644 examples/data_difficulty/y.npy create mode 100644 examples/data_difficulty/y_altered.npy diff --git a/examples/data_difficulty/X.npy b/examples/data_difficulty/X.npy new file mode 100644 index 0000000000000000000000000000000000000000..66c0ceae369e35eea1a82f538e550c445f41fef9 GIT binary patch literal 3968 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 literal 0 HcmV?d00001 diff --git a/examples/data_difficulty/notebook_example.ipynb b/examples/data_difficulty/notebook_example.ipynb new file mode 100644 index 0000000..f8e6dbb --- /dev/null +++ b/examples/data_difficulty/notebook_example.ipynb @@ -0,0 +1,1142 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "23377c4d", + "metadata": {}, + "outputs": [], + "source": [ + "from DataDifficulty import *\n", + "from matplotlib import pyplot as plt\n", + "from pprint import pprint" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "6f79cd9d", + "metadata": {}, + "outputs": [], + "source": [ + "X = np.load('X.npy')\n", + "y = np.load('y.npy')" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "c3bfc46d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7OxsacuWLeHH/vd//1cCIC1evDj82E033SRlZWVJH374YUyb5M/xl7/8pdS3b1/p//7v/yKenzt3ruTxeKStW7dKkiRJL7/8sgRAeuihh8LbHDt2TCopKYk530pqamokANIHH3wQfmzXrl1SXl5exHdP6TxIkvI5nDx5csw5lNt19OjRiMe++uorqaCgQPrhD3+YsJ1EanFohlzjuuuuw+HDh7Fy5Urs378fK1euTOmOX09r1qzB/v37MXfuXPTq1SviuWR5JD3vcL/66it0dnaipKQEH330UfjxAQMGAAh1wSt1zcvbbNu2DR9++GGK7yLWLbfcErH/U089FX379sV1110XfvzUU0/FgAED8O9//zvm9bfddhtOPPHE8O933HEHTjjhBLz++uvhx3q+//3792P37t0oKSnBoUOHsGnTpoTtU3PuZJdccklEj9Z3vvMd5ObmhtsdDAbx8ssv46qrrsLZZ58d83r5c/zzn/+MkpISDBw4ELt37w7/XHLJJRBFEW+//TYA4PXXX8cJJ5yAO+64I7wPj8eDO++8M+F7kr3++us499xzMX78+PBj+fn5uOGGGxKeB63nUG5XdnZ2+Dzs3bsXx44dw9lnn614LolSwaEZco38/HxccsklWL58OQ4dOgRRFFFZWWlpm7744gsAwBlnnKH5tStXrsSvfvUrbNiwAUePHg0/3jOAuf766/GHP/wBt9xyC+bOnYuLL74Yfr8flZWVyMoK3Wfcfffd+Nvf/obx48fj5JNPxqWXXoqqqiqcf/75Kb2nXr16IT8/P+KxvLw8eL3emOAqLy8vJvcDAE455ZSI3/v164fCwsKI3Jp//vOf+PnPf44333wTXV1dEdt3dnYmbKOacycbOXJkzGMDBw4Mt7ujowNdXV1JP8PPP/8cn3zyScy5ke3atQsA8OWXX6KwsDA8/CE79dRTE+5f9uWXX+Kcc86JeVzp9emcQ9nTTz+NX//619i0aRO+/vrr8OPRw21EqWIgQq5SVVWFW2+9FTt27MDll18e7jGIFq83Qk0ipBmamppw9dVX48ILL8Tjjz+OwsJCnHjiiVi6dGlEAmjv3r3x9ttvo6GhAa+99hpWrVqF559/HhMnTsTq1avh8XgwduxYbN68GStXrsSqVavw4osv4vHHH8c999yDBQsWaG5bvFk08R6XJEnzMfbt24eLLroIubm5+MUvfoExY8agV69e+Oijj3D33XfH7f0B1J87vdsdDAZRXl6OOXPmKD7/rW99S9P+0pXOOZQ9++yzmDZtGq655hrcddddGDp0KDweDxYuXBgOsonSxUCEXOV73/sebr/9drz//vt4/vnn4243cOBAAIiZqfDll1+qOo7a6blyl/9nn32Gk08+WdVrAODFF19Er1698MYbb0TUQFm6dGnMtllZWbj44otx8cUXY9GiRbj//vvxs5/9DA0NDbjkkksAAH379sX111+P66+/Ht3d3fD7/bjvvvswb968mCEjM3z++ecoKysL/37gwAG0t7fjiiuuABCa1bRnzx4EAgFceOGF4e2am5uT7lvLuVMjPz8fubm5+OyzzxJuN2bMGBw4cCB8zuMZNWoU1q5diwMHDkT0imzevFlVe0aNGoXPP/885vHo12s5h/G+z/X19TjppJMQCAQitpk/f76qthKpwRwRcpV+/fphyZIluPfee3HVVVfF3W7UqFHweDzhcXvZ448/ruo4ffv2VTXd8tJLL0X//v2xcOFCHDlyJOK5RHfcHo8HgiBE9NC0tLTEFFHbu3dvzGvlmQzykMSePXsins/OzsZpp50GSZIiutrN9OSTT0Yce8mSJTh27Fh4xpPcS9HzHHV3d6v6fNSeO7WysrJwzTXX4C9/+YtiaXq5jddddx3ee+89vPHGGzHb7Nu3L1zj5oorrsCxY8ewZMmS8POiKGLx4sWq2nPFFVfg/fffx7p168KPdXR04E9/+lPEdlrOYd++fRWHapT28cEHH+C9995T1VYiNdgjQq6jZhpkXl4err32WixevBiCIGDMmDFYuXJleBw/meLiYvztb3/DokWLMHz4cIwePVpx3D43NxePPvoobrnlFowbNw5VVVUYOHAg/vd//xeHDh3C008/rbj/yZMnY9GiRZg0aRKqqqqwa9cuPPbYYzj55JPxySefhLf7xS9+gbfffhuTJ0/GqFGjsGvXLjz++OPwer244IILAISCoWHDhuH8889HQUEBNm7ciN/+9reYPHky+vfvr+r96q27uxsXX3wxrrvuOmzevBmPP/44LrjgAlx99dUAgAkTJmDgwIGYOnUqfvzjH0MQBDzzzDOqhkvUnjst7r//fqxevRoXXXQRbrvtNowdOxbt7e3485//jHfeeQcDBgzAXXfdhVdffRVXXnklpk2bhuLiYhw8eBCffvop6uvr0dLSgiFDhuCqq67C+eefj7lz56KlpQWnnXYaAoGA6pyNOXPm4JlnnsGkSZNQXV0dnr47atSoiPen5RwWFxfj+eefx+zZszFu3Dj069cPV111Fa688koEAgF873vfw+TJk9Hc3IwnnngCp512Gg4cOJDSuSSKYdV0HSI99Jy+m0j09F1JkqSOjg7p+9//vtSnTx9p4MCB0u233y599tlnqqbvbtq0Sbrwwgul3r17SwDCU3mjp+/KXn31VWnChAlS7969pdzcXGn8+PHSihUrws8rTUF96qmnpFNOOUXKycmR/uM//kNaunRpTFvWrl0rVVRUSMOHD5eys7Ol4cOHS1OmTImYQvq73/1OuvDCC6XBgwdLOTk50pgxY6S77rpL6uzsTHjO4k3f7du3b8y2F110keIU4ejzLp+ft956S7rtttukgQMHSv369ZNuuOEGac+ePRGv/fvf/y6de+65Uu/evaXhw4dLc+bMkd54442YadepnjtJCk3fnTFjhmK7o6dnf/nll9JNN90k5efnSzk5OdJJJ50kzZgxI2J66/79+6V58+ZJJ598spSdnS0NGTJEmjBhgvTII49ETFfes2ePdOONN0q5ublSXl6edOONN0off/yxqum7kiRJn3zyiXTRRRdJvXr1kkaMGCH98pe/lJ566qmY757ac3jgwAGpqqpKGjBggAQgfD6DwaB0//33S6NGjZJycnKk7373u9LKlSsVzzlRqgRJSiGTjIiIiEgHzBEhIiIiyzAQISIiIsswECEiIiLLMBAhIiIiyzAQISIiIsswECEiIiLL2LqgWTAYxPbt29G/f3/VJbWJiIjIWpIkYf/+/Rg+fHh4Ac54bB2IbN++HUVFRVY3g4iIiFLQ2toKr9ebcBtbByJy+enW1lbk5uZa3BoiIiJSo6urC0VFRaqWkbB1ICIPx+Tm5jIQISIichg1aRVMViUiIiLLMBAhIiIiyzAQISIiIsswECEiIiLLMBAhIiIiyzAQISIiIsswECEiIiLLMBAhIiIiyxgaiCxcuBDjxo1D//79MXToUFxzzTXYvHmzkYckInIUUQQaG4EVK0J/iqLVLSIyl6GByFtvvYUZM2bg/fffx5o1a/D111/j0ksvxcGDB408LBGRIwQCgM8HlJUBVVWhP32+0ON2xuCJ9CRIkiSZ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[:,0][y==0], X[:,1][y==0], c='black', label=0)\n", + "plt.scatter(X[:,0][y==1], X[:,1][y==1], c='brown', label=1)\n", + "plt.scatter(X[:,0][y==2], X[:,1][y==2], c='green', label=2)\n", + "plt.scatter(X[:,0][y==3], X[:,1][y==3], c='blue', label=3)\n", + "plt.title('Multiclass imbalanced data')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d05f7414", + "metadata": {}, + "outputs": [], + "source": [ + "MINORITY_CLASSES = [0, 2]" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "c81c3cb3", + "metadata": {}, + "source": [ + "For quick, tune-free summary report run this method:\n", + "\n", + "(In general user can omit `classes` parameter, and any method will automatically detect minority classes. Despite of that ability, it is encouraged to explicitly pass minority classes as list of labels, because since the definition of *minority* and *majority* class may vary between any project, thus the automatic minority class detection views the class with maximal cardinality among all the classes as *majority* class, and any class of cardinality smaller than the cardinality of majority class as *minority* class.)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3074d154", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Start computing imbalance ratios...\n", + "Imbalance ratios: \n", + "class 0 : 5.0\n", + "class 1 : 1.0\n", + "class 2 : 5.0\n", + "class 3 : 1.0\n", + "Start data difficulty study...\n", + "KNN based method\n" + ] + }, + { + "data": { + "image/png": "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HjzY7gioBHXq1NHhw4cVHR1dZHzz5s1q2LChTangSbt379aePXvUs2dPBQQEyLIsORwOu2MZhUNLl5GsrCwNGTJEGzdu1MmTJxUREaEjR46oW7du+uKLL4r9Fg/AXo8//riSk5P18ccfq3nz5kpJSdHRo0c1bNgwDRs2TE8//bTdEVFBGRkZuuOOO7R69Wo5HA7t2rVLTZo00QMPPKCQkBC9/PLLdkc0BkXmMvTdd99py5YtOnXqlDp16qQ+ffrYHQkekJmZqUWLFmnPnj0aP3686tatq5SUFIWFhfHbu6HOnj2ruLg4zZ8/XwUFBapRo4YKCgp0zz33aP78+fL19bU7Iipo2LBhOnbsmN5++221atXKff7T8uXLNW7cOK5KKweKTDVXt25d7dy5U1dccYUeeOABvfLKK0WuWEL1kJqaqj59+sjlcmn//v3asWOHmjRpoqeeekppaWl655137I6IcrIsS+np6apfv76OHz+un376SadOnVLHjh0VExNjdzxcogYNGmj58uXq0KFDkRO59+7dq/bt2+vUqVN2RzQG95Gp5s6ePes+wTcpKYkrk6qp85fW79q1S/7+/u7xAQMGaO3atTYmQ0VZlqVmzZrp119/VWRkpAYMGKA77riDElNNnD59WrVq1So2fuLECTmdThsSmYuTfau5bt26afDgwbr66qtlWZbi4+MVEBBQ4rZz586t4nTwlA0bNuiNN94oNt6wYUMdOXLEhkS4VD4+PoqJiVFGRgblpRq67rrr9M477+j555+X9MfFF4WFhZo2bVqpl2ajOIpMNffee+9pxowZ2rNnjxwOh7KyspiVqYa4tL56mjp1qsaPH685c+aobdu2dseBB02bNk29e/fWxo0bdfbsWT3xxBPatm2bTpw4oe+++87ueEbhHJnLSHR0tDZu3Kh69erZHQUeNmLECGVkZOijjz5S3bp1lZqaKl9fXw0ePFg9e/bUzJkz7Y6ICggJCVFOTo7OnTunmjVrFptNPf+8NJgpKytLs2bNKnLxRVxcnMLDw+2OZhSKDFANcGl99ZSUlFTq+tjY2CpKAngvisxl5vTp01qzZo3S0tJ09uzZIuvi4+NtSgVP+fbbb5Wamsql9YAXSk1NVdu2beXj43PRp1+3b9++ilKZjyJzGdm8ebMGDBignJwcnT59WnXr1tXx48dVq1YthYaGau/e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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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/TbfX/EA7PX8889r8+bN+uqrr3TrrbcqPj5eycnJGjBggAYMGKCXX37Z7ogooZSUFPXr109r166Vw+HQgQMHVK9ePT355JMKDAzUW2+9ZXdEY1BkbkAbNmzQjh07lJGRoZYtW6pz5852R4IbpKamauHChTp06JBGjRql6tWrKz4+XsHBwfz1bqhLly4pJiZGc+bMUU5OjipUqKCcnBw9+uijmjNnjry9ve2OiBIaMGCATp8+rY8++kiNGjVyrX9auXKlRo4cyafSioEiU85Vr15d+/fv180336wnn3xSb7/9dp5PLKF8SEhIUOfOnRUQEKCjR49q3759qlevnl566SUdP35cn3zyid0RUUyWZSkxMVE1atTQmTNn9OuvvyojI0MtWrRQZGSk3fFwnWrWrKmVK1eqefPmeRZyHz58WM2aNVNGRobdEY3BdWTKuUuXLrkW+M6dO5dPJpVTVz5af+DAAVWqVMk13r17d61bt87GZCgpy7IUERGh3377TaGhoerevbv69etHiSknzp8/rypVquQbP3v2rJxOpw2JzMVi33KuTZs26t27t26//XZZlqXY2FhVrlz5qvvOnj27jNPBXbZs2aL3338/3/gtt9yipKQkGxLhenl5eSkyMlIpKSmUl3Lo7rvv1ieffKJXX31V0p8fvsjNzdWkSZMK/Wg28qPIlHPz5s3TlClTdOjQITkcDqWlpTErUw7x0fryaeLEiRo1apRmzJihJk2a2B0HbjRp0iR16tRJW7du1aVLl/TCCy9o165dOnv2rDZs2GB3PKOwRuYGEh4erq1bt+qmm26yOwrcbNCgQUpJSdGXX36p6tWrKyEhQd7e3urdu7fat2+vqVOn2h0RJRAYGKjMzExdvnxZFStWzDebeuV+aTBTWlqapk2blufDFzExMapVq5bd0YxCkQHKAT5aXz7NnTu30O3R0dFllATwXBSZG8z58+f1448/6vjx47p06VKebbGxsTalgrusX79eCQkJfLQe8EAJCQlq0qSJvLy8rnn362bNmpVRKvNRZG4g27dvV/fu3ZWZmanz58+revXqOnPmjKpUqaKgoCAdPnzY7ogACnDx4sV8f3z4+/vblAYl4eXlpaSkJAUFBcnLy0sOh0NX+xXscDi4CWwxsNj3BjJixAj17NlTM2fOVEBAgDZt2iQfHx/1799fzz77rN3xUEzvvPNOkfdlts1M58+f1+jRo/Xll18qJSUl33Z+2ZnlyJEjrsX3R44csTlN+cGMzA2kWrVq2rx5sxo0aKBq1app48aNatSokTZv3qzo6Gjt3bvX7ogohn+//87vv/+uzMxMVatWTdKfV/plts1sMTExWrt2rV599VU9/vjjmj59uk6cOKH3339fEydO1GOPPWZ3RMB2zMjcQHx8fOTl9ec1EIOCgnT8+HE1atRIAQEBSkxMtDkdiutf/6KbP3++3nvvPc2aNUsNGjSQJO3bt0+DBw/WkCFD7IqI6/TNN9/ok08+UYcOHTRw4EDdfffdioiIUN26dfXZZ59RZAyzdOnSIu/bq1evUkxSvjAjcwPp0qWLnnjiCT366KMaPHiwEhISFBsbq08//VR//PGHNm/ebHdElFD9+vW1cOFCtWjRIs/4tm3b1LdvX6axDVW1alXt3r1bderUUe3atbVo0SK1bt1aR44cUdOmTbmMvWGu/CF5LayRKR5uUXADef31113XJ3jttdcUGBioZ555RmfOnLnqVWFhjlOnTuny5cv5xnNycpScnGxDIrhDvXr1XCW0YcOG+vLLLyX9OVNz5RQizJGbm1ukByWmeJiRuYFcuHBBlmW57u9x9OhRLV68WI0bN1bXrl1tTofr0bNnT504cUIfffSRWrZsKenP2ZinnnpKt9xyS7GmtOE5pkyZIm9vb8XGxmrVqlXq2bOnLMtSdna2Jk+ezCJ9g33yySd66KGH8t1X6dKlS1qwYIEGDBhgUzLzUGRuIF26dFGfPn309NNPKzU1VQ0bNpSPj4/OnDmjyZMn65lnnrE7Ikro999/V3R0tFasWCEfHx9J0uXLl9W1a1fNmTNHQUFBNidEcWVnZ+vee+/VzJkzXfdaOnbsmLZt26aIiAiuM2I4b29vnTp1Kt+/zZSUFAUFBTErUwws9r2BxMfHa8qUKZKkhQsXKjg4WNu3b9fXX3+tsWPHUmQMZVmWLly4oK+//lq//fab9uzZI+nPUxG33nqrzelQUj4+Pvkumla3bl3VrVvXpkRwJ8uy5HA48o3/9ttvCggIsCGRuSgyN5DMzEz5+flJkr777jv16dNHXl5e+stf/qJjx47ZnA4lZVmWIiIitGvXLkVGRnKn5HKkf//+mjVrliZOnGh3FLhJixYt5HA45HA41KlTJ1Wo8P+/hnNycnTkyBHde++9NiY0D0XmBhIREaElS5boP/7jP7Ry5UqNGDFCknT69GmuEGowLy8vRUZGKiUlhRJTzly+fFmzZ8/WqlWrdPvtt+e7Z9bkyZNtSoaS6t27tyTpl19+UdeuXVW1alXXtooVKyosLEwPPPCATenMxBqZG8jChQv16KOPKicnR506ddJ3330nSZowYYLWrVun5cuX25wQJfXNN99o0qRJmjFjhpo0aWJ3HLhJx44dC9zmcDi0Zs2aMkwDd5o7d64eeughVapUye4oxqPI3GCSkpJ06tQpNW/e3HVNg59//ln+/v5q2LChzelQUoGBgcrMzNTly5dVsWJFVa5cOc/2s2fP2pQMAEoXRQYoB+bOnVvo9ujo6DJKAqAortw0siB8aqnoWCMDlAMUFcAsixYtylNksrOztX37ds2dO1fjxo2zMZl5mJEByomcnBwtWbLE9fHrqKgo9erVS97e3jYnA1BU8+fP1xdffKG///3vdkcxBkUGKAcOHjyo7t2768SJE3luGhkaGqply5apfv36NicEUBSHDx9Ws2bNuI9WMXCvJaAciI2NVf369ZWYmKj4+HjFx8fr+PHjCg8PV2xsrN3xABTBhQsX9M477+iWW26xO4pRmJEBygFfX19t2rRJTZs2zTO+Y8cOtWvXjr/uAA8TGBiYZ42MZVk6d+6cqlSponnz5qlXr142pjMLi32BcsDpdOrcuXP5xjMyMlSxYkUbEgEozJQpU/IUGS8vL9WoUUN33nmnAgMDbUxmHk4tAeXAfffdp6eeekqbN2+WZVmyLEubNm3S008/zV92gAd64okndP/99+vMmTP65z//qR9//FG7d+92Xd8LRcepJaAcSE1NVXR0tL755hvX3a+zs7N1//33a86cOdyEDvAwW7du1b333qtKlSqpdevWkqQtW7bowoUL+u6779SyZUubE5qDIgOUIwcPHtTu3bslSY0bN1ZERITNiQBczd13362IiAh9+OGHrhtHXr58WYMGDdLhw4e1bt06mxOagyIDlBOzZs3SlClTdODAAUlSZGSkhg8frkGDBtmcDMC/q1y5srZv357v1jC7d+9Wq1atlJmZaVMy87DYFygHxo4dq8mTJ2vYsGFq06aNJGnjxo0aMWKEjh8/rvHjx9ucEMC/8vf31/Hjx/MVmcTERPn5+dmUykzMyADlQI0aNfTOO+/okUceyTP++eefa9iwYTpz5oxNyQBcTWxsrBYvXqw333xTbdu2lSRt2LBBo0aN0gMPPKCpU6faG9AgzMgA5UB2drZatWqVb/z222/X5cuXbUgEoDBvvvmmHA6HBgwY4Po36uPjo2eeeUYTJ060OZ1ZmJEByoFhw4bJx8dHkydPzjP+/PPP68KFC5o+fbpNyQAUJjMzU4cOHZIk1a9fX1WqVLE5kXmYkQEMNXLkSNfXDodDH330kb777jv95S9/kSRt3rxZx48f14ABA+yKCOAaqlSpku+K3CgeZmQAQ3Xs2LFI+zkcDq1Zs6aU0wCAPSgyAADAWFwLGQAAGIsiAwAAjEWRAQAAxqLIAAAAY1FkANjK4XAU+njllVfsjgjAg3EdGQC2OnXqlOvrL774QmPHjtW+fftcY1WrVrUjFgBDMCMDwFY1a9Z0PQICAuRwOFSzZk35+fnp1ltv1YoVK/Lsv2TJEvn6+urcuXM6evSoHA6HFixYoLZt26pSpUpq0qSJfvzxxzzH7Ny5U926dVPVqlUVHBysxx9/nPtPAeUERQaAR/L19dXDDz+sjz/+OM/4xx9/rL59++a5Q/CoUaP03HPPafv27WrTpo169uyplJQUSVJqaqr++te/qkWLFtq6datWrFih5ORk9evXr0x/HgClgyIDwGMNGjRIK1eudJ1+On36tL799ls9+eSTefYbOnSoHnjgATVq1EgzZsxQQECAZs2aJUmaNm2aWrRooddff10NGzZUixYtNHv2bK1du1b79+8v858JgHtRZAB4rNatWysqKkpz586VJM2bN09169ZV+/bt8+zXpk0b19cVKlRQq1attGfPHknSjh07tHbtWlWtWtX1aNiwoSS5btYHwFws9gXg0QYNGqTp06frxRdf1Mcff6yBAwfK4XAU+fiMjAz17NlTb7zxRr5ttWrVcmdUADZgRgaAR+vfv7+OHTumd955R7t371Z0dHS+fTZt2uT6+vLly9q2bZsaNWokSWrZsqV27dqlsLAwRURE5Hn4+vqW2c8BoHRQZAB4tMDAQPXp00ejRo1Sly5dVLt27Xz7TJ8+XYsXL9bevXsVExOjP/74w7WOJiYmRmfPntUjjzyiLVu26NChQ1q5cqUGDhyonJycsv5xALgZRQaAx/vP//xPXbp0Kd8i3ysmTpyoiRMnqnnz5lq/fr2WLl2qm2++WZIUEhKiDRs2KCcnR126dFHTpk01fPhwVatWTV5e/C8QMJ3DsizL7hAAUJhPP/1UI0aM0MmTJ1WxYkXX+NGjRxUeHq7t27frtttusy8gANuw2BeAx8rMzNSpU6c0ceJEDRkyJE+JAQCJU0sAPNikSZPUsGFD1axZU3FxcXbHAeCBOLUEAACMxYwMAAAwFkUGAAAYiyIDAACMRZEBAADGosgAAABjUWQAAICxKDIAAMBYFBkAAGAsigwAADDW/wGMRzfi2kZHMgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Kernel density function based method\n" + ] + }, + { + "data": { + "image/png": "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1iIIAQAAaxGEAACAtQhCAADAWgQhAABgLYIQAACwlttBaO7cuVq6dKlzevTo0YqKilJSUpJ++OEHjxYHAADgTW4HoUmTJikkJESSlJ6erunTp+vpp59W9erVNXz4cI8XCAAA4C1B7i6QkZGh+Ph4SdKSJUt00003afDgwWrbtq06dOjg6foAAAC8xu0jQmFhYTp69Kgkafny5br22mslScHBwTpz5oxnqwMAAPAit48IXXvttbr77rvVsmVL7dmzR9ddd50kaceOHapTp46n6wMAAPAat48ITZ8+XW3atNEvv/yit956S9WqVZMkbdy4UbfddpvHCwQAAPAWt48IRUVF6cUXXyzUPn78eI8UBAAAUFpK9ByhL774Qn/729+UlJSkn376SZL073//W2vWrPFocQAAAN7kdhB666231KVLF4WEhGjTpk3KycmRJGVlZWnSpEkeLxAAAMBb3A5CTz75pGbMmKGZM2eqYsWKzva2bdtq06ZNHi0OAADAm9wOQrt371b79u0LtUdGRur48eOeqAkAAKBUuB2EYmJitHfv3kLta9asUb169TxSFAAAQGlwOwgNGjRIDz30kNauXauAgAD9/PPPmjdvnkaOHKn77rvPGzUCAAB4hdu3z6empio/P1+dOnXS6dOn1b59ezkcDo0cOVIPPPCAN2oEAADwCreCUF5enr788ksNGTJEo0aN0t69e3Xy5Ek1btxYYWFh3qoRAADAK9wKQoGBgercubN27dqlqKgoNW7c2Ft1AQAAeJ3b1wg1bdpU+/fv90YtAAAApapEzxEaOXKkPvjgAx06dEjZ2dkuLwAAgLLC7YulC75t/oYbblBAQICz3RijgIAA5eXlea46AAAAL3I7CK1cudIbdQAAAJQ6t4NQcnKyN+oAAAAodW4HIUk6fvy4Zs2apV27dkmSmjRporvuukuRkZEeLQ4AAMCb3L5YesOGDapfv76ee+45HTt2TMeOHdOzzz6r+vXr86WrAACgTHH7iNDw4cN1ww03aObMmQoK+mPx3Nxc3X333Ro2bJhWr17t8SIBAAC8we0gtGHDBpcQJElBQUEaPXq0WrVq5dHiAAAAvMntU2MRERE6ePBgofaMjAyFh4d7pCgAAIDS4HYQ6t27twYOHKg333xTGRkZysjI0IIFC3T33Xfrtttu83iBP/30k/72t7+pWrVqCgkJUUJCgjZs2ODx9wEAAPZx+9TYM888o4CAAN15553Kzc2VJFWsWFH33XefJk+e7NHifvvtN7Vt21YdO3bURx99pEsuuUTfffedqlSp4tH3AQAAdnI7CFWqVEnPP/+80tLStG/fPklS/fr1FRoa6vHinnrqKcXFxWn27NnOtrp163r8fQAAgJ3cPjWWlZWlY8eOKTQ0VAkJCUpISFBoaKiOHTvm8e8ae++999SqVSvdcsstio6OVsuWLTVz5kyPvgcAALCX20GoT58+WrBgQaH2hQsXqk+fPh4pqsD+/fv10ksvqUGDBvr4449133336cEHH9TcuXPPu0xOTg5fBAsAAIrF7SC0du1adezYsVB7hw4dtHbtWo8UVSA/P19XXHGFJk2apJYtW2rw4MEaNGiQZsyYcd5l0tLSFBkZ6XzFxcV5tCYAAFB+uB2EcnJynBdJ/9nvv/+uM2fOeKSoAjVr1lTjxo1d2i6//PIib98vMGbMGGVlZTlfGRkZHq0JAACUH24HodatW+uVV14p1D5jxgxdeeWVHimqQNu2bbV7926Xtj179qh27drnXcbhcCgiIsLlBQAAUBS37xp78sknlZKSoq1bt6pTp06SpBUrVmj9+vVavny5R4sbPny4kpKSNGnSJN16661at26dXnnllSKDGAAAgLvcPiLUtm1bpaenKy4uTgsXLtT777+v+Ph4bdu2Tddcc41Hi7vqqqv0zjvv6I033lDTpk01YcIETZ06VX379vXo+wAAADu5fURIklq0aKF58+Z5upYi9ejRQz169CiV9wIAAHZx+4jQpk2btH37duf0u+++q169eunvf/+7zp0759HiAAAAvMntIHTPPfdoz549kv54zk/v3r0VGhqqRYsWafTo0R4vEAAAwFvcDkJ79uxRixYtJEmLFi1ScnKy5s+frzlz5uitt97ydH0AAABe43YQMsYoPz9fkvTpp5/quuuukyTFxcXp119/9Wx1AAAAXuR2EGrVqpWefPJJ/fvf/9bnn3+u7t27S5IOHDigGjVqeLxAAAAAb3E7CE2dOlWbNm3S0KFD9eijjyo+Pl6StHjxYiUlJXm8QAAAAG9x+/b5Zs2audw1VmDKlCkKDAz0SFEAAACloUTPESpKcHCwp1YFAABQKtw+NQYAAFBeEIQAAIC1CEIAAMBaJQ5C586d0+7du5Wbm+vJegAA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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4eEuYzpy5IhLn/I438eOHXMZ87fffmsCAwPNnDlznH3Kwnx/9NFH5tFHHzXvvPOOkWTefffdC/Y/cOCACQkJMcOHDzc7d+4006dPN4GBgWbZsmXOPu6+ludT5oPQOXPmzClWECooKDAxMTFmypQpzrbjx48bh8Nh3njjDWOMMTt37jSSzPr16519Pv74YxMQEGAOHz7s8drd5an6mjVrZu6++26XtuL8gPpKScednJxsHnroofOu/+ijj0yFChVcfqm++OKLJjw83OTm5nqk9ovhqfletGiRqVSpkvn999+dbf40361atTKDBw92Lufn55vY2FgzadKkIvvfcsstpnv37i5trVu3NoMGDTLGFO+97g/cHfd/ysvLM2FhYWbevHnOtn79+pkePXp4ulSPcnfcf/U73pb5fvbZZ01YWJjJyclxtpWF+f6z4vzeGTlypElISHBp6927t+nSpYtz+WJfy3PK/Kkxdx08eFBHjhxRSkqKsy0iIkKtW7dWWlqaJCktLU2RkZFq2bKls09KSooqVKigtWvXlnrN/8kT9W3cuFFbtmzRPffcU2jd4MGDVb16dbVq1UqvvvqqjJ981NTFjHv+/PmqXr26mjRpolGjRunUqVMu+01MTHT5tPIuXbooOztbO3bs8PxA3OSpn8esrCyFh4crKMj1c1T9Yb7Pnj2rjRs3urwvK1SooJSUFOf78j+lpaW59Jf+mLdz/YvzXve1koz7P506dUq///57oS+mXLlypaKiotSwYUPdf//9OnbsmEdrvxglHXdOTo5q166tuLg49ejRw+X9act8z549W3369FGVKlVc2v15vkvir97fnngtzykTnyztSUeOHJGkQl/RER0d7Vx35MgRRUVFuawPCgpStWrVnH18yRP1zZ49W5dddpmSkpJc2seNG6f//u//VkhIiJYvX66///3vysnJ0YMPPuix+kuqpOO+7bbbVLt2bcXGxmrbtm165JFHtHv3br3zzjvO/Rb183Buna95Yr5//fVXjR8/XgMHDnRp95f5/vXXX5Wfn1/kPHz33XdFbnO+efvz+/hc2/n6+FpJxv2fHnnkEcXGxrr8Qejatat69eqlunXrav/+/frnP/+pbt26KS0tTYGBgR4dQ0mUZNwNGzbUq6++qqZNmyorK0tTp05VUlKSduzYoZo1a1ox3+vWrdO3336r2bNnu7T7+3yXxPne39nZ2Tp9+rR+++23i37vnOOXQSg1NVVPPfXUBfvs2rVLjRo1KqWKSkdxx32xTp8+rQULFmj06NGF1v25rXnz5jp58qSmTJni1T+M3h73n//4JyYmqkaNGurUqZP279+v+vXrl3i/F6u05js7O1vdu3dX48aN9cQTT7is88V8w3MmT56shQsXauXKlS4XDvfp08f578TERDVt2lT169fXypUr1alTJ1+UetHatGmjNm3aOJeTkpJ02WWX6aWXXtL48eN9WFnpmT17thITE9WqVSuX9vI436XJL4PQP/7xD911110X7FOvXr0S7TsmJkaSlJGRoRo1ajjbMzIy1KxZM2efo0ePumyXl5enzMxM5/beUNxxX2x9b731lk6dOqU777zzL/u2bt1a48ePV25urte+76W0xn1O69atJUn79u1T/fr1FRMTU+hOg4yMDEkq8/N94sQJde3aVWFhYXr33XdVsWLFC/YvjfkuSvXq1RUYGOh83c/JyMg47xhjYmIu2L8473VfK8m4z5k6daomT56szz77TE2bNr1g33r16ql69erat2+fX/xhvJhxn1OxYkU1b95c+/btk1T+5/vkyZNauHChxo0b95fP42/zXRLne3+Hh4ercuXKCgwMvOifISe3rijyY+5eLD116lRnW1ZWVpEXS2/YsMHZ55NPPvG7i6VLWl9ycnKhu4fOZ8KECaZq1aolrtWTPDUva9asMZLM1q1bjTH/d7H0n+80eOmll0x4eLg5c+aM5wZQQiUdd1ZWlrnqqqtMcnKyOXnyZLGey5fz3apVKzNkyBDncn5+vvmv//qvC14sfd1117m0tWnTptDF0hd6r/sDd8dtjDFPPfWUCQ8PN2lpacV6jvT0dBMQEGDee++9i67XU0oy7j/Ly8szDRs2NMOGDTPGlO/5NuaPv3EOh8P8+uuvf/kc/jjff6ZiXizdpEkTl7Zbb7210MXSF/Mz5KzHrd5+6IcffjCbN2923gq+efNms3nzZpdbwhs2bGjeeecd5/LkyZNNZGSkee+998y2bdtMjx49irx9vnnz5mbt2rVmzZo1pkGDBn53+/yF6vvxxx9Nw4YNzdq1a12227t3rwkICDAff/xxoX2+//77ZtasWWb79u1m79695n//939NSEiIGTNmjNfHU1zujnvfvn1m3LhxZsOGDebgwYPmvffeM/Xq1TPt27d3bnPu9vnOnTubLVu2mGXLlplLL73U726fd2fcWVlZpnXr1iYxMdHs27fP5bbavLw8Y4z/zffChQuNw+Ewc+fONTt37jQDBw40kZGRzrv57rjjDpOamurs/9VXX5mgoCAzdepUs2vXLvP4448Xefv8X73Xfc3dcU+ePNlUqlTJvPXWWy7zeu533okTJ8zDDz9s0tLSzMGDB81nn31mWrRoYRo0aOAXwf4cd8c9duxY88knn5j9+/ebjRs3mj59+pjg4GCzY8cOZ5/yON/ntGvXzvTu3btQe1mZ7xMnTjj/PksyzzzzjNm8ebP54YcfjDHGpKammjvuuMPZ/9zt8yNGjDC7du0yM2bMKPL2+Qu9lsVV5oNQv379jKRCjy+++MLZR///s1LOKSgoMKNHjzbR0dHG4XCYTp06md27d7vs99ixY+bWW281oaGhJjw83PTv398lXPnaX9V38ODBQq+DMcaMGjXKxMXFmfz8/EL7/Pjjj02zZs1MaGioqVKlirn88svNzJkzi+zrK+6O+9ChQ6Z9+/amWrVqxuFwmPj4eDNixAiXzxEyxpjvv//edOvWzVSuXNlUr17d/OMf/3C5zdzX3B33F198UeT7QpI5ePCgMcY/53v69OmmVq1aplKlSqZVq1bmm2++ca5LTk42/fr1c+m/aNEi87e//c1UqlTJJCQkmKVLl7qsL8573R+4M+7atWsXOa+PP/64McaYU6dOmc6dO5tLL73UVKxY0dSuXdsMGDDA7T8OpcGdcQ8dOtTZNzo62lx77bVm06ZNLvsrj/NtjDHfffedkWSWL19eaF9lZb7P9zvp3Fj79etnkpOTC23TrFkzU6lSJVOvXj2Xv+PnXOi1LK4AY/zk3mgAAIBSZt3nCAEAAJxDEAIAANYiCAEAAGsRhAAAgLUIQgAAwFoEIQAAYC2CEAAAsBZBCECZ8f333ysgIEBbtmzxdSkAygmCEAC/cddddykgIMD5uOSSS9S1a1dt27ZNkhQXF6eff/5ZTZo08XGlAMoLghAAv9K1a1f9/PPP+vnnn7VixQoFBQXpuuuukyQFBgYqJiZGQUFBPq4SQHlBEALgVxwOh2JiYhQTE6NmzZopNTVV6enp+uWXXwqdGlu5cqUCAgK0YsUKtWzZUiEhIUpKStLu3bud+9u6das6duyosLAwhYeH64orrtCGDRt8NDoA/oYgBMBv5eTk6PXXX1d8fLwuueSS8/Z79NFH9a9//UsbNmxQUFCQ7r77bue6vn37qmbNmlq/fr02btyo1NRUVaxYsTTKB1AGcHwZgF/58MMPFRoaKkk6efKkatSooQ8//FAVKpz//21PPvmkkpOTJUmpqanq3r27zpw5o+DgYB06dEgjRoxQo0aNJEkNGjTw/iAAlBkcEQLgVzp27KgtW7Zoy5YtWrdunbp06aJu3brphx9+OO82TZs2df67Ro0akqSjR49KkoYPH657771XKSkpmjx5svbv3+/dAQAoUwhCAPxKlSpVFB8fr/j4eF155ZV65ZVXdPLkSc2aNeu82/z5VFdAQIAkqaCgQJL0xBNPaMeOHerevbs+//xzNW7cWO+++653BwGgzCAIAfBrAQEBqlChgk6fPl3iffztb3/TsGHDtHz5cvXq1Utz5szxYIUAyjKuEQLgV3Jzc3XkyBFJ0m+//aYXXnhBOTk5uv76693e1+nTpzVixAjddNNNqlu3rn788UetX79eN954o6fLBlBGEYQA+JVly5Y5r/MJCwtTo0aNtHjxYnXo0EHff/+9W/sKDAzUsWPHdOeddyojI0PVq1dXr169NHbsWC9UDqAsCjDGGF8XAQAA4AtcIwQAAKxFEAIAANYiCAEAAGsRhAAAgLUIQgAAwFoEIQAAYC2CEAAAsBZBCAAAWIsgBAAArEUQAgAA1iIIAQAAaxGEAACAtf4f0KjZBOvczyIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Continuous data difficulty\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAHHCAYAAABUcOnjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAs9klEQVR4nO3deXhU5cH+8XtIyCRAErZmew0GCIqErYJQEtYaoRBR3lbFpYi44BJUSAmEUkRkCaK1WKQgEQUriIBCFSwuCCISEQhBFAQhQSKyKEjCOkBy3j/8Mb+mBMyEk8xMnu/nus51cZ5zzsydecDcnnNmxmFZliUAAIBqroa3AwAAAFQFSg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwCviYuL0z333OPtGAAMQekBYLvdu3frwQcfVJMmTRQcHKywsDAlJSXp+eef16lTp7wd7xe5XC6NHDlSMTExCgkJUceOHfXBBx94OxaAyxTo7QAAqpfly5fr1ltvldPp1N13362WLVvqzJkzWrt2rdLT0/XVV19p1qxZ3o55Sffcc48WL16soUOHqlmzZpozZ4769OmjVatWqXPnzt6OB6CCHHzhKAC75Ofnq3Xr1rriiiv00UcfKTo6utT2Xbt2afny5Xr88ccl/Xx5q3v37pozZ44X0pbt888/V8eOHfXMM89o+PDhkqTTp0+rZcuWioiI0Lp167ycEEBFcXkLgG2mTJmi48ePa/bs2RcUHkmKj493F56yHDlyRMOHD1erVq1Up04dhYWFqXfv3tqyZcsF+06bNk0JCQmqVauW6tWrp/bt22v+/Pnu7ceOHdPQoUMVFxcnp9OpiIgI3XDDDcrJybnkz7B48WIFBARo8ODB7rHg4GDdd999ys7OVkFBQXleCgA+iMtbAGzzzjvvqEmTJkpMTKzQ8Xl5eVq6dKluvfVWNW7cWAcPHtSLL76obt26adu2bYqJiZEkZWVl6bHHHtMtt9yixx9/XKdPn9YXX3yh9evX684775QkPfTQQ1q8eLGGDBmiFi1a6PDhw1q7dq22b9+ua6+99qIZNm/erKuuukphYWGlxjt06CBJys3NVWxsbIV+PgDeRekBYIuioiLt27dPN998c4Ufo1WrVtq5c6dq1Pj/J6EHDBig5s2ba/bs2RozZoykn+8bSkhI0KJFiy76WMuXL9cDDzygv/71r+6xESNG/GKG/fv3l3mW6vzY999/X+6fB4Bv4fIWAFsUFRVJkkJDQyv8GE6n0114iouLdfjwYdWpU0dXX311qctSdevW1XfffacNGzZc9LHq1q2r9evXe1xSTp06JafTecF4cHCwezsA/0TpAWCL85eDjh07VuHHKCkp0d/+9jc1a9ZMTqdTDRs21K9+9St98cUXKiwsdO83cuRI1alTRx06dFCzZs2UmpqqTz/9tNRjTZkyRV9++aViY2PVoUMHPfnkk8rLy/vFDCEhIXK5XBeMnz592r0dgH+i9ACwRVhYmGJiYvTll19W+DEmTZqktLQ0de3aVa+99pree+89ffDBB0pISFBJSYl7v2uuuUY7duzQggUL1LlzZ7355pvq3Lmzxo4d697ntttuU15enqZNm6aYmBg988wzSkhI0L///e9LZoiOjtb+/fsvGD8/dv6+IgD+h9IDwDY33nijdu/erezs7Aodv3jxYvXo0UOzZ8/W7bffrp49eyo5OVlHjx69YN/atWurf//+euWVV7R3716lpKRo4sSJ7jMy0s8F5pFHHtHSpUuVn5+vBg0aaOLEiZfM0LZtW+3cudN9ue689evXu7cD8E+UHgC2GTFihGrXrq37779fBw8evGD77t279fzzz1/0+ICAAP33R4ctWrRI+/btKzV2+PDhUutBQUFq0aKFLMvS2bNnVVxcXOpymCRFREQoJiamzEtX/+mWW25RcXFxqQ9QdLlceuWVV9SxY0feuQX4Md69BcA2TZs21fz589W/f39dc801pT6Red26dVq0aNElv2vrxhtv1FNPPaVBgwYpMTFRW7du1bx589SkSZNS+/Xs2VNRUVFKSkpSZGSktm/frhdeeEEpKSkKDQ3V0aNHdcUVV+iWW25RmzZtVKdOHX344YfasGFDqXdzlaVjx4669dZbNWrUKB06dEjx8fGaO3eu9uzZo9mzZ9vxMgHwFgsAbLZz507rgQcesOLi4qygoCArNDTUSkpKsqZNm2adPn3avd+VV15pDRw40L1++vRp609/+pMVHR1thYSEWElJSVZ2drbVrVs3q1u3bu79XnzxRatr165WgwYNLKfTaTVt2tRKT0+3CgsLLcuyLJfLZaWnp1tt2rSxQkNDrdq1a1tt2rSx/vGPf5Qr/6lTp6zhw4dbUVFRltPptK677jprxYoVtrw2ALyHr6EAAABG4J4eAABgBEoPAAAwAqUHAAAYgdIDAACMQOkBAABGoPQAAAAjVPsPJywpKdH333+v0NBQORwOb8cBAADlYFmWjh07ppiYGNWoYc85mmpfer7//ns+Nh4AAD9VUFCgK664wpbHqvalJzQ0VNLPL1pYWJiX0wAAgPIoKipSbGys+/e4Hap96Tl/SSssLIzSAwCAn7Hz1hRuZAYAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMAKlBwAAGIHSAwAAjEDpAQAARqD0AAAAI3i19KxZs0Z9+/ZVTEyMHA6Hli5detF9H3roITkcDk2dOrXK8gEAgOrDq6XnxIkTatOmjaZPn37J/ZYsWaLPPvtMMTExVZQMAABUN179wtHevXurd+/el9xn3759evTRR/Xee+8pJSWlipIBAIDqxqfv6SkpKdGAAQOUnp6uhIQEb8cBAAB+zKtnen7J008/rcDAQD322GPlPsblcsnlcrnXi4qKKiMaAADwMz5bejZt2qTnn39eOTk5cjgc5T4uMzNT48aNu2C85dj3VMNZy86Ittkzmct2AABUNp+9vPXJJ5/o0KFDatSokQIDAxUYGKhvv/1Wf/rTnxQXF3fR40aNGqXCwkL3UlBQUHWhAQCAz/LZMz0DBgxQcnJyqbFevXppwIABGjRo0EWPczqdcjqdlR0PAAD4Ga+WnuPHj2vXrl3u9fz8fOXm5qp+/fpq1KiRGjRoUGr/mjVrKioqSldffXVVRwUAAH7Oq6Vn48aN6tGjh3s9LS1NkjRw4EDNmTPHS6kAAEB15NXS0717d1mWVe799+zZU3lhAABAteazNzIDAADYidIDAACMQOkBAABGoPQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMAKlBwAAGIHSAwAAjEDpAQAARqD0AAAAI1B6AACAESg9AADACJQeAABgBEoPAAAwAqUHAAAYgdIDAACMQOkBAABGoPQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMIJXS8+aNWvUt29fxcTEyOFwaOnSpe5tZ8+e1ciRI9WqVSvVrl1bMTExuvvuu/X99997LzAAAPBbXi09J06cUJs2bTR9+vQLtp08eVI5OTkaM2aMcnJy9NZbb2nHjh266aabvJAUAAD4u0BvPnnv3r3Vu3fvMreFh4frgw8+KDX2wgsvqEOHDtq7d68aNWpUFREBAEA14dXS46nCwkI5HA7VrVv3ovu4XC65XC73elFRURUkAwAAvs5vbmQ+ffq0Ro4cqTvuuENhYWEX3S8zM1Ph4eHuJTY2tgpTAgAAX+UXpefs2bO67bbbZFmWZsyYccl9R40apcLCQvdSUFBQRSkBAIAv8/nLW+cLz7fffquPPvrokmd5JMnpdMrpdFZROgAA4C98uvScLzzffPONVq1apQYNGng7EgAA8FNeLT3Hjx/Xrl273Ov5+fnKzc1V/fr1FR0drVtuuUU5OTlatmyZiouLdeDAAUlS/fr1FRQU5K3YAADAD3m19GzcuFE9evRwr6elpUmSBg4cqCeffFJvv/22JKlt27aljlu1apW6d+9eVTEBAEA14NXS0717d1mWddHtl9oGAADgCb949xYAAMDlovQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMAKlBwAAGIHSAwAAjEDpAQAARqD0AAAAI1B6AACAESg9AADACJQeAABgBEoPAAAwAqUHAAAYgdIDAACMQOkBAABGoPQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMAKlBwAAGMGrpWfNmjXq27evYmJi5HA4tHTp0lLbLcvSE088oejoaIWEhCg5OVnffPONd8ICAAC/5tXSc+LECbVp00bTp08vc/uUKVP097//XTNnztT69etVu3Zt9erVS6dPn67ipAAAwN8FevPJe/furd69e5e5zbIsTZ06VX/5y1908803S5JeffVVRUZGaunSpbr99turMioAAPBzPntPT35+vg4cOKDk5GT3WHh4uDp27Kjs7OyLHudyuVRUVFRqAQAA8NnSc+DAAUlSZGRkqfHIyEj3trJkZmYqPDzcvcTGxlZqTgAA4B98tvRU1KhRo1RYWOheCgoKvB0JAAD4AJ8tPVFRUZKkgwcPlho/ePCge1tZnE6nwsLCSi0AAAA+W3oaN26sqKgorVy50j1WVFSk9evXq1OnTl5MBgAA/JFX3711/Phx7dq1y72en5+v3Nxc1a9fX40aNdLQoUM1YcIENWvWTI0bN9aYMWMUExOjfv36eS80AADwS14tPRs3blSPHj3c62lpaZKkgQMHas6cORoxYoROnDihwYMH6+jRo+rcubNWrFih4OBgb0UGAAB+ymFZluXtEJWpqKjo53dxDV2oGs5a3o5Tpj2TU7wdAQAAn3L+93dhYaFt9+f67D09AAAAdqL0AAAAI1B6AACAESg9AADACJQeAABgBEoPAAAwAqUHAAAYgdIDAACMQOkBAABGoPQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMILHpWfu3Llavny5e33EiBGqW7euEhMT9e2339oaDgAAwC4el55JkyYpJCREkpSdna3p06drypQpatiwoYYNG2Z7QAAAADsEenpAQUGB4uPjJUlLly7VH/7wBw0ePFhJSUnq3r273fkAAABs4fGZnjp16ujw4cOSpPfff1833HCDJCk4OFinTp2yNx0AAIBNPD7Tc8MNN+j+++/Xr3/9a+3cuVN9+vSRJH311VeKi4uzOx8AAIAtPD7TM336dHXq1Ek//PCD3nzzTTVo0ECStGnTJt1xxx22BwQAALCDw7Isy9shKlNRUZHCw8MVO3ShajhreTtOmfZMTvF2BAAAfMr539+FhYUKCwuz5TEr9Dk9n3zyif74xz8qMTFR+/btkyT985//1Nq1a20JBQAAYDePS8+bb76pXr16KSQkRDk5OXK5XJKkwsJCTZo0yfaAAAAAdvC49EyYMEEzZ85UVlaWatas6R5PSkpSTk6OreEAAADs4nHp2bFjh7p27XrBeHh4uI4ePWpHJgAAANt5XHqioqK0a9euC8bXrl2rJk2a2BIKAADAbh6XngceeECPP/641q9fL4fDoe+//17z5s3T8OHD9fDDD1dGRgAAgMvm8YcTZmRkqKSkRNdff71Onjyprl27yul0avjw4Xr00UcrIyMAAMBl86j0FBcX69NPP1VqaqrS09O1a9cuHT9+XC1atFCdOnUqKyMAAMBl86j0BAQEqGfPntq+fbvq1q2rFi1aVFYuAAAAW3l8T0/Lli2Vl5dXGVkAAAAqTYU+p2f48OFatmyZ9u/fr6KiolKLnYqLizVmzBg1btxYISEhatq0qcaPH69q/s0ZAACgEnh8I/P5b1W/6aab5HA43OOWZcnhcKi4uNi2cE8//bRmzJihuXPnKiEhQRs3btSgQYMUHh6uxx57zLbnAQAA1Z/HpWfVqlWVkaNM69at080336yUlJ+/kDMuLk6vv/66Pv/88yrLAAAAqgePS0+3bt0qI0eZEhMTNWvWLO3cuVNXXXWVtmzZorVr1+q5556rsgwAAKB68Lj0SNLRo0c1e/Zsbd++XZKUkJCge++9V+Hh4baGy8jIUFFRkZo3b66AgAAVFxdr4sSJuuuuuy56jMvlcn8JqiTb7zMCAAD+yeMbmTdu3KimTZvqb3/7m44cOaIjR47oueeeU9OmTW3/wtGFCxdq3rx5mj9/vnJycjR37lw9++yzmjt37kWPyczMVHh4uHuJjY21NRMAAPBPDsvDt0J16dJF8fHxysrKUmDgzyeKzp07p/vvv195eXlas2aNbeFiY2OVkZGh1NRU99iECRP02muv6euvvy7zmLLO9MTGxip26ELVcNayLZud9kxO8XYEAAB8SlFRkcLDw1VYWKiwsDBbHtPjy1sbN24sVXgkKTAwUCNGjFD79u1tCXXeyZMnVaNG6ZNRAQEBKikpuegxTqdTTqfT1hwAAMD/eVx6wsLCtHfvXjVv3rzUeEFBgUJDQ20LJkl9+/bVxIkT1ahRIyUkJGjz5s167rnndO+999r6PAAAoPrzuPT0799f9913n5599lklJiZKkj799FOlp6frjjvusDXctGnTNGbMGD3yyCM6dOiQYmJi9OCDD+qJJ56w9XkAAED153HpefbZZ+VwOHT33Xfr3LlzkqSaNWvq4Ycf1uTJk20NFxoaqqlTp2rq1Km2Pi4AADCPx6UnKChIzz//vDIzM7V7925JUtOmTVWrlm/eJAwAACBVoPQUFhaquLhY9evXV6tWrdzjR44cUWBgoG13WAMAANjJ48/puf3227VgwYILxhcuXKjbb7/dllAAAAB287j0rF+/Xj169LhgvHv37lq/fr0toQAAAOzmcelxuVzuG5j/09mzZ3Xq1ClbQgEAANjN49LToUMHzZo164LxmTNnql27draEAgAAsJvHNzJPmDBBycnJ2rJli66//npJ0sqVK7Vhwwa9//77tgcEAACwg8dnepKSkpSdna3Y2FgtXLhQ77zzjuLj4/XFF1+oS5culZERAADgsnl8pkeS2rZtq3nz5tmdBQAAoNJ4fKYnJydHW7duda//61//Ur9+/fTnP/9ZZ86csTUcAACAXTwuPQ8++KB27twpScrLy1P//v1Vq1YtLVq0SCNGjLA9IAAAgB08Lj07d+5U27ZtJUmLFi1St27dNH/+fM2ZM0dvvvmm3fkAAABs4XHpsSxLJSUlkqQPP/xQffr0kSTFxsbqxx9/tDcdAACATTwuPe3bt9eECRP0z3/+Ux9//LFSUlIkSfn5+YqMjLQ9IAAAgB08Lj1Tp05VTk6OhgwZotGjRys+Pl6StHjxYiUmJtoeEAAAwA4ev2W9devWpd69dd4zzzyjgIAAW0IBAADYrUKf01OW4OBgux4KAADAdh5f3gIAAPBHlB4AAGAESg8AADBChUvPmTNntGPHDp07d87OPAAAAJXC49Jz8uRJ3XfffapVq5YSEhK0d+9eSdKjjz6qyZMn2x4QAADADh6XnlGjRmnLli1avXp1qXdsJScn64033rA1HAAAgF08fsv60qVL9cYbb+g3v/mNHA6HezwhIUG7d++2NRwAAIBdPD7T88MPPygiIuKC8RMnTpQqQQAAAL6kQt+9tXz5cvf6+aLz0ksvqVOnTvYlAwAAsJHHl7cmTZqk3r17a9u2bTp37pyef/55bdu2TevWrdPHH39cGRkBAAAum8dnejp37qzc3FydO3dOrVq10vvvv6+IiAhlZ2erXbt2lZERAADgspXrTE9aWprGjx+v2rVra82aNUpMTFRWVlZlZwMAALBNuc70TJs2TcePH5ck9ejRQ0eOHKnUUAAAAHYr15meuLg4/f3vf1fPnj1lWZays7NVr169Mvft2rWrrQEBAADsUK7S88wzz+ihhx5SZmamHA6H/vd//7fM/RwOh4qLi20NCAAAYIdylZ5+/fqpX79+On78uMLCwrRjx44yP6sHAADAV3n0lvU6depo1apVaty4sQIDPX63OwAAgNd43Fy6devm/vPp06d15syZUtvDwsIuPxUAAIDNKvQt60OGDFFERIRq166tevXqlVoAAAB8kcelJz09XR999JFmzJghp9Op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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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Yq1Zs8basWNHMU9eMrm7P+bMmWM5nU5rzpw51pEjR6wvv/zSioiIsAYPHlzMk5csX3zxhTVixAjr008/tSRZixYtuun6qampVtmyZa3ExERr79691pQpUyw/Pz9r2bJlbj2uz0dPkyZNrISEBNf1vLw8KzIy0kpOTr7u+t26dbM6duxYYFnTpk2tAQMGFOmcJnB3X/zalStXrODgYGv27NlFNaIxCrMvrly5YsXFxVnvvvuu1bt3b6LHJu7ui2nTplk1atSwcnNzi2tEo7i7PxISEqz//u//LrAsMTHRat68eZHOaZJbiZ6hQ4dasbGxBZZ1797dateunVuP5dMvb+Xm5mrbtm2Kj493LStVqpTi4+O1adOm626zadOmAutLUrt27W64Pm5NYfbFr124cEGXL1+29cvlTFTYfTFmzBiFhYXp6aefLo4xjVCYffHZZ5+pWbNmSkhIUHh4uOrWravx48crLy+vuMYusQqzP+Li4rRt2zbXS2Cpqan64osv1KFDh2KZGb+w63e3T3wi84389NNPysvLu+YrKcLDw/Xdd99dd5v09PTrrp+enl5kc5qgMPvi14YNG6bIyMhr/sOGewqzL9avX6/33ntPO3bsKIYJzVGYfZGamqpVq1apZ8+e+uKLL3To0CE999xzunz5skaNGlUcY5dYhdkfjz32mH766Se1aNFClmXpypUreuaZZ/TnP/+5OEbG/+dGv7uzsrJ08eJFlSlT5pbux6eP9KDkmDBhgubNm6dFixYpMDDQ0+MY5dy5c+rVq5dmzpypypUre3oc4+Xn5yssLEwzZsxQo0aN1L17d40YMULTp0/39GhGWrNmjcaPH6//+7//U0pKij799FMtXbpUY8eO9fRoKASfPtJTuXJl+fn5KSMjo8DyjIwMValS5brbVKlSxa31cWsKsy+umjRpkiZMmKCvvvpK9evXL8oxjeDuvjh8+LC+//57derUybUsPz9fkuTv76/9+/erZs2aRTt0CVWYvxcREREqXbq0/Pz8XMvuuusupaenKzc3VwEBAUU6c0lWmP0xcuRI9erVS3379pUk1atXT+fPn1f//v01YsQIlSrFsYPicKPf3SEhIbd8lEfy8SM9AQEBatSokVauXOlalp+fr5UrV6pZs2bX3aZZs2YF1pekFStW3HB93JrC7AtJmjhxosaOHatly5apcePGxTFqiefuvqhdu7Z2796tHTt2uC4PPfSQ2rRpox07digqKqo4xy9RCvP3onnz5jp06JArPCXpwIEDioiIIHhuU2H2x4ULF64Jm6tBavHVlcXGtt/d7p1j7X3mzZtnOZ1Oa9asWdbevXut/v37W+XLl7fS09Mty7KsXr16WUlJSa71N2zYYPn7+1uTJk2y9u3bZ40aNYq3rNvE3X0xYcIEKyAgwPr444+tkydPui7nzp3z1I9QYri7L36Nd2/Zx919cezYMSs4ONgaOHCgtX//fmvJkiVWWFiYNW7cOE/9CCWKu/tj1KhRVnBwsPWPf/zDSk1NtZYvX27VrFnT6tatm6d+hBLh3Llz1vbt263t27dbkqw333zT2r59u3X06FHLsiwrKSnJ6tWrl2v9q29ZHzJkiLVv3z5r6tSpZr5l3bIsa8qUKVa1atWsgIAAq0mTJtbXX3/tuq1Vq1ZW7969C6y/YMEC684777QCAgKs2NhYa+nSpcU8ccnlzr644447LEnXXEaNGlX8g5dA7v69+E9Ej73c3RcbN260mjZtajmdTqtGjRrWa6+9Zl25cqWYpy653Nkfly9ftl599VWrZs2aVmBgoBUVFWU999xz1s8//1z8g5cgq1evvu6//1ef+969e1utWrW6ZpsGDRpYAQEBVo0aNawPPvjA7cd1WBbH5wAAQMnn0+f0AAAA3CqiBwAAGIHoAQAARiB6AACAEYgeAABgBKIHAAAYgegBAABGIHoA+Izvv/9eDoeDb4MHUChEDwCv8eSTT8rhcLgulSpV0h//+Eft2rVLkhQVFaWTJ0+qbt26Hp4UgC8iegB4lT/+8Y86efKkTp48qZUrV8rf318PPvigpF++6LFKlSry9/f38JQAfBHRA8CrOJ1OValSRVWqVFGDBg2UlJSktLQ0/fjjj9e8vLVmzRo5HA6tXLlSjRs3VtmyZRUXF6f9+/e77m/nzp1q06aNgoODFRISokaNGmnr1q0e+ukAeBLRA8BrZWdn66OPPlJMTIwqVap0w/VGjBihv/zlL9q6dav8/f311FNPuW7r2bOnqlatqi1btmjbtm1KSkpS6dKli2N8AF6GY8QAvMqSJUsUFBQkSTp//rwiIiK0ZMkSlSp14/9He+2119SqVStJUlJSkjp27KhLly4pMDBQx44d05AhQ1S7dm1JUq1atYr+hwDglTjSA8CrtGnTRjt27NCOHTv0zTffqF27dmrfvr2OHj16w23q16/v+nNERIQk6dSpU5KkxMRE9e3bV/Hx8ZowYYIOHz5ctD8AAK9F9ADwKuXKlVNMTIxiYmJ077336t1339X58+c1c+bMG27zny9XORwOSVJ+fr4k6dVXX9WePXvUsWNHrVq1SnXq1NGiRYuK9ocA4JWIHgBezeFwqFSpUrp48WKh7+POO+/U4MGDtXz5cnXp0kUffPCBjRMC8BWc0wPAq+Tk5Cg9PV2S9PPPP+udd95Rdna2OnXq5PZ9Xbx4UUOGDFHXrl1VvXp1/fDDD9qyZYv+9Kc/2T02AB9A9ADwKsuWLXOdlxMcHKzatWtr4cKFat26tb7//nu37svPz0+nT5/WE088oYyMDFWuXFldunTR6NGji2ByAN7OYVmW5ekhAAAAihrn9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIzw/wD2vMOwjpVKeQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Class neighboring study...\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAGzCAYAAAAhax6pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA18UlEQVR4nO3deXgUVdr//08nhCYbkUBIiIDJILIqsiqyC4J50AEXEEQH0XH5GjbziEx0kMXRiCiigsDgT2AcUXAUVBxg2AQX1mBAkFXCIk4SFmVJoA1J/f5Q+rE7YelQoZqq9+u66romp6pP3dXH4e6zVJXLMAxDAADAMUKsDgAAAFxaJH8AAByG5A8AgMOQ/AEAcBiSPwAADkPyBwDAYUj+AAA4DMkfAACHIfkDAOAwJH840owZM+RyubRnzx6rQwGAS47kD9OdSaxntkqVKumaa67RwIEDlZuba3V4AOB4FawOAPY1ZswYJScn69SpU/ryyy81efJk/fvf/9bmzZsVERFhdXgA4Fgkf5SblJQUtWjRQpL05z//WVWrVtX48eP18ccfq2/fvhdVd0FBAT8gfmMYhk6dOqXw8HCrQ7FMfn6+IiMjrQ4DuGww7I9L5uabb5YkZWdne8v++c9/qnnz5goPD1dsbKz69Omj/fv3+3yuY8eOaty4sTIzM9W+fXtFRETo6aefPue5tm3bpt69eysuLk7h4eGqV6+ennnmmXN+5uOPP1b37t2VmJgot9utOnXq6LnnnlNRUZHPcTt37tRdd92lhIQEVapUSTVr1lSfPn109OhR7zGLFy9W27ZtdcUVVygqKkr16tU7b8y//05atWqliIgIValSRe3bt9d//vMf7/6kpCTddtttWrRokVq0aKHw8HBNnTpVkrR792716tVLsbGxioiI0I033qjPPvusxDneeOMNNWrUyHuOFi1aaNasWd79x48f19ChQ5WUlCS3263q1avrlltu0YYNG3zq+eCDD7ztV61aNd133306cOCAd//LL78sl8ulvXv3loghPT1dFStW1E8//eQtW7NmjW699VbFxMQoIiJCHTp00FdffeXzuVGjRsnlcum7777TvffeqypVqqht27aSpJycHA0YMEA1a9aU2+1WjRo11KNHD9Z2AH7o+eOS+f777yVJVatWlSQ9//zzGjFihHr37q0///nPOnjwoN544w21b99e33zzja644grvZw8fPqyUlBT16dNH9913n+Lj4896nk2bNqldu3YKCwvTI488oqSkJH3//ff69NNP9fzzz5/1czNmzFBUVJTS0tIUFRWlZcuW6dlnn9WxY8c0btw4SdIvv/yibt26yePxaNCgQUpISNCBAwc0f/58/fzzz4qJidGWLVt022236brrrtOYMWPkdru1a9euEkmsNKNHj9aoUaN00003acyYMapYsaLWrFmjZcuWqWvXrt7jtm/frr59++rRRx/Vww8/rHr16ik3N1c33XSTCgoKNHjwYFWtWlUzZ87UH//4R/3rX//SHXfcIUmaNm2aBg8erLvvvltDhgzRqVOntGnTJq1Zs0b33nuvJOmxxx7Tv/71Lw0cOFANGzbU4cOH9eWXX2rr1q1q1qyZ9/saMGCAWrZsqYyMDOXm5uq1117TV1995W2/3r1766mnntKcOXM0bNgwn2udM2eOunbtqipVqkiSli1bppSUFDVv3lwjR45USEiIpk+frptvvllffPGFWrVq5fP5Xr16qW7dunrhhRd05s3kd911l7Zs2aJBgwYpKSlJeXl5Wrx4sfbt26ekpKTzfv+AYxiAyaZPn25IMpYsWWIcPHjQ2L9/v/H+++8bVatWNcLDw40ffvjB2LNnjxEaGmo8//zzPp/99ttvjQoVKviUd+jQwZBkTJky5YLO3759eyM6OtrYu3evT3lxcXGJGLOzs71lBQUFJep69NFHjYiICOPUqVOGYRjGN998Y0gyPvjgg7Oe/9VXXzUkGQcPHrygeM/YuXOnERISYtxxxx1GUVHRWWO/6qqrDEnGwoULfY4ZOnSoIcn44osvvGXHjx83kpOTjaSkJG+dPXr0MBo1anTOWGJiYozU1NSz7v/ll1+M6tWrG40bNzZOnjzpLZ8/f74hyXj22We9Za1btzaaN2/u8/m1a9cakox//OMf3uurW7eu0a1bN59rLSgoMJKTk41bbrnFWzZy5EhDktG3b1+fOn/66SdDkjFu3LhzXhsAw2DYH+WmS5cuiouLU61atdSnTx9FRUVp7ty5uvLKK/XRRx+puLhYvXv31qFDh7xbQkKC6tatq+XLl/vU5Xa7NWDAgPOe8+DBg1q5cqUefPBB1a5d22efy+U652d/P2d+/PhxHTp0SO3atVNBQYG2bdsmSYqJiZEkLVq0SAUFBaXWc2bE4uOPP1ZxcfF5Yz5j3rx5Ki4u1rPPPquQEN//a/rHnpycrG7duvmU/fvf/1arVq28Q+CSFBUVpUceeUR79uzRd999543vhx9+0Lp1684ayxVXXKE1a9boxx9/LHX/+vXrlZeXp8cff1yVKlXylnfv3l3169f3mWq45557lJmZ6R35kaTZs2fL7XarR48ekqSsrCzt3LlT9957rw4fPuz97yE/P1+dO3fWypUrS3yXjz32mM/f4eHhqlixoj7//HOfqQQAJZH8UW4mTZqkxYsXa/ny5fruu++0e/dub8LauXOnDMNQ3bp1FRcX57Nt3bpVeXl5PnVdeeWVqlix4nnPuXv3bklS48aNA453y5YtuuOOOxQTE6PKlSsrLi5O9913nyR55/OTk5OVlpamt956S9WqVVO3bt00adIkn/n+e+65R23atNGf//xnxcfHq0+fPpozZ855fwh8//33CgkJUcOGDc8ba3JycomyvXv3ql69eiXKGzRo4N0vScOHD1dUVJRatWqlunXrKjU1tcSUxEsvvaTNmzerVq1aatWqlUaNGuX9bn9fV2nnq1+/vs8cf69evRQSEqLZs2dL+nWB4gcffKCUlBRVrlxZ0q//PUhS//79S/z38NZbb8nj8fh8x6V9B263W2PHjtWCBQsUHx+v9u3b66WXXlJOTk5pXyHgaCR/lJtWrVqpS5cu6tixoxo0aODTmy0uLpbL5dLChQu1ePHiEtuZBWxnlPdK9p9//lkdOnTQxo0bNWbMGH366adavHixxo4d6433jFdeeUWbNm3S008/rZMnT2rw4MFq1KiRfvjhB2+sK1eu1JIlS3T//fdr06ZNuueee3TLLbeUWDxYVhfzfTRo0EDbt2/X+++/r7Zt2+rDDz9U27ZtNXLkSO8xvXv31u7du/XGG28oMTFR48aNU6NGjbRgwYKAz5eYmKh27dppzpw5kqTVq1dr3759uueee7zHnPl+x40bV+p/D4sXL1ZUVJRPvaV9B0OHDtWOHTuUkZGhSpUqacSIEWrQoIG++eabgOMGbM3qeQfYz5n59HXr1p31mJdeesmQZGzfvv289XXo0OG8c9Rn5OXlGZKMIUOGXFCMZ+b8586da0gyVqxY4XPc3//+d0OSsXz58rPW9dVXXxmSjGeeeeasxzz//POGJGPx4sVnPWbcuHGGJOObb745Z+xXXXWV0b179xLl11xzjdGqVasS5S+++KIhyfj2229Lrc/j8Rjdu3c3QkNDfebvfy83N9e48sorjTZt2hiGYRhff/21Icl48803SxzboEGDEnP8b775piHJ2LZtmzFkyBAjIiLCOHHihHf/mTUAU6dOPfuF/+bMnP+FrKnYsWOHERERYfTr1++8xwJOQs8flrjzzjsVGhqq0aNHe1dqn2EYhg4fPlymeuPi4tS+fXu9/fbb2rdvX4l6zyY0NLTEMb/88ovefPNNn+OOHTum06dP+5Rde+21CgkJkcfjkSQdOXKkRP3XX3+9JHmPKU3Pnj0VEhKiMWPGlJgiOFfsZ/zP//yP1q5dq1WrVnnL8vPz9fe//11JSUne6QT/77ZixYpq2LChDMNQYWGhioqKSgyxV69eXYmJid74W7RooerVq2vKlCk+17RgwQJt3bpV3bt39/n8XXfdpdDQUL333nv64IMPdNttt/ncl9+8eXPVqVNHL7/8sk6cOFHi2g4ePHje6y8oKNCpU6d8yurUqaPo6Ohzfu+AE3GrHyxRp04d/e1vf1N6err27Nmjnj17Kjo6WtnZ2Zo7d64eeeQRPfnkk2Wq+/XXX1fbtm3VrFkzPfLII0pOTtaePXv02WefKSsrq9TP3HTTTapSpYr69++vwYMHy+Vy6Z133imRdJctW6aBAweqV69euuaaa3T69Gm98847Cg0N1V133SXp1ycbrly5Ut27d9dVV12lvLw8vfnmm6pZs6bPYjx/V199tZ555hk999xzateune6880653W6tW7dOiYmJysjIOOd1/+Uvf9F7772nlJQUDR48WLGxsZo5c6ays7P14YcfeqddunbtqoSEBLVp00bx8fHaunWrJk6cqO7duys6Olo///yzatasqbvvvltNmjRRVFSUlixZonXr1umVV16RJIWFhWns2LEaMGCAOnTooL59+3pv9UtKStITTzzhE1v16tXVqVMnjR8/XsePH/cZ8pekkJAQvfXWW0pJSVGjRo00YMAAXXnllTpw4ICWL1+uypUr69NPPz3n9e/YsUOdO3dW79691bBhQ1WoUEFz585Vbm6u+vTpc87PAo5j4agDbOpChv3P+PDDD422bdsakZGRRmRkpFG/fn0jNTXVZzogkGH/MzZv3mzccccdxhVXXGFUqlTJqFevnjFixIgSMf7+Vr+vvvrK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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Class homogeneity study...\n", + "KMeans Elbow\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABJSklEQVR4nO3deXhTZcL+8TtJ27R0oy10g1LKWiiLKIIsg6CIL4OIM4KKirjriKOIovKbF3XcGGScwYXXbRjEBTcUdGAQUQFF2bHIJjulAmWn6UK35Pz+aBuoUCglyUna7+e6cmHOOUnuVm1vzvOc51gMwzAEAAAQgKxmBwAAAKgtigwAAAhYFBkAABCwKDIAACBgUWQAAEDAosgAAICARZEBAAABiyIDAAACFkUGAAAELIoMANM0b95ct956q9kxAAQwigwAj9u+fbvuuecetWjRQqGhoYqKilKvXr300ksv6fjx42bHO6vi4mI99thjSk5OVlhYmLp3764FCxaYHQvAaQSZHQBA3TJ37lwNGzZMdrtdt9xyizp06KCSkhItWbJEY8eO1YYNG/Tmm2+aHfOMbr31Vs2cOVOjR49W69at9fbbb+v3v/+9Fi5cqN69e5sdD8BJLNw0EoCn7Ny5U506dVLTpk317bffKikpqcr+bdu2ae7cuXrwwQcllQ8t9e3bV2+//bYJaU9vxYoV6t69uyZNmqRHHnlEklRUVKQOHTooPj5eP/74o8kJAZyMoSUAHvPCCy8oPz9fU6dOPaXESFKrVq3cJeZ0jhw5okceeUQdO3ZURESEoqKiNHDgQK1du/aUY1955RVlZGSoQYMGiomJUdeuXTVjxgz3/ry8PI0ePVrNmzeX3W5XfHy8rrjiCq1Zs+aMX8PMmTNls9l09913u7eFhobqjjvu0NKlS5WdnV2TbwUAH2FoCYDH/Oc//1GLFi3Us2fPWr1+x44dmj17toYNG6a0tDTt379fb7zxhi699FJt3LhRycnJkqS33npLDzzwgIYOHaoHH3xQRUVF+vnnn7V8+XLdeOONkqR7771XM2fO1P3336/27dvr8OHDWrJkiTZt2qQLL7yw2gw//fST2rRpo6ioqCrbu3XrJknKzMxUSkpKrb4+AJ5HkQHgEQ6HQ3v27NGQIUNq/R4dO3bUli1bZLWeOFk8YsQIpaena+rUqRo/fryk8nk4GRkZ+uSTT6p9r7lz5+quu+7Siy++6N726KOPnjXDvn37Tns2qXLb3r17a/z1APA+hpYAeITD4ZAkRUZG1vo97Ha7u8Q4nU4dPnxYERERatu2bZUhoYYNG+rXX3/VypUrq32vhg0bavny5edcPI4fPy673X7K9tDQUPd+AP6DIgPAIyqHYvLy8mr9Hi6XS//85z/VunVr2e12NWrUSI0bN9bPP/+s3Nxc93GPPfaYIiIi1K1bN7Vu3VqjRo3SDz/8UOW9XnjhBa1fv14pKSnq1q2bnnrqKe3YseOsGcLCwlRcXHzK9qKiIvd+AP6DIgPAI6KiopScnKz169fX+j2ef/55jRkzRn369NF7772n+fPna8GCBcrIyJDL5XIf165dO23evFkffvihevfurU8//VS9e/fWk08+6T7muuuu044dO/TKK68oOTlZkyZNUkZGhubNm3fGDElJSdq3b98p2yu3Vc7TAeAfKDIAPOaqq67S9u3btXTp0lq9fubMmerXr5+mTp2qG264QQMGDFD//v117NixU44NDw/X9ddfr2nTpmn37t0aNGiQnnvuOfeZE6m8lNx3332aPXu2du7cqbi4OD333HNnzHDBBRdoy5Yt7qGySsuXL3fvB+A/KDIAPObRRx9VeHi47rzzTu3fv/+U/du3b9dLL71U7ettNpt+u7TVJ598oj179lTZdvjw4SrPQ0JC1L59exmGodLSUjmdzipDUZIUHx+v5OTk0w4bnWzo0KFyOp1VFu0rLi7WtGnT1L17d65YAvwMVy0B8JiWLVtqxowZuv7669WuXbsqK/v++OOP+uSTT854b6WrrrpKTz/9tG677Tb17NlT69at0/vvv68WLVpUOW7AgAFKTExUr169lJCQoE2bNunVV1/VoEGDFBkZqWPHjqlp06YaOnSoOnfurIiICH399ddauXJllauYTqd79+4aNmyYxo0bpwMHDqhVq1aaPn26du3apalTp3ri2wTAkwwA8LAtW7YYd911l9G8eXMjJCTEiIyMNHr16mW88sorRlFRkfu41NRUY+TIke7nRUVFxsMPP2wkJSUZYWFhRq9evYylS5cal156qXHppZe6j3vjjTeMPn36GHFxcYbdbjdatmxpjB071sjNzTUMwzCKi4uNsWPHGp07dzYiIyON8PBwo3Pnzsb//d//1Sj/8ePHjUceecRITEw0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/LMpMnXEqFGjtH79elP/Bte2bVtlZmYqNzdXM2fO1MiRI7V48WKflpns7Gw9+OCDWrBgwSl/w/W1k/9m36lTJ3Xv3l2pqan6+OOPdccdd/gsh8vlUteuXfX8889Lkrp06aL169fr9ddfN7XITJ06VQMHDvTtWPpJPv74Y73//vuaMWOGMjIylJmZqdGjRys5Odnn35d3331Xt99+u5o0aSKbzaYLL7xQw4cP1+rVq32aA+emtLRU1113nQzD0GuvvWZKhn79+ikzM1OHDh3SW2+9peuuu07Lly9XfHy8zzKsXr1aL730ktasWWPK2VWGluqA+++/X3PmzNHChQvVtGlT03KEhISoVatWuuiiizRhwgR17txZL730kk8zrF69WgcOHNCFF16ooKAgBQUFafHixXr55ZcVFBQkp9Pp0zwna9iwodq0aaNt27b59HOTkpJOKZPt2rUzZZirUlZWlr7++mvdeeedpmUYO3asHn/8cd1www3q2LGjRowYoYceekgTJkzweZaWLVtq8eLFys/PV3Z2tlasWKHS0lK1aNHC51kqJSYmSpL2799fZfv+/fvd++qzyhKTlZWlBQsWmHI2RpLCw8PVqlUrXXLJJZo6daqCgoI0depUn2b4/vvvdeDAATVr1sz9czcrK0sPP/ywmjdv7vXPp8gEMMMwdP/992vWrFn69ttvlZaWZnakKlwul4qLi336mZdffrnWrVunzMxM96Nr16666aablJmZKZvN5tM8J8vPz9f27duVlJTk08/t1avXKZflb9myRampqT7NcbJp06YpPj5egwYNMi1DYWGhrNaqPwJtNptcLpdJicp/KSUlJeno0aOaP3++hgwZYlqWtLQ0JSYm6ptvvnFvczgcWr58uWlz3/xFZYnZunWrvv76a8XFxZkdyc2Mn7sjRozQzz//XOXnbnJyssaOHav58+d7/fMZWqqF/Pz8Kn+r3rlzpzIzMxUbG6tmzZr5LMeoUaM0Y8YMff7554qMjHSPW0dHRyssLMxnOSRp3LhxGjhwoJo1a6a8vDzNmDFDixYt8sl/xCeLjIw8ZY5QeHi44uLifD536JFHHtHgwYOVmpqqvXv36sknn5TNZtPw4cN9muOhhx5Sz5499fzzz+u6667TihUr9Oabb+rNN9/0aY5KLpdL06ZN08iRIxUUZN6PoMGDB+u5555Ts2bNlJGRoZ9++kn/+Mc/dPvtt/s8y/z582UYhtq2batt27Zp7NixSk9P12233ebVzz3bz7LRo0fr2WefVevWrZWWlqbx48crOTlZ11xzjc+zHDlyRLt373av11JZzhMTEz1+huhMWZKSkjR06FCtWbNGc+bMkdPpdP/sjY2NVUhIiE9yxMXF6bnnntPVV1+tpKQkHTp0SFOmTNGePXu8spzB2f79/LbMBQcHKzExUW3btvV4llP45NqoOmbhwoWGpFMeI0eO9GmO02WQZEybNs2nOQzDMG6//XYjNTXVCAkJMRo3bmxcfvnlxldffeXzHKdj1uXX119/vZGUlGSEhIQYTZo0Ma6//npj27ZtPs9hGIbxn//8x+jQoYNht9uN9PR048033zQlh2EYxvz58w1JxubNm03LYBiG4XA4jAcffNBo1qyZERoaarRo0cL4y1/+YhQXF/s8y0cffWS0aNHCCAkJMRITE41Ro0YZx44d8/rnnu1nmcvlMsaPH28kJCQYdrvduPzyy7327+1sWaZNm3ba/U8++aRPs1Re/n26x8KFC32W4/jx48Yf/vAHIzk52QgJCTGSkpKMq6++2lixYoVHM9Qky+n48vJri2GYsIwlAACABzBHBgAABCyKDAAACFgUGQAAELAoMgAAIGBRZAAAQMCiyAAAgIBFkQEAAAGLIgPAFBaLRbNnzzY7BoAAR5EB4BU5OTn685//rBYtWshutyslJUWDBw+ucu8eT1m0aJEsFouOHTvm8fcG4N+41xIAj9u1a5d69eqlhg0batKkSerYsaNKS0s1f/58jRo1Sr/88ovZEU/LMAw5nU5T7wEF4NxwRgaAx913332yWCxasWKFrr32WrVp00YZGRkaM2aMli1bdsrxpzujkpmZKYvFol27dkmSsrKyNHjwYMXExCg8PFwZGRn673//q127dqlfv36SpJiYGFksFt16662Sym9QOWHCBKWlpSksLEydO3fWzJkzT/ncefPm6aKLLpLdbteSJUu0du1a9evXT5GRkYqKitJFF12kVatWee37BaD2+GsHAI86cuSIvvzySz333HMKDw8/ZX/Dhg1r9b6jRo1SSUmJvvvuO4WHh2vjxo2KiIhQSkqKPv30U1177bXavHmzoqKi3Hd/nzBhgt577z29/vrrat26tb777jvdfPPNaty4sS699FL3ez/++OP6+9//rhYtWigmJkZ9+vRRly5d9Nprr8lmsykzM1PBwcG1yg3AuygyADxq27ZtMgxD6enpHn3f3bt369prr1XHjh0lSS1atHDvi42NlSTFx8e7i1JxcbGef/55ff311+rRo4f7NUuWLNEbb7xRpcg8/fTTuuKKK6p81tixY91fQ+vWrT36tQDwHIoMAI8yDMMr7/vAAw/oT3/6k7766iv1799f1157rTp16lTt8du2bVNhYWGVgiJJJSUl6tKlS5VtXbt2rfJ8zJgxuvPOO/Xuu++qf//+GjZsmFq2bOm5LwaAxzBHBoBHtW7dWhaL5Zwm9Fqt5T+KTi5BpaWlVY658847tWPHDo0YMULr1q1T165d9corr1T7nvn5+ZKkuXPnKjMz0/3YuHFjlXkykk4ZAnvqqae0YcMGDRo0SN9++63at2+vWbNm1fjrAeA7FBkAHhUbG6srr7xSU6ZMUUFBwSn7T3eJdOPGjSVJ+/btc2/LzMw85biUlBTde++9+uyzz/Twww/rrbfekiSFhIRIkpxOp/vY9u3by263a/fu3WrVqlWVR0pKylm/jjZt2uihhx7SV199pT/+8Y+aNm3aWV8DwPcoMgA8bsqUKXI6nerWrZs+/fRTbd26VZs2bdLLL7/snq9ysspy8dRTT2nr1q2aO3euXnzxxSrHjB49WvPnz9fOnTu1Zs0aLVy4UO3atZMkpaamymKxaM6cOTp48KDy8/MVGRmpRx55RA899JCmT5+u7du3a82aNXrllVc0ffr0arMfP35c999/vxYtWqSsrCz98MMPWrlypfuzAPgZAwC8YO/evcaoUaOM1NRUIyQkxGjSpIlx9dVXGwsXLjQMwzAkGbNmzXIfv2TJEqNjx45GaGio8bvf/c745JNPDEnGzp07DcMwjPvvv99o2bKlYbfbjcaNGxsjRowwDh065H79008/bSQmJhoWi8UYOXKkYRiG4XK5jMmTJxtt27Y1goODjcaNGxtXXnmlsXjxYsMwDGPhwoWGJOPo0aPu9ykuLjZuuOEGIyUlxQgJCTGSk5ON+++/3zh+/Lg3v10AasliGF6amQcAAOBlDC0BAICARZEBAAABiyIDAAACFkUGAAAELIoMAAAIWBQZAAAQsCgyAAAgYFFkAABAwKLIAACAgEWRAQAAAYsiAwAAAhZFBgAABKz/D1EaQoDLMXhxAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABKTUlEQVR4nO3dd3hUZcL+8XsyyUzCpJCEVAi9JhQFxKUooAg/lkXdBSwvIuq6a8GCuKi8u9iVRV9XFHlVfF11VawIdhGkiXQiCKFXaQk9k15mzu+PJAORACFM5swk3891zRXmnDMzd9g1uTnPc85jMQzDEAAAQAAKMjsAAABATVFkAABAwKLIAACAgEWRAQAAAYsiAwAAAhZFBgAABCyKDAAACFgUGQAAELAoMgAAIGBRZACYpnnz5rrlllvMjgEggFFkAHjdjh07dMcdd6hly5YKDQ1VZGSkevfurZdeekkFBQVmxzurVatW6Z577lFaWpocDoeaNm2q6667Tlu3bjU7GoAqBJsdAEDd8vXXX2vEiBGy2+26+eab1bFjRxUXF2vJkiUaP368MjIyNH36dLNjntHkyZP1008/acSIEercubMyMzP1yiuvqGvXrlq+fLk6duxodkQAp7CwaCQAb9m1a5c6d+6sJk2aaP78+UpKSqq0f/v27fr66691//33SyobWurXr5/efvttE9JWbenSperevbtsNptn27Zt29SpUycNHz5c7733nonpAPwWQ0sAvOa5555Tbm6u3nzzzdNKjCS1bt3aU2KqcuzYMf3tb39Tp06dFB4ersjISA0ePFjr1q077dipU6cqLS1NDRo0UHR0tLp3764ZM2Z49ufk5Gjs2LFq3ry57Ha74uPjddVVVyk9Pf2s30OvXr0qlRhJatOmjdLS0rRp06Zz/RUA8DGGlgB4zZdffqmWLVuqV69eNXr9zp07NXv2bI0YMUItWrRQVlaWXn/9dfXt21cbN25UcnKyJOmNN97Qfffdp+HDh+v+++9XYWGhfvnlF61YsUL/9V//JUm688479emnn+qee+5Ramqqjh49qiVLlmjTpk3q2rXreeUyDENZWVlKS0ur0fcFoPZQZAB4hdPp1P79+3XNNdfU+D06deqkrVu3Kijo5MniUaNGqX379nrzzTc1ceJESWXzcNLS0vTJJ5+c8b2+/vpr/eUvf9ELL7zg2fbQQw/VKNf777+v/fv368knn6zR6wHUHoaWAHiF0+mUJEVERNT4Pex2u6fEuFwuHT16VOHh4WrXrl2lIaGGDRtq3759WrVq1Rnfq2HDhlqxYoUOHDhQ4zyStHnzZo0ZM0Y9e/bU6NGjL+i9AHgfRQaAV0RGRkoqm5tSU263Wy+++KLatGkju92uRo0aKS4uTr/88ouys7M9xz388MMKDw9Xjx491KZNG40ZM0Y//fRTpfd67rnntGHDBqWkpKhHjx56/PHHtXPnzvPKk5mZqSFDhigqKkqffvqprFZrjb83ALWDIgPAKyIjI5WcnKwNGzbU+D2effZZjRs3Tpdffrnee+89zZkzR3PnzlVaWprcbrfnuA4dOmjLli368MMP1adPH82cOVN9+vTRY4895jnmuuuu086dOzV16lQlJyfr+eefV1pamr799ttqZcnOztbgwYN14sQJfffdd575OQD8C5dfA/CaO+64Q9OnT9fSpUvVs2fPcx7/28uvL7roIsXExGj+/PmVjmvSpIlat26thQsXVvk+xcXF+tOf/qTvvvtOubm5Cg0NPe2YQ4cOqWvXrmrevLmWLFly1lyFhYUaOHCg1qxZo3nz5lXrewFgDs7IAPCahx56SA6HQ7fffruysrJO279jxw699NJLZ3y91WrVb/9t9cknn2j//v2Vth09erTSc5vNptTUVBmGoZKSErlcrkpDUZIUHx+v5ORkFRUVnfV7cLlcuv7667Vs2TJ98sknlBjAz3HVEgCvadWqlWbMmKHrr79eHTp0qHRn36VLl+qTTz4569pKf/jDH/Tkk0/q1ltvVa9evbR+/Xq9//77atmyZaXjBg4cqMTERPXu3VsJCQnatGmTXnnlFQ0ZMkQRERE6ceKEmjRpouHDh6tLly4KDw/XvHnztGrVqkpXMVXlwQcf1BdffKGhQ4fq2LFjp90A76abbqrx3w+AWmAAgJdt3brV+Mtf/mI0b97csNlsRkREhNG7d29j6tSpRmFhoee4Zs2aGaNHj/Y8LywsNB588EEjKSnJCAsLM3r37m0sW7bM6Nu3r9G3b1/Pca+//rpx+eWXG7GxsYbdbjdatWpljB8/3sjOzjYMwzCKioqM8ePHG126dDEiIiIMh8NhdOnSxfjf//3fc2bv27evIemMDwD+hTkyAAAgYDFHBgAABCyKDAAACFgUGQAAELBMLTKLFy/W0KFDlZycLIvFotmzZ5/x2DvvvFMWi0VTpkzxWT4AAODfTC0yeXl56tKli6ZNm3bW42bNmqXly5dzZ00AAFCJqfeRGTx4sAYPHnzWY/bv3697771Xc+bM0ZAhQ3yUDAAABAK/viGe2+3WqFGjNH78eKWlpdX4PQ4cOKCIiAhZLBYvJwQAALXBMAzl5OQoOTlZQUFnHkDy6yIzefJkBQcH67777qv2a4qKiirdgnz//v1KTU2tjXgAAKCW7d27V02aNDnjfr8tMmvWrNFLL72k9PT08zqTMmnSJD3xxBOnbd+7d68iIyO9GREAANQSp9OplJQURUREnPU4v7mzr8Vi0axZs3TttddKkqZMmaJx48ZVOp3kcrkUFBSklJQU7d69u8r3+e0ZmYq/iOzsbIoMAAABwul0Kioq6py/v/32jMyoUaM0YMCAStsGDRqkUaNG6dZbbz3j6+x2u+x2e23HAwAAfsDUIpObm6vt27d7nu/atUtr165VTEyMmjZtqtjY2ErHh4SEKDExUe3atfN1VAAA4IdMLTKrV69W//79Pc/HjRsnSRo9erTefvttk1IBAIBAYWqR6devn85nis6Z5sUAAID6ibWWAABAwKLIAACAgEWRAQAAAYsiAwAAAhZFBgAABCyKDAAACFgUGQAAELAoMgAAIGBRZGrI7Ta043CujuQWnftgAABQKygyNTRmRrqufGGRvlp3wOwoAADUWxSZGmoTHy5JyjjgNDkJAAD1F0WmhlKToyRJGw9SZAAAMAtFpobSkiMlSVuzclRc6jY5DQAA9RNFpoaaRIcpIjRYJS5D2w/lmh0HAIB6iSJTQxaLRalJZWdlGF4CAMAcFJkLkFY+TybjQLbJSQAAqJ8oMhcgtXyezEauXAIAwBQUmQtw6tCSYRgmpwEAoP6hyFyA1vHhslmDlFNYqn3HC8yOAwBAvUORuQC24CC1Sai4MR7zZAAA8DWKzAVKY54MAACmochcoIp5MixVAACA71FkLlBaY5YqAADALBSZC9Q+MUKSdDC7UMfyik1OAwBA/UKRuUARoSFqHttAEvNkAADwNYqMF3hujHeQK5cAAPAliowXMOEXAABzUGS8oGLNJYaWAADwLYqMF1QMLe04nKuCYpfJaQAAqD8oMl4QH2FXo3Cb3Ia0JSvH7DgAANQbFBkvsFgs6pDEHX4BAPA1ioyXVMyTYc0lAAB8hyLjJScvweaMDAAAvkKR8ZKKS7A3H8yRy22YnAYAgPqBIuMlLRo5FBZiVUGJS7uO5JkdBwCAeoEi4yXWIIvaJ5Wtu8Q8GQAAfIMi40VpzJMBAMCnKDJelJrEHX4BAPAliowXec7IHHDKMJjwCwBAbaPIeFG7xAgFWaSjecU6lFNkdhwAAOo8U4vM4sWLNXToUCUnJ8tisWj27NmefSUlJXr44YfVqVMnORwOJScn6+abb9aBAwfMC3wOoSFWtYoLl8SEXwAAfMHUIpOXl6cuXbpo2rRpp+3Lz89Xenq6Jk6cqPT0dH322WfasmWLrr76ahOSVt+pw0sAAKB2BZv54YMHD9bgwYOr3BcVFaW5c+dW2vbKK6+oR48e+vXXX9W0aVNfRDxvqcmRmr32gDIoMgAA1DpTi8z5ys7OlsViUcOGDc94TFFRkYqKTs5PcTp9Wygq1lziEmwAAGpfwEz2LSws1MMPP6wbb7xRkZGRZzxu0qRJioqK8jxSUlJ8mPLkUgV7jubLWVji088GAKC+CYgiU1JSouuuu06GYejVV18967ETJkxQdna257F3714fpSwT7bApOSpUUtm6SwAAoPb4/dBSRYnZs2eP5s+ff9azMZJkt9tlt9t9lK5qqcmROpBdqI0HstWjRYypWQAAqMv8+oxMRYnZtm2b5s2bp9jYWLMjVUtq+TwZJvwCAFC7TD0jk5ubq+3bt3ue79q1S2vXrlVMTIySkpI0fPhwpaen66uvvpLL5VJmZqYkKSYmRjabzazY51QxT4YJvwAA1C5Ti8zq1avVv39/z/Nx48ZJkkaPHq3HH39cX3zxhSTpoosuqvS6BQsWqF+/fr6Ked4q7iWzNStHxaVu2YL9+sQXAAABy9Qi069fv7OuSRSo6xU1iQ5TRGiwcgpLtf1QrlKTzz6vBwAA1AynCmqBxWLxDC+xVAEAALWHIlNLuDEeAAC1jyJTS1JZcwkAgFpHkaklnsUjDzoDdq4PAAD+jiJTS1rFhctmDVJOYan2HS8wOw4AAHUSRaaW2IKD1CYhXBITfgEAqC0UmVqUxjwZAABqFUWmFp28BJsiAwBAbaDI1KK0xlyCDQBAbaLI1KL2iRGSpIPZhTqWV2xyGgAA6h6KTC2KCA1R89gGkpgnAwBAbaDI1DLPjfEOcuUSAADeRpGpZRVLFTDhFwAA76PI1LKKK5cYWgIAwPsoMrWsYmhpx+FcFRS7TE4DAEDdQpGpZfERdjUKt8ltSFuycsyOAwBAnUKRqWUWi0UdPDfGY8IvAADeRJHxgYoJv8yTAQDAuygyPnDyEmyKDAAA3kSR8YGKxSM3H8yRy22YnAYAgLqDIuMDzWMdCguxqqDEpV1H8syOAwBAnUGR8QFrkEXtk8rWXWLCLwAA3kOR8ZE05skAAOB1FBkfSU3iyiUAALyNIuMjnjMyB5wyDCb8AgDgDRQZH2mXGCFrkEVH84p1KKfI7DgAANQJFBkfCQ2xqlWcQxITfgEA8BaKjA+xEjYAAN5FkfGhiqUKMigyAAB4BUXGh1iqAAAA76LI+FDF0NKeo/lyFpaYnAYAgMBHkfGhaIdNyVGhksrWXQIAABeGIuNjnuElrlwCAOCCUWR8LJUJvwAAeA1Fxsc8l2Az4RcAgAtGkfGxiqUKtmblqLjUbXIaAAACG0XGx5pEhykiNFglLkPbD+WaHQcAgIBGkfExi8XiGV5iqQIAAC4MRcYEFXf4ZZ4MAAAXhiJjgopLsLlyCQCAC2NqkVm8eLGGDh2q5ORkWSwWzZ49u9J+wzD06KOPKikpSWFhYRowYIC2bdtmTlgvqpjwu+mAU4ZhmJwGAIDAZWqRycvLU5cuXTRt2rQq9z/33HN6+eWX9dprr2nFihVyOBwaNGiQCgsLfZzUu1rHh8tmDVJOUan2HS8wOw4AAAEr2MwPHzx4sAYPHlzlPsMwNGXKFP3jH//QNddcI0n6z3/+o4SEBM2ePVs33HCDL6N6VYg1SG0Tw7Vhv1MZB7KVEtPA7EgAAAQkv50js2vXLmVmZmrAgAGebVFRUbr00ku1bNmyM76uqKhITqez0sMfeW6MxzwZAABqzG+LTGZmpiQpISGh0vaEhATPvqpMmjRJUVFRnkdKSkqt5qypNJYqAADggvltkampCRMmKDs72/PYu3ev2ZGq5Fk8kkuwAQCoMb8tMomJiZKkrKysStuzsrI8+6pit9sVGRlZ6eGP2idGSJIOZhfqWF6xyWkAAAhMfltkWrRoocTERP3www+ebU6nUytWrFDPnj1NTOYdEaEhah5bNsmXeTIAANSMqVct5ebmavv27Z7nu3bt0tq1axUTE6OmTZtq7Nixevrpp9WmTRu1aNFCEydOVHJysq699lrzQntRanKkdh/N18aD2erTppHZcQAACDimFpnVq1erf//+nufjxo2TJI0ePVpvv/22HnroIeXl5emvf/2rTpw4oT59+ui7775TaGioWZG9Ki05St+sz2TCLwAANWQx6vitZZ1Op6KiopSdne1382UWbD6kW99epTbx4Zo7rq/ZcQAA8BvV/f3tt3Nk6oOKpQp2HM5VQbHL5DQAAAQeioyJ4iLsahRuk9uQtmTlmB0HAICAQ5ExkcViUYekipWws01OAwBA4KHImKziDr9cgg0AwPmjyJiMO/wCAFBzFBmTVUz43XwwRy53nb6ADAAAr6PImKx5rENhIVYVlLi060ie2XEAAAgoFBmTWYMs6pBUtu4SE34BADg/FBk/wDwZAABqhiLjB7hyCQCAmqHI+IHU8nvJbDzgVB1fMQIAAK+iyPiBdokRsgZZdDSvWFnOIrPjAAAQMCgyfiA0xKpWcQ5J0saDTPgFAKC6KDJ+4tThJQAAUD0UGT9RMeE3gyIDAEC1UWT8BJdgAwBw/igyfqJiaGnP0Xw5C0tMTgMAQGCgyPiJaIdNyVGhksrWXQIAAOdGkfEjFcNLLFUAAED1UGT8SCp3+AUA4LxQZPyI5xJsJvwCAFAtFBk/klY+tLQ1K0fFpW6T0wAA4P8oMn6kSXSYIkODVeIytP1QrtlxAADwexQZP2KxWJjwCwDAeaDI+JnUpPIJv8yTAQDgnCgyfubkGRmKDAAA50KR8TMVE343HXDKMAyT0wAA4N8oMn6mdXy4bNYg5RSVat/xArPjAADg1ygyfibEGqS2ieGSmPALAMC5UGT8kOfGeMyTAQDgrCgyfiitfKkCJvwCAHB2FBk/VHHlEpdgAwBwdhQZP9ShfGjpYHahjuUVm5wGAAD/RZHxQ+H2YDWPbSCJeTIAAJwNRcZPsVQBAADnRpHxUxUTfpknAwDAmVFk/BSXYAMAcG4UGT9VsVTBjsO5Kih2mZwGAAD/RJHxU3ERdjUKt8ltSFuycsyOAwCAX/LrIuNyuTRx4kS1aNFCYWFhatWqlZ566ql6sZiixWJRqufGeEz4BQCgKsFmBzibyZMn69VXX9U777yjtLQ0rV69WrfeequioqJ03333mR2v1qUmRWrx1sPMkwEA4Az8usgsXbpU11xzjYYMGSJJat68uT744AOtXLnS5GS+cfISbIoMAABV8euhpV69eumHH37Q1q1bJUnr1q3TkiVLNHjw4DO+pqioSE6ns9IjUFVM+N2c6ZTLXfeH0wAAOF9+fUbmkUcekdPpVPv27WW1WuVyufTMM89o5MiRZ3zNpEmT9MQTT/gwZe1pHutQWIhVBSUu7TqSp9bx4WZHAgDAr/j1GZmPP/5Y77//vmbMmKH09HS98847+p//+R+98847Z3zNhAkTlJ2d7Xns3bvXh4m9yxpkUYekCElM+AUAoCp+fUZm/PjxeuSRR3TDDTdIkjp16qQ9e/Zo0qRJGj16dJWvsdvtstvtvoxZq1KTI5X+6wltPOjUNRc1NjsOAAB+xa/PyOTn5ysoqHJEq9Uqt9ttUiLf8yxVwIRfAABO49dnZIYOHapnnnlGTZs2VVpamn7++Wf961//0m233WZ2NJ85dakCwzBksVhMTgQAgP/w6yIzdepUTZw4UXfffbcOHTqk5ORk3XHHHXr00UfNjuYz7RIjZA2y6GhesbKcRUqMCjU7EgAAfsOvi0xERISmTJmiKVOmmB3FNKEhVrWKc2hrVq42HsymyAAAcAq/niODMqyEDQBA1SgyASDNs+YSRQYAgFNRZAJAxVIFGw9SZAAAOBVFJgBUDC3tOZovZ2GJyWkAAPAfFJkAEO2wKbl8ku/mgzkmpwEAwH9QZAJEqmeeDEsVAABQgSITIDzzZJjwCwCAB0UmQFTMk+HKJQAATrrgIrNnzx5t3LixXq1/ZIa08jMy2w7lqLiUv2sAAKTzKDL//ve/9a9//avStr/+9a9q2bKlOnXqpI4dO2rv3r1eD4gyTaLDFBkarBKXoe2Hcs2OAwCAX6h2kZk+fbqio6M9z7/77ju99dZb+s9//qNVq1apYcOGeuKJJ2olJCSLxeKZJ8OEXwAAylS7yGzbtk3du3f3PP/88891zTXXaOTIkerataueffZZ/fDDD7USEmVSk8quXOLGeAAAlKl2kSkoKFBkZKTn+dKlS3X55Zd7nrds2VKZmZneTYdK0pKZ8AsAwKmqXWSaNWumNWvWSJKOHDmijIwM9e7d27M/MzNTUVFR3k8Ij4qhpU0HnDIMw+Q0AACYL7i6B44ePVpjxoxRRkaG5s+fr/bt26tbt26e/UuXLlXHjh1rJSTKtI4Pl80apJyiUu09VqCmsQ3MjgQAgKmqXWQeeugh5efn67PPPlNiYqI++eSTSvt/+ukn3XjjjV4PiJNCrEFqmxiuDfud2ngwmyIDAKj3LEYdH6NwOp2KiopSdnZ2pTk+geqhT9fp49X7dN8VrTVuYDuz4wAAUCuq+/u72mdkqlJYWKiPPvpIeXl5GjhwoFq3bn0hb4dqSEuOkrSPCb8AAOg8isy4ceNUUlKiqVOnSpKKi4vVs2dPZWRkqEGDBnrooYc0d+5c9ezZs9bC4pQ1l7gEGwCA6l+19P333+uqq67yPH///fe1Z88ebdu2TcePH9eIESP09NNP10pInNShfM2lg9mFOpZXbHIaAADMVe0i8+uvvyo1NdXz/Pvvv9fw4cPVrFkzWSwW3X///fr5559rJSROCrcHq3n5JF9WwgYA1HfVLjJBQUGV7l2yfPly/e53v/M8b9iwoY4fP+7ddKhS2TwZlioAAKDaRaZDhw768ssvJUkZGRn69ddf1b9/f8/+PXv2KCEhwfsJcRrmyQAAUOa87iNzww036Ouvv1ZGRoZ+//vfq0WLFp7933zzjXr06FErIVFZavk8GYaWAAD1XbXPyPzxj3/UN998o86dO+uBBx7QRx99VGl/gwYNdPfdd3s9IE5XsebSjsO5Kih2mZwGAADzcEO8AGQYhi55Zp6O5BZr9pjeuiilodmRAADwqur+/q72GZlt27bpxhtvlNN5+nBGdna2/uu//ks7d+6sWVqcF4vFolQm/AIAUP0i8/zzzyslJaXKVhQVFaWUlBQ9//zzXg2HM2OeDAAA51FkFi1apBEjRpxx/3XXXaf58+d7JRTOrWKeDEsVAADqs/O6IV58fPwZ9zdq1Eh79+71SiicW8Ul2JsznXK56/Q0JwAAzqjaRSYqKko7duw44/7t27fXmcm0gaB5rEMNbFYVlri160iu2XEAADBFtYvM5Zdf7lkwsiovv/yyLrvsMq+EwrlZgyxqnxghieElAED9Ve0iM2HCBH377bcaPny4Vq5cqezsbGVnZ2vFihUaNmyY5syZowkTJtRmVvwGd/gFANR31b6z78UXX6xPP/1Ut912m2bNmlVpX2xsrD7++GN17drV6wFxZhVrLnHlEgCgvqp2kdm1a5f+8Ic/aM+ePZozZ462bdsmwzDUtm1bDRw4UA0aNKjNnKjCqZdgG4Yhi8ViciIAAHyr2kWmVatWatasmfr376/+/fvrxhtvVJMmTWozG86hXWKErEEWHc0rVpazSIlRoWZHAgDAp6o9R2b+/PkaPXq0du7cqb/+9a9q1qyZ2rRpozvuuEMffvihsrKyajMnqhAaYlWrOIckaeNB7vALAKh/qn1Gpl+/furXr58kqbCwUEuXLtXChQu1cOFCvfPOOyopKVH79u2VkZFRW1lRhbTkKG3NylXGfqeuaJ9gdhwAAHyq2kXmVKGhobriiivUp08f9e/fX99++61ef/11bd682dv5cA6pSZGa9fN+rlwCANRL51VkiouLtXz5ci1YsEALFy7UihUrlJKSossvv1yvvPKK+vbtW1s5cQZcgg0AqM+qPUfmiiuuUHR0tO6++24dOnRId9xxh3bs2KEtW7bojTfe0KhRo9S0aVOvB9y/f79uuukmxcbGKiwsTJ06ddLq1au9/jmBquLKpT1H85VdUGJyGgAAfKvaRebHH39UbGysrrjiCl155ZW66qqrlJSUVJvZdPz4cfXu3VshISH69ttvtXHjRr3wwguKjo6u1c8NJNEOm1qWT/idtmC7yWkAAPAti2EY1VpxMC8vTz/++KMWLlyoBQsWaO3atWrbtq369u2rfv36qW/fvoqLi/NquEceeUQ//fSTfvzxxxq/h9PpVFRUlLKzs+vsWlDzN2fptrdXK8gifXZ3b12U0tDsSAAAXJDq/v6udpH5rZycHC1ZssQzX2bdunVq06aNNmzYUOPQv5WamqpBgwZp3759WrRokRo3bqy7775bf/nLX874mqKiIhUVFXmeO51OpaSk1OkiI0kPfLRWs37er7YJ4fry3j6yB1vNjgQAQI1Vt8hUe2jptxwOh2JiYhQTE6Po6GgFBwdr06ZNNX27Ku3cuVOvvvqq2rRpozlz5uiuu+7Sfffdp3feeeeMr5k0aZKioqI8j5SUFK9m8leP/iFVjcJt2pqVq2kLzrxKOQAAdUm1z8i43W6tXr3aM7T0008/KS8vT40bN/bc7bd///5q1qyZ18LZbDZ1795dS5cu9Wy77777tGrVKi1btqzK19TXMzKS9PUvBzVmRrqCgyz68t4+6pBUt79fAEDdVd0zMtW+/Lphw4bKy8tTYmKi+vfvrxdffFH9+vVTq1atvBK4KklJSUpNTa20rUOHDpo5c+YZX2O322W322stkz/7fadEDUpL0JyMLD306S+adXcvBVtrfNINAAC/V+0i8/zzz6t///5q27ZtbeappHfv3tqyZUulbVu3bvXqWZ+6xGKx6KlrOmr5zmNavz9bb/y4S3f1q72iCQCA2ar9z/U77rjDpyVGkh544AEtX75czz77rLZv364ZM2Zo+vTpGjNmjE9zBJL4yFBN/EPZWawX523VjsO5JicCAKD2+PW4wyWXXKJZs2bpgw8+UMeOHfXUU09pypQpGjlypNnR/Nqwro3Vt22cikvdevjTX+R21+jCNAAA/F6NL78OFPXhPjJV2X+iQAP/tUh5xS49PjRVt/RuYXYkAACqrdYvv4Z/a9wwTI/8voMk6bk5W7T3WL7JiQAA8D6KTB02skdT9WgRo/xilyZ8tl51/OQbAKAeosjUYUFBFj03rLNCQ4K0ZPsRfbx6r9mRAADwKopMHde8kUMPXtVOkvT015uUmV1ociIAALyHIlMP3NanhbqkNFROYan+MZshJgBA3UGRqQesQRY9P7yzQqwWzdt0SF+sO2B2JAAAvIIiU0+0TYjQvVe0kSQ98eVGHc0tOscrAADwfxSZeuSufq3UPjFCx/KK9dgXGWbHAQDgglFk6pEQa5CeH95F1iCLvvrloL7PyDQ7EgAAF4QiU890ahKlv17eUpL0j9kblJ1fYnIiAABqjiJTD91/ZRu1jHPoUE6Rnv56o9lxAACoMYpMPRQaYtVzwzrLYpE+WbNPi7ceNjsSAAA1QpGpp7o3j9Hons0lSRM+W6/colJzAwEAUAMUmXps/KB2ahIdpv0nCvTcd5vNjgMAwHmjyNRjDnuwJg/rLEn6z7I9WrnrmMmJAAA4PxSZeq5360a64ZIUSdLDM39RYYnL5EQAAFQfRQb67yEdlBBp164jeXpx7laz4wAAUG0UGSgyNETPXNtJkvTGjzu1bu8JcwMBAFBNFBlIkgakJuiai5LlNqSHPv1FxaVusyMBAHBOFBl4PDY0TbEOm7Zk5Wjagu1mxwEA4JwoMvCIcdj0+NVpkqRpC7Zrc6bT5EQAAJwdRQaV/KFzkgamJqjUbeihT39RqYshJgCA/6LIoBKLxaKnr+2oyNBg/bIvW/+3ZJfZkQAAOCOKDE4THxmqf/whVZL04tyt2nk41+REAABUjSKDKo3o1kSXtWmkolK3Hp75i9xuw+xIAACchiKDKlksFk36Uyc5bFat2n1c7y7fY3YkAABOQ5HBGTWJbqCHB7eXJE3+brP2Hss3OREAAJVRZHBWN13aTD2axyi/2KX/nrVehsEQEwDAf1BkcFZBQRZNHt5Z9uAg/bjtiD5Zvc/sSAAAeFBkcE4tGjk07qq2kqSnvt6oLGehyYkAAChDkUG1/LlPC3VpEqWcwlL9fdYGhpgAAH6BIoNqCbYG6bnhXRRitWjepix9+ctBsyMBAECRQfW1S4zQmP6tJUmPf5Gho7lFJicCANR3FBmcl7v7tVb7xAgdyyvWE19uNDsOAKCeo8jgvNiCg/Tc8M4KskhfrDuguRuzzI4EAKjHKDI4b52bNNRfLm8pSfr7rPXKLigxOREAoL6iyKBGHhjQVi0bOXQop0jPfr3J7DgAgHqKIoMaCQ2xavLwzrJYpI9W79WP2w6bHQkAUA9RZFBjlzSP0c2/ayZJemTmeuUVlZqcCABQ3wRUkfnnP/8pi8WisWPHmh0F5R76f+3VuGGY9p8o0PNztpgdBwBQzwRMkVm1apVef/11de7c2ewoOIXDHqx/DuskSXp76W6t2n3M5EQAgPokIIpMbm6uRo4cqTfeeEPR0dFmx8FvXNYmTtd1byJJevjTX1RY4jI5EQCgvgiIIjNmzBgNGTJEAwYMOOexRUVFcjqdlR6ofX8fkqr4CLt2HsnT5O82sxYTAMAn/L7IfPjhh0pPT9ekSZOqdfykSZMUFRXleaSkpNRyQkhSVFiInvlj2RDTWz/t1hNfbpTbTZkBANQuvy4ye/fu1f3336/3339foaGh1XrNhAkTlJ2d7Xns3bu3llOiwlWpCXpsaKqksvkyYz9aq+JSt8mpAAB1mcXw4zGA2bNn649//KOsVqtnm8vlksViUVBQkIqKiirtq4rT6VRUVJSys7MVGRlZ25Eh6fO1+/Xgx+tU6jZ0WZtGeu2mbnLYg82OBQAIINX9/e3XRSYnJ0d79uyptO3WW29V+/bt9fDDD6tjx47nfA+KjDkWbT2su95bo/xil7qkNNRbt1yiGIfN7FgAgABR3d/ffj20FBERoY4dO1Z6OBwOxcbGVqvEwDx928bp/dsvVXSDEK3be0LDX1uq/ScKzI4FAKhj/LrIILBd3DRan9zZS8lRodp5OE/D/neptmblmB0LAFCH+PXQkjcwtGS+g9kFuvnNldp2KFdRYSH69y3d1a1ZjNmxAAB+rE4MLaFuSIoK0yd39lTXpg2VXVCikf+3Qgs2HzI7FgCgDqDIwCcaNrDpvdsvVb92cSoscev2/6zWZ+n7zI4FAAhwFBn4TANbsN64ubv+eHFjudyGxn28Tm8s3ml2LABAAKPIwKdCrEF6YUQX3d6nhSTpmW82adK3m1jSAABQIxQZ+FxQkEV/H9JBjwxuL0l6fdFOPfTpLyp1cRdgAMD5ocjAFBaLRXf2baXnhndWkEX6ZM0+3fneGhUUs3I2AKD6KDIw1XXdU/T6qO6yBwdp3qZDuvnfK5SdX2J2LABAgKDIwHRXpSbo3T9fqojQYK3afVzXvb5MWc5Cs2MBAAIARQZ+oUeLGH18R0/FR9i1JStHf/rfpdp5ONfsWAAAP0eRgd/okBSpmXf1UotGDu0/UaDhry3TL/tOmB0LAODHKDLwKykxDfTJnT3VqXGUjuUV68bpy7Vk2xGzYwEA/BRFBn6nUbhdH/z1d+rdOlZ5xS7d+vZKffXLAbNjAQD8EEUGfincHqx/33KJhnRKUonL0L0f/Kx3l+02OxYAwM9QZOC37MFWvXzjxRr1u2YyDGni5xl6ce5W7gIMAPCgyMCvWYMsevKaNI0d0EaS9NIP2/SP2RvkclNmAAAUGQQAi8WisQPa6qlrO8pikd5f8avu/SBdRaXcBRgA6juKDALGqN810ys3dpXNGqRv1mfq1rdWKaeQuwADQH1GkUFAGdI5SW/deokcNquW7jiqG99YrsM5RWbHAgCYhCKDgNO7dSN9+NeeinXYtGG/UyNeW6q9x/LNjgUAMAFFBgGpU5MofXpXLzWJDtPuo/n606tLtemg0+xYAAAfo8ggYLVo5NDMu3qpfWKEDucU6brXl2nFzqNmxwIA+BBFBgEtITJUH93RU5c0j1ZOYalG/Xulvs/INDsWAMBHKDIIeFFhIXr3z5dqQIcEFZe6ded7a/Txqr1mxwIA+ABFBnVCaIhVr93UVSO6NZHbkB6a+Yv+d+F27gIMAHUcRQZ1RrA1SM8N76w7+7aSJD333Rb95T9rtPtInsnJAAC1hSKDOsViseiRwe018Q+psgZZNG9Tlq56cZGe/WaTnNw8DwDqHIoM6qQ/92mhOWMvU9+2cSpxGZq+eKf6P79QM1b8yjpNAFCHWIw6PonA6XQqKipK2dnZioyMNDsOTLBgyyE9/dVG7ThcNsTUPjFCjw5NVa9WjUxOBgA4k+r+/qbIoF4ocbn13vI9mjJvm7ILyoaYBqYm6O9DOqhZrMPkdACA36LIlKPI4FTH84o1Zd5WvVc+xGSzBunW3s11zxWtFREaYnY8AEA5ikw5igyqsi0rR099vUmLtx6WJDUKt+nBge10XfcUWYMsJqcDAFBkylFkcCaGYWjhlsN66uuN2lk+f6ZDUqQe/UOqeraKNTkdANRvFJlyFBmcS4nLrXeX7dGUeVvlLCyVJA1KS9Dff5+qprENTE4HAPUTRaYcRQbVdax8/sz7p86f6dNc9/Rn/gwA+BpFphxFBudra1aOnvpqo37cdkRS2fyZvw1spxHMnwEAn6HIlKPIoCYMwyi//8wm7Sxf4iA1KVKPDk3V71oyfwYAahtFphxFBheiuNStd5fv0UunzJ/5f2mJ+u/fd2D+DADUIopMOYoMvOFYXrFenLtV76/YI7ch2axBuq1PC43p34r5MwBQCygy5Sgy8KYtmWXzZ5Zsr5g/Y9f4QW01vBvzZwDAmygy5Sgy8DbDMPTDpkN65ptN2lU+fyYtuez+M5cyfwYAvKK6v7/9evXrSZMm6ZJLLlFERITi4+N17bXXasuWLWbHQj1nsVg0IDVBc8Zern8M6aCI0GBlHHDq+unLdff7a7T3WL7ZEQGg3vDrIrNo0SKNGTNGy5cv19y5c1VSUqKBAwcqLy/P7GiAbMFBuv2yllr4t34aeWlTBVmkb9Zn6soXFmnyd5uVW1RqdkQAqPMCamjp8OHDio+P16JFi3T55ZdX6zUMLcFXNmc69dRXG/XT9qOSyubPPDSonYZ3a6Ig5s8AwHmpE0NLv5WdnS1JiomJOeMxRUVFcjqdlR6AL7RPjNR7f75Ub9zcXc1jG+hIbpEemvmLhr6yRMt2HFUA/ZsBAAJGwJyRcbvduvrqq3XixAktWbLkjMc9/vjjeuKJJ07bzhkZ+FJxqVvvLN2tl3/YppzyIaZWcQ4N69ZEf7y4sZKiwkxOCAD+rc5dtXTXXXfp22+/1ZIlS9SkSZMzHldUVKSioiLPc6fTqZSUFIoMTHEkt0hT5m3Vp2v2qbDELUmyWKQ+rRtpWNcmGpSWqDCb1eSUAOB/6lSRueeee/T5559r8eLFatGixXm9ljky8Ac5hSX6dn2mPk3fp5W7jnm2h9uD9ftOiRrWtYl6tIiRxcJcGgCQ6kiRMQxD9957r2bNmqWFCxeqTZs25/0eFBn4m1+P5uuzn/dpZvo+7T1W4NmeEhOmP13cRMO6NmH5AwD1Xp0oMnfffbdmzJihzz//XO3atfNsj4qKUlhY9eYYUGTgr9xuQ6t2H9PM9H36Zn1mpcu1ezSP0bBujfX7TkksgQCgXqoTReZMp9nfeust3XLLLdV6D4oMAkFBsUtzMjI1M32flmw/oor/KkNDgvT/0hI1rFsT9WrViGUQANQbdaLIeANFBoHmYHaBZv28XzPX7NOOwydv/pgYGao/dm2sYV2bqHV8uIkJAaD2UWTKUWQQqAzD0Lp92Zq5Zp++WHdA2QUlnn1dUhpqeNfGGtolWQ0b2ExMCQC1gyJTjiKDuqCo1KX5mw5pZvo+LdhyWC532X+2NmuQruwQr2Fdm6hvuziFWAPqHpcAcEYUmXIUGdQ1h3OK9Pna/ZqZvl+bDp68c3WjcJuu7tJYw7o1VlpylIkJAeDCUWTKUWRQl2084NTM9H36fO1+Hckt9mxvnxih4d2a6JqLGisuwm5iQgCoGYpMOYoM6oMSl1uLtx7WzPR9mrfxkIpdZXcRtgZZ1K9tnIZ1a6IrO8TLHsxdhAEEBopMOYoM6psT+cX68peDmrlmn9buPeHZHhUWoj90TtK1FzdW16bRXMoNwK9RZMpRZFCfbT+Uq8/S9+mz9P3KdBZ6tjcKt+mq1AQNTE1Ur9axnKkB4HcoMuUoMoDkchtauuOIZqXv19xNWcopPHkX4XB7sPq1i9PAtET1bxfHnYQB+AWKTDmKDFBZcalbK3Yd1ZyMTH2fkaVDOSdXi7dZg9SrdawGpibqqtQEJgoDMA1FphxFBjgzt9vQun0nNCcjS99nZGrnkZN3ErZYpG5NozUwLUGD0hLVLNZhYlIA9Q1FphxFBqi+7YdyPKVm3b7sSvvaJURoUFqCBqYlKi058oxroQGAN1BkylFkgJo5cKJA8zZlaU5GppbvPOa5m7AkNW4Y5jlT071ZtIK5ozAAL6PIlKPIABfuRH6x5m8+pDkZmVq09bAKS9yefdENQjSgQ1mp6dOmkUJDuAIKwIWjyJSjyADeVVDs0o/bDmtORpZ+2JylE/knF7NsYLOqb9s4DUpLVP/28YoK4wooADVDkSlHkQFqT6nLrZW7j+n78nk1B7JP3qsmOMiinq1iNTA1QVelJioxKtTEpAACDUWmHEUG8A3DMLRhv1Pfb8zUnIxMbc3KrbT/opSGnnk1reLCTUoJIFBQZMpRZABz7DqSp+8zykpN+q8nKu1rFecomyjcPFqpSVFKiLRzFRSASigy5SgygPkOOQs1d1OW5mRkadmOIypxVf6xE+OwKTUpUmnJkUpNjlRqUqRaNHJwNRRQj1FkylFkAP/iLCzRgs2HtGjLYWUccGr74dxKl3ZXsAcHqX1SWampKDcdkiLUwBZsQmoAvkaRKUeRAfxbYYlLW7NytPGAUxsPOpVxwKlNB53KL3addqzFIrVo5PCUm7TkKKUmRbKUAlAHUWTKUWSAwON2G9pzLF8ZB7I9BWfjAWeldaFOFRdhP21oqnmsQ0FBzLsBAhVFphxFBqg7DucUeUpN2dmbbO06kqeqfoo1sFnV4ZShqbTkSLVNiOCGfUCAoMiUo8gAdVt+cak2Z5YNTWWUF5zNB50qKnWfdqw1yKJWcacPTUU7bCYkB3A2FJlyFBmg/il1ubX7aF5ZsTll7s2xvOIqj0+ItKtVXLhaxjnUslG4WsQ51KpRuBpHh8nK8BRgCopMOYoMAKnshn1ZziJtPJhd6ezNnqP5Z3yNLThIzWMbqGWj8pITF64WjRxqFedQwwacxQFqE0WmHEUGwNnkFJZoa1audh3J087Dudp5OE87j+Rq95F8FbtOH56qEOOwqWUjx2kFp2mMQ7Zg7n8DXCiKTDmKDICacLkN7T9eoJ1HTpabnYfztPNwnjKdhWd8nTXIopToMLWMC1fLRg61KB+uahXnUFwEdzAGqosiU44iA8Db8opKy87g/OYszq7Decqr4v43FcLtwWoZ51CLRo5ThqvKnnOjP6Ayikw5igwAXzEMQ4dyirTj8MmzN7uO5GrnkTztPZavKm5g7JEcFaoWcQ6lRDdQfGSo4iPsio+wKyEyVPGRdjUKtyuEJRtQj1T39zf/BAAAL7FYLEqIDFVCZKh6tWpUaV9RqUu/Hs3XjsN5J+fjlH89nl+iA9mFOpBdKOnoGd5binXYFBcRqoRIe3nRKfuzZ1tkqOLC7czRQb1CkQEAH7AHW9UmIUJtEiJO23c8r9hTag6cKNShnEIdyinSIWfZ18M5RSp1GzqSW6wjucXadPDsnxXjsCk+wq64ijM6vzm7Ex8RqrgIOzcHRJ1AkQEAk0U7bOrmsKlbs+gq97vdho7lF+uQs0hZOYU67CzSoZxCZZV/LSs9ZX8ucRk6llesY3nF2pyZc9bPjQoLKT+7U152KkpPZFnpiXXYFOOwKTI0hOUe4LcoMgDg54KCLGoUXjZPJlVnnitgGIaO55eUlRtnkbJOOaNT8eeKr8WlbmUXlCi7oOzy87OxBlkU3cCmGEeIYhw2xTrsinHYFO2wecpO7CnPox025vPAZygyAFBHWCwWxZQXi/aJZz7OMAw5C0qVVV54Tj+7U/b1WG6xcopK5XIbOpJbpCO5VS/aWZXI0GBPlhiHvbwE2T3F59RHbLhNYSFWLk1HjVBkAKCesVgsimoQoqgGIWpbxZydUxWVunQ8r8QzXHU0r0jH8op1PK9YRz3byp4fyyvW8fxiuQ3JWVgqZ2Gpdp/lzsmnsgcHlZWc8PLi06C8+ITbys8GlRWeirM/DHehAkUGAHBG9mCrEqOsSowKrdbxLreh7IKTxedYXpGn6Bz1bCvW0dyy0nM0r1jFpW4VlbpPuXLr3CqGuzxneMIrD3PFlA9/VZSf6AY21s2qoygyAACvsQadHN6qDsMwlFfs0rHcYh3LLy8+ueWFJ7+4bPtvSlBuDYa7LBapYVjlOT6nlp9Tt1ecBeIy9sBAkQEAmMZisSjcHqxwe7Caxjao1msKS1xlZ3NyTznDU372p+Jsz6nbswtKZBjS8fwSHc8v0Y7DedX6nIjQ4FOKTtn8noaOEEXYg+UozxwRGqxwe4jCQ099HqwGNub8+ApFBgAQUEJDrEqKClNSVFi1ji9xuXU8v7zc5Fae21NRfn77cBtSTmGpcs5jns+pgiySwx6sCHuwp+SEh5aVoPCKIhT62/2Vn0fYQ+SwWxXMFWBnFRBFZtq0aXr++eeVmZmpLl26aOrUqerRo4fZsQAAASDEGlR+r5zqzfNxl8/zOfqbeT7HcsvO7uQWlSqnqFR5RaXKLSwte17+tWLY69QipOwLyx8WYq1Uchy2iq9WNbAHq0FI+VebVQ6bVWG24PKvVjWwlW1vYLPKYQ8u2xZSt8qR3xeZjz76SOPGjdNrr72mSy+9VFOmTNGgQYO0ZcsWxcfHmx0PAFDHBAVZFF1+P5zzZRiGCkvcyikq8ZSc3MJTis+ppadSCSo5bVtRqVuSVFDiUkGJS4dzqn/5+7nYgoPKitApRcfzZ085qrzdYSsvQqdus5cVp5gGNoXZzLlTtN8vGnnppZfqkksu0SuvvCJJcrvdSklJ0b333qtHHnnknK9n0UgAQCAqcbmV95uzPRWlKLewVPnFpcovdimvuFQFxS7lFblUUFJa9vXU7eXH5Re75DrbyqUX4Mlr0nRzz+Zefc86sWhkcXGx1qxZowkTJni2BQUFacCAAVq2bFmVrykqKlJR0cnW6nQ6az0nAADeFmINUsMGNjVscP5nhqpiGIaKXe7ycuNSQXFZ6SkrOaW/+Vr256pK0cnXnyxJYSau2+XXRebIkSNyuVxKSEiotD0hIUGbN2+u8jWTJk3SE0884Yt4AAAEDIvFInuwVfZgqxpW7wKxajNzcKfuzPYpN2HCBGVnZ3see/fuNTsSAAB1mpmXmvv1GZlGjRrJarUqKyur0vasrCwlJla9kIjdbpfdbvdFPAAAYDK/PiNjs9nUrVs3/fDDD55tbrdbP/zwg3r27GliMgAA4A/8+oyMJI0bN06jR49W9+7d1aNHD02ZMkV5eXm69dZbzY4GAABM5vdF5vrrr9fhw4f16KOPKjMzUxdddJG+++670yYAAwCA+sfv7yNzobiPDAAAgae6v7/9eo4MAADA2VBkAABAwKLIAACAgEWRAQAAAYsiAwAAAhZFBgAABCyKDAAACFgUGQAAELD8/s6+F6rifn9Op9PkJAAAoLoqfm+f6769db7I5OTkSJJSUlJMTgIAAM5XTk6OoqKizri/zi9R4Ha7deDAAUVERMhisXjtfZ1Op1JSUrR3717Tlz4gi39n8ZccZPHvHGTx7xxk8X0OwzCUk5Oj5ORkBQWdeSZMnT8jExQUpCZNmtTa+0dGRpr+f+gKZKmav2TxlxwSWfw5h0QWf84hkcWXOc52JqYCk30BAEDAosgAAICARZGpIbvdrscee0x2u93sKGTx8yz+koMs/p2DLP6dgyz+m6POT/YFAAB1F2dkAABAwKLIAACAgEWRAQAAAYsiAwAAAhZFpgYWL16soUOHKjk5WRaLRbNnzzYlx6RJk3TJJZcoIiJC8fHxuvbaa7VlyxZTsrz66qvq3Lmz56ZIPXv21LfffmtKllP985//lMVi0dixY33+2Y8//rgsFkulR/v27X2eQ5L279+vm266SbGxsQoLC1OnTp20evVqn+do3rz5aX8nFotFY8aM8XkWl8uliRMnqkWLFgoLC1OrVq301FNPnXNdl9qQk5OjsWPHqlmzZgoLC1OvXr20atWqWv/cc/0sMwxDjz76qJKSkhQWFqYBAwZo27ZtpmT57LPPNHDgQMXGxspisWjt2rW1kuNcWUpKSvTwww+rU6dOcjgcSk5O1s0336wDBw74NIdU9jOmffv2cjgcio6O1oABA7RixQqv56hOllPdeeedslgsmjJlSq1k+S2KTA3k5eWpS5cumjZtmqk5Fi1apDFjxmj58uWaO3euSkpKNHDgQOXl5fk8S5MmTfTPf/5Ta9as0erVq3XFFVfommuuUUZGhs+zVFi1apVef/11de7c2bQMaWlpOnjwoOexZMkSn2c4fvy4evfurZCQEH377bfauHGjXnjhBUVHR/s8y6pVqyr9fcydO1eSNGLECJ9nmTx5sl599VW98sor2rRpkyZPnqznnntOU6dO9XmW22+/XXPnztW7776r9evXa+DAgRowYID2799fq597rp9lzz33nF5++WW99tprWrFihRwOhwYNGqTCwkKfZ8nLy1OfPn00efJkr3/2+WTJz89Xenq6Jk6cqPT0dH322WfasmWLrr76ap/mkKS2bdvqlVde0fr167VkyRI1b95cAwcO1OHDh32epcKsWbO0fPlyJScnez3DGRm4IJKMWbNmmR3DMAzDOHTokCHJWLRokdlRDMMwjOjoaOP//u//TPnsnJwco02bNsbcuXONvn37Gvfff7/PMzz22GNGly5dfP65v/Xwww8bffr0MTtGle6//36jVatWhtvt9vlnDxkyxLjtttsqbfvTn/5kjBw50qc58vPzDavVanz11VeVtnft2tX4+9//7rMcv/1Z5na7jcTEROP555/3bDtx4oRht9uNDz74wKdZTrVr1y5DkvHzzz/XaobqZKmwcuVKQ5KxZ88eU3NkZ2cbkox58+bVWo6zZdm3b5/RuHFjY8OGDUazZs2MF198sVZzVOCMTB2SnZ0tSYqJiTE1h8vl0ocffqi8vDz17NnTlAxjxozRkCFDNGDAAFM+v8K2bduUnJysli1bauTIkfr11199nuGLL75Q9+7dNWLECMXHx+viiy/WG2+84fMcv1VcXKz33ntPt912m1cXdK2uXr166YcfftDWrVslSevWrdOSJUs0ePBgn+YoLS2Vy+VSaGhope1hYWGmnMGrsGvXLmVmZlb6bygqKkqXXnqpli1bZlouf5SdnS2LxaKGDRualqG4uFjTp09XVFSUunTp4vPPd7vdGjVqlMaPH6+0tDSffnadXzSyvnC73Ro7dqx69+6tjh07mpJh/fr16tmzpwoLCxUeHq5Zs2YpNTXV5zk+/PBDpaen+2SOwdlceumlevvtt9WuXTsdPHhQTzzxhC677DJt2LBBERERPsuxc+dOvfrqqxo3bpz++7//W6tWrdJ9990nm82m0aNH+yzHb82ePVsnTpzQLbfcYsrnP/LII3I6nWrfvr2sVqtcLpeeeeYZjRw50qc5IiIi1LNnTz311FPq0KGDEhIS9MEHH2jZsmVq3bq1T7OcKjMzU5KUkJBQaXtCQoJnH6TCwkI9/PDDuvHGG01ZvPGrr77SDTfcoPz8fCUlJWnu3Llq1KiRz3NMnjxZwcHBuu+++3z+2RSZOmLMmDHasGGDqf+Ca9eundauXavs7Gx9+umnGj16tBYtWuTTMrN3717df//9mjt37mn/wvW1U/9l37lzZ1166aVq1qyZPv74Y/35z3/2WQ63263u3bvr2WeflSRdfPHF2rBhg1577TVTi8ybb76pwYMH+3Ys/RQff/yx3n//fc2YMUNpaWlau3atxo4dq+TkZJ//vbz77ru67bbb1LhxY1mtVnXt2lU33nij1qxZ49McOD8lJSW67rrrZBiGXn31VVMy9O/fX2vXrtWRI0f0xhtv6LrrrtOKFSsUHx/vswxr1qzRSy+9pPT0dFPOrjK0VAfcc889+uqrr7RgwQI1adLEtBw2m02tW7dWt27dNGnSJHXp0kUvvfSSTzOsWbNGhw4dUteuXRUcHKzg4GAtWrRIL7/8soKDg+VyuXya51QNGzZU27ZttX37dp9+blJS0mllskOHDqYMc1XYs2eP5s2bp9tvv920DOPHj9cjjzyiG264QZ06ddKoUaP0wAMPaNKkST7P0qpVKy1atEi5ubnau3evVq5cqZKSErVs2dLnWSokJiZKkrKysiptz8rK8uyrzypKzJ49ezR37lxTzsZIksPhUOvWrfW73/1Ob775poKDg/Xmm2/6NMOPP/6oQ4cOqWnTpp6fu3v27NGDDz6o5s2b1/rnU2QCmGEYuueeezRr1izNnz9fLVq0MDtSJW63W0VFRT79zCuvvFLr16/X2rVrPY/u3btr5MiRWrt2raxWq0/znCo3N1c7duxQUlKSTz+3d+/ep12Wv3XrVjVr1synOU711ltvKT4+XkOGDDEtQ35+voKCKv8ItFqtcrvdJiUq+6WUlJSk48ePa86cObrmmmtMy9KiRQslJibqhx9+8GxzOp1asWKFaXPf/EVFidm2bZvmzZun2NhYsyN5mPFzd9SoUfrll18q/dxNTk7W+PHjNWfOnFr/fIaWaiA3N7fSv6p37dqltWvXKiYmRk2bNvVZjjFjxmjGjBn6/PPPFRER4Rm3joqKUlhYmM9ySNKECRM0ePBgNW3aVDk5OZoxY4YWLlzok/8TnyoiIuK0OUIOh0OxsbE+nzv0t7/9TUOHDlWzZs104MABPfbYY7Jarbrxxht9muOBBx5Qr1699Oyzz+q6667TypUrNX36dE2fPt2nOSq43W699dZbGj16tIKDzfsRNHToUD3zzDNq2rSp0tLS9PPPP+tf//qXbrvtNp9nmTNnjgzDULt27bR9+3aNHz9e7du316233lqrn3uun2Vjx47V008/rTZt2qhFixaaOHGikpOTde211/o8y7Fjx/Trr7967tdSUc4TExO9fobobFmSkpI0fPhwpaen66uvvpLL5fL87I2JiZHNZvNJjtjYWD3zzDO6+uqrlZSUpCNHjmjatGnav39/rdzO4Fz/+/y2zIWEhCgxMVHt2rXzepbT+OTaqDpmwYIFhqTTHqNHj/ZpjqoySDLeeustn+YwDMO47bbbjGbNmhk2m82Ii4szrrzySuP777/3eY6qmHX59fXXX28kJSUZNpvNaNy4sXH99dcb27dv93kOwzCML7/80ujYsaNht9uN9u3bG9OnTzclh2EYxpw5cwxJxpYtW0zLYBiG4XQ6jfvvv99o2rSpERoaarRs2dL4+9//bhQVFfk8y0cffWS0bNnSsNlsRmJiojFmzBjjxIkTtf655/pZ5na7jYkTJxoJCQmG3W43rrzyylr73+1cWd56660q9z/22GM+zVJx+XdVjwULFvgsR0FBgfHHP/7RSE5ONmw2m5GUlGRcffXVxsqVK72aoTpZquLLy68thmHCbSwBAAC8gDkyAAAgYFFkAABAwKLIAACAgEWRAQAAAYsiAwAAAhZFBgAABCyKDAAACFgUGQCmsFgsmj17ttkxAAQ4igyAWpGZmal7771XLVu2lN1uV0pKioYOHVpp7R5vWbhwoSwWi06cOOH19wbg31hrCYDX7d69W71791bDhg31/PPPq1OnTiopKdGcOXM0ZswYbd682eyIVTIMQy6Xy9Q1oACcH87IAPC6u+++WxaLRStXrtSwYcPUtm1bpaWlady4cVq+fPlpx1d1RmXt2rWyWCzavXu3JGnPnj0aOnSooqOj5XA4lJaWpm+++Ua7d+9W//79JUnR0dGyWCy65ZZbJJUtUDlp0iS1aNFCYWFh6tKliz799NPTPvfbb79Vt27dZLfbtWTJEq1bt079+/dXRESEIiMj1a1bN61evbrW/r4A1Bz/7ADgVceOHdN3332nZ555Rg6H47T9DRs2rNH7jhkzRsXFxVq8eLEcDoc2btyo8PBwpaSkaObMmRo2bJi2bNmiyMhIz+rvkyZN0nvvvafXXntNbdq00eLFi3XTTTcpLi5Offv29bz3I488ov/5n/9Ry5YtFR0drcsvv1wXX3yxXn31VVmtVq1du1YhISE1yg2gdlFkAHjV9u3bZRiG2rdv79X3/fXXXzVs2DB16tRJktSyZUvPvpiYGElSfHy8pygVFRXp2Wef1bx589SzZ0/Pa5YsWaLXX3+9UpF58sknddVVV1X6rPHjx3u+hzZt2nj1ewHgPRQZAF5lGEatvO99992nu+66S99//70GDBigYcOGqXPnzmc8fvv27crPz69UUCSpuLhYF198caVt3bt3r/R83Lhxuv322/Xuu+9qwIABGjFihFq1auW9bwaA1zBHBoBXtWnTRhaL5bwm9AYFlf0oOrUElZSUVDrm9ttv186dOzVq1CitX79e3bt319SpU8/4nrm5uZKkr7/+WmvXrvU8Nm7cWGmejKTThsAef/xxZWRkaMiQIZo/f75SU1M1a9asan8/AHyHIgPAq2JiYjRo0CBNmzZNeXl5p+2v6hLpuLg4SdLBgwc929auXXvacSkpKbrzzjv12Wef6cEHH9Qbb7whSbLZbJIkl8vlOTY1NVV2u12//vqrWrduXemRkpJyzu+jbdu2euCBB/T999/rT3/6k956661zvgaA71FkAHjdtGnT5HK51KNHD82cOVPbtm3Tpk2b9PLLL3vmq5yqolw8/vjj2rZtm77++mu98MILlY4ZO3as5syZo127dik9PV0LFixQhw4dJEnNmjWTxWLRV199pcOHDys3N1cRERH629/+pgceeEDvvPOOduzYofT0dE2dOlXvvPPOGbMXFBTonnvu0cKFC7Vnzx799NNPWrVqleezAPgZAwBqwYEDB4wxY8YYzZo1M2w2m9G4cWPj6quvNhYsWGAYhmFIMmbNmuU5fsmSJUanTp2M0NBQ47LLLjM++eQTQ5Kxa9cuwzAM45577jFatWpl2O12Iy4uzhg1apRx5MgRz+uffPJJIzEx0bBYLMbo0aMNwzAMt9ttTJkyxWjXrp0REhJixMXFGYMGDTIWLVpkGIZhLFiwwJBkHD9+3PM+RUVFxg033GCkpKQYNpvNSE5ONu655x6joKCgNv+6ANSQxTBqaWYeAABALWNoCQAABCyKDAAACFgUGQAAELAoMgAAIGBRZAAAQMCiyAAAgIBFkQEAAAGLIgMAAAIWRQYAAAQsigwAAAhYFBkAABCwKDIAACBg/X9ahMC4OrzTiQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gaussian mixture Elbow\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "summary = Summary()\n", + "summary.fit(X=X, y=y, classes=MINORITY_CLASSES)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "a275e3c1", + "metadata": {}, + "source": [ + "Now, let's break down these figures..." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "90b7ef87", + "metadata": {}, + "source": [ + "The report starts with imbalance ratios. It is the most common and basic metric to gain some insight into your imbalanced dataset. We define it as $IR=\\frac{C_{maj}}{C_{min}}$, which is a ratio between a given class' cardinality and the cardinality of the largest class in the dataset. You can see imbalance ratios for each class using our library. Let's see how to use this method separately from the summary:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "32bd8e3b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0: 5.0, 1: 1.0, 2: 5.0, 3: 1.0}\n" + ] + } + ], + "source": [ + "ir_object = ImbalanceRatio()\n", + "ir_results = ir_object.fit(y)\n", + "pprint(ir_results)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f027626b", + "metadata": {}, + "source": [ + "We get a dictionary in the form of {class label : imbalance ratio}. As you can see we use `.fit()` method to use our method. Running `.fit()` is the way to use any of `DataDifficulty` methods, and most of them (apart form imbalance ratio, since we usually care about seeing the results quite accurately, which is hard to do on a plot) also come equipped with `.fit_plot()` method, which dresses up the results of `.fit()` with some nice plots." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "d622e2e6", + "metadata": {}, + "source": [ + "Next we want to study the data difficulty. The standard algorithm tells us what level of difficulty each minority class data point has. You can learn about this method here: \n", + "\n", + "Doe, J., & Smith, J. (2021). Title of the article. Title of the Journal, Volume(Issue), Page(s). https://example.com/article\n", + "\n", + "\n", + "It can be run as any other of our algorithms:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1d043af2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0: {'border': 3, 'outlier': 1, 'rare': 3, 'safe': 13},\n", + " 2: {'border': 4, 'outlier': 2, 'rare': 2, 'safe': 12}}\n" + ] + } + ], + "source": [ + "knn_dd_object = KNNDataDifficulty(classes=MINORITY_CLASSES)\n", + "knn_dd_results = knn_dd_object.fit(X=X, y=y)\n", + "pprint(knn_dd_results)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "c25dbe77", + "metadata": {}, + "source": [ + "Thus we get intuitively structured output, in form of {class label : {each difficulty level : count(examples of that difficulty level in that minority class)}}. Each `DataDifficulty` function has a comprehensive documentation with clear type hinting. If you feel like you are lost on what kind of object is returned, please see the docs.\n", + "\n", + "As mentioned, we can easily yield the output in form of a appropriate figure:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e09ab5be", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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HjzY7gioBHXq1NHhw4cVHR1dZHzz5s1q2LChTangSbt379aePXvUs2dPBQQEyLIsORwOu2MZhUNLl5GsrCwNGTJEGzdu1MmTJxUREaEjR46oW7du+uKLL4r9Fg/AXo8//riSk5P18ccfq3nz5kpJSdHRo0c1bNgwDRs2TE8//bTdEVFBGRkZuuOOO7R69Wo5HA7t2rVLTZo00QMPPKCQkBC9/PLLdkc0BkXmMvTdd99py5YtOnXqlDp16qQ+ffrYHQkekJmZqUWLFmnPnj0aP3686tatq5SUFIWFhfHbu6HOnj2ruLg4zZ8/XwUFBapRo4YKCgp0zz33aP78+fL19bU7Iipo2LBhOnbsmN5++221atXKff7T8uXLNW7cOK5KKweKTDVXt25d7dy5U1dccYUeeOABvfLKK0WuWEL1kJqaqj59+sjlcmn//v3asWOHmjRpoqeeekppaWl655137I6IcrIsS+np6apfv76OHz+un376SadOnVLHjh0VExNjdzxcogYNGmj58uXq0KFDkRO59+7dq/bt2+vUqVN2RzQG95Gp5s6ePes+wTcpKYkrk6qp85fW79q1S/7+/u7xAQMGaO3atTYmQ0VZlqVmzZrp119/VWRkpAYMGKA77riDElNNnD59WrVq1So2fuLECTmdThsSmYuTfau5bt26afDgwbr66qtlWZbi4+MVEBBQ4rZz586t4nTwlA0bNuiNN94oNt6wYUMdOXLEhkS4VD4+PoqJiVFGRgblpRq67rrr9M477+j555+X9MfFF4WFhZo2bVqpl2ajOIpMNffee+9pxowZ2rNnjxwOh7KyspiVqYa4tL56mjp1qsaPH685c+aobdu2dseBB02bNk29e/fWxo0bdfbsWT3xxBPatm2bTpw4oe+++87ueEbhHJnLSHR0tDZu3Kh69erZHQUeNmLECGVkZOijjz5S3bp1lZqaKl9fXw0ePFg9e/bUzJkz7Y6ICggJCVFOTo7OnTunmjVrFptNPf+8NJgpKytLs2bNKnLxRVxcnMLDw+2OZhSKDFANcGl99ZSUlFTq+tjY2CpKAngvisxl5vTp01qzZo3S0tJ09uzZIuvi4+NtSgVP+fbbb5Wamsql9YAXSk1NVdu2beXj43PRp1+3b9++ilKZjyJzGdm8ebMGDBignJwcnT59WnXr1tXx48dVq1YthYaGau/e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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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/TbfX/EA7PX8889r8+bN+uqrr3TrrbcqPj5eycnJGjBggAYMGKCXX37Z7ogooZSUFPXr109r166Vw+HQgQMHVK9ePT355JMKDAzUW2+9ZXdEY1BkbkAbNmzQjh07lJGRoZYtW6pz5852R4IbpKamauHChTp06JBGjRql6tWrKz4+XsHBwfz1bqhLly4pJiZGc+bMUU5OjipUqKCcnBw9+uijmjNnjry9ve2OiBIaMGCATp8+rY8++kiNGjVyrX9auXKlRo4cyafSioEiU85Vr15d+/fv180336wnn3xSb7/9dp5PLKF8SEhIUOfOnRUQEKCjR49q3759qlevnl566SUdP35cn3zyid0RUUyWZSkxMVE1atTQmTNn9OuvvyojI0MtWrRQZGSk3fFwnWrWrKmVK1eqefPmeRZyHz58WM2aNVNGRobdEY3BdWTKuUuXLrkW+M6dO5dPJpVTVz5af+DAAVWqVMk13r17d61bt87GZCgpy7IUERGh3377TaGhoerevbv69etHiSknzp8/rypVquQbP3v2rJxOpw2JzMVi33KuTZs26t27t26//XZZlqXY2FhVrlz5qvvOnj27jNPBXbZs2aL3338/3/gtt9yipKQkGxLhenl5eSkyMlIpKSmUl3Lo7rvv1ieffKJXX31V0p8fvsjNzdWkSZMK/Wg28qPIlHPz5s3TlClTdOjQITkcDqWlpTErUw7x0fryaeLEiRo1apRmzJihJk2a2B0HbjRp0iR16tRJW7du1aVLl/TCCy9o165dOnv2rDZs2GB3PKOwRuYGEh4erq1bt+qmm26yOwrcbNCgQUpJSdGXX36p6tWrKyEhQd7e3urdu7fat2+vqVOn2h0RJRAYGKjMzExdvnxZFStWzDebeuV+aTBTWlqapk2blufDFzExMapVq5bd0YxCkQHKAT5aXz7NnTu30O3R0dFllATwXBSZG8z58+f1448/6vjx47p06VKebbGxsTalgrusX79eCQkJfLQe8EAJCQlq0qSJvLy8rnn362bNmpVRKvNRZG4g27dvV/fu3ZWZmanz58+revXqOnPmjKpUqaKgoCAdPnzY7ogACnDx4sV8f3z4+/vblAYl4eXlpaSkJAUFBcnLy0sOh0NX+xXscDi4CWwxsNj3BjJixAj17NlTM2fOVEBAgDZt2iQfHx/1799fzz77rN3xUEzvvPNOkfdlts1M58+f1+jRo/Xll18qJSUl33Z+2ZnlyJEjrsX3R44csTlN+cGMzA2kWrVq2rx5sxo0aKBq1app48aNatSokTZv3qzo6Gjt3bvX7ogohn+//87vv/+uzMxMVatWTdKfV/plts1sMTExWrt2rV599VU9/vjjmj59uk6cOKH3339fEydO1GOPPWZ3RMB2zMjcQHx8fOTl9ec1EIOCgnT8+HE1atRIAQEBSkxMtDkdiutf/6KbP3++3nvvPc2aNUsNGjSQJO3bt0+DBw/WkCFD7IqI6/TNN9/ok08+UYcOHTRw4EDdfffdioiIUN26dfXZZ59RZAyzdOnSIu/bq1evUkxSvjAjcwPp0qWLnnjiCT366KMaPHiwEhISFBsbq08//VR//PGHNm/ebHdElFD9+vW1cOFCtWjRIs/4tm3b1LdvX6axDVW1alXt3r1bderUUe3atbVo0SK1bt1aR44cUdOmTbmMvWGu/CF5LayRKR5uUXADef31113XJ3jttdcUGBioZ555RmfOnLnqVWFhjlOnTuny5cv5xnNycpScnGxDIrhDvXr1XCW0YcOG+vLLLyX9OVNz5RQizJGbm1ukByWmeJiRuYFcuHBBlmW57u9x9OhRLV68WI0bN1bXrl1tTofr0bNnT504cUIfffSRWrZsKenP2ZinnnpKt9xyS7GmtOE5pkyZIm9vb8XGxmrVqlXq2bOnLMtSdna2Jk+ezCJ9g33yySd66KGH8t1X6dKlS1qwYIEGDBhgUzLzUGRuIF26dFGfPn309NNPKzU1VQ0bNpSPj4/OnDmjyZMn65lnnrE7Ikro999/V3R0tFasWCEfHx9J0uXLl9W1a1fNmTNHQUFBNidEcWVnZ+vee+/VzJkzXfdaOnbsmLZt26aIiAiuM2I4b29vnTp1Kt+/zZSUFAUFBTErUwws9r2BxMfHa8qUKZKkhQsXKjg4WNu3b9fXX3+tsWPHUmQMZVmWLly4oK+//lq//fab9uzZI+nPUxG33nqrzelQUj4+Pvkumla3bl3VrVvXpkRwJ8uy5HA48o3/9ttvCggIsCGRuSgyN5DMzEz5+flJkr777jv16dNHXl5e+stf/qJjx47ZnA4lZVmWIiIitGvXLkVGRnKn5HKkf//+mjVrliZOnGh3FLhJixYt5HA45HA41KlTJ1Wo8P+/hnNycnTkyBHde++9NiY0D0XmBhIREaElS5boP/7jP7Ry5UqNGDFCknT69GmuEGowLy8vRUZGKiUlhRJTzly+fFmzZ8/WqlWrdPvtt+e7Z9bkyZNtSoaS6t27tyTpl19+UdeuXVW1alXXtooVKyosLEwPPPCATenMxBqZG8jChQv16KOPKicnR506ddJ3330nSZowYYLWrVun5cuX25wQJfXNN99o0qRJmjFjhpo0aWJ3HLhJx44dC9zmcDi0Zs2aMkwDd5o7d64eeughVapUye4oxqPI3GCSkpJ06tQpNW/e3HVNg59//ln+/v5q2LChzelQUoGBgcrMzNTly5dVsWJFVa5cOc/2s2fP2pQMAEoXRQYoB+bOnVvo9ujo6DJKAqAortw0siB8aqnoWCMDlAMUFcAsixYtylNksrOztX37ds2dO1fjxo2zMZl5mJEByomcnBwtWbLE9fHrqKgo9erVS97e3jYnA1BU8+fP1xdffKG///3vdkcxBkUGKAcOHjyo7t2768SJE3luGhkaGqply5apfv36NicEUBSHDx9Ws2bNuI9WMXCvJaAciI2NVf369ZWYmKj4+HjFx8fr+PHjCg8PV2xsrN3xABTBhQsX9M477+iWW26xO4pRmJEBygFfX19t2rRJTZs2zTO+Y8cOtWvXjr/uAA8TGBiYZ42MZVk6d+6cqlSponnz5qlXr142pjMLi32BcsDpdOrcuXP5xjMyMlSxYkUbEgEozJQpU/IUGS8vL9WoUUN33nmnAgMDbUxmHk4tAeXAfffdp6eeekqbN2+WZVmyLEubNm3S008/zV92gAd64okndP/99+vMmTP65z//qR9//FG7d+92Xd8LRcepJaAcSE1NVXR0tL755hvX3a+zs7N1//33a86cOdyEDvAwW7du1b333qtKlSqpdevWkqQtW7bowoUL+u6779SyZUubE5qDIgOUIwcPHtTu3bslSY0bN1ZERITNiQBczd13362IiAh9+OGHrhtHXr58WYMGDdLhw4e1bt06mxOagyIDlBOzZs3SlClTdODAAUlSZGSkhg8frkGDBtmcDMC/q1y5srZv357v1jC7d+9Wq1atlJmZaVMy87DYFygHxo4dq8mTJ2vYsGFq06aNJGnjxo0aMWKEjh8/rvHjx9ucEMC/8vf31/Hjx/MVmcTERPn5+dmUykzMyADlQI0aNfTOO+/okUceyTP++eefa9iwYTpz5oxNyQBcTWxsrBYvXqw333xTbdu2lSRt2LBBo0aN0gMPPKCpU6faG9AgzMgA5UB2drZatWqVb/z222/X5cuXbUgEoDBvvvmmHA6HBgwY4Po36uPjo2eeeUYTJ060OZ1ZmJEByoFhw4bJx8dHkydPzjP+/PPP68KFC5o+fbpNyQAUJjMzU4cOHZIk1a9fX1WqVLE5kXmYkQEMNXLkSNfXDodDH330kb777jv95S9/kSRt3rxZx48f14ABA+yKCOAaqlSpku+K3CgeZmQAQ3Xs2LFI+zkcDq1Zs6aU0wCAPSgyAADAWFwLGQAAGIsiAwAAjEWRAQAAxqLIAAAAY1FkANjK4XAU+njllVfsjgjAg3EdGQC2OnXqlOvrL774QmPHjtW+fftcY1WrVrUjFgBDMCMDwFY1a9Z0PQICAuRwOFSzZk35+fnp1ltv1YoVK/Lsv2TJEvn6+urcuXM6evSoHA6HFixYoLZt26pSpUpq0qSJfvzxxzzH7Ny5U926dVPVqlUVHBysxx9/nPtPAeUERQaAR/L19dXDDz+sjz/+OM/4xx9/rL59++a5Q/CoUaP03HPPafv27WrTpo169uyplJQUSVJqaqr++te/qkWLFtq6datWrFih5ORk9evXr0x/HgClgyIDwGMNGjRIK1eudJ1+On36tL799ls9+eSTefYbOnSoHnjgATVq1EgzZsxQQECAZs2aJUmaNm2aWrRooddff10NGzZUixYtNHv2bK1du1b79+8v858JgHtRZAB4rNatWysqKkpz586VJM2bN09169ZV+/bt8+zXpk0b19cVKlRQq1attGfPHknSjh07tHbtWlWtWtX1aNiwoSS5btYHwFws9gXg0QYNGqTp06frxRdf1Mcff6yBAwfK4XAU+fiMjAz17NlTb7zxRr5ttWrVcmdUADZgRgaAR+vfv7+OHTumd955R7t371Z0dHS+fTZt2uT6+vLly9q2bZsaNWokSWrZsqV27dqlsLAwRURE5Hn4+vqW2c8BoHRQZAB4tMDAQPXp00ejRo1Sly5dVLt27Xz7TJ8+XYsXL9bevXsVExOjP/74w7WOJiYmRmfPntUjjzyiLVu26NChQ1q5cqUGDhyonJycsv5xALgZRQaAx/vP//xPXbp0Kd8i3ysmTpyoiRMnqnnz5lq/fr2WLl2qm2++WZIUEhKiDRs2KCcnR126dFHTpk01fPhwVatWTV5e/C8QMJ3DsizL7hAAUJhPP/1UI0aM0MmTJ1WxYkXX+NGjRxUeHq7t27frtttusy8gANuw2BeAx8rMzNSpU6c0ceJEDRkyJE+JAQCJU0sAPNikSZPUsGFD1axZU3FxcXbHAeCBOLUEAACMxYwMAAAwFkUGAAAYiyIDAACMRZEBAADGosgAAABjUWQAAICxKDIAAMBYFBkAAGAsigwAADDW/wGMRzfi2kZHMgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "knn_dd_object.fit_plot(X=X, y=y);" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "32c50354", + "metadata": {}, + "source": [ + "Next is data difficulty study using some kernel functions. The KNN methods fix the number of neighbors and work on any distance between those neighbors. Kernel methods work on limited distances (kernel bandwidth), but the number of neighbors is unlimited, thus these two methods can yield different results.\n", + "\n", + "Doe, J., & Smith, J. (2021). Title of the article. Title of the Journal, Volume(Issue), Page(s). https://example.com/article\n", + "\n", + "\n", + "Let's run it:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "229d0947", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0: [-1.0,\n", + " -1.0,\n", + " -1.0,\n", + " 1.0,\n", + " -1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " -1.0,\n", + " -1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " -1.0,\n", + " 0.152557441,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " -1.0,\n", + " 1.0],\n", + " 2: [1.0,\n", + " 1.0,\n", + " -1.0,\n", + " -1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " -1.0,\n", + " 0.1548038477,\n", + " 1.0,\n", + " 1.0,\n", + " -1.0,\n", + " 0.0,\n", + " -1.0,\n", + " 1.0,\n", + " -1.0,\n", + " -1.0,\n", + " 1.0,\n", + " 1.0]}\n" + ] + } + ], + "source": [ + "kernel_dd_object = KernelDataDifficulty(classes=MINORITY_CLASSES)\n", + "kernel_dd_results = kernel_dd_object.fit(X, y)\n", + "pprint(kernel_dd_results)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ff82dbac", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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1iIIAQAAaxGEAACAtQhCAADAWgQhAABgLYIQAACwlttBaO7cuVq6dKlzevTo0YqKilJSUpJ++OEHjxYHAADgTW4HoUmTJikkJESSlJ6erunTp+vpp59W9erVNXz4cI8XCAAA4C1B7i6QkZGh+Ph4SdKSJUt00003afDgwWrbtq06dOjg6foAAAC8xu0jQmFhYTp69Kgkafny5br22mslScHBwTpz5oxnqwMAAPAit48IXXvttbr77rvVsmVL7dmzR9ddd50kaceOHapTp46n6wMAAPAat48ITZ8+XW3atNEvv/yit956S9WqVZMkbdy4UbfddpvHCwQAAPAWt48IRUVF6cUXXyzUPn78eI8UBAAAUFpK9ByhL774Qn/729+UlJSkn376SZL073//W2vWrPFocQAAAN7kdhB666231KVLF4WEhGjTpk3KycmRJGVlZWnSpEkeLxAAAMBb3A5CTz75pGbMmKGZM2eqYsWKzva2bdtq06ZNHi0OAADAm9wOQrt371b79u0LtUdGRur48eOeqAkAAKBUuB2EYmJitHfv3kLta9asUb169TxSFAAAQGlwOwgNGjRIDz30kNauXauAgAD9/PPPmjdvnkaOHKn77rvPGzUCAAB4hdu3z6empio/P1+dOnXS6dOn1b59ezkcDo0cOVIPPPCAN2oEAADwCreCUF5enr788ksNGTJEo0aN0t69e3Xy5Ek1btxYYWFh3qoRAADAK9wKQoGBgercubN27dqlqKgoNW7c2Ft1AQAAeJ3b1wg1bdpU+/fv90YtAAAApapEzxEaOXKkPvjgAx06dEjZ2dkuLwAAgLLC7YulC75t/oYbblBAQICz3RijgIAA5eXlea46AAAAL3I7CK1cudIbdQAAAJQ6t4NQcnKyN+oAAAAodW4HIUk6fvy4Zs2apV27dkmSmjRporvuukuRkZEeLQ4AAMCb3L5YesOGDapfv76ee+45HTt2TMeOHdOzzz6r+vXr86WrAACgTHH7iNDw4cN1ww03aObMmQoK+mPx3Nxc3X333Ro2bJhWr17t8SIBAAC8we0gtGHDBpcQJElBQUEaPXq0WrVq5dHiAAAAvMntU2MRERE6ePBgofaMjAyFh4d7pCgAAIDS4HYQ6t27twYOHKg333xTGRkZysjI0IIFC3T33Xfrtttu83iBP/30k/72t7+pWrVqCgkJUUJCgjZs2ODx9wEAAPZx+9TYM888o4CAAN15553Kzc2VJFWsWFH33XefJk+e7NHifvvtN7Vt21YdO3bURx99pEsuuUTfffedqlSp4tH3AQAAdnI7CFWqVEnPP/+80tLStG/fPklS/fr1FRoa6vHinnrqKcXFxWn27NnOtrp163r8fQAAgJ3cPjWWlZWlY8eOKTQ0VAkJCUpISFBoaKiOHTvm8e8ae++999SqVSvdcsstio6OVsuWLTVz5kyPvgcAALCX20GoT58+WrBgQaH2hQsXqk+fPh4pqsD+/fv10ksvqUGDBvr4449133336cEHH9TcuXPPu0xOTg5fBAsAAIrF7SC0du1adezYsVB7hw4dtHbtWo8UVSA/P19XXHGFJk2apJYtW2rw4MEaNGiQZsyYcd5l0tLSFBkZ6XzFxcV5tCYAAFB+uB2EcnJynBdJ/9nvv/+uM2fOeKSoAjVr1lTjxo1d2i6//PIib98vMGbMGGVlZTlfGRkZHq0JAACUH24HodatW+uVV14p1D5jxgxdeeWVHimqQNu2bbV7926Xtj179qh27drnXcbhcCgiIsLlBQAAUBS37xp78sknlZKSoq1bt6pTp06SpBUrVmj9+vVavny5R4sbPny4kpKSNGnSJN16661at26dXnnllSKDGAAAgLvcPiLUtm1bpaenKy4uTgsXLtT777+v+Ph4bdu2Tddcc41Hi7vqqqv0zjvv6I033lDTpk01YcIETZ06VX379vXo+wAAADu5fURIklq0aKF58+Z5upYi9ejRQz169CiV9wIAAHZx+4jQpk2btH37duf0u+++q169eunvf/+7zp0759HiAAAAvMntIHTPPfdoz549kv54zk/v3r0VGhqqRYsWafTo0R4vEAAAwFvcDkJ79uxRixYtJEmLFi1ScnKy5s+frzlz5uitt97ydH0AAABe43YQMsYoPz9fkvTpp5/quuuukyTFxcXp119/9Wx1AAAAXuR2EGrVqpWefPJJ/fvf/9bnn3+u7t27S5IOHDigGjVqeLxAAAAAb3E7CE2dOlWbNm3S0KFD9eijjyo+Pl6StHjxYiUlJXm8QAAAAG9x+/b5Zs2audw1VmDKlCkKDAz0SFEAAACloUTPESpKcHCwp1YFAABQKtw+NQYAAFBeEIQAAIC1CEIAAMBaJQ5C586d0+7du5Wbm+vJegAA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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4eEuYzpy5IhLn/I438eOHXMZ87fffmsCAwPNnDlznH3Kwnx/9NFH5tFHHzXvvPOOkWTefffdC/Y/cOCACQkJMcOHDzc7d+4006dPN4GBgWbZsmXOPu6+ludT5oPQOXPmzClWECooKDAxMTFmypQpzrbjx48bh8Nh3njjDWOMMTt37jSSzPr16519Pv74YxMQEGAOHz7s8drd5an6mjVrZu6++26XtuL8gPpKScednJxsHnroofOu/+ijj0yFChVcfqm++OKLJjw83OTm5nqk9ovhqfletGiRqVSpkvn999+dbf40361atTKDBw92Lufn55vY2FgzadKkIvvfcsstpnv37i5trVu3NoMGDTLGFO+97g/cHfd/ysvLM2FhYWbevHnOtn79+pkePXp4ulSPcnfcf/U73pb5fvbZZ01YWJjJyclxtpWF+f6z4vzeGTlypElISHBp6927t+nSpYtz+WJfy3PK/Kkxdx08eFBHjhxRSkqKsy0iIkKtW7dWWlqaJCktLU2RkZFq2bKls09KSooqVKigtWvXlnrN/8kT9W3cuFFbtmzRPffcU2jd4MGDVb16dbVq1UqvvvqqjJ981NTFjHv+/PmqXr26mjRpolGjRunUqVMu+01MTHT5tPIuXbooOztbO3bs8PxA3OSpn8esrCyFh4crKMj1c1T9Yb7Pnj2rjRs3urwvK1SooJSUFOf78j+lpaW59Jf+mLdz/YvzXve1koz7P506dUq///57oS+mXLlypaKiotSwYUPdf//9OnbsmEdrvxglHXdOTo5q166tuLg49ejRw+X9act8z549W3369FGVKlVc2v15vkvir97fnngtzykTnyztSUeOHJGkQl/RER0d7Vx35MgRRUVFuawPCgpStWrVnH18yRP1zZ49W5dddpmSkpJc2seNG6f//u//VkhIiJYvX66///3vysnJ0YMPPuix+kuqpOO+7bbbVLt2bcXGxmrbtm165JFHtHv3br3zzjvO/Rb183Buna95Yr5//fVXjR8/XgMHDnRp95f5/vXXX5Wfn1/kPHz33XdFbnO+efvz+/hc2/n6+FpJxv2fHnnkEcXGxrr8Qejatat69eqlunXrav/+/frnP/+pbt26KS0tTYGBgR4dQ0mUZNwNGzbUq6++qqZNmyorK0tTp05VUlKSduzYoZo1a1ox3+vWrdO3336r2bNnu7T7+3yXxPne39nZ2Tp9+rR+++23i37vnOOXQSg1NVVPPfXUBfvs2rVLjRo1KqWKSkdxx32xTp8+rQULFmj06NGF1v25rXnz5jp58qSmTJni1T+M3h73n//4JyYmqkaNGurUqZP279+v+vXrl3i/F6u05js7O1vdu3dX48aN9cQTT7is88V8w3MmT56shQsXauXKlS4XDvfp08f578TERDVt2lT169fXypUr1alTJ1+UetHatGmjNm3aOJeTkpJ02WWX6aWXXtL48eN9WFnpmT17thITE9WqVSuX9vI436XJL4PQP/7xD911110X7FOvXr0S7TsmJkaSlJGRoRo1ajjbMzIy1KxZM2efo0ePumyXl5enzMxM5/beUNxxX2x9b731lk6dOqU777zzL/u2bt1a48ePV25urte+76W0xn1O69atJUn79u1T/fr1FRMTU+hOg4yMDEkq8/N94sQJde3aVWFhYXr33XdVsWLFC/YvjfkuSvXq1RUYGOh83c/JyMg47xhjYmIu2L8473VfK8m4z5k6daomT56szz77TE2bNr1g33r16ql69erat2+fX/xhvJhxn1OxYkU1b95c+/btk1T+5/vkyZNauHChxo0b95fP42/zXRLne3+Hh4ercuXKCgwMvOifISe3rijyY+5eLD116lRnW1ZWVpEXS2/YsMHZ55NPPvG7i6VLWl9ycnKhu4fOZ8KECaZq1aolrtWTPDUva9asMZLM1q1bjTH/d7H0n+80eOmll0x4eLg5c+aM5wZQQiUdd1ZWlrnqqqtMcnKyOXnyZLGey5fz3apVKzNkyBDncn5+vvmv//qvC14sfd1117m0tWnTptDF0hd6r/sDd8dtjDFPPfWUCQ8PN2lpacV6jvT0dBMQEGDee++9i67XU0oy7j/Ly8szDRs2NMOGDTPGlO/5NuaPv3EOh8P8+uuvf/kc/jjff6ZiXizdpEkTl7Zbb7210MXSF/Mz5KzHrd5+6IcffjCbN2923gq+efNms3nzZpdbwhs2bGjeeecd5/LkyZNNZGSkee+998y2bdtMjx49irx9vnnz5mbt2rVmzZo1pkGDBn53+/yF6vvxxx9Nw4YNzdq1a12227t3rwkICDAff/xxoX2+//77ZtasWWb79u1m79695n//939NSEiIGTNmjNfHU1zujnvfvn1m3LhxZsOGDebgwYPmvffeM/Xq1TPt27d3bnPu9vnOnTubLVu2mGXLlplLL73U726fd2fcWVlZpnXr1iYxMdHs27fP5bbavLw8Y4z/zffChQuNw+Ewc+fONTt37jQDBw40kZGRzrv57rjjDpOamurs/9VXX5mgoCAzdepUs2vXLvP4448Xefv8X73Xfc3dcU+ePNlUqlTJvPXWWy7zeu533okTJ8zDDz9s0tLSzMGDB81nn31mWrRoYRo0aOAXwf4cd8c9duxY88knn5j9+/ebjRs3mj59+pjg4GCzY8cOZ5/yON/ntGvXzvTu3btQe1mZ7xMnTjj/PksyzzzzjNm8ebP54YcfjDHGpKammjvuuMPZ/9zt8yNGjDC7du0yM2bMKPL2+Qu9lsVV5oNQv379jKRCjy+++MLZR///s1LOKSgoMKNHjzbR0dHG4XCYTp06md27d7vs99ixY+bWW281oaGhJjw83PTv398lXPnaX9V38ODBQq+DMcaMGjXKxMXFmfz8/EL7/Pjjj02zZs1MaGioqVKlirn88svNzJkzi+zrK+6O+9ChQ6Z9+/amWrVqxuFwmPj4eDNixAiXzxEyxpjvv//edOvWzVSuXNlUr17d/OMf/3C5zdzX3B33F198UeT7QpI5ePCgMcY/53v69OmmVq1aplKlSqZVq1bmm2++ca5LTk42/fr1c+m/aNEi87e//c1UqlTJJCQkmKVLl7qsL8573R+4M+7atWsXOa+PP/64McaYU6dOmc6dO5tLL73UVKxY0dSuXdsMGDDA7T8OpcGdcQ8dOtTZNzo62lx77bVm06ZNLvsrj/NtjDHfffedkWSWL19eaF9lZb7P9zvp3Fj79etnkpOTC23TrFkzU6lSJVOvXj2Xv+PnXOi1LK4AY/zk3mgAAIBSZt3nCAEAAJxDEAIAANYiCAEAAGsRhAAAgLUIQgAAwFoEIQAAYC2CEAAAsBZBCECZ8f333ysgIEBbtmzxdSkAygmCEAC/cddddykgIMD5uOSSS9S1a1dt27ZNkhQXF6eff/5ZTZo08XGlAMoLghAAv9K1a1f9/PPP+vnnn7VixQoFBQXpuuuukyQFBgYqJiZGQUFBPq4SQHlBEALgVxwOh2JiYhQTE6NmzZopNTVV6enp+uWXXwqdGlu5cqUCAgK0YsUKtWzZUiEhIUpKStLu3bud+9u6das6duyosLAwhYeH64orrtCGDRt8NDoA/oYgBMBv5eTk6PXXX1d8fLwuueSS8/Z79NFH9a9//UsbNmxQUFCQ7r77bue6vn37qmbNmlq/fr02btyo1NRUVaxYsTTKB1AGcHwZgF/58MMPFRoaKkk6efKkatSooQ8//FAVKpz//21PPvmkkpOTJUmpqanq3r27zpw5o+DgYB06dEgjRoxQo0aNJEkNGjTw/iAAlBkcEQLgVzp27KgtW7Zoy5YtWrdunbp06aJu3brphx9+OO82TZs2df67Ro0akqSjR49KkoYPH657771XKSkpmjx5svbv3+/dAQAoUwhCAPxKlSpVFB8fr/j4eF155ZV65ZVXdPLkSc2aNeu82/z5VFdAQIAkqaCgQJL0xBNPaMeOHerevbs+//xzNW7cWO+++653BwGgzCAIAfBrAQEBqlChgk6fPl3iffztb3/TsGHDtHz5cvXq1Utz5szxYIUAyjKuEQLgV3Jzc3XkyBFJ0m+//aYXXnhBOTk5uv76693e1+nTpzVixAjddNNNqlu3rn788UetX79eN954o6fLBlBGEYQA+JVly5Y5r/MJCwtTo0aNtHjxYnXo0EHff/+9W/sKDAzUsWPHdOeddyojI0PVq1dXr169NHbsWC9UDqAsCjDGGF8XAQAA4AtcIwQAAKxFEAIAANYiCAEAAGsRhAAAgLUIQgAAwFoEIQAAYC2CEAAAsBZBCAAAWIsgBAAArEUQAgAA1iIIAQAAaxGEAACAtf4f0KjZBOvczyIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "kernel_dd_object.fit_plot(X, y);" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ef4647f8", + "metadata": {}, + "source": [ + "This way we get exact values. The `-1`s model the situation, in which there is not enough information about an example (no neighbors within kernel bandwidth). With each method which gives results which are not aggregated as counts per class, but present as many values as class cardinality, you can associate specific examples with specific scores by simply iterating through the class:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e19310aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[(array([-3.10873789, -1.79098605]), -1.0),\n", + " (array([-2.09539738, -1.55185262]), -1.0),\n", + " (array([-1.88315385, -0.44047762]), -1.0),\n", + " (array([-2.10445912, -0.82603466]), 1.0),\n", + " (array([-2.27784105, -1.35958317]), -1.0),\n", + " (array([-2.25140702, -0.59726922]), 1.0),\n", + " (array([-2.1997694 , -0.84379434]), 1.0),\n", + " (array([-1.17917902, -0.17073185]), 1.0),\n", + " (array([-1.12564811, -1.95863255]), -1.0),\n", + " (array([-1.67149983, -1.04075384]), -1.0),\n", + " (array([-2.18413609, -0.79040705]), 1.0),\n", + " (array([-1.74509052, -1.30933388]), 1.0),\n", + " (array([-2.29027883, -1.02594977]), 1.0),\n", + " (array([-1.11579742, -0.52673203]), -1.0),\n", + " (array([-0.53536383, 0.41987972]), 0.152557441),\n", + " (array([-1.32662679, 0.20863229]), 1.0),\n", + " (array([-1.92655868, -1.32777362]), 1.0),\n", + " (array([-2.38803229, -0.89640488]), 1.0),\n", + " (array([-2.03370024, -0.19446392]), -1.0),\n", + " (array([-1.36988334, 0.03679337]), 1.0)]\n" + ] + } + ], + "source": [ + "pprint(list(zip(X[y==0], kernel_dd_results[0])))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "036f8cc7", + "metadata": {}, + "source": [ + "To get results comparable to KNN method (safety levels instead of safety scores) run this code:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "782e0471", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0: ['not enough info',\n", + " 'not enough info',\n", + " 'not enough info',\n", + " 'safe',\n", + " 'not enough info',\n", + " 'safe',\n", + " 'safe',\n", + " 'safe',\n", + " 'not enough info',\n", + " 'not enough info',\n", + " 'safe',\n", + " 'safe',\n", + " 'safe',\n", + " 'not enough info',\n", + " 'rare',\n", + " 'safe',\n", + " 'safe',\n", + " 'safe',\n", + " 'not enough info',\n", + " 'safe'],\n", + " 2: ['safe',\n", + " 'safe',\n", + " 'not enough info',\n", + " 'not enough info',\n", + " 'safe',\n", + " 'safe',\n", + " 'safe',\n", + " 'safe',\n", + " 'not enough info',\n", + " 'rare',\n", + " 'safe',\n", + " 'safe',\n", + " 'not enough info',\n", + " 'zero',\n", + " 'not enough info',\n", + " 'safe',\n", + " 'not enough info',\n", + " 'not enough info',\n", + " 'safe',\n", + " 'safe']}\n" + ] + } + ], + "source": [ + "pprint(kernel_dd_object.fit_label_difficulty(X, y))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "9e238886", + "metadata": {}, + "source": [ + "`KernelDifficulty` is parametric. We use kernel bandwidth auto tuning (as specified in the article), which automatically sets kernel bandwidth, consequently yielding results comparable to according `KNNDifficulty` method run. User may override this procedure and set custom kernel bandwidth to any value they wish to have. Here is a use case, in which we set kernel bandwidth to `1.`:" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "84f60bfe", + "metadata": {}, + "outputs": [], + "source": [ + "custom_kernel_bandwidth_dd_object = KernelDataDifficulty(classes=MINORITY_CLASSES)\n", + "custom_kernel_bandwidth_dd_results = custom_kernel_bandwidth_dd_object.fit(X=X, \n", + " y=y, \n", + " kernel_bandwidth_override=1.)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "1526e01e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Are the results different? : False\n", + "Auto tuned kernel bandwidth: 0.5235553242694769\n", + "Unitary kernel bandwidth: 1.0\n" + ] + } + ], + "source": [ + "print('Are the results equal?: ', kernel_dd_results == custom_kernel_bandwidth_dd_results)\n", + "print('Auto tuned kernel bandwidth: ', kernel_dd_object.kernel_bandwidth)\n", + "print('Unitary kernel bandwidth: ', custom_kernel_bandwidth_dd_object.kernel_bandwidth)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "3b67de06", + "metadata": {}, + "source": [ + "User can also set different kernel functions. The default kernel function is *Epanechnikov* (quadratic). If you wish to model distances in a different manner, we also provide *uniform* (linear), and *Uniform* (constant) kernel functions:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Are the results different?: False\n", + "(', '\n", + " ', '\n", + " '')\n" + ] + } + ], + "source": [ + "triangular_dd_object = KernelDataDifficulty(classes=MINORITY_CLASSES, kernel_type='triangular')\n", + "triangular_dd_results = triangular_dd_object.fit(X, y)\n", + "uniform_dd_object = KernelDataDifficulty(classes=MINORITY_CLASSES, kernel_type='uniform')\n", + "uniform_dd_results = uniform_dd_object.fit(X, y)\n", + "print('Are the results equal?: ', kernel_dd_results == triangular_dd_results == uniform_dd_results)\n", + "pprint(f'{kernel_dd_object.kernel_object}, {triangular_dd_object.kernel_object}, {uniform_dd_object.kernel_object}')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "882ef9a5", + "metadata": {}, + "source": [ + "Now let's take a look at similar method, with more accurate, numerical output. For reference see \n", + "Doe, J., & Smith, J. (2021). Title of the article. Title of the Journal, Volume(Issue), Page(s). https://example.com/article\n", + " This method is particularly interesting if you want to weigh cross-class relations." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "94ebc797", + "metadata": {}, + "outputs": [], + "source": [ + "cdd_object = ContinuousDataDifficulty(classes=MINORITY_CLASSES)\n", + "cdd_results = cdd_object.fit(X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "605b5800", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAHHCAYAAABUcOnjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAs9klEQVR4nO3deXhU5cH+8XtIyCRAErZmew0GCIqErYJQEtYaoRBR3lbFpYi44BJUSAmEUkRkCaK1WKQgEQUriIBCFSwuCCISEQhBFAQhQSKyKEjCOkBy3j/8Mb+mBMyEk8xMnu/nus51cZ5zzsydecDcnnNmxmFZliUAAIBqroa3AwAAAFQFSg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwCviYuL0z333OPtGAAMQekBYLvdu3frwQcfVJMmTRQcHKywsDAlJSXp+eef16lTp7wd7xe5XC6NHDlSMTExCgkJUceOHfXBBx94OxaAyxTo7QAAqpfly5fr1ltvldPp1N13362WLVvqzJkzWrt2rdLT0/XVV19p1qxZ3o55Sffcc48WL16soUOHqlmzZpozZ4769OmjVatWqXPnzt6OB6CCHHzhKAC75Ofnq3Xr1rriiiv00UcfKTo6utT2Xbt2afny5Xr88ccl/Xx5q3v37pozZ44X0pbt888/V8eOHfXMM89o+PDhkqTTp0+rZcuWioiI0Lp167ycEEBFcXkLgG2mTJmi48ePa/bs2RcUHkmKj493F56yHDlyRMOHD1erVq1Up04dhYWFqXfv3tqyZcsF+06bNk0JCQmqVauW6tWrp/bt22v+/Pnu7ceOHdPQoUMVFxcnp9OpiIgI3XDDDcrJybnkz7B48WIFBARo8ODB7rHg4GDdd999ys7OVkFBQXleCgA+iMtbAGzzzjvvqEmTJkpMTKzQ8Xl5eVq6dKluvfVWNW7cWAcPHtSLL76obt26adu2bYqJiZEkZWVl6bHHHtMtt9yixx9/XKdPn9YXX3yh9evX684775QkPfTQQ1q8eLGGDBmiFi1a6PDhw1q7dq22b9+ua6+99qIZNm/erKuuukphYWGlxjt06CBJys3NVWxsbIV+PgDeRekBYIuioiLt27dPN998c4Ufo1WrVtq5c6dq1Pj/J6EHDBig5s2ba/bs2RozZoykn+8bSkhI0KJFiy76WMuXL9cDDzygv/71r+6xESNG/GKG/fv3l3mW6vzY999/X+6fB4Bv4fIWAFsUFRVJkkJDQyv8GE6n0114iouLdfjwYdWpU0dXX311qctSdevW1XfffacNGzZc9LHq1q2r9evXe1xSTp06JafTecF4cHCwezsA/0TpAWCL85eDjh07VuHHKCkp0d/+9jc1a9ZMTqdTDRs21K9+9St98cUXKiwsdO83cuRI1alTRx06dFCzZs2UmpqqTz/9tNRjTZkyRV9++aViY2PVoUMHPfnkk8rLy/vFDCEhIXK5XBeMnz592r0dgH+i9ACwRVhYmGJiYvTll19W+DEmTZqktLQ0de3aVa+99pree+89ffDBB0pISFBJSYl7v2uuuUY7duzQggUL1LlzZ7355pvq3Lmzxo4d697ntttuU15enqZNm6aYmBg988wzSkhI0L///e9LZoiOjtb+/fsvGD8/dv6+IgD+h9IDwDY33nijdu/erezs7Aodv3jxYvXo0UOzZ8/W7bffrp49eyo5OVlHjx69YN/atWurf//+euWVV7R3716lpKRo4sSJ7jMy0s8F5pFHHtHSpUuVn5+vBg0aaOLEiZfM0LZtW+3cudN9ue689evXu7cD8E+UHgC2GTFihGrXrq37779fBw8evGD77t279fzzz1/0+ICAAP33R4ctWrRI+/btKzV2+PDhUutBQUFq0aKFLMvS2bNnVVxcXOpymCRFREQoJiamzEtX/+mWW25RcXFxqQ9QdLlceuWVV9SxY0feuQX4Md69BcA2TZs21fz589W/f39dc801pT6Red26dVq0aNElv2vrxhtv1FNPPaVBgwYpMTFRW7du1bx589SkSZNS+/Xs2VNRUVFKSkpSZGSktm/frhdeeEEpKSkKDQ3V0aNHdcUVV+iWW25RmzZtVKdOHX344YfasGFDqXdzlaVjx4669dZbNWrUKB06dEjx8fGaO3eu9uzZo9mzZ9vxMgHwFgsAbLZz507rgQcesOLi4qygoCArNDTUSkpKsqZNm2adPn3avd+VV15pDRw40L1++vRp609/+pMVHR1thYSEWElJSVZ2drbVrVs3q1u3bu79XnzxRatr165WgwYNLKfTaTVt2tRKT0+3CgsLLcuyLJfLZaWnp1tt2rSxQkNDrdq1a1tt2rSx/vGPf5Qr/6lTp6zhw4dbUVFRltPptK677jprxYoVtrw2ALyHr6EAAABG4J4eAABgBEoPAAAwAqUHAAAYgdIDAACMQOkBAABGoPQAAAAjVPsPJywpKdH333+v0NBQORwOb8cBAADlYFmWjh07ppiYGNWoYc85mmpfer7//ns+Nh4AAD9VUFCgK664wpbHqvalJzQ0VNLPL1pYWJiX0wAAgPIoKipSbGys+/e4Hap96Tl/SSssLIzSAwCAn7Hz1hRuZAYAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMAKlBwAAGIHSAwAAjEDpAQAARqD0AAAAI3i19KxZs0Z9+/ZVTEyMHA6Hli5detF9H3roITkcDk2dOrXK8gEAgOrDq6XnxIkTatOmjaZPn37J/ZYsWaLPPvtMMTExVZQMAABUN179wtHevXurd+/el9xn3759evTRR/Xee+8pJSWlipIBAIDqxqfv6SkpKdGAAQOUnp6uhIQEb8cBAAB+zKtnen7J008/rcDAQD322GPlPsblcsnlcrnXi4qKKiMaAADwMz5bejZt2qTnn39eOTk5cjgc5T4uMzNT48aNu2C85dj3VMNZy86Ittkzmct2AABUNp+9vPXJJ5/o0KFDatSokQIDAxUYGKhvv/1Wf/rTnxQXF3fR40aNGqXCwkL3UlBQUHWhAQCAz/LZMz0DBgxQcnJyqbFevXppwIABGjRo0EWPczqdcjqdlR0PAAD4Ga+WnuPHj2vXrl3u9fz8fOXm5qp+/fpq1KiRGjRoUGr/mjVrKioqSldffXVVRwUAAH7Oq6Vn48aN6tGjh3s9LS1NkjRw4EDNmTPHS6kAAEB15NXS0717d1mWVe799+zZU3lhAABAteazNzIDAADYidIDAACMQOkBAABGoPQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMAKlBwAAGIHSAwAAjEDpAQAARqD0AAAAI1B6AACAESg9AADACJQeAABgBEoPAAAwAqUHAAAYgdIDAACMQOkBAABGoPQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMIJXS8+aNWvUt29fxcTEyOFwaOnSpe5tZ8+e1ciRI9WqVSvVrl1bMTExuvvuu/X99997LzAAAPBbXi09J06cUJs2bTR9+vQLtp08eVI5OTkaM2aMcnJy9NZbb2nHjh266aabvJAUAAD4u0BvPnnv3r3Vu3fvMreFh4frgw8+KDX2wgsvqEOHDtq7d68aNWpUFREBAEA14dXS46nCwkI5HA7VrVv3ovu4XC65XC73elFRURUkAwAAvs5vbmQ+ffq0Ro4cqTvuuENhYWEX3S8zM1Ph4eHuJTY2tgpTAgAAX+UXpefs2bO67bbbZFmWZsyYccl9R40apcLCQvdSUFBQRSkBAIAv8/nLW+cLz7fffquPPvrokmd5JMnpdMrpdFZROgAA4C98uvScLzzffPONVq1apQYNGng7EgAA8FNeLT3Hjx/Xrl273Ov5+fnKzc1V/fr1FR0drVtuuUU5OTlatmyZiouLdeDAAUlS/fr1FRQU5K3YAADAD3m19GzcuFE9evRwr6elpUmSBg4cqCeffFJvv/22JKlt27aljlu1apW6d+9eVTEBAEA14NXS0717d1mWddHtl9oGAADgCb949xYAAMDlovQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMAKlBwAAGIHSAwAAjEDpAQAARqD0AAAAI1B6AACAESg9AADACJQeAABgBEoPAAAwAqUHAAAYgdIDAACMQOkBAABGoPQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMAKlBwAAGMGrpWfNmjXq27evYmJi5HA4tHTp0lLbLcvSE088oejoaIWEhCg5OVnffPONd8ICAAC/5tXSc+LECbVp00bTp08vc/uUKVP097//XTNnztT69etVu3Zt9erVS6dPn67ipAAAwN8FevPJe/furd69e5e5zbIsTZ06VX/5y1908803S5JeffVVRUZGaunSpbr99turMioAAPBzPntPT35+vg4cOKDk5GT3WHh4uDp27Kjs7OyLHudyuVRUVFRqAQAA8NnSc+DAAUlSZGRkqfHIyEj3trJkZmYqPDzcvcTGxlZqTgAA4B98tvRU1KhRo1RYWOheCgoKvB0JAAD4AJ8tPVFRUZKkgwcPlho/ePCge1tZnE6nwsLCSi0AAAA+W3oaN26sqKgorVy50j1WVFSk9evXq1OnTl5MBgAA/JFX3711/Phx7dq1y72en5+v3Nxc1a9fX40aNdLQoUM1YcIENWvWTI0bN9aYMWMUExOjfv36eS80AADwS14tPRs3blSPHj3c62lpaZKkgQMHas6cORoxYoROnDihwYMH6+jRo+rcubNWrFih4OBgb0UGAAB+ymFZluXtEJWpqKjo53dxDV2oGs5a3o5Tpj2TU7wdAQAAn3L+93dhYaFt9+f67D09AAAAdqL0AAAAI1B6AACAESg9AADACJQeAABgBEoPAAAwAqUHAAAYgdIDAACMQOkBAABGoPQAAAAjUHoAAIARKD0AAMAIlB4AAGAESg8AADACpQcAABiB0gMAAIxA6QEAAEag9AAAACNQegAAgBEoPQAAwAiUHgAAYARKDwAAMILHpWfu3Llavny5e33EiBGqW7euEhMT9e2339oaDgAAwC4el55JkyYpJCREkpSdna3p06drypQpatiwoYYNG2Z7QAAAADsEenpAQUGB4uPjJUlLly7VH/7wBw0ePFhJSUnq3r273fkAAABs4fGZnjp16ujw4cOSpPfff1833HCDJCk4OFinTp2yNx0AAIBNPD7Tc8MNN+j+++/Xr3/9a+3cuVN9+vSRJH311VeKi4uzOx8AAIAtPD7TM336dHXq1Ek//PCD3nzzTTVo0ECStGnTJt1xxx22BwQAALCDw7Isy9shKlNRUZHCw8MVO3ShajhreTtOmfZMTvF2BAAAfMr539+FhYUKCwuz5TEr9Dk9n3zyif74xz8qMTFR+/btkyT985//1Nq1a20JBQAAYDePS8+bb76pXr16KSQkRDk5OXK5XJKkwsJCTZo0yfaAAAAAdvC49EyYMEEzZ85UVlaWatas6R5PSkpSTk6OreEAAADs4nHp2bFjh7p27XrBeHh4uI4ePWpHJgAAANt5XHqioqK0a9euC8bXrl2rJk2a2BIKAADAbh6XngceeECPP/641q9fL4fDoe+//17z5s3T8OHD9fDDD1dGRgAAgMvm8YcTZmRkqKSkRNdff71Onjyprl27yul0avjw4Xr00UcrIyMAAMBl86j0FBcX69NPP1VqaqrS09O1a9cuHT9+XC1atFCdOnUqKyMAAMBl86j0BAQEqGfPntq+fbvq1q2rFi1aVFYuAAAAW3l8T0/Lli2Vl5dXGVkAAAAqTYU+p2f48OFatmyZ9u/fr6KiolKLnYqLizVmzBg1btxYISEhatq0qcaPH69q/s0ZAACgEnh8I/P5b1W/6aab5HA43OOWZcnhcKi4uNi2cE8//bRmzJihuXPnKiEhQRs3btSgQYMUHh6uxx57zLbnAQAA1Z/HpWfVqlWVkaNM69at080336yUlJ+/kDMuLk6vv/66Pv/88yrLAAAAqgePS0+3bt0qI0eZEhMTNWvWLO3cuVNXXXWVtmzZorVr1+q5556rsgwAAKB68Lj0SNLRo0c1e/Zsbd++XZKUkJCge++9V+Hh4baGy8jIUFFRkZo3b66AgAAVFxdr4sSJuuuuuy56jMvlcn8JqiTb7zMCAAD+yeMbmTdu3KimTZvqb3/7m44cOaIjR47oueeeU9OmTW3/wtGFCxdq3rx5mj9/vnJycjR37lw9++yzmjt37kWPyczMVHh4uHuJjY21NRMAAPBPDsvDt0J16dJF8fHxysrKUmDgzyeKzp07p/vvv195eXlas2aNbeFiY2OVkZGh1NRU99iECRP02muv6euvvy7zmLLO9MTGxip26ELVcNayLZud9kxO8XYEAAB8SlFRkcLDw1VYWKiwsDBbHtPjy1sbN24sVXgkKTAwUCNGjFD79u1tCXXeyZMnVaNG6ZNRAQEBKikpuegxTqdTTqfT1hwAAMD/eVx6wsLCtHfvXjVv3rzUeEFBgUJDQ20LJkl9+/bVxIkT1ahRIyUkJGjz5s167rnndO+999r6PAAAoPrzuPT0799f9913n5599lklJiZKkj799FOlp6frjjvusDXctGnTNGbMGD3yyCM6dOiQYmJi9OCDD+qJJ56w9XkAAED153HpefbZZ+VwOHT33Xfr3LlzkqSaNWvq4Ycf1uTJk20NFxoaqqlTp2rq1Km2Pi4AADCPx6UnKChIzz//vDIzM7V7925JUtOmTVWrlm/eJAwAACBVoPQUFhaquLhY9evXV6tWrdzjR44cUWBgoG13WAMAANjJ48/puf3227VgwYILxhcuXKjbb7/dllAAAAB287j0rF+/Xj169LhgvHv37lq/fr0toQAAAOzmcelxuVzuG5j/09mzZ3Xq1ClbQgEAANjN49LToUMHzZo164LxmTNnql27draEAgAAsJvHNzJPmDBBycnJ2rJli66//npJ0sqVK7Vhwwa9//77tgcEAACwg8dnepKSkpSdna3Y2FgtXLhQ77zzjuLj4/XFF1+oS5culZERAADgsnl8pkeS2rZtq3nz5tmdBQAAoNJ4fKYnJydHW7duda//61//Ur9+/fTnP/9ZZ86csTUcAACAXTwuPQ8++KB27twpScrLy1P//v1Vq1YtLVq0SCNGjLA9IAAAgB08Lj07d+5U27ZtJUmLFi1St27dNH/+fM2ZM0dvvvmm3fkAAABs4XHpsSxLJSUlkqQPP/xQffr0kSTFxsbqxx9/tDcdAACATTwuPe3bt9eECRP0z3/+Ux9//LFSUlIkSfn5+YqMjLQ9IAAAgB08Lj1Tp05VTk6OhgwZotGjRys+Pl6StHjxYiUmJtoeEAAAwA4ev2W9devWpd69dd4zzzyjgIAAW0IBAADYrUKf01OW4OBgux4KAADAdh5f3gIAAPBHlB4AAGAESg8AADBChUvPmTNntGPHDp07d87OPAAAAJXC49Jz8uRJ3XfffapVq5YSEhK0d+9eSdKjjz6qyZMn2x4QAADADh6XnlGjRmnLli1avXp1qXdsJScn64033rA1HAAAgF08fsv60qVL9cYbb+g3v/mNHA6HezwhIUG7d++2NRwAAIBdPD7T88MPPygiIuKC8RMnTpQqQQAAAL6kQt+9tXz5cvf6+aLz0ksvqVOnTvYlAwAAsJHHl7cmTZqk3r17a9u2bTp37pyef/55bdu2TevWrdPHH39cGRkBAAAum8dnejp37qzc3FydO3dOrVq10vvvv6+IiAhlZ2erXbt2lZERAADgspXrTE9aWprGjx+v2rVra82aNUpMTFRWVlZlZwMAALBNuc70TJs2TcePH5ck9ejRQ0eOHKnUUAAAAHYr15meuLg4/f3vf1fPnj1lWZays7NVr169Mvft2rWrrQEBAADsUK7S88wzz+ihhx5SZmamHA6H/vd//7fM/RwOh4qLi20NCAAAYIdylZ5+/fqpX79+On78uMLCwrRjx44yP6sHAADAV3n0lvU6depo1apVaty4sQIDPX63OwAAgNd43Fy6devm/vPp06d15syZUtvDwsIuPxUAAIDNKvQt60OGDFFERIRq166tevXqlVoAAAB8kcelJz09XR999JFmzJghp9Op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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAHHCAYAAABUcOnjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAArP0lEQVR4nO3de3yMd/7//+dIZIIcnDaRfESD6KqgirKC4tOURbU+VtGqqtahbbQlnyJWVR0qqrarVR+WHuiWdWjLtnSVOq5DFXEq6hQlRaKlEnFISK7vH/2Z36YONXElM5P34367ze1mrrmumVfmKnn0mmtmHJZlWQIAACjhSnl6AAAAgOJA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQA8Jjo6Gg9+eSTnh4DgCGIHgC2O3z4sAYMGKAaNWooMDBQISEhat68ud566y1dvHjR0+Pd1JYtWzRw4EDFxsaqXLlyqlatmrp166YDBw54ejQAt8nf0wMAKFmWLl2qRx55RE6nU0888YTq1q2r3NxcrV+/XkOGDNGePXs0Y8YMT495Q6+//ro2bNigRx55RPXr11d6erreeecdNWzYUF9//bXq1q3r6REBFJKDLxwFYJcjR46ofv36qlq1qlatWqWIiIgCtx86dEhLly7Viy++KOmXl7dat26tWbNmeWDa69u4caMaN26sgIAA17KDBw+qXr166tq1qz766CMPTgfgdvDyFgDbTJw4UdnZ2XrvvfeuCR5JiomJcQXP9Zw5c0YvvfSS6tWrp6CgIIWEhKh9+/bauXPnNetOmTJFsbGxKlu2rCpUqKDGjRtr7ty5rtvPnTunQYMGKTo6Wk6nU2FhYXrggQeUkpJy058hLi6uQPBIUq1atRQbG6t9+/b91lMAwIvx8hYA23z++eeqUaOG4uLiCrV9amqqFi9erEceeUTVq1dXRkaG/va3v6lVq1bau3evIiMjJUkzZ87UCy+8oK5du+rFF1/UpUuXtGvXLm3evFmPPfaYJOmZZ57Rxx9/rIEDB6pOnTo6ffq01q9fr3379qlhw4ZuzWVZljIyMhQbG1uonwuAdyB6ANgiKytLx48f18MPP1zo+6hXr54OHDigUqX+/4PQvXr1Uu3atfXee+9p5MiRkn45byg2NlYLFy684X0tXbpU/fr101/+8hfXsqFDhxZqrjlz5uj48eMaM2ZMobYH4B14eQuALbKysiRJwcHBhb4Pp9PpCp68vDydPn1aQUFB+v3vf1/gZany5cvrhx9+0JYtW254X+XLl9fmzZt14sSJQs8jSd99950SEhLUrFkz9e7d+7buC4BnET0AbBESEiLpl3NpCis/P19//etfVatWLTmdTlWuXFm/+93vtGvXLmVmZrrWGzZsmIKCgtSkSRPVqlVLCQkJ2rBhQ4H7mjhxor799ltFRUWpSZMmevXVV5WamurWPOnp6erYsaNCQ0P18ccfy8/Pr9A/GwDPI3oA2CIkJESRkZH69ttvC30f48ePV2Jiou677z599NFH+vLLL7VixQrFxsYqPz/ftd5dd92l/fv3a968eWrRooU++eQTtWjRQqNGjXKt061bN6WmpmrKlCmKjIzUG2+8odjYWP3rX/+6pVkyMzPVvn17nT17VsuWLXOdTwTAd/GWdQC2GTBggGbMmKGNGzeqWbNmv7n+r9+y3qBBA1WsWFGrVq0qsF7VqlUVExOjNWvWXPd+cnNz1aVLFy1btkzZ2dkKDAy8Zp1Tp06pYcOGio6O1vr1628616VLl9S2bVtt27ZNX3311S39LAC8H0d6ANhm6NChKleunPr27auMjIxrbj98+LDeeuutG27v5+enX/9/2MKFC3X8+PECy06fPl3gekBAgOrUqSPLsnT58mXl5eUVeDlMksLCwhQZGamcnJyb/gx5eXnq3r27Nm3apIULFxI8QAnCu7cA2KZmzZqaO3euunfvrrvuuqvAJzJv3LhRCxcuvOl3bT344IMaM2aM+vTpo7i4OO3evVtz5sxRjRo1CqzXtm1bValSRc2bN1d4eLj27dund955Rx07dlRwcLDOnj2rqlWrqmvXrrr77rsVFBSkr776Slu2bCnwbq7r+d///V999tln6tSpk86cOXPNhxE+/vjjhX5+AHgWL28BsN3Bgwf1xhtvaMWKFTpx4oScTqfq16+vHj16qF+/fnI6nZKufXkrJydHI0aM0Ny5c3X27Fk1bNhQkyZNUlJSkiS5Xt6aMWOG5syZoz179ig7O1tVq1ZVly5d9PLLLyskJES5ubl6+eWXtXz5cqWmpio/P18xMTEaMGCAnn322ZvO3rp1a61du/aGt/NPJuC7iB4AAGAEzukBAABGIHoAAIARiB4AAGAEogcAABiB6AEAAEYgegAAgBFK/IcT5ufn68SJEwoODpbD4fD0OAAA4BZYlqVz584pMjJSpUrZc4ymxEfPiRMnFBUV5ekxAABAIaSlpalq1aq23FeJj57g4GBJvzxpISEhHp4GAADciqysLEVFRbl+j9uhxEfP1Ze0QkJCiB4AAHyMnaemcCIzAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjODR6Fm3bp06deqkyMhIORwOLV682HXb5cuXNWzYMNWrV0/lypVTZGSknnjiCZ04ccJzAwMAAJ/l0eg5f/687r77bk2dOvWa2y5cuKCUlBSNHDlSKSkp+vTTT7V//3499NBDHpgUAAD4OodlWZanh5B++UKxRYsWqXPnzjdcZ8uWLWrSpImOHj2qatWq3dL9ZmVlKTQ0VJmZmXzhKAAAPqIofn/71Dk9mZmZcjgcKl++vKdHAQAAPsbf0wPcqkuXLmnYsGF69NFHb1p8OTk5ysnJcV3PysoqjvEAAICX84nouXz5srp16ybLsjRt2rSbrpucnKzRo0dfs7zuqC9Vylm2qEa8ru8ndCzWxwMAADfm9S9vXQ2eo0ePasWKFb/5ut7w4cOVmZnpuqSlpRXTpAAAwJt59ZGeq8Fz8OBBrV69WpUqVfrNbZxOp5xOZzFMBwAAfIlHoyc7O1uHDh1yXT9y5Ih27NihihUrKiIiQl27dlVKSoqWLFmivLw8paenS5IqVqyogIAAT40NAAB8kEejZ+vWrWrTpo3remJioiSpd+/eevXVV/XZZ59Jkho0aFBgu9WrV6t169bFNSYAACgBPBo9rVu31s0+JshLPkIIAACUAF5/IjMAAIAdiB4AAGAEogcAABiB6AEAAEYgegAAgBGIHgAAYASiBwAAGIHoAQAARiB6AACAEYgeAABgBKIHAAAYgegBAABGIHoAAIARiB4AAGAEogcAABiB6AEAAEYgegAAgBGIHgAAYASiBwAAGIHoAQAARiB6AACAEYgeAABgBKIHAAAYgegBAABGIHoAAIARiB4AAGAEogcAABiB6AEAAEYgegAAgBGIHgAAYASiBwAAGIHoAQAARiB6AACAEYgeAABgBKIHAAAYgegBAABGIHoAAIARiB4AAGAEogcAABiB6AEAAEYgegAAgBGIHgAAYASiBwAAGIHoAQAARiB6AACAEYgeAABgBKIHAAAYgegBAABG8Gj0rFu3Tp06dVJkZKQcDocWL15c4HbLsvTKK68oIiJCZcqUUXx8vA4ePOiZYQEAgE/zaPScP39ed999t6ZOnXrd2ydOnKi3335b06dP1+bNm1WuXDm1a9dOly5dKuZJAQCAr/P35IO3b99e7du3v+5tlmVp8uTJevnll/Xwww9Lkj788EOFh4dr8eLF6tGjR3GOCgAAfJzXntNz5MgRpaenKz4+3rUsNDRUTZs21aZNm264XU5OjrKysgpcAAAAvDZ60tPTJUnh4eEFloeHh7tuu57k5GSFhoa6LlFRUUU6JwAA8A1eGz2FNXz4cGVmZrouaWlpnh4JAAB4Aa+NnipVqkiSMjIyCizPyMhw3XY9TqdTISEhBS4AAABeGz3Vq1dXlSpVtHLlSteyrKwsbd68Wc2aNfPgZAAAwBd59N1b2dnZOnTokOv6kSNHtGPHDlWsWFHVqlXToEGDNG7cONWqVUvVq1fXyJEjFRkZqc6dO3tuaAAA4JM8Gj1bt25VmzZtXNcTExMlSb1799asWbM0dOhQnT9/Xv3799fZs2fVokULLVu2TIGBgZ4aGQAA+CiHZVmWp4coSllZWb+8i2vQApVyli3Wx/5+QsdifTwAAEqKq7+/MzMzbTs/12vP6QEAALAT0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIXh09eXl5GjlypKpXr64yZcqoZs2aGjt2rCzL8vRoAADAx/h7eoCbef311zVt2jTNnj1bsbGx2rp1q/r06aPQ0FC98MILnh4PAAD4EK+Ono0bN+rhhx9Wx44dJUnR0dH6xz/+oW+++cbDkwEAAF/j1S9vxcXFaeXKlTpw4IAkaefOnVq/fr3at29/w21ycnKUlZVV4AIAAODVR3qSkpKUlZWl2rVry8/PT3l5eXrttdfUs2fPG26TnJys0aNHF+OUAADAF3j1kZ4FCxZozpw5mjt3rlJSUjR79mxNmjRJs2fPvuE2w4cPV2ZmpuuSlpZWjBMDAABv5dVHeoYMGaKkpCT16NFDklSvXj0dPXpUycnJ6t2793W3cTqdcjqdxTkmAADwAV59pOfChQsqVargiH5+fsrPz/fQRAAAwFd59ZGeTp066bXXXlO1atUUGxur7du3680339RTTz3l6dEAAICP8eromTJlikaOHKnnnntOp06dUmRkpAYMGKBXXnnF06MBAAAf49XRExwcrMmTJ2vy5MmeHgUAAPg4rz6nBwAAwC5EDwAAMALRAwAAjED0AAAAIxA9AADACG5Hz+zZs7V06VLX9aFDh6p8+fKKi4vT0aNHbR0OAADALm5Hz/jx41WmTBlJ0qZNmzR16lRNnDhRlStX1uDBg20fEAAAwA5uf05PWlqaYmJiJEmLFy/Wn/70J/Xv31/NmzdX69at7Z4PAADAFm4f6QkKCtLp06clScuXL9cDDzwgSQoMDNTFixftnQ4AAMAmbh/peeCBB9S3b1/dc889OnDggDp06CBJ2rNnj6Kjo+2eDwAAwBZuH+mZOnWqmjVrph9//FGffPKJKlWqJEnatm2bHn30UdsHBAAAsIPDsizL00MUpaysLIWGhipq0AKVcpYt1sf+fkLHYn08AABKiqu/vzMzMxUSEmLLfRbqc3r+/e9/6/HHH1dcXJyOHz8uSfr73/+u9evX2zIUAACA3dyOnk8++UTt2rVTmTJllJKSopycHElSZmamxo8fb/uAAAAAdnA7esaNG6fp06dr5syZKl26tGt58+bNlZKSYutwAAAAdnE7evbv36/77rvvmuWhoaE6e/asHTMBAADYzu3oqVKlig4dOnTN8vXr16tGjRq2DAUAAGA3t6OnX79+evHFF7V582Y5HA6dOHFCc+bM0UsvvaRnn322KGYEAAC4bW5/OGFSUpLy8/N1//3368KFC7rvvvvkdDr10ksv6fnnny+KGQEAAG6bW9GTl5enDRs2KCEhQUOGDNGhQ4eUnZ2tOnXqKCgoqKhmBAAAuG1uRY+fn5/atm2rffv2qXz58qpTp05RzQUAAGArt8/pqVu3rlJTU4tiFgAAgCJTqM/peemll7RkyRKdPHlSWVlZBS4AAADeyO0Tma9+q/pDDz0kh8PhWm5ZlhwOh/Ly8uybDgAAwCZuR8/q1auLYg4AAIAi5Xb0tGrVqijmAAAAKFJuR48knT17Vu+995727dsnSYqNjdVTTz2l0NBQW4cDAACwi9snMm/dulU1a9bUX//6V505c0ZnzpzRm2++qZo1a/KFowAAwGu5faRn8ODBeuihhzRz5kz5+/+y+ZUrV9S3b18NGjRI69ats31IAACA2+V29GzdurVA8EiSv7+/hg4dqsaNG9s6HAAAgF3cfnkrJCREx44du2Z5WlqagoODbRkKAADAbm5HT/fu3fX0009r/vz5SktLU1pamubNm6e+ffvq0UcfLYoZAQAAbpvbL29NmjRJDodDTzzxhK5cuSJJKl26tJ599llNmDDB9gEBAADs4Hb0BAQE6K233lJycrIOHz4sSapZs6bKli1r+3AAAAB2cTt6MjMzlZeXp4oVK6pevXqu5WfOnJG/v79CQkJsHRAAAMAObp/T06NHD82bN++a5QsWLFCPHj1sGQoAAMBubkfP5s2b1aZNm2uWt27dWps3b7ZlKAAAALu5HT05OTmuE5j/0+XLl3Xx4kVbhgIAALCb29HTpEkTzZgx45rl06dPV6NGjWwZCgAAwG5un8g8btw4xcfHa+fOnbr//vslSStXrtSWLVu0fPly2wcEAACwg9tHepo3b65NmzYpKipKCxYs0Oeff66YmBjt2rVLLVu2LIoZAQAAbpvbR3okqUGDBpozZ47dswAAABQZt4/0pKSkaPfu3a7r//znP9W5c2f9+c9/Vm5urq3DAQAA2MXt6BkwYIAOHDggSUpNTVX37t1VtmxZLVy4UEOHDrV9QAAAADu4HT0HDhxQgwYNJEkLFy5Uq1atNHfuXM2aNUuffPKJ3fMBAADYwu3osSxL+fn5kqSvvvpKHTp0kCRFRUXpp59+snc6AAAAm7gdPY0bN9a4ceP097//XWvXrlXHjh0lSUeOHFF4eLjtAwIAANjB7eiZPHmyUlJSNHDgQI0YMUIxMTGSpI8//lhxcXG2D3j8+HE9/vjjqlSpksqUKaN69epp69attj8OAAAo2dx+y3r9+vULvHvrqjfeeEN+fn62DHXVzz//rObNm6tNmzb617/+pd/97nc6ePCgKlSoYOvjAACAkq9Qn9NzPYGBgXbdlcvrr7+uqKgoffDBB65l1atXt/1xAABAyef2y1vF6bPPPlPjxo31yCOPKCwsTPfcc49mzpzp6bEAAIAP8uroSU1N1bRp01SrVi19+eWXevbZZ/XCCy9o9uzZN9wmJydHWVlZBS4AAAC2vbxVFPLz89W4cWONHz9eknTPPffo22+/1fTp09W7d+/rbpOcnKzRo0cX55gAAMAHFPpIT25urvbv368rV67YOU8BERERqlOnToFld911l44dO3bDbYYPH67MzEzXJS0trcjmAwAAvsPt6Llw4YKefvpplS1bVrGxsa4Aef755zVhwgRbh2vevLn2799fYNmBAwd0xx133HAbp9OpkJCQAhcAAAC3o2f48OHauXOn1qxZU+AdW/Hx8Zo/f76tww0ePFhff/21xo8fr0OHDmnu3LmaMWOGEhISbH0cAABQ8rl9Ts/ixYs1f/58/eEPf5DD4XAtj42N1eHDh20d7t5779WiRYs0fPhwjRkzRtWrV9fkyZPVs2dPWx8HAACUfG5Hz48//qiwsLBrlp8/f75ABNnlwQcf1IMPPmj7/QIAALMU6ru3li5d6rp+NXTeffddNWvWzL7JAAAAbOT2kZ7x48erffv22rt3r65cuaK33npLe/fu1caNG7V27dqimBEAAOC2uX2kp0WLFtqxY4euXLmievXqafny5QoLC9OmTZvUqFGjopgRAADgtt3SkZ7ExESNHTtW5cqV07p16xQXF8fXQQAAAJ9yS0d6pkyZouzsbElSmzZtdObMmSIdCgAAwG63dKQnOjpab7/9ttq2bSvLsrRp0yZVqFDhuuved999tg4IAABgh1uKnjfeeEPPPPOMkpOT5XA49D//8z/XXc/hcCgvL8/WAQEAAOxwS9HTuXNnde7cWdnZ2QoJCdH+/fuv+1k9AAAA3sqtt6wHBQVp9erVql69uvz9vfoL2gEAAApwu1xatWrl+vOlS5eUm5tb4Ha+4BMAAHijQn3L+sCBAxUWFqZy5cqpQoUKBS4AAADeyO3oGTJkiFatWqVp06bJ6XTq3Xff1ejRoxUZGakPP/ywKGYEAAC4bW6/vPX555/rww8/VOvWrdWnTx+1bNlSMTExuuOOOzRnzhy+AR0AAHglt4/0nDlzRjVq1JD0y/k7Vz+osEWLFlq3bp290wEAANjE7eipUaOGjhw5IkmqXbu2FixYIOmXI0Dly5e3dTgAAAC7uB09ffr00c6dOyVJSUlJmjp1qgIDAzV48GANGTLE9gEBAADs4PY5PYMHD3b9OT4+Xvv27VNKSopiYmJUv359W4cDAACwy21/wmB0dLSio6NtGAUAAKDo3PLLW5s2bdKSJUsKLPvwww9VvXp1hYWFqX///srJybF9QAAAADvccvSMGTNGe/bscV3fvXu3nn76acXHxyspKUmff/65kpOTi2RIAACA23XL0bNjxw7df//9ruvz5s1T06ZNNXPmTCUmJurtt992vZMLAADA29xy9Pz8888KDw93XV+7dq3at2/vun7vvfcqLS3N3ukAAABscsvREx4e7vp8ntzcXKWkpOgPf/iD6/Zz586pdOnS9k8IAABgg1uOng4dOigpKUn//ve/NXz4cJUtW1YtW7Z03b5r1y7VrFmzSIYEAAC4Xbf8lvWxY8eqS5cuatWqlYKCgjR79mwFBAS4bn///ffVtm3bIhkSAADgdt1y9FSuXFnr1q1TZmamgoKC5OfnV+D2hQsXKigoyPYBAQAA7OD2hxOGhoZed3nFihVvexgAAICi4vZ3bwEAAPgiogcAABiB6AEAAEYgegAAgBGIHgAAYASiBwAAGIHoAQAARiB6AACAEYgeAABgBKIHAAAYgegBAABGIHoAAIARiB4AAGAEogcAABiB6AEAAEYgegAAgBGIHgAAYASiBwAAGIHoAQAARiB6AACAEYgeAABgBJ+KngkTJsjhcGjQoEGeHgUAAPgYn4meLVu26G9/+5vq16/v6VEAAIAP8onoyc7OVs+ePTVz5kxVqFDB0+MAAAAf5BPRk5CQoI4dOyo+Pv43183JyVFWVlaBCwAAgL+nB/gt8+bNU0pKirZs2XJL6ycnJ2v06NFFPBV+LTppqUce9/sJHT3yuAAA3+PVR3rS0tL04osvas6cOQoMDLylbYYPH67MzEzXJS0trYinBAAAvsCrj/Rs27ZNp06dUsOGDV3L8vLytG7dOr3zzjvKycmRn59fgW2cTqecTmdxjwoAALycV0fP/fffr927dxdY1qdPH9WuXVvDhg27JngAAABuxKujJzg4WHXr1i2wrFy5cqpUqdI1ywEAAG7Gq8/pAQAAsItXH+m5njVr1nh6BAAA4IM40gMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADCCV0dPcnKy7r33XgUHByssLEydO3fW/v37PT0WAADwQV4dPWvXrlVCQoK+/vprrVixQpcvX1bbtm11/vx5T48GAAB8jL+nB7iZZcuWFbg+a9YshYWFadu2bbrvvvs8NBUAAPBFXh09v5aZmSlJqlix4g3XycnJUU5Ojut6VlZWkc8FAAC8n89ET35+vgYNGqTmzZurbt26N1wvOTlZo0ePLsbJgOIRnbTUI4/7/YSOHnlcT+F5Bkourz6n5z8lJCTo22+/1bx582663vDhw5WZmem6pKWlFdOEAADAm/nEkZ6BAwdqyZIlWrdunapWrXrTdZ1Op5xOZzFNBgAAfIVXR49lWXr++ee1aNEirVmzRtWrV/f0SAAAwEd5dfQkJCRo7ty5+uc//6ng4GClp6dLkkJDQ1WmTBkPTwcAAHyJV5/TM23aNGVmZqp169aKiIhwXebPn+/p0QAAgI/x6iM9lmV5egQAAFBCePWRHgAAALsQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIxA9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADCCT0TP1KlTFR0drcDAQDVt2lTffPONp0cCAAA+xuujZ/78+UpMTNSoUaOUkpKiu+++W+3atdOpU6c8PRoAAPAhXh89b775pvr166c+ffqoTp06mj59usqWLav333/f06MBAAAf4tXRk5ubq23btik+Pt61rFSpUoqPj9emTZs8OBkAAPA1/p4e4GZ++ukn5eXlKTw8vMDy8PBwfffdd9fdJicnRzk5Oa7rmZmZkqT8nAtFN+gNZGVlFftjeoonnl+J57g4mPQcSzzPgLe4+nfCsizb7tOro6cwkpOTNXr06GuWH5/2ZLHPEjq52B/SODzHRY/nuHjwPAPXd/r0aYWGhtpyX14dPZUrV5afn58yMjIKLM/IyFCVKlWuu83w4cOVmJjoun727FndcccdOnbsmG1PGgonKytLUVFRSktLU0hIiKfHMRr7wruwP7wH+8J7ZGZmqlq1aqpYsaJt9+nV0RMQEKBGjRpp5cqV6ty5syQpPz9fK1eu1MCBA6+7jdPplNPpvGZ5aGgo/wF7iZCQEPaFl2BfeBf2h/dgX3iPUqXsO/3Yq6NHkhITE9W7d281btxYTZo00eTJk3X+/Hn16dPH06MBAAAf4vXR0717d/3444965ZVXlJ6ergYNGmjZsmXXnNwMAABwM14fPZI0cODAG76c9VucTqdGjRp13Ze8ULzYF96DfeFd2B/eg33hPYpiXzgsO98LBgAA4KW8+sMJAQAA7EL0AAAAIxA9AADACEQPAAAwQomInqlTpyo6OlqBgYFq2rSpvvnmm5uuv3DhQtWuXVuBgYGqV6+evvjii2KatORzZ1/MnDlTLVu2VIUKFVShQgXFx8f/5r7DrXP378VV8+bNk8PhcH0gKG6fu/vi7NmzSkhIUEREhJxOp+68807+nbKRu/tj8uTJ+v3vf68yZcooKipKgwcP1qVLl4pp2pJp3bp16tSpkyIjI+VwOLR48eLf3GbNmjVq2LChnE6nYmJiNGvWLPcf2PJx8+bNswICAqz333/f2rNnj9WvXz+rfPnyVkZGxnXX37Bhg+Xn52dNnDjR2rt3r/Xyyy9bpUuXtnbv3l3Mk5c87u6Lxx57zJo6daq1fft2a9++fdaTTz5phYaGWj/88EMxT17yuLsvrjpy5Ij1X//1X1bLli2thx9+uHiGLeHc3Rc5OTlW48aNrQ4dOljr16+3jhw5Yq1Zs8basWNHMU9eMrm7P+bMmWM5nU5rzpw51pEjR6wvv/zSioiIsAYPHlzMk5csX3zxhTVixAjr008/tSRZixYtuun6qampVtmyZa3ExERr79691pQpUyw/Pz9r2bJlbj2uz0dPkyZNrISEBNf1vLw8KzIy0kpOTr7u+t26dbM6duxYYFnTpk2tAQMGFOmcJnB3X/zalStXrODgYGv27NlFNaIxCrMvrly5YsXFxVnvvvuu1bt3b6LHJu7ui2nTplk1atSwcnNzi2tEo7i7PxISEqz//u//LrAsMTHRat68eZHOaZJbiZ6hQ4dasbGxBZZ1797dateunVuP5dMvb+Xm5mrbtm2Kj493LStVqpTi4+O1adOm626zadOmAutLUrt27W64Pm5NYfbFr124cEGXL1+29cvlTFTYfTFmzBiFhYXp6aefLo4xjVCYffHZZ5+pWbNmSkhIUHh4uOrWravx48crLy+vuMYusQqzP+Li4rRt2zbXS2Cpqan64osv1KFDh2KZGb+w63e3T3wi84389NNPysvLu+YrKcLDw/Xdd99dd5v09PTrrp+enl5kc5qgMPvi14YNG6bIyMhr/sOGewqzL9avX6/33ntPO3bsKIYJzVGYfZGamqpVq1apZ8+e+uKLL3To0CE999xzunz5skaNGlUcY5dYhdkfjz32mH766Se1aNFClmXpypUreuaZZ/TnP/+5OEbG/+dGv7uzsrJ08eJFlSlT5pbux6eP9KDkmDBhgubNm6dFixYpMDDQ0+MY5dy5c+rVq5dmzpypypUre3oc4+Xn5yssLEwzZsxQo0aN1L17d40YMULTp0/39GhGWrNmjcaPH6//+7//U0pKij799FMtXbpUY8eO9fRoKASfPtJTuXJl+fn5KSMjo8DyjIwMValS5brbVKlSxa31cWsKsy+umjRpkiZMmKCvvvpK9evXL8oxjeDuvjh8+LC+//57derUybUsPz9fkuTv76/9+/erZs2aRTt0CVWYvxcREREqXbq0/Pz8XMvuuusupaenKzc3VwEBAUU6c0lWmP0xcuRI9erVS3379pUk1atXT+fPn1f//v01YsQIlSrFsYPicKPf3SEhIbd8lEfy8SM9AQEBatSokVauXOlalp+fr5UrV6pZs2bX3aZZs2YF1pekFStW3HB93JrC7AtJmjhxosaOHatly5apcePGxTFqiefuvqhdu7Z2796tHTt2uC4PPfSQ2rRpox07digqKqo4xy9RCvP3onnz5jp06JArPCXpwIEDioiIIHhuU2H2x4ULF64Jm6tBavHVlcXGtt/d7p1j7X3mzZtnOZ1Oa9asWdbevXut/v37W+XLl7fS09Mty7KsXr16WUlJSa71N2zYYPn7+1uTJk2y9u3bZ40aNYq3rNvE3X0xYcIEKyAgwPr444+tkydPui7nzp3z1I9QYri7L36Nd2/Zx919cezYMSs4ONgaOHCgtX//fmvJkiVWWFiYNW7cOE/9CCWKu/tj1KhRVnBwsPWPf/zDSk1NtZYvX27VrFnT6tatm6d+hBLh3Llz1vbt263t27dbkqw333zT2r59u3X06FHLsiwrKSnJ6tWrl2v9q29ZHzJkiLVv3z5r6tSpZr5l3bIsa8qUKVa1atWsgIAAq0mTJtbXX3/tuq1Vq1ZW7969C6y/YMEC684777QCAgKs2NhYa+nSpcU8ccnlzr644447LEnXXEaNGlX8g5dA7v69+E9Ej73c3RcbN260mjZtajmdTqtGjRrWa6+9Zl25cqWYpy653Nkfly9ftl599VWrZs2aVmBgoBUVFWU999xz1s8//1z8g5cgq1evvu6//1ef+969e1utWrW6ZpsGDRpYAQEBVo0aNawPPvjA7cd1WBbH5wAAQMnn0+f0AAAA3CqiBwAAGIHoAQAARiB6AACAEYgeAABgBKIHAAAYgegBAABGIHoA+Izvv/9eDoeDb4MHUChEDwCv8eSTT8rhcLgulSpV0h//+Eft2rVLkhQVFaWTJ0+qbt26Hp4UgC8iegB4lT/+8Y86efKkTp48qZUrV8rf318PPvigpF++6LFKlSry9/f38JQAfBHRA8CrOJ1OValSRVWqVFGDBg2UlJSktLQ0/fjjj9e8vLVmzRo5HA6tXLlSjRs3VtmyZRUXF6f9+/e77m/nzp1q06aNgoODFRISokaNGmnr1q0e+ukAeBLRA8BrZWdn66OPPlJMTIwqVap0w/VGjBihv/zlL9q6dav8/f311FNPuW7r2bOnqlatqi1btmjbtm1KSkpS6dKli2N8AF6GY8QAvMqSJUsUFBQkSTp//rwiIiK0ZMkSlSp14/9He+2119SqVStJUlJSkjp27KhLly4pMDBQx44d05AhQ1S7dm1JUq1atYr+hwDglTjSA8CrtGnTRjt27NCOHTv0zTffqF27dmrfvr2OHj16w23q16/v+nNERIQk6dSpU5KkxMRE9e3bV/Hx8ZowYYIOHz5ctD8AAK9F9ADwKuXKlVNMTIxiYmJ077336t1339X58+c1c+bMG27zny9XORwOSVJ+fr4k6dVXX9WePXvUsWNHrVq1SnXq1NGiRYuK9ocA4JWIHgBezeFwqFSpUrp48WKh7+POO+/U4MGDtXz5cnXp0kUffPCBjRMC8BWc0wPAq+Tk5Cg9PV2S9PPPP+udd95Rdna2OnXq5PZ9Xbx4UUOGDFHXrl1VvXp1/fDDD9qyZYv+9Kc/2T02AB9A9ADwKsuWLXOdlxMcHKzatWtr4cKFat26tb7//nu37svPz0+nT5/WE088oYyMDFWuXFldunTR6NGji2ByAN7OYVmW5ekhAAAAihrn9AAAACMQPQAAwAhEDwAAMALRAwAAjED0AAAAIxA9AADACEQPAAAwAtEDAACMQPQAAAAjED0AAMAIRA8AADAC0QMAAIzw/wD2vMOwjpVKeQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cdd_object.fit_plot(X, y);" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "932a03ab", + "metadata": {}, + "source": [ + "This figures are histograms of scores returned by `.fit()`. As per source article the similarity matrix by default consists of `1`s where two minority classes cross over, and `0`s elsewhere. In our case minority classes are 0th and 2nd class:" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "451badc6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "array([[0, 0, 1, 0],\n", + " [0, 0, 0, 0],\n", + " [1, 0, 0, 0],\n", + " [0, 0, 0, 0]])\n" + ] + } + ], + "source": [ + "pprint(cdd_object.similarities)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f0a8aaab", + "metadata": {}, + "source": [ + "User can alter this matrix any way you see fit:" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "3e24ad30", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "array([[ 0, 42, 1, 0],\n", + " [ 0, 0, 0, 0],\n", + " [ 1, 0, 0, 0],\n", + " [ 0, 0, 0, 0]])\n", + "Are the results different?: False\n" + ] + } + ], + "source": [ + "custom_sim_cdd_object = ContinuousDataDifficulty(classes=MINORITY_CLASSES)\n", + "from copy import deepcopy\n", + "custom_similarity_matrix = deepcopy(cdd_object.similarities)\n", + "custom_similarity_matrix[0,1] = 42\n", + "custom_sim_cdd_results = custom_sim_cdd_object.fit(X=X, y=y, similarities=custom_similarity_matrix)\n", + "pprint(custom_sim_cdd_object.similarities)\n", + "print('Are the results equal?: ', cdd_results == custom_sim_cdd_results)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "d2141494", + "metadata": {}, + "source": [ + "User also can change `k` parameter of underlying KNN to change the number of neighbors, and effectively broaden the area of neighborhood. Default `k` value is set to `5` in all of the `DataDifficulty` methods (see the articles to learn why). Here is how to change `k` (to `2` for example):" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "94e99f72", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Are the results equal?: False\n" + ] + } + ], + "source": [ + "small_neighborhood_cdd_object = ContinuousDataDifficulty(classes=MINORITY_CLASSES, k=2)\n", + "small_neighborhood_cdd_results = small_neighborhood_cdd_object.fit(X, y)\n", + "print('Are the results equal?: ', cdd_results == small_neighborhood_cdd_results)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f03ad9a2", + "metadata": {}, + "source": [ + "Now let's examine which class pairs cross over. For each data point in each minority class we count neighbors, which aren't sampled from the same class. Here is how to do it:" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "eda1ebee", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "array([[ 0, 9, 14, 4],\n", + " [ 0, 0, 0, 0],\n", + " [14, 1, 0, 15],\n", + " [ 0, 0, 0, 0]])\n" + ] + } + ], + "source": [ + "bcm_object = BorderClassMatrix(classes=MINORITY_CLASSES)\n", + "bcm_results = bcm_object.fit(X, y)\n", + "pprint(bcm_results)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "cc5d2ab4", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAGzCAYAAAAhax6pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA18UlEQVR4nO3deXgUVdr//08nhCYbkUBIiIDJILIqsiqyC4J50AEXEEQH0XH5GjbziEx0kMXRiCiigsDgT2AcUXAUVBxg2AQX1mBAkFXCIk4SFmVJoA1J/f5Q+rE7YelQoZqq9+u66romp6pP3dXH4e6zVJXLMAxDAADAMUKsDgAAAFxaJH8AAByG5A8AgMOQ/AEAcBiSPwAADkPyBwDAYUj+AAA4DMkfAACHIfkDAOAwJH840owZM+RyubRnzx6rQwGAS47kD9OdSaxntkqVKumaa67RwIEDlZuba3V4AOB4FawOAPY1ZswYJScn69SpU/ryyy81efJk/fvf/9bmzZsVERFhdXgA4Fgkf5SblJQUtWjRQpL05z//WVWrVtX48eP18ccfq2/fvhdVd0FBAT8gfmMYhk6dOqXw8HCrQ7FMfn6+IiMjrQ4DuGww7I9L5uabb5YkZWdne8v++c9/qnnz5goPD1dsbKz69Omj/fv3+3yuY8eOaty4sTIzM9W+fXtFRETo6aefPue5tm3bpt69eysuLk7h4eGqV6+ennnmmXN+5uOPP1b37t2VmJgot9utOnXq6LnnnlNRUZHPcTt37tRdd92lhIQEVapUSTVr1lSfPn109OhR7zGLFy9W27ZtdcUVVygqKkr16tU7b8y//05atWqliIgIValSRe3bt9d//vMf7/6kpCTddtttWrRokVq0aKHw8HBNnTpVkrR792716tVLsbGxioiI0I033qjPPvusxDneeOMNNWrUyHuOFi1aaNasWd79x48f19ChQ5WUlCS3263q1avrlltu0YYNG3zq+eCDD7ztV61aNd133306cOCAd//LL78sl8ulvXv3loghPT1dFStW1E8//eQtW7NmjW699VbFxMQoIiJCHTp00FdffeXzuVGjRsnlcum7777TvffeqypVqqht27aSpJycHA0YMEA1a9aU2+1WjRo11KNHD9Z2AH7o+eOS+f777yVJVatWlSQ9//zzGjFihHr37q0///nPOnjwoN544w21b99e33zzja644grvZw8fPqyUlBT16dNH9913n+Lj4896nk2bNqldu3YKCwvTI488oqSkJH3//ff69NNP9fzzz5/1czNmzFBUVJTS0tIUFRWlZcuW6dlnn9WxY8c0btw4SdIvv/yibt26yePxaNCgQUpISNCBAwc0f/58/fzzz4qJidGWLVt022236brrrtOYMWPkdru1a9euEkmsNKNHj9aoUaN00003acyYMapYsaLWrFmjZcuWqWvXrt7jtm/frr59++rRRx/Vww8/rHr16ik3N1c33XSTCgoKNHjwYFWtWlUzZ87UH//4R/3rX//SHXfcIUmaNm2aBg8erLvvvltDhgzRqVOntGnTJq1Zs0b33nuvJOmxxx7Tv/71Lw0cOFANGzbU4cOH9eWXX2rr1q1q1qyZ9/saMGCAWrZsqYyMDOXm5uq1117TV1995W2/3r1766mnntKcOXM0bNgwn2udM2eOunbtqipVqkiSli1bppSUFDVv3lwjR45USEiIpk+frptvvllffPGFWrVq5fP5Xr16qW7dunrhhRd05s3kd911l7Zs2aJBgwYpKSlJeXl5Wrx4sfbt26ekpKTzfv+AYxiAyaZPn25IMpYsWWIcPHjQ2L9/v/H+++8bVatWNcLDw40ffvjB2LNnjxEaGmo8//zzPp/99ttvjQoVKviUd+jQwZBkTJky5YLO3759eyM6OtrYu3evT3lxcXGJGLOzs71lBQUFJep69NFHjYiICOPUqVOGYRjGN998Y0gyPvjgg7Oe/9VXXzUkGQcPHrygeM/YuXOnERISYtxxxx1GUVHRWWO/6qqrDEnGwoULfY4ZOnSoIcn44osvvGXHjx83kpOTjaSkJG+dPXr0MBo1anTOWGJiYozU1NSz7v/ll1+M6tWrG40bNzZOnjzpLZ8/f74hyXj22We9Za1btzaaN2/u8/m1a9cakox//OMf3uurW7eu0a1bN59rLSgoMJKTk41bbrnFWzZy5EhDktG3b1+fOn/66SdDkjFu3LhzXhsAw2DYH+WmS5cuiouLU61atdSnTx9FRUVp7ty5uvLKK/XRRx+puLhYvXv31qFDh7xbQkKC6tatq+XLl/vU5Xa7NWDAgPOe8+DBg1q5cqUefPBB1a5d22efy+U652d/P2d+/PhxHTp0SO3atVNBQYG2bdsmSYqJiZEkLVq0SAUFBaXWc2bE4uOPP1ZxcfF5Yz5j3rx5Ki4u1rPPPquQEN//a/rHnpycrG7duvmU/fvf/1arVq28Q+CSFBUVpUceeUR79uzRd999543vhx9+0Lp1684ayxVXXKE1a9boxx9/LHX/+vXrlZeXp8cff1yVKlXylnfv3l3169f3mWq45557lJmZ6R35kaTZs2fL7XarR48ekqSsrCzt3LlT9957rw4fPuz97yE/P1+dO3fWypUrS3yXjz32mM/f4eHhqlixoj7//HOfqQQAJZH8UW4mTZqkxYsXa/ny5fruu++0e/dub8LauXOnDMNQ3bp1FRcX57Nt3bpVeXl5PnVdeeWVqlix4nnPuXv3bklS48aNA453y5YtuuOOOxQTE6PKlSsrLi5O9913nyR55/OTk5OVlpamt956S9WqVVO3bt00adIkn/n+e+65R23atNGf//xnxcfHq0+fPpozZ855fwh8//33CgkJUcOGDc8ba3JycomyvXv3ql69eiXKGzRo4N0vScOHD1dUVJRatWqlunXrKjU1tcSUxEsvvaTNmzerVq1aatWqlUaNGuX9bn9fV2nnq1+/vs8cf69evRQSEqLZs2dL+nWB4gcffKCUlBRVrlxZ0q//PUhS//79S/z38NZbb8nj8fh8x6V9B263W2PHjtWCBQsUHx+v9u3b66WXXlJOTk5pXyHgaCR/lJtWrVqpS5cu6tixoxo0aODTmy0uLpbL5dLChQu1ePHiEtuZBWxnlPdK9p9//lkdOnTQxo0bNWbMGH366adavHixxo4d6433jFdeeUWbNm3S008/rZMnT2rw4MFq1KiRfvjhB2+sK1eu1JIlS3T//fdr06ZNuueee3TLLbeUWDxYVhfzfTRo0EDbt2/X+++/r7Zt2+rDDz9U27ZtNXLkSO8xvXv31u7du/XGG28oMTFR48aNU6NGjbRgwYKAz5eYmKh27dppzpw5kqTVq1dr3759uueee7zHnPl+x40bV+p/D4sXL1ZUVJRPvaV9B0OHDtWOHTuUkZGhSpUqacSIEWrQoIG++eabgOMGbM3qeQfYz5n59HXr1p31mJdeesmQZGzfvv289XXo0OG8c9Rn5OXlGZKMIUOGXFCMZ+b8586da0gyVqxY4XPc3//+d0OSsXz58rPW9dVXXxmSjGeeeeasxzz//POGJGPx4sVnPWbcuHGGJOObb745Z+xXXXWV0b179xLl11xzjdGqVasS5S+++KIhyfj2229Lrc/j8Rjdu3c3QkNDfebvfy83N9e48sorjTZt2hiGYRhff/21Icl48803SxzboEGDEnP8b775piHJ2LZtmzFkyBAjIiLCOHHihHf/mTUAU6dOPfuF/+bMnP+FrKnYsWOHERERYfTr1++8xwJOQs8flrjzzjsVGhqq0aNHe1dqn2EYhg4fPlymeuPi4tS+fXu9/fbb2rdvX4l6zyY0NLTEMb/88ovefPNNn+OOHTum06dP+5Rde+21CgkJkcfjkSQdOXKkRP3XX3+9JHmPKU3Pnj0VEhKiMWPGlJgiOFfsZ/zP//yP1q5dq1WrVnnL8vPz9fe//11JSUne6QT/77ZixYpq2LChDMNQYWGhioqKSgyxV69eXYmJid74W7RooerVq2vKlCk+17RgwQJt3bpV3bt39/n8XXfdpdDQUL333nv64IMPdNttt/ncl9+8eXPVqVNHL7/8sk6cOFHi2g4ePHje6y8oKNCpU6d8yurUqaPo6Ohzfu+AE3GrHyxRp04d/e1vf1N6err27Nmjnj17Kjo6WtnZ2Zo7d64eeeQRPfnkk2Wq+/XXX1fbtm3VrFkzPfLII0pOTtaePXv02WefKSsrq9TP3HTTTapSpYr69++vwYMHy+Vy6Z133imRdJctW6aBAweqV69euuaaa3T69Gm98847Cg0N1V133SXp1ycbrly5Ut27d9dVV12lvLw8vfnmm6pZs6bPYjx/V199tZ555hk999xzateune6880653W6tW7dOiYmJysjIOOd1/+Uvf9F7772nlJQUDR48WLGxsZo5c6ays7P14YcfeqddunbtqoSEBLVp00bx8fHaunWrJk6cqO7duys6Olo///yzatasqbvvvltNmjRRVFSUlixZonXr1umVV16RJIWFhWns2LEaMGCAOnTooL59+3pv9UtKStITTzzhE1v16tXVqVMnjR8/XsePH/cZ8pekkJAQvfXWW0pJSVGjRo00YMAAXXnllTpw4ICWL1+uypUr69NPPz3n9e/YsUOdO3dW79691bBhQ1WoUEFz585Vbm6u+vTpc87PAo5j4agDbOpChv3P+PDDD422bdsakZGRRmRkpFG/fn0jNTXVZzogkGH/MzZv3mzccccdxhVXXGFUqlTJqFevnjFixIgSMf7+Vr+vvvrK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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bcm_object.fit_plot(X, y);" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "57c36c69", + "metadata": {}, + "source": [ + "We can see that for example some data point from 2nd class has one neighbor from 1st class. We can easily spot that data point (the brown one below *HERE* sign):" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "id": "75a77f78", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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69atgcf+7//+TwIgLV++PPDYDTfcIGVkZEjvv/9+RJvkz/E3v/mN1LdvX+k///lPyPPz58+XXC6XtG3bNkmSJOmFF16QAEj3339/YJvjx49LRUVFEedbSXV1tQRAeu+99wKP7d69W8rJyQn52VM6D5KkfA6nTJkScQ7ldnV3d4c8tn//fikvL0/68Y9/HLOdRGpxaIYcY+rUqTh69CjWrFmDgwcPYs2aNQnd8etp3bp1OHjwIObPn49evXqFPBcvjyT4Dnf//v3o7OxEUVERPvjgg8DjAwYMAODvglfqmpe32b59O95///0E30Wkm266KWT/p5xyCvr27YupU6cGHj/llFMwYMAA/Pe//414/S233IITTzwx8P1tt92GE044Aa+88krgseD3f/DgQezZswdFRUU4cuQINm/eHLN9as6d7OKLLw7p0frud7+L7OzsQLt9Ph9eeOEFXHnllTjrrLMiXi9/jn/9619RVFSEgQMHYs+ePYGviy++GKIo4s033wQAvPLKKzjhhBNw2223Bfbhcrlw++23x3xPsldeeQXnnHMOJkyYEHgsNzcX1113XczzoPUcyu3KzMwMnId9+/bh+PHjOOussxTPJVEiODRDjpGbm4uLL74YdXV1OHLkCERRREVFhalt+uKLLwAAp59+uubXrlmzBr/97W+xadMmdHd3Bx4PDmCuvfZa/OlPf8JNN92E+fPn46KLLkJ5eTkqKiqQkeG/z7jzzjvxj3/8AxMmTMDYsWNxySWXoLKyEuedd15C76lXr17Izc0NeSwnJwdutzsiuMrJyYnI/QCAk08+OeT7fv36IT8/PyS35tNPP8WvfvUrvP766+jq6grZvrOzM2Yb1Zw72ciRIyMeGzhwYKDdHR0d6OrqivsZfv755/joo48izo1s9+7dAIAvv/wS+fn5geEP2SmnnBJz/7Ivv/wSZ599dsTjSq9P5hzKnnjiCTz44IPYvHkzvvrqq8Dj4cNtRIliIEKOUllZiZtvvhk7d+7EZZddFugxCBetN0JNImQqNDU14aqrrsIFF1yARx55BPn5+TjxxBOxcuXKkATQ3r17480330RDQwNefvllrF27Fs888wwmTZqE1157DS6XC+PGjcOWLVuwZs0arF27Fs899xweeeQR3HXXXVi8eLHmtkWbRRPtcUmSNB/jwIEDuPDCC5GdnY1f//rXGDNmDHr16oUPPvgAd955Z9TeH0D9udO73T6fD6WlpZg3b57i89/61rc07S9ZyZxD2VNPPYUZM2bg6quvxh133IGhQ4fC5XJhyZIlgSCbKFkMRMhRfvCDH+DWW2/Fu+++i2eeeSbqdgMHDgSAiJkKX375parjqJ2eK3f5f/LJJxg7dqyq1wDAc889h169euHVV18NqYGycuXKiG0zMjJw0UUX4aKLLsKyZctwzz334Je//CUaGhpw8cUXAwD69u2La6+9Ftdeey16enpQXl6Ou+++GwsWLIgYMkqFzz//HCUlJYHvDx06hPb2dlx++eUA/LOa9u7dC6/XiwsuuCCwXXNzc9x9azl3auTm5iI7OxuffPJJzO3GjBmDQ4cOBc55NKNGjcL69etx6NChkF6RLVu2qGrPqFGj8Pnnn0c8Hv56Lecw2s9zfX09TjrpJHi93pBtFi5cqKqtRGowR4QcpV+/flixYgUWLVqEK6+8Mup2o0aNgsvlCozbyx555BFVx+nbt6+q6ZaXXHIJ+vfvjyVLluDYsWMhz8W643a5XBAEIaSHpqWlJaKI2r59+yJeK89kkIck9u7dG/J8ZmYmTj31VEiSFNLVnkqPPfZYyLFXrFiB48ePB2Y8yb0Uweeop6dH1eej9typlZGRgauvvhp/+9vfFEvTy22cOnUq3nnnHbz66qsR2xw4cCBQ4+byyy/H8ePHsWLFisDzoihi+fLlqtpz+eWX491338WGDRsCj3V0dOAvf/lLyHZazmHfvn0Vh2qU9vHee+/hnXfeUdVWIjXYI0KOo2YaZE5ODq655hosX74cgiBgzJgxWLNmTWAcP57CwkL84x//wLJlyzB8+HCMHj1acdw+OzsbDz30EG666SaMHz8elZWVGDhwIP7v//4PR44cwRNPPKG4/ylTpmDZsmWYPHkyKisrsXv3bjz88MMYO3YsPvroo8B2v/71r/Hmm29iypQpGDVqFHbv3o1HHnkEbrcb559/PgB/MDRs2DCcd955yMvLw2effYbf//73mDJlCvr376/q/eqtp6cHF110EaZOnYotW7bgkUcewfnnn4+rrroKADBx4kQMHDgQ06dPx89+9jMIgoAnn3xS1XCJ2nOnxT333IPXXnsNF154IW655RaMGzcO7e3t+Otf/4q33noLAwYMwB133IGXXnoJV1xxBWbMmIHCwkIcPnwYH3/8Merr69HS0oIhQ4bgyiuvxHnnnYf58+ejpaUFp556Krxer+qcjXnz5uHJJ5/E5MmTUVVVFZi+O2rUqJD3p+UcFhYW4plnnsHcuXMxfvx49OvXD1deeSWuuOIKeL1e/OAHP8CUKVPQ3NyMRx99FKeeeioOHTqU0LkkimDWdB0iPQRP340lfPquJElSR0eH9MMf/lDq06ePNHDgQOnWW2+VPvnkE1XTdzdv3ixdcMEFUu/evSUAgam84dN3ZS+99JI0ceJEqXfv3lJ2drY0YcIEafXq1YHnlaagPv7449LJJ58sZWVlSd/+9rellStXRrRl/fr1UllZmTR8+HApMzNTGj58uDRt2rSQKaR/+MMfpAsuuEAaPHiwlJWVJY0ZM0a64447pM7OzpjnLNr03b59+0Zse+GFFypOEQ4/7/L5eeONN6RbbrlFGjhwoNSvXz/puuuuk/bu3Rvy2n/+85/SOeecI/Xu3VsaPny4NG/ePOnVV1+NmHad6LmTJP/03VmzZim2O3x69pdffindcMMNUm5urpSVlSWddNJJ0qxZs0Kmtx48eFBasGCBNHbsWCkzM1MaMmSINHHiRGnp0qUh05X37t0rXX/99VJ2draUk5MjXX/99dKHH36oavquJEnSRx99JF144YVSr169pBEjRki/+c1vpMcffzziZ0/tOTx06JBUWVkpDRgwQAIQOJ8+n0+65557pFGjRklZWVnS9773PWnNmjWK55woUYIkJZBJRkRERKQD5ogQERGRaRiIEBERkWkYiBAREZFpGIgQERGRaRiIEBERkWkYiBAREZFpLF3QzOfzYceOHejfv7/qktpERERkLkmScPDgQQwfPjywAGc0lg5EduzYgYKCArObQURERAlobW2F2+2OuY2lAxG5/HRrayuys7NNbg0RERGp0dXVhYKCAlXLSFg6EJGHY7KzsxmIEBER2YyatAomqxIREZFpGIgQERGRaRiIEBERkWkYiBAREZFpGIgQERGRaRiIEBERkWkYiBAREZFpGIgQERGRaQwNRJYsWYLx48ejf//+GDp0KK6++mps2bLFyEMSEdmKKAKNjcDq1f5/RdHsFhGllqGByBtvvIFZs2bh3Xffxbp16/DVV1/hkksuweHDh408LBGRLXi9gMcDlJQAlZX+fz0e/+NWxuCJ9CRIkiSl6mAdHR0YOnQo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[:,0][y==0], X[:,1][y==0], c='black', label=0)\n", + "plt.scatter(X[:,0][y==1], X[:,1][y==1], c='brown', label=1)\n", + "plt.scatter(X[:,0][y==2], X[:,1][y==2], c='green', label=2)\n", + "plt.scatter(X[:,0][y==3], X[:,1][y==3], c='blue', label=3)\n", + "guilty_one = X[123]\n", + "plt.annotate(\"HERE\", guilty_one, textcoords=\"offset points\", \n", + " xytext=(0,5), ha='center', color='red', fontsize=14, \n", + " fontweight='bold', zorder=10)\n", + "plt.title('Multiclass imbalanced data')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "20680652", + "metadata": {}, + "source": [ + "Lastly we may want to study per class heterogeneity of class topology. We can use elbow method in which we plot *within-cluster sum of squares* for different cluster numbers, and we try to spot 'an elbow'. This is how we do it:" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "id": "bb558982", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0: [(1, 14.67433759914556),\n", + " (2, 6.735191559662801),\n", + " (3, 4.501045361129617),\n", + " (4, 2.9559490881411032),\n", + " (5, 2.056692415453553),\n", + " (6, 1.423381724352783),\n", + " (7, 0.9135289469974753),\n", + " (8, 0.6509614470348347),\n", + " (9, 0.39022761236569303),\n", + " (10, 0.3068780393881096),\n", + " (11, 0.2415013633602744),\n", + " (12, 0.17205108240314598),\n", + " (13, 0.13045760397570533),\n", + " (14, 0.08733458980264484)],\n", + " 2: [(1, 13.360902221513912),\n", + " (2, 6.103153728096089),\n", + " (3, 4.002256029006579),\n", + " (4, 2.7871823772018507),\n", + " (5, 1.9987013967907636),\n", + " (6, 1.4796849273289463),\n", + " (7, 1.0188670579543735),\n", + " (8, 0.7630348029639596),\n", + " (9, 0.5547676903419655),\n", + " (10, 0.40975833799885175),\n", + " (11, 0.2953471437139862),\n", + " (12, 0.19485111300561064),\n", + " (13, 0.12014881580463331),\n", + " (14, 0.05857295979315155)]}\n" + ] + } + ], + "source": [ + "kmeans_elbow_object = KMeansElbowMethod(classes=MINORITY_CLASSES, \n", + " cluster_count_selection=list(range(1, 15)))\n", + "kmeans_elbow_results = kmeans_elbow_object.fit(X, y)\n", + "pprint(kmeans_elbow_results)" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "id": "f531f015", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABJTElEQVR4nO3deXhTZcL+8TtJ27R0oy10g1LKWiiLKIIsg6CIL4OIM4KKiqjjNoOjiKLymxd13BhknMGF120YxAU3FHRgEFEBRdmxyCY7pQIti9B0oVtyfn+0DVQolJLkJO33c125IOecJDcV25vzPOc5FsMwDAEAAAQgq9kBAAAA6ooiAwAAAhZFBgAABCyKDAAACFgUGQAAELAoMgAAIGBRZAAAQMCiyAAAgIBFkQEAAAGLIgPANC1bttStt95qdgwAAYwiA8Djdu7cqbvvvlutWrVSaGiooqKi1KdPH73wwgs6fvy42fHOqqSkRI888oiSk5MVFhamnj17atGiRWbHAnAaQWYHAFC/zJ8/XyNGjJDdbtctt9yiTp06qbS0VMuWLdP48eO1adMmvf7662bHPKNbb71Vs2fP1tixY9W2bVu9+eab+u1vf6vFixerb9++ZscDcBILN40E4Cm7d+9Wly5d1Lx5c3399ddKSkqqtn/Hjh2aP3++7r//fkkVQ0v9+/fXm2++aULa01u1apV69uypKVOm6KGHHpIkFRcXq1OnToqPj9f3339vckIAJ2NoCYDHPPfccyooKND06dNPKTGS1KZNG3eJOZ1ffvlFDz30kDp37qyIiAhFRUVp8ODBWr9+/SnHvvTSS8rIyFCjRo0UExOj7t27a9asWe79+fn5Gjt2rFq2bCm73a74+HhdccUVWrdu3Rn/DLNnz5bNZtNdd93l3hYaGqo//OEPWr58ubKzs2vzpQDgIwwtAfCY//znP2rVqpV69+5dp9fv2rVLc+fO1YgRI5SWlqbc3Fy99tpruvTSS7V582YlJydLkt544w3dd999Gj58uO6//34VFxfrxx9/1MqVK3XjjTdKku655x7Nnj1b9957rzp27KgjR45o2bJl2rJliy688MIaM/zwww9q166doqKiqm3v0aOHJCkzM1MpKSl1+vMB8DyKDACPcDgc2rdvn4YNG1bn9+jcubO2bdsmq/XEyeJRo0YpPT1d06dP18SJEyVVzMPJyMjQRx99VON7zZ8/X3feeaeef/5597aHH374rBkOHDhw2rNJVdv2799f6z8PAO9jaAmARzgcDklSZGRknd/Dbre7S4zT6dSRI0cUERGh9u3bVxsSaty4sX7++WetXr26xvdq3LixVq5cec7F4/jx47Lb7adsDw0Nde8H4D8oMgA8omooJj8/v87v4XK59M9//lNt27aV3W5XkyZN1LRpU/3444/Ky8tzH/fII48oIiJCPXr0UNu2bTVmzBh999131d7rueee08aNG5WSkqIePXroiSee0K5du86aISwsTCUlJadsLy4udu8H4D8oMgA8IioqSsnJydq4cWOd3+PZZ5/VuHHj1K9fP73zzjtauHChFi1apIyMDLlcLvdxHTp00NatW/X++++rb9+++vjjj9W3b189/vjj7mOuu+467dq1Sy+99JKSk5M1ZcoUZWRkaMGCBWfMkJSUpAMHDpyyvWpb1TwdAP6BIgPAY6666irt3LlTy5cvr9PrZ8+erQEDBmj69Om64YYbNGjQIA0cOFDHjh075djw8HBdf/31mjFjhvbu3ashQ4bomWeecZ85kSpKyZ/+9CfNnTtXu3fvVlxcnJ555pkzZrjgggu0bds291BZlZUrV7r3A/AfFBkAHvPwww8rPDxcd9xxh3Jzc0/Zv3PnTr3wwgs1vt5ms+nXS1t99NFH2rdvX7VtR44cqfY8JCREHTt2lGEYKisrk9PprDYUJUnx8fFKTk4+7bDRyYYPHy6n01lt0b6SkhLNmDFDPXv25IolwM9w1RIAj2ndurVmzZql66+/Xh06dKi2su/333+vjz766Iz3Vrrqqqv05JNP6rbbblPv3r21YcMGvfvuu2rVqlW14wYNGqTExET16dNHCQkJ2rJli15++WUNGTJEkZGROnbsmJo3b67hw4era9euioiI0JdffqnVq1dXu4rpdHr27KkRI0ZowoQJOnjwoNq0aaOZM2dqz549mj59uie+TAA8yQAAD9u2bZtx5513Gi1btjRCQkKMyMhIo0+fPsZLL71kFBcXu49LTU01Ro8e7X5eXFxsPPjgg0ZSUpIRFhZm9OnTx1i+fLlx6aWXGpdeeqn7uNdee83o16+fERcXZ9jtdqN169bG+PHjjby8PMMwDKOkpMQYP3680bVrVyMyMtIIDw83unbtavzf//1frfIfP37ceOihh4zE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67nnntNLL73k8yx33HGHFi1apLffflsbNmzQoEGDNHDgQO3bt8+rn3u272XPPfecXnzxRb366qtauXKlwsPDdeWVV6q4uNjnWQoLC9W3b19NnjzZ4599LlmKioq0bt06TZw4UevWrdMnn3yirVu36uqrr/ZpDklq166dXn75ZW3YsEHLli1Ty5YtNWjQIB06dMjnWarMmTNHK1asUHJysscz1MjAeZFkzJkzx+wYhmEYxsGDBw1JxtKlS82OYhiGYcTExBj/+te/TPns/Px8o23btsaiRYuMSy+91Lj//vt9nuHxxx83unbt6vPP/bVHHnnE6Nu3r9kxTuv+++83WrdubbhcLp9/9pAhQ4zbb7+92rbf//73xk033eTTHEVFRYbNZjPmzZtXbfuFF15o/OUvf/FZjl9/L3O5XEZiYqIxZcoU97Zjx44ZdrvdeO+993ya5WS7d+82JBk//PCDVzPUJkuVVatWGZKMrKwsU3Pk5eUZkowvv/zSaznOlOXnn382mjVrZmzcuNFITU01/vnPf3o1RxXOyNQjeXl5kqTY2FhTczidTr3//vsqLCxUr169TMkwZswYDRkyRAMHDjTl86ts375dycnJatWqlW666Sbt3bvX5xk+++wzde/eXSNGjFB8fLy6deumN954w+c5fq20tFTvvPOObr/9do/e0LW2evfura+++krbtm2TJK1fv17Lli3T4MGDfZqjvLxcTqdToaGh1baHhYWZcgavyu7du5WTk1Pt/6Ho6Gj17NlTy5cvNy2XP8rLy5PFYlHjxo1Ny1BaWqrXX39d0dHR6tq1q88/3+VyadSoURo/frwyMjJ8+tn1/qaRDYXL5dLYsWPVp08fderUyZQMGzZsUK9evVRcXKyIiAjNmTNHHTt29HmO999/X+vWrfPJHIMz6dmzp9588021b99eBw4c0F//+lf95je/0caNGxUZGemzHLt27dIrr7yicePG6f/9v/+n1atX67777lNISIhGjx7tsxy/NnfuXB07dky33nqrKZ//6KOPyuFwKD09XTabTU6nU88884xuuukmn+aIjIxUr1699NRTT6lDhw5KSEjQe++9p+XLl6tNmzY+zXKynJwcSVJCQkK17QkJCe59kIqLi/XII49o5MiRpty8cd68ebrhhhtUVFSkpKQkLVq0SE2aNPF5jsmTJysoKEj33Xef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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABKPElEQVR4nO3deXhU5cH+8XsyyUxC9oSsEJawJwQUEQtYAUV8kQJWcStS1NfWBRfEovL2xbVKkdqiSHF5/SmtUndwRQQFFJHdIPsuWxb2TPZl5vz+SDIQSSCEyZyZ5Pu5rrnCnHNm5g6tyc15nnMei2EYhgAAAPxQgNkBAAAAGooiAwAA/BZFBgAA+C2KDAAA8FsUGQAA4LcoMgAAwG9RZAAAgN+iyAAAAL9FkQEAAH6LIgPANO3atdOtt95qdgwAfowiA8Djdu3apTvvvFOpqakKDg5WRESE+vfvrxdeeEHFxcVmxzuj1atX695771V6erpCQ0PVpk0b3XDDDdq+fbvZ0QDUItDsAACals8//1zXX3+97Ha7fv/736t79+4qKyvTsmXLNHHiRG3atEmvvvqq2THrNHXqVH3//fe6/vrr1aNHD+Xk5Oill15Sr169tGLFCnXv3t3siABOYWHRSACesmfPHvXo0UOtW7fWN998o6SkpBr7d+7cqc8//1wPPPCApMqhpYEDB+rNN980IW3tli9frt69e8tms7m37dixQxkZGRo1apTeeustE9MB+CWGlgB4zHPPPaeCggK9/vrrp5UYSerYsaO7xNTm2LFj+tOf/qSMjAyFhYUpIiJCQ4cO1fr16087dsaMGUpPT1eLFi0UHR2t3r17a86cOe79+fn5Gj9+vNq1aye73a74+HhdeeWVWrdu3Rm/h379+tUoMZLUqVMnpaena8uWLWf7KwDgZQwtAfCYTz/9VKmpqerXr1+DXr97927NmzdP119/vdq3b6/c3Fy98sorGjBggDZv3qzk5GRJ0muvvab7779fo0aN0gMPPKCSkhL99NNPWrlypX73u99Jku666y598MEHuvfee5WWlqajR49q2bJl2rJli3r16nVOuQzDUG5urtLT0xv0fQFoPBQZAB7hcDh08OBBjRw5ssHvkZGRoe3btysg4OTJ4jFjxqhr1656/fXXNXnyZEmV83DS09P1/vvv1/len3/+uf7whz/o+eefd297+OGHG5Tr7bff1sGDB/XUU0816PUAGg9DSwA8wuFwSJLCw8Mb/B52u91dYpxOp44ePaqwsDB16dKlxpBQVFSUDhw4oNWrV9f5XlFRUVq5cqWysrIanEeStm7dqnHjxqlv374aO3bseb0XAM+jyADwiIiICEmVc1MayuVy6R//+Ic6deoku92uli1bKi4uTj/99JPy8vLcxz3yyCMKCwtTnz591KlTJ40bN07ff/99jfd67rnntHHjRqWkpKhPnz564okntHv37nPKk5OTo2HDhikyMlIffPCBrFZrg783AI2DIgPAIyIiIpScnKyNGzc2+D2effZZTZgwQZdddpneeustLViwQAsXLlR6erpcLpf7uG7dumnbtm165513dOmll+rDDz/UpZdeqscff9x9zA033KDdu3drxowZSk5O1rRp05Senq758+fXK0teXp6GDh2qEydO6Msvv3TPzwHgW7j8GoDH3HnnnXr11Ve1fPly9e3b96zH//Ly6wsuuEAxMTH65ptvahzXunVrdezYUUuWLKn1fcrKynTttdfqyy+/VEFBgYKDg0875tChQ+rVq5fatWunZcuWnTFXSUmJhgwZorVr12rRokX1+l4AmIMzMgA85uGHH1ZoaKjuuOMO5ebmnrZ/165deuGFF+p8vdVq1S//bfX+++/r4MGDNbYdPXq0xnObzaa0tDQZhqHy8nI5nc4aQ1GSFB8fr+TkZJWWlp7xe3A6nbrxxhv1ww8/6P3336fEAD6Oq5YAeEyHDh00Z84c3XjjjerWrVuNO/suX75c77///hnXVvrNb36jp556Srfddpv69eunDRs26O2331ZqamqN44YMGaLExET1799fCQkJ2rJli1566SUNGzZM4eHhOnHihFq3bq1Ro0apZ8+eCgsL06JFi7R69eoaVzHV5qGHHtInn3yi4cOH69ixY6fdAO+WW25p8N8PgEZgAICHbd++3fjDH/5gtGvXzrDZbEZ4eLjRv39/Y8aMGUZJSYn7uLZt2xpjx451Py8pKTEeeughIykpyQgJCTH69+9v/PDDD8aAAQOMAQMGuI975ZVXjMsuu8yIjY017Ha70aFDB2PixIlGXl6eYRiGUVpaakycONHo2bOnER4eboSGhho9e/Y0/vnPf541+4ABAwxJdT4A+BbmyAAAAL/FHBkAAOC3KDIAAMBvUWQAAIDf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9u2rkpIShYWFae7cuUpLS/N6jnfeeUfr1q3zyhyDM7nkkkv05ptvqkuXLsrOztaTTz6pX//619q4caPCw8O9lmP37t2aNWuWJkyYoP/5n//R6tWrdf/998tms2ns2LFey/FL8+bN04kTJ3Trrbea8vmPPvqoHA6HunbtKqvVKqfTqWeeeUajR4/2ao7w8HD17dtXTz/9tLp166aEhAT95z//0Q8//KCOHTt6NcupcnJyJEkJCQk1tickJLj3QSopKdEjjzyim2++2ZTFGz/77DPddNNNKioqUlJSkhYuXKiWLVt6PcfUqVMVGBio+++/3+ufTZFpIsaNG6eNGzea+i+4Ll26KDMzU3l5efrggw80duxYLV261KtlZv/+/XrggQe0cOHC0/6F622n/su+R48euuSSS9S2bVu99957+u///m+v5XC5XOrdu7eeffZZSdKFF16ojRs36uWXXza1yLz++usaOnSod8fST/Hee+/p7bff1pw5c5Senq7MzEyNHz9eycnJXv97+fe//63bb79drVq1ktVqVa9evXTzzTdr7dq1Xs2Bc1NeXq4bbrhBhmFo1qxZpmQYNGiQMjMzdeTIEb322mu64YYbtHLlSsXHx3stw9q1a/XCCy9o3bp1ppxdZWipCbj33nv12WefafHixWrdurVpOWw2mzp27KiLLrpIU6ZMUc+ePfXCCy94NcPatWt16NAh9erVS4GBgQoMDNTSpUv14osvKjAwUE6n06t5ThUVFaXOnTtr586dXv3cpKSk08pkt27dTBnmqrZ3714tWrRId9xxh2kZJk6cqEcffVQ33XSTMjIyNGbMGD344IOaMmWK17N06NBBS5cuVUFBgfbv369Vq1apvLxcqampXs9SLTExUZKUm5tbY3tubq57X3NWXWL27t2rhQsXmnI2RpJCQ0PVsWNH/epXv9Lrr7+uwMBAvf76617N8N133+nQoUNq06aN++fu3r179dBDD6ldu3aN/vkUGT9mGIbuvfdezZ07V998843at29vdqQaXC6XSktLvfqZV1xxhTZs2KDMzEz3o3fv3ho9erQyMzNltVq9mudUBQUF2rVrl5KSkrz6uf379z/tsvzt27erbdu2Xs1xqjfeeEPx8fEaNmyYaRmKiooUEFDzR6DVapXL5TIpUeUvpaSkJB0/flwLFizQyJEjTcvSvn17JSYm6uuvv3ZvczgcWrlypWlz33xFdYnZsWOHFi1apNjYWLMjuZnxc3fMmDH66aefavzcTU5O1sSJE7VgwYJG/3yGlhqgoKCgxr+q9+zZo8zMTMXExKhNmzZeyzFu3DjNmTNHH3/8scLDw93j1pGRkQoJCfFaDkmaNGmShg4dqjZt2ig/P19z5szRkiVLvPJ/4lOFh4efNkcoNDRUsbGxXp879Kc//UnDhw9X27ZtlZWVpccff1xWq1U333yzV3M8+OCD6tevn5599lndcMMNWrVqlV599VW9+uqrXs1RzeVy6Y033tDYsWMVGGjej6Dhw4frmWeeUZs2bZSenq4ff/xRf//733X77bd7PcuCBQtkGIa6dOminTt3auLEieratatuu+22Rv3cs/0sGz9+vP7yl7+oU6dOat++vSZPnqzk5GRdc801Xs9y7Ngx7du3z32/lupynpiY6PEzRGfKkpSUpFGjRmndunX67LPP5HQ63T97Y2JiZLPZvJIjNjZWzzzzjEaMGKGkpCQdOXJEM2fO1MGDBxvldgZn+9/nl2UuKChIiYmJ6tKli8eznMYr10Y1MYsXLzYknfYYO3asV3PUlkGS8cYbb3g1h2EYxu233260bdvWsNlsRlxcnHHFFVcYX331lddz1Masy69vvPFGIykpybDZbEarVq2MG2+80di5c6fXcxiGYXz66adG9+7dDbvdbnTt2tV49dVXTclhGIaxYMECQ5Kxbds20zIYhmE4HA7jgQceMNq0aWMEBwcbqampxp///GejtLTU61neffddIzU11bDZbEZiYqIxbtw448SJE43+uWf7WeZyuYzJkycbCQkJht1uN6644opG+9/tbFneeOONWvc//vjjXs1Sffl3bY/Fixd7LUdxcbHx29/+1khOTjZsNpuRlJRkjBgxwli1apVHM9QnS228efm1xTBMuI0lAACABzBHBgAA+C2KDAAA8FsUGQAA4LcoMgAAwG9RZAAAgN+iyAAAAL9FkQEAAH6LIgPAFBaLRfPmzTM7BgA/R5EB0ChycnJ03333KTU1VXa7XSkpKRo+fHiNtXs8ZcmSJbJYLDpx4oTH3xuAb2OtJQAe9/PPP6t///6KiorStGnTlJGRofLyci1YsEDjxo3T1q1bzY5YK8Mw5HQ6TV0DCsC54YwMAI+75557ZLFYtGrVKl133XXq3Lmz0tPTNWHCBK1YseK042s7o5KZmSmLxaKff/5ZkrR3714NHz5c0dHRCg0NVXp6ur744gv9/PPPGjRokCQpOjpaFotFt956q6TKBSqnTJmi9u3bKyQkRD179tQHH3xw2ufOnz9fF110kex2u5YtW6b169dr0KBBCg8PV0REhC666CKtWbOm0f6+ADQc/+wA4FHHjh3Tl19+qWeeeUahoaGn7Y+KimrQ+44bN05lZWX69ttvFRoaqs2bNyssLEwpKSn68MMPdd1112nbtm2KiIhwr/4+ZcoUvfXWW3r55ZfVqVMnffvtt7rlllsUFxenAQMGuN/70Ucf1d/+9jelpqYqOjpal112mS688ELNmjVLVqtVmZmZCgoKalBuAI2LIgPAo3bu3CnDMNS1a1ePvu++fft03XXXKSMjQ5KUmprq3hcTEyNJio+Pdxel0tJSPfvss1q0aJH69u3rfs2yZcv0yiuv1CgyTz31lK688soanzVx4kT399CpUyePfi8APIciA8CjDMNolPe9//77dffdd+urr77S4MGDdd1116lHjx51Hr9z504VFRXVKCiSVFZWpgsvvLDGtt69e9d4PmHCBN1xxx3697//rcGDB+v6669Xhw4dPPfNAPAY5sgA8KhOnTrJYrGc04TegIDKH0WnlqDy8vIax9xxxx3avXu3xowZow0bNqh3796aMWNGne9ZUFAgSfr888+VmZnpfmzevLnGPBlJpw2BPfHEE9q0aZOGDRumb775RmlpaZo7d269vx8A3kORAeBRMTExuuqqqzRz5kwVFhaetr+2S6Tj4uIkSdnZ2e5tmZmZpx2XkpKiu+66Sx999JEeeughvfbaa5Ikm80mSXI6ne5j09LSZLfbtW/fPnXs2LHGIyUl5azfR+fOnfXggw/qq6++0rXXXqs33njjrK8B4H0UGQAeN3PmTDmdTvXp00cffvihduzYoS1btujFF190z1c5VXW5eOKJJ7Rjxw59/vnnev7552scM378eC1YsEB79uzRunXrtHjxYnXr1k2S1LZtW1ksFn322Wc6fPiwCgoKFB4erj/96U968MEHNXv2bO3atUvr1q3TjBkzNHv27DqzFxcX695779WSJUu0d+9eff/991q9erX7swD4GAMAGkFWVpYxbtw4o23btobNZjNatWpljBgxwli8eLFhGIYhyZg7d677+GXLlhkZGRlGcHCw8etf/9p4//33DUnGnj17DMMwjHvvvdfo0KGDYbfbjbi4OGPMmDHGkSNH3K9/6qmnjMTERMNisRhjx441DMMwXC6XMX36dKNLly5GUFCQERcXZ1x11VXG0qVLDcMwjMWLFxuSjOPHj7vfp7S01LjpppuMlJQUw2azGcnJyca9995rFBcXN+ZfF4AGshhGI83MAwAAaGQMLQEAAL9FkQEAAH6LIgMAAPwWRQYAAPgtigwAAPBbFBkAAOC3KDIAAMBvUWQAAIDfosgAAAC/RZEBAAB+iyIDAAD8FkUGAAD4rf8PW3mFB47WDIwAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "kmeans_elbow_object.fit_plot(X, y);" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "39471910", + "metadata": {}, + "source": [ + "We can see smooth, descending series on the plot, which usually indicates that a class topology is homogenous. Let's try to alter the topology of our dataset. Let's forget which class is majority and which is minority, and let's create dataset in which one class is homogenous and the second class consists of 3 easily separable clusters:" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "id": "ac2910ce", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGzCAYAAAASZnxRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+tElEQVR4nO3de3xU1b3///ckJoGAAYHILeEiULDWKsWK0KJQOMVLBU7EC1oVj8VrjyDVKj3fipxTf5yqVdRqsT2n2GMpKhqL9diLB6GlFVERqiJgoQmEcJFLTRAw0Zn1+2PPjJlkLnvPzJ49l9fz8cgjZs/ae69tSOaTtT7rs3zGGCMAAAAPFHndAQAAULgIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRIAC4PP5dPfdd3vdDdtS6e/q1avl8/m0evXqtPYJgDsIRIAc99hjj8nn82n06NG2z3n11Vd1991368MPP3SvYznopZdeyqmADcgHBCJAjlu6dKkGDRqk119/Xdu2bbN1zquvvqoFCxYQiLTz0ksvacGCBV53AygoBCJADqurq9Orr76qBx54QJWVlVq6dKmn/Tl69Kin9weQewhEgBy2dOlSnXDCCbrgggs0ffp0W4HI3Xffrdtvv12SNHjwYPl8Pvl8PtXX14fb/PKXv9SoUaPUuXNn9ejRQ5dddpkaGhoirjN+/Hh94Qtf0Pr163X22WervLxc3/ve9yRJLS0tmj9/voYOHaqysjJVV1fru9/9rlpaWiKu0dLSoltvvVWVlZU6/vjjNWXKFO3atcv28+/atUvTpk1Tly5ddOKJJ+rWW2/tcA9JWrNmjS6++GINGDAg3J9bb71Vx44dC7eZOXOmHn30UUkK/z/x+Xzh1++//36NHTtWPXv2VOfOnTVq1Cg9++yztvsKILrjvO4AgOQtXbpUNTU1Ki0t1YwZM/STn/xEb7zxhr785S/HPKempkbvv/++li1bpgcffFC9evWSJFVWVkqS7rnnHn3/+9/XJZdcom9961vav3+/HnnkEZ199tnasGGDunfvHr7WwYMHdd555+myyy7TN7/5TfXu3VuBQEBTpkzRn//8Z1133XU6+eST9c477+jBBx/U+++/r1//+tfh87/1rW/pl7/8pS6//HKNHTtWr7zyii644AJbz37s2DFNnDhRO3fu1C233KJ+/frpySef1CuvvNKh7fLly3X06FHdeOON6tmzp15//XU98sgj2rVrl5YvXy5Juv7667V79269/PLLevLJJztc46GHHtKUKVN0xRVXqLW1VU899ZQuvvhivfjii7b7DCAKAyAnvfnmm0aSefnll40xxgQCAVNVVWVmz57doa0kM3/+/PDX9913n5Fk6urqItrV19eb4uJic88990Qcf+edd8xxxx0Xcfycc84xkszixYsj2j755JOmqKjIrFmzJuL44sWLjSTzl7/8xRhjzMaNG40kc9NNN0W0u/zyyzv0N5pFixYZSeaZZ54JHzty5IgZOnSokWRWrVoVPn706NEO5y9cuND4fD6zY8eO8LGbb77ZxPq12P4ara2t5gtf+IL52te+FrefAOJjagbIUUuXLlXv3r01YcIESdZ0wqWXXqqnnnpKfr8/qWvW1tYqEAjokksu0YEDB8Ifffr00bBhw7Rq1aqI9mVlZbrmmmsiji1fvlwnn3yyRowYEXGNr33ta5IUvsZLL70kSbrlllsizp8zZ46tvr700kvq27evpk+fHj5WXl6u6667rkPbzp07h//7yJEjOnDggMaOHStjjDZs2GDrfm2v8Y9//ENNTU0aN26c3nrrLVvnA4iOqRkgB/n9fj311FOaMGGC6urqwsdHjx6tH/3oR1q5cqW+/vWvO77u3/72NxljNGzYsKivl5SURHzdv39/lZaWdrjG5s2bw1M97X3wwQeSpB07dqioqEhDhgyJeH348OG2+rpjxw4NHTo0Io8j1vk7d+7UXXfdpRdeeEH/+Mc/Il5ramqydb8XX3xRP/jBD7Rx48aIPJT29wfgDIEIkINeeeUV7dmzR0899ZSeeuqpDq8vXbo0qUAkEAjI5/Ppt7/9rYqLizu83rVr14iv244StL3GqaeeqgceeCDqPaqrqx33KxV+v1//9E//pEOHDumOO+7QiBEj1KVLFzU2NmrmzJkKBAIJr7FmzRpNmTJFZ599th577DH17dtXJSUlWrJkiX71q19l4CmA/EUgAuSgpUuX6sQTTwyv8mirtrZWzz//vBYvXhw1UJBi/xU/ZMgQGWM0ePBgfe5zn0uqb0OGDNFf//pXTZw4Me5owcCBAxUIBLR9+/aIUYytW7faus/AgQP17rvvyhgTcZ/257/zzjt6//339Ytf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2TRduwXnAaZmAACFIdVpEbtFzwos2TRVjIgAAApHKtMi6RhVQQcEIgCA/BVrl9tkp0VCoypRq7MuKshk01QRiAAA8pNbu9ySbJpWBCIAgPwTKufefoVMqJx7qktlSTZNG5JVAQD5hV1ucwqBCAAgvzgp5w7PMTUDAMg9sZJQJXa5zTEEIgCA3JIoCZVdbnMKUzMAgNwRSkJtP/USSkJtqKXwWI4hEAEA5Aa7SagSu9zmEAIRAEBucJKEyi63OYMcEQBAbnCahErhsZxAIAIAyA3JJKFSeCzrMTUDAMgNJKHmJQIRAEBuCO1+K4kk1PxBIAIAyB0koeYdckQAALmFJNS8QiACAMg9JKHmDaZmAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZwhEAACAZ1wLRO655x6NHTtW5eXl6t69u1u3AQAAOcy1QKS1tVUXX3yxbrzxRrduAQAActxxbl14wYIFkqQnnnjCrVsAAIAc51ogkoyWlha1tLSEv25ubvawNwAAwG1Zlay6cOFCdevWLfxRXV3tdZcAAICLHAUid955p3w+X9yPLVu2JN2ZefPmqampKfzR0NCQ9LUAAED2czQ1853vfEczZ86M2+akk05KujNlZWUqKytL+nwAAJBbHAUilZWVqqysdKsvAACgwLiWrLpz504dOnRIO3fulN/v18aNGyVJQ4cOVdeuXd26LQAAyCGuBSJ33XWXfvGLX4S/HjlypCRp1apVGj9+vFu3BQAAOcRnjDFedyKW5uZmdevWTU1NTaqoqPC6OwAAwAYn799ZtXwXAAAUFgIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADgGQIRAADg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WVmZ5s+fr7KyMq+74qpCeU6pcJ6V58wvhfKcUuE8a6E8p11ZnawKAADyGyMiAADAMwQiAADAMwQiAADAMwQiAADAMwQiAADAMwQibUyZMkUDBgxQp06d1LdvX1155ZXavXt33HM+/vhj3XzzzerZs6e6du2qiy66SPv27ctQj52rr6/Xtddeq8GDB6tz584aMmSI5s+fr9bW1rjnjR8/Xj6fL+LjhhtuyFCvnUv2OXPt+xlyzz33aOzYsSovL1f37t1tnTNz5swO39Nzzz3X3Y6mKJnnNMborrvuUt++fdW5c2dNmjRJf/vb39ztaIoOHTqkK664QhUVFerevbuuvfZaffTRR3HPyZWf0UcffVSDBg1Sp06dNHr0aL3++utx2y9fvlwjRoxQp06ddOqpp+qll17KUE9T4+Q5n3jiiQ7fu06dOmWwt94iEGljwoQJeuaZZ7R161Y999xz2r59u6ZPnx73nFtvvVW/+c1vtHz5cv3xj3/U7t27VVNTk6EeO7dlyxYFAgE9/vjj2rRpkx588EEtXrxY3/ve9xKeO2vWLO3Zsyf8ce+992agx8lJ9jlz7fsZ0traqosvvlg33nijo/POPffciO/psmXLXOpheiTznPfee68efvhhLV68WOvWrVOXLl00efJkffzxxy72NDVXXHGFNm3apJdfflkvvvii/vSnP+m6665LeF62/4w+/fTTmjt3rubPn6+33npLp512miZPnqwPPvggavtXX31VM2bM0LXXXqsNGzZo2rRpmjZtmt59990M99wZp88pWeXe237vduzYkcEee8wgphUrVhifz2daW1ujvv7hhx+akpISs3z58vCxzZs3G0lm7dq1mepmyu69914zePDguG3OOeccM3v27Mx0yCWJnjMfvp9Lliwx3bp1s9X26quvNlOnTnW1P26x+5yBQMD06dPH3HfffeFjH374oSkrKzPLli1zsYfJe++994wk88Ybb4SP/fa3vzU+n880NjbGPC8XfkbPPPNMc/PNN4e/9vv9pl+/fmbhwoVR219yySXmggsuiDg2evRoc/3117vaz1Q5fU4nP7f5iBGRGA4dOqSlS5dq7NixKikpidpm/fr1+uSTTzRp0qTwsREjRmjAgAFau3ZtprqasqamJvXo0SNhu6VLl6pXr176whe+oHnz5uno0aMZ6F36JHrOfPl+OrF69WqdeOKJGj58uG688UYdPHjQ6y6lVV1dnfbu3RvxPe3WrZtGjx6dtd/TtWvXqnv37jrjjDPCxyZNmqSioiKtW7cu7rnZ/DPa2tqq9evXR3wvioqKNGnSpJjfi7Vr10a0l6TJkydn7fdOSu45Jemjjz7SwIEDVV1dralTp2rTpk2Z6G5WyOrdd71wxx136Mc//rGOHj2qs846Sy+++GLMtnv37lVpaWmHuerevXtr7969Lvc0PbZt26ZHHnlE999/f9x2l19+uQYOHKh+/frp7bff1h133KGtW7eqtrY2Qz1NjZ3nzIfvpxPnnnuuampqNHjwYG3fvl3f+973dN5552nt2rUqLi72untpEfq+9e7dO+J4Nn9P9+7dqxNPPDHi2HHHHacePXrE7XO2/4weOHBAfr8/6vdiy5YtUc/Zu3dvTn3vpOSec/jw4fr5z3+uL37xi2pqatL999+vsWPHatOmTZ7vQJ8JeT8icuedd3ZIAmr/0fYfx+23364NGzboD3/4g4qLi3XVVVfJ5EAVfKfPKUmNjY0699xzdfHFF2vWrFlxr3/ddddp8uTJOvXUU3XFFVfof/7nf/T8889r+/btbj5WB24/ZzZJ5lmduOyyyzRlyhSdeuqpmjZtml588UW98cYbWr16dfoewga3nzNbuP2c2fIzCufGjBmjq666SqeffrrOOecc1dbWqrKyUo8//rjXXcuIvB8R+c53vqOZM2fGbXPSSSeF/7tXr17q1auXPve5z+nkk09WdXW1XnvtNY0ZM6bDeX369FFra6s+/PDDiL+i9+3bpz59+qTrEWxx+py7d+/WhAkTNHbsWP30pz91fL/Ro0dLskYahgwZ4vj8ZLn5nNn0/ZScP2uqTjrpJPXq1Uvbtm3TxIkT03bdRNx8ztD3bd++ferbt2/4+L59+3T66acndc1k2X3OPn36dEhq/PTTT3Xo0CFH/w69+hmNpVevXiouLu6wCi3ez1efPn0ctc8GyTxneyUlJRo5cqS2bdvmRhezTt4HIpWVlaqsrEzq3EAgIElqaWmJ+vqoUaNUUlKilStX6qKLLpIkbd26VTt37owauLjJyXM2NjZqwoQJGjVqlJYsWaKiIucDYxs3bpSkiF/umeDmc2bT91NK7d9uMnbt2qWDBw9m9ffUqcGDB6tPnz5auXJlOPBobm7WunXrHK8wSpXd5xwzZow+/PBDrV+/XqNGjZIkvfLKKwoEAuHgwg6vfkZjKS0t1ahRo7Ry5UpNmzZNkvU7duXKlfr2t78d9ZwxY8Zo5cqVmjNnTvjYyy+/7MnPo13JPGd7fr9f77zzjs4//3wXe5pFvM6WzRavvfaaeeSRR8yGDRtMfX29WblypRk7dqwZMmSI+fjjj40xxuzatcsMHz7crFu3LnzeDTfcYAYMGGBeeeUV8+abb5oxY8aYMWPGePUYCe3atcsMHTrUTJw40ezatcvs2bMn/NG2Tdvn3LZtm/n3f/938+abb5q6ujqzYsUKc9JJJ5mzzz7bq8dIKJnnNCb3vp8hO3bsMBs2bDALFiwwXbt2NRs2bDAbNmwwhw8fDrcZPny4qa2tNcYYc/jwYXPbbbeZtWvXmrq6OvN///d/5ktf+pIZNmxY+N97NnL6nMYY85//+Z+me/fuZsWKFebtt982U6dONYMHDzbHjh3z4hFsOffcc83IkSPNunXrzJ///GczbNgwM2PGjPDrufoz+tRTT5mysjLzxBNPmPfee89cd911pnv37mbv3r3GGGOuvPJKc+edd4bb/+UvfzHHHXecuf/++83mzZvN/PnzTUlJiXnnnXe8egRbnD7nggULzO9//3uzfft2s379enPZZZeZTp06mU2bNnn1CBlFIBL09ttvmwkTJpgePXqYsrIyM2jQIHPDDTeYXbt2hdvU1dUZSWbVqlXhY8eOHTM33XSTOeGEE0x5ebn553/+54g3u2yzZMkSIynqR0j759y5c6c5++yzw/9vhg4dam6//XbT1NTk0VMklsxzGpN738+Qq6++Ouqztn02SWbJkiXGGGOOHj1qvv71r5vKykpTUlJiBg4caGbNmhX+RZmtnD6nMdYS3u9///umd+/epqyszEycONFs3bo185134ODBg2bGjBmma9eupqKiwlxzzTURwVYu/4w+8sgjZsCAAaa0tNSceeaZ5rXXXgu/ds4555irr746ov0zzzxjPve5z5nS0lJzyimnmP/93//NcI+T4+Q558yZE27bu3dvc/7555u33nrLg157w2dMDmRiAgCAvJT3q2YAAED2IhABAACeIRABAACeIRABAACeIRABAACeIRABAACeIRABAACeIRABAACeIRABAACeIRABAACeIRABAACe+f8B+J7GzsB9On4AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "X = np.load('X_altered.npy')\n", + "y = np.load('y_altered.npy')\n", + "plt.scatter(X[:,0][y==0], X[:,1][y==0], c='magenta', label=0)\n", + "plt.scatter(X[:,0][y==1], X[:,1][y==1], c='orange', label=1)\n", + "plt.title('Altered data')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "08e25e03", + "metadata": {}, + "source": [ + "Now let's rerun our method. Here is how:" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "id": "d5c3f447", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAABCj0lEQVR4nO3deXiU5d328XMmyUz2lawSQgJhX4qgGMEFRTwsbhVwKbW4Va1BWSoqbx/cKlKkrmhRfHgobaUuVGzVKiKbRRAQRAUUwmJAMGHNTraZ+/0jmSGBACHMzD2TfD/HMUcy9/pL0OTMtdyXxTAMQwAAAAHIanYBAAAALUWQAQAAAYsgAwAAAhZBBgAABCyCDAAACFgEGQAAELAIMgAAIGARZAAAQMAiyAAAgIBFkAFgmo4dO+q2224zuwwAAYwgA8DjduzYoXvuuUdZWVkKDQ1VdHS0Bg0apBdffFFHjx41u7zTqqqq0sMPP6y0tDSFhYVp4MCBWrx4sdllAWhCsNkFAGhdPvzwQ40aNUp2u12//vWv1atXL1VXV2vlypWaNGmSNm/erNmzZ5td5inddtttWrBggcaPH6/s7Gz95S9/0c9//nMtW7ZMgwcPNrs8AA1YWDQSgKfs2rVLffr0Ufv27bV06VKlpqY22r99+3Z9+OGHGjdunKS6rqVLL71Uf/nLX0yotmlr167VwIEDNWPGDD344IOSpMrKSvXq1UtJSUlatWqVyRUCaIiuJQAe88wzz6isrExz5sw5IcRIUufOnd0hpimHDx/Wgw8+qN69eysyMlLR0dG66qqr9PXXX59w7MyZM9WzZ0+Fh4crLi5OAwYM0Pz58937S0tLNX78eHXs2FF2u11JSUm64oortGHDhlN+DQsWLFBQUJDuvvtu97bQ0FDdeeedWr16tfbs2dOcbwUAH6FrCYDHvP/++8rKytKFF17YovN37typ9957T6NGjVJmZqYKCwv12muv6ZJLLtGWLVuUlpYmSXr99df1wAMPaOTIkRo3bpwqKyv1zTffaM2aNfrlL38pSbr33nu1YMECjR07Vj169NChQ4e0cuVKfffddzr33HNPWsNXX32lLl26KDo6utH2888/X5K0ceNGpaent+jrA+B5BBkAHlFSUqK9e/fquuuua/E1evfurW3btslqPdZYfOutt6pbt26aM2eOpkyZIqluHE7Pnj31zjvvnPRaH374oX7zm9/o2WefdW976KGHTlvDTz/91GRrkmvbvn37mv31APA+upYAeERJSYkkKSoqqsXXsNvt7hDjcDh06NAhRUZGqmvXro26hGJjY/Xjjz9q3bp1J71WbGys1qxZc8bB4+jRo7Lb7SdsDw0Nde8H4D8IMgA8wtUVU1pa2uJrOJ1OPf/888rOzpbdble7du2UmJiob775RsXFxe7jHn74YUVGRur8889Xdna2cnNz9fnnnze61jPPPKNNmzYpPT1d559/vh5//HHt3LnztDWEhYWpqqrqhO2VlZXu/QD8B0EGgEdER0crLS1NmzZtavE1nn76aU2cOFEXX3yx/v73v2vRokVavHixevbsKafT6T6ue/fu2rp1q958800NHjxY//znPzV48GA99thj7mNuvPFG7dy5UzNnzlRaWppmzJihnj176qOPPjplDampqfrpp59O2O7a5hqnA8A/EGQAeMzVV1+tHTt2aPXq1S06f8GCBRoyZIjmzJmjm2++WcOGDdPQoUNVVFR0wrERERG66aabNHfuXO3evVvDhw/X1KlT3S0nUl0oue+++/Tee+9p165dSkhI0NSpU09Zw89+9jNt27bN3VXmsmbNGvd+AP6DIAPAYx566CFFRETorrvuUmFh4Qn7d+zYoRdffPGk5wcFBen4R1u988472rt3b6Nthw4davTeZrOpR48eMgxDNTU1cjgcjbqiJCkpKUlpaWlNdhs1NHLkSDkcjkYP7auqqtLcuXM1cOBAZiwBfoZZSwA8plOnTpo/f75uuukmde/evdGTfVetWqV33nnnlGsrXX311XryySd1++2368ILL9S3336rN954Q1lZWY2OGzZsmFJSUjRo0CAlJyfru+++08svv6zhw4crKipKRUVFat++vUaOHKm+ffsqMjJSn376qdatW9doFlNTBg4cqFGjRmny5Mnav3+/OnfurHnz5umHH37QnDlzPPFtAuBJBgB42LZt24zf/OY3RseOHQ2bzWZERUUZgwYNMmbOnGlUVla6j8vIyDDGjBnjfl9ZWWn87ne/M1JTU42wsDBj0KBBxurVq41LLrnEuOSSS9zHvfbaa8bFF19sJCQkGHa73ejUqZMxadIko7i42DAMw6iqqjImTZpk9O3b14iKijIiIiKMvn37Gn/+85+bVf/Ro0eNBx980EhJ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Uz/99JP7tXLlSp/XcOTIEQ0aNEghISH66KOPtGXLFj377LOKi4vzeS3r1q1r9P1YvHixJGnUqFE+r2X69OmaNWuWXn75ZX333XeaPn26nnnmGc2cOdPntdx1111avHix/va3v+nbb7/VsGHDNHToUO3du9er9z3dz7JnnnlGL730kl599VWtWbNGERERuvLKK1VZWenzWsrLyzV48GBNnz7d4/c+k1oqKiq0YcMGTZkyRRs2bNC7776rrVu36tprr/VpHZLUpUsXvfzyy/r222+1cuVKdezYUcOGDdOBAwd8XovLwoUL9cUXXygtLc3jNZyUgbMiyVi4cKHZZRiGYRj79+83JBkrVqwwuxTDMAwjLi7O+N///V9T7l1aWmpkZ2cbixcvNi655BJj3LhxPq/hscceM/r27evz+x7v4YcfNgYPHmx2GU0aN26c0alTJ8PpdPr83sOHDzfuuOOORttuuOEGY/To0T6to6KiwggKCjI++OCDRtvPPfdc4/e//73P6jj+Z5nT6TRSUlKMGTNmuLcVFRUZdrvd+Mc//uHTWhratWuXIcn46quvvFpDc2pxWbt2rSHJyM/PN7WO4uJiQ5Lx6aefeq2OU9Xy448/Guecc46xadMmIyMjw3j++ee9WocLLTKtSHFxsSQpPj7e1DocDofefPNNlZeXKycnx5QacnNzNXz4cA0dOtSU+7vk5eUpLS1NWVlZGj16tHbv3u3zGv79739rwIABGjVqlJKSktSvXz+9/vrrPq/jeNXV1fr73/+uO+64w6MLujbXhRdeqCVLlmjbtm2SpK+//lorV67UVVdd5dM6amtr5XA4FBoa2mh7WFiYKS14Lrt27VJBQUGj/4diYmI0cOBArV692rS6/FFxcbEsFotiY2NNq6G6ulqzZ89WTEyM+vbt6/P7O51O3XrrrZo0aZJ69uzp03u3+kUj2wqn06nx48dr0KBB6tWrlyk1fPvtt8rJyVFlZaUiIyO1cOFC9ejRw+d1vPnmm9qwYYNPxhicysCBA/WXv/xFXbt21U8//aQnnnhCF110kTZt2qSoqCif1bFz507NmjVLEydO1P/7f/9P69at0wMPPCCbzaYxY8b4rI7jvffeeyoqKtJtt91myv0feeQRlZSUqFu3bgoKCpLD4dDUqVM1evRon9YRFRWlnJwc/eEPf1D37t2VnJysf/zjH1q9erU6d+7s01oaKigokCQlJyc32p6cnOzeB6myslIPP/ywbrnlFlMWb/zggw908803q6KiQqmpqVq8eLHatWvn8zqmT5+u4OBgPfDAAz6/N0GmlcjNzdWmTZtM/Quua9eu2rhxo4qLi7VgwQKNGTNGK1as8GmY2bNnj8aNG6fFixef8BeurzX8y75Pnz4aOHCgMjIy9Pbbb+vOO+/0WR1Op1MDBgzQ008/LUnq16+fNm3apFdffdXUIDNnzhxdddVVvu1Lb+Dtt9/WG2+8ofnz56tnz57auHGjxo8fr7S0NJ9/X/72t7/pjjvu0DnnnKOgoCCde+65uuWWW7R+/Xqf1oEzU1NToxtvvFGGYWjWrFmm1DBkyBBt3LhRBw8e1Ouvv64bb7xRa9asUVJSks9qWL9+vV588UVt2LDBlNZVupZagbFjx+qDDz7QsmXL1L59e9PqsNls6ty5s/r3769p06apb9++evHFF31aw/r167V//36de+65Cg4OVnBwsFasWKGXXnpJwcHBcjgcPq2nodjYWHXp0kXbt2/36X1TU1NPCJPdu3c3pZvLJT8/X59++qnuuusu02qYNGmSHnnkEd18883q3bu3br31Vk2YMEHTpk3zeS2dOnXSihUrVFZWpj179mjt2rWqqalRVlaWz2txSUlJkSQVFhY22l5YWOje15a5Qkx+fr4WL15sSmuMJEVERKhz58664IILNGfOHAUHB2vOnDk+reG///2v9u/frw4dOrh/7ubn5+t3v/udOnbs6PX7E2QCmGEYGjt2rBYuXKilS5cqMzPT7JIacTqdqqqq8uk9L7/8cn377bfauHGj+zVgwACNHj1aGzduVFBQkE/raaisrEw7duxQamqqT+87aNCgE6blb9u2TRkZGT6to6G5c+cqKSlJw4cPN62GiooKWa2NfwQGBQXJ6XSaVFHdL6XU1FQdOXJEixYt0nXXXWdaLZmZmUpJSdGSJUvc20pKSrRmzRrTxr75C1eIycvL06effqqEhASzS3Iz4+furbfeqm+++abRz920tDRNmjRJixYt8vr96VpqgbKyskZ/Ve/atUsbN25UfHy8OnTo4LM6cnNzNX/+fP3rX/9SVFSUu986JiZGYWFhPqtDkiZPnqyrrrpKHTp0UGlpqebPn6/ly5f75D/ihqKiok4YIxQREaGEhASfjx168MEHdc011ygjI0P79u3TY489pqCgIN1yyy0+rWPChAm68MIL9fTTT+vGG2/U2rVrNXv2bM2ePdundbg4nU7NnTtXY8aMUXCweT+CrrnmGk2dOlUdOnRQz5499dVXX+m5557THXfc4fNaFi1aJMMw1LVrV23fvl2TJk1St27ddPvtt3v1vqf7WTZ+/Hg99dRTys7OVmZmpqZMmaK0tDRdf/31Pq/l8OHD2r17t/t5La5wnpKS4vEWolPVkpqaqpEjR2rDhg364IMP5HA43D974+PjZbPZfFJHQkKCpk6dqmuvvVapqak6ePCgXnnlFe3du9crjzM43b/P8WEuJCREKSkp6tq1q8drOYFP5ka1MsuWLTMknfAaM2aMT+toqgZJxty5c31ah2EYxh133GFkZGQYNpvNSExMNC6//HLjk08+8XkdTTFr+vVNN91kpKamGjabzTjnnHOMm266ydi+fbvP6zAMw3j//feNXr16GXa73ejWrZsxe/ZsU+owDMNYtGiRIcnYunWraTUYhmGUlJQY48aNMzp06GCEhoYaWVlZxu9//3ujqqrK57W89dZbRlZWlmGz2YyUlBQjNzfXKCoq8vp9T/ezzOl0GlOmTDGSk5MNu91uXH755V77dztdLXPnzm1y/2OPPebTWlzTv5t6LVu2zGd1HD161PjFL35hpKWlGTabzUhNTTWuvfZaY+3atR6toTm1NMWX068thmHCYywBAAA8gDEyAAAgYBFkAABAwCLIAACAgEWQAQAAAYsgAwAAAhZBBgAABCyCDAAACFgEGQCmsFgseu+998wuA0CAI8gA8IqCggLdf//9ysrKkt1uV3p6uq655ppGa/d4yvLly2WxWFRUVOTxawPwb6y1BMDjfvjhBw0aNEixsbGaMWOGevfurZqaGi1atEi5ubn6/vvvzS6xSYZhyOFwmLoGFIAzQ4sMAI+77777ZLFYtHbtWo0YMUJdunRRz549NXHiRH3xxRcnHN9Ui8rGjRtlsVj0ww8/SJLy8/N1zTXXKC4uThEREerZs6f+85//6IcfftCQIUMkSXFxcbJYLLrtttsk1S1QOW3aNGVmZiosLEx9+/bVggULTrjvRx99pP79+8tut2vlypX6+uuvNWTIEEVFRSk6Olr9+/fXl19+6bXvF4CW488OAB51+PBhffzxx5o6daoiIiJO2B8bG9ui6+bm5qq6ulqfffaZIiIitGXLFkVGRio9PV3//Oc/NWLECG3dulXR0dHu1d+nTZumv//973r11VeVnZ2tzz77TL/61a+UmJioSy65xH3tRx55RH/605+UlZWluLg4XXzxxerXr59mzZqloKAgbdy4USEhIS2qG4B3EWQAeNT27dtlGIa6devm0evu3r1bI0aMUO/evSVJWVlZ7n3x8fGSpKSkJHdQqqqq0tNPP61PP/1UOTk57nNWrlyp1157rVGQefLJJ3XFFVc0utekSZPcX0N2drZHvxYAnkOQAeBRhmF45boPPPCAfvvb3+qTTz7R0KFDNWLECPXp0+ekx2/fvl0VFRWNAookVVdXq1+/fo22DRgwoNH7iRMn6q677tLf/vY3DR06VKNGjVKnTp0898UA8BjGyADwqOzsbFksljMa0Gu11v0oahiCampqGh1z1113aefOnbr11lv17bffasCAAZo5c+ZJr1lWViZJ+vDDD7Vx40b3a8uWLY3GyUg6oQvs8ccf1+bNmzV8+HAtXbpUPXr00MKFC5v99QDwHYIMAI+Kj4/XlVdeqVdeeUXl5eUn7G9qinRiYqIk6aeffnJv27hx4wnHpaen695779W7776r3/3ud3r99dclSTabTZLkcDjcx/bo0UN2u127d+9W586dG73S09NP+3V06dJFEyZM0CeffKIbbrhBc+fOPe05AHyPIAPA41555RU5HA6df/75+uc//6m8vDx99913eumll9zjVRpyhYvHH39ceXl5+vDDD/Xss882Omb8+PFatGiRdu3apQ0bNmjZsmXq3r27JCkjI0MWi0UffPCBDhw4oLKyMkVFRenBBx/UhAkTNG/ePO3YsUMbNmzQzJkzNW/evJPWfvToUY0dO1bLly9Xfn6+Pv/8c61bt859LwB+xgAAL9i3b5+Rm5trZGRkGDabzTjnnHOMa6+91li2bJlhGIYhyVi4cKH7+JUrVxq9e/c2QkNDjYsuush45513DEnGrl27DMMwjLFjxxqdOnUy7Ha7kZiYaNx6663GwYMH3ec/+eSTRkpKimGxWIwxY8YYhmEYTqfTeOGFF4yuXbsaISEhRmJionHllVcaK1asMAzDMJYtW2ZIMo4cOeK+TlVVlXHzzTcb6enphs1mM9LS0oyxY8caR48e9ea3C0ALWQzDSyPzAAAAvIyuJQAAELAIMgAAIGARZAAAQMAiyAAAgIBFkAEAAAGLIAMAAAIWQQYAAAQsggwAAAhYBBkAABCwCDIAACBgEWQAAEDAIsgAAICA9f8Bgl7wrjyVz5IAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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Eo0cOdJjYbubliXYu0trVdfgUEhwoMmJAADwLR1etfTRRx/p/PPPd93/5z//qcLCQm3dulWlpaWaNGmS/vSnP3kkZHcVH2FTbFiwDINRGQAAjqbDRWbXrl0aMGCA6/5HH32kyy+/XBkZGbJYLJoxY4a++OILj4Tszn64wi+bRwIA8GMdLjIBAQFqPS949erV+slPfuK6HxMTo9LSUvemA3suAQBwDB0uMv3799e7774rSdq8ebN27dqlMWPGuJ4vLCxUUlKS+xN2c2xVAABA+07oOjKTJ0/W+++/r82bN+unP/2psrKyXM//5z//0YgRLBF2NzaPBACgfR0ekfn5z3+u//znPzrllFN066236rXXXmvzfFhYmH7729+6PWB31zIis6OkWg5nl77kDwAAJ4wL4vk4p9NQ/z98KHujUytuP0eZPcLNjgQAgMd19Pd3h0dktm7dqilTpqiiouKI58rLy/WLX/xCO3bs6FxatCsgwKLsBCb8AgBwNB0uMg8//LDS0tKO2oqio6OVlpamhx9+2K3h0MQ14Zd5MgAAtNHhIrNy5UpNmjSp3eevuOIKLVu2zC2h0FYuIzIAABzVCV0QLzExsd3ne/TooaKiIreEQls5iU3zYrYxIgMAQBsdLjLR0dHavn17u89v27bNLyfT+oPW15Lp4nOzAQA4IR0uMmeddZZrw8ijefLJJ3XmmWe6JRTayuoRrgCLVFHXqINVdrPjAADgMzpcZO666y598MEHuvzyy7V27VqVl5ervLxca9as0cSJE7V48WLdddddnszabdmCApUeFyaJeTIAALTW4Sv7nnbaaXrzzTd13XXXadGiRW2ei4+P1+uvv64hQ4a4PSCa5CREaOehGm0/WK0zcnqYHQcAAJ/Q4SJTUFCgn/3sZyosLNTixYu1detWGYahPn36aNy4cQoLC/Nkzm4vNzFCS787wJ5LAAC00uEik5OTo4yMDI0ZM0ZjxozRlClT1KtXL09mQys57IINAMAROlxkli1bphUrVmjFihV69dVXVV9fr+zsbJ177rmucsPu157D5pEAABypw0XmnHPO0TnnnCNJqqur02effeYqNi+//LIaGhrUr18/bd682VNZu7WWJdj7yutUZW9UhK3Df3QAAHRZnfptGBISonPPPVejR4/WmDFj9MEHH+i5557Td9995+58aBYdGqyESJsO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MgAAwG9RZDrhk08+0YQJE5SamiqLxaK3337blBxz587V8OHDFRkZqcTERF166aXasmWLKVmeeeYZnXLKKa6LIo0cOVIffPCBKVla+/Of/yyLxaKZM2d6/b3vueceWSyWNrd+/fp5PYck7dmzR7/85S8VHx+v0NBQDR48WOvXr/d6jszMzCO+JxaLRdOmTfN6FofDobvvvltZWVkKDQ1VTk6O/vjHPx53XxdPqKys1MyZM5WRkaHQ0FCdccYZWrduncff93g/ywzD0B/+8AelpKQoNDRUY8eO1datW03J8tZbb2ncuHGKj4+XxWJRfn6+R3IcL0tDQ4PuvPNODR48WOHh4UpNTdWvfvUr7d2716s5pKafMf369VN4eLhiY2M1duxYrVmzxu05OpKltZtuukkWi0WPP/64R7L8GEWmE6qrq5WXl6d58+aZmmPlypWaNm2aVq9erSVLlqihoUHjxo1TdXW117P06tVLf/7zn7VhwwatX79e5557ri655BJt3rzZ61larFu3Ts8995xOOeUU0zIMHDhQ+/btc91WrVrl9QylpaUaNWqUgoOD9cEHH+ibb77RI488otjYWK9nWbduXZvvx5IlSyRJkyZN8nqWBx98UM8884yefvppffvtt3rwwQf10EMP6amnnvJ6lhtuuEFLlizRP/7xD3399dcaN26cxo4dqz179nj0fY/3s+yhhx7Sk08+qWeffVZr1qxReHi4LrjgAtXV1Xk9S3V1tUaPHq0HH3zQ7e99Illqamq0ceNG3X333dq4caPeeustbdmyRRdffLFXc0hSnz599PTTT+vrr7/WqlWrlJmZqXHjxungwYNez9Ji0aJFWr169XG3FXArAydFkrFo0SKzYxiGYRgHDhwwJBkrV640O4phGIYRGxtr/N///Z8p711ZWWn07t3bWLJkiXH22WcbM2bM8HqGOXPmGHl5eV5/3x+78847jdGjR5sd46hmzJhh5OTkGE6n0+vvfdFFFxnXXXddm8cuu+wy46qrrvJqjpqaGiMwMNB477332jw+ZMgQ4/e//73Xcvz4Z5nT6TSSk5ONhx9+2PVYWVmZYbPZjFdffdWrWVorKCgwJBlffPGFRzN0JEuLtWvXGpKMwsJCU3OUl5cbkoyPP/7YYzmOlWX37t1Gz549jU2bNhkZGRnGY4895tEcLRiR6ULKy8slSXFx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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "kmeans_elbow_object = KMeansElbowMethod(classes=[0, 1], \n", + " cluster_count_selection=list(range(1, 15)))\n", + "kmeans_elbow_results = kmeans_elbow_object.fit_plot(X, y)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "91b577da", + "metadata": {}, + "source": [ + "We can see the elbow point right at 3 clusters in class 0th.\n", + "We can also change the search space `cluster_count_selection` and use different underlying clustering method, such as `GaussianMixture`:" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "id": "6395f178", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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mzdXRESEWrZsqb/+9a8yjJOXLxuGoccee0zJycmKiIhQ//79tW3bNgurPrOTQYY7YAMAUBssDTITJ07U1KlT9dprr2nz5s2aOHGinn/+eU2ePNl7zPPPP69XX31V06ZN0+rVqxUZGamBAweqsLDuhYWTc2ROWFwJAADBIcTKzlesWKFBgwbpmmuukSSdd955+ve//601a9ZIKhuNefnll/WXv/xFgwYNkiS9+eabSkxM1AcffKBbbrnFstor45kjk1tYqrzCEkWFh1pcEQAA9ZulIzKXXHKJFi9erK1bt0qSvv32Wy1fvlxXX321JGnXrl3KzMxU//79va+JiYlRz549tXLlykrbLCoqUm5urs+jtjR0higmoiy8HOD0EgAAfmfpiMyjjz6q3NxctWvXTg6HQy6XS88884yGDh0qScrMzJQkJSYm+rwuMTHRu+9UEyZM0JNPPunfwn9BSmyEcgpKdCC7QG2ToiyrAwCAYGDpiMx7772nt99+W7Nnz9a6des0a9Ys/e1vf9OsWbOq3ea4ceOUk5Pjfezdu9fEis/OM+GX1X0BAPA/S0dkxo4dq0cffdQ716VTp07avXu3JkyYoGHDhikpKUmSlJWVpeTkZO/rsrKydMEFF1TaptPplNPp9HvtZ5Iax1oyAADUFktHZE6cOCG73bcEh8Mht9stSWrevLmSkpK0ePFi7/7c3FytXr1avXr1qtVaqyoltux+S6zuCwCA/1k6InPttdfqmWeeUbNmzdShQwetX79eL774ou68805Jks1m06hRo/T000+rdevWat68ucaPH6+UlBRdf/31VpZ+Rk1jG0hiUTwAAGqDpUFm8uTJGj9+vO6//34dOnRIKSkp+sMf/qDHHnvMe8zDDz+s/Px83XvvvcrOzlafPn20YMEChYeHW1j5mXlGZDi1BACA/9mMisvo1kO5ubmKiYlRTk6OoqOj/d7fobxCXfTMYtlt0panr1aog7tAAABwrqr6+5vfsiZrHOlUmMMutyFl5rCWDAAA/kSQMZndbjs54ZfTSwAA+BVBxg88typgngwAAP5FkPED712wuQQbAAC/Isj4gXdEJocgAwCAPxFk/KBp+eq++xiRAQDArwgyftCUOTIAANQKgowfeOfIZBeoni/TAwCApQgyfpAUU3b5dWGJW8dOlFhcDQAA9RdBxg/CQx1qElV2B26u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SEjQ9ddfry1btpjax9SpU9W5c2fvIka9evXSp59+amofp3ruuedks9k0atQo09p84oknZLPZfB7t2rUzrX2P/fv367bbblN8fLwiIiLUqVMnffPNN6b2cd555532Xmw2mzIyMkxp3+Vyafz48WrevLkiIiLUsmVL/fWvfz3rfUzOVV5enkaNGqX09HRFRETokksu0ddff12jNs/2mTMMQ4899piSk5MVERGh/v37a9u2bab28f7772vAgAGKj4+XzWbThg0bTH0fJSUleuSRR9SpUydFRkYqJSVFv//973XgwAFT38cTTzyhdu3aKTIyUnFxcerfv79Wr15tah8V3XfffbLZbHr55ZdN7WP48OGnfVauuuoq09/H5s2bdd111ykmJkaRkZG68MILtWfPHtP6qOwzb7PZNGnSJNP6OH78uEaMGKHU1FRFRESoffv2mjZtWpXbr0ofWVlZGj58uFJSUtSgQQNdddVV5/wZrC6CTDXk5+erS5cumjJlil/aX7ZsmTIyMrRq1SotWrRIJSUlGjBggPLz803rIzU1Vc8995zWrl2rb775RpdffrkGDRqkTZs2mdZHRV9//bVef/11de7c2fS2O3TooIMHD3ofy5cvN7X9Y8eOqXfv3goNDdWnn36qH374QS+88ILi4uJM7efrr7/2eR+LFi2SJA0ZMsSU9idOnKipU6fqtdde0+bNmzVx4kQ9//zzmjx5sinte9x9991atGiR/vWvf2njxo0aMGCA+vfvr/3791e7zbN95p5//nm9+uqrmjZtmlavXq3IyEgNHDhQhYWFpvWRn5+vPn36aOLEidV6D2fr48SJE1q3bp3Gjx+vdevW6f3339eWLVt03XXXmdaHJLVp00avvfaaNm7cqOXLl+u8887TgAEDdPjwYdP68Jg3b55WrVqllJSUc3oPVe3jqquu8vnM/Pvf/za1jx07dqhPnz5q166dli5dqu+++07jx49XeHi4aX1UrP/gwYP6xz/+IZvNpsGDB5vWx5gxY7RgwQK99dZb2rx5s0aNGqURI0boo48+MqUPwzB0/fXXa+fOnfrwww+1fv16paenq3///qb+3jojAzUiyZg3b55f+zh06JAhyVi2bJlf+4mLizP+7//+z/R28/LyjNatWxuLFi0y+vbta4wcOdK0th9//HGjS5cuprVXmUceecTo06ePX/uozMiRI42WLVsabrfblPauueYa48477/TZdsMNNxhDhw41pX3DMIwTJ04YDofD+OSTT3y2d+vWzfjzn/9sSh+nfubcbreRlJRkTJo0ybstOzvbcDqdxr///W9T+qho165dhiRj/fr11Wq7Kn14rFmzxpBk7N6922995OTkGJKMzz//3NQ+9u3bZzRt2tT4/vvvjfT0dOOll16qVvtn6mPYsGHGoEGDqt1mVfq4+eabjdtuu82vfZxq0KBBxuWXX25qHx06dDCeeuopn201+Uye2seWLVsMScb333/v3eZyuYwmTZoYb7zxRrX6OBeMyASAnJwcSVKjRo380r7L5dI777yj/Px89erVy/T2MzIydM0116h///6mty1J27ZtU0pKilq0aKGhQ4ee07BvVXz00Ufq0aOHhgwZooSEBHXt2lVvvPGGqX2cqri4WG+99ZbuvPNO0252eskll2jx4sXaunWrJOnbb7/V8uXLdfXVV5vSviSVlpbK5XKd9j/WiIgI00fKPHbt2qXMzEyfv18xMTHq2bOnVq5c6Zc+a0tOTo5sNptiY2P90n5xcbGmT5+umJgYdenSxbR23W63br/9do0dO1YdOnQwrd1TLV26VAkJCWrbtq3++Mc/6ujRo6a17Xa7NX/+fLVp00YDBw5UQkKCevbsafpUgoqysrI0f/583XXXXaa2e8kll+ijjz7S/v37ZRiGlixZoq1bt2rAgAGmtF9UVCRJPp97u90up9Ppt899RQSZOs7tdmvUqFHq3bu3OnbsaGrbGzduVMOGDeV0OnXfffdp3rx5at++val9vPPOO1q3bp0mTJhgarsePXv21D//+U8tWLBAU6dO1a5du3TppZcqLy/PtD527typqVOnqnXr1lq4cKH++Mc/6sEHH9SsWbNM6+NUH3zwgbKzszV8+HDT2nz00Ud1yy23qF27dgoNDVXXrl01atQoDR061LQ+oqKi1KtXL/31r3/VgQMH5HK59NZbb2nlypU6ePCgaf1UlJmZKUlKTEz02Z6YmOjdF4gKCwv1yCOP6NZbbzX9ZnyffPKJGjZsqPDwcL300ktatGiRGjdubFr7EydOVEhIiB588EHT2jzVVVddpTfffFOLFy/WxIkTtWzZMl199dVyuVymtH/o0CEdP35czz33nK666ip99tln+u1vf6sbbrhBy5YtM6WPU82aNUtRUVG64YYbTG138uTJat++vVJTUxUWFqarrrpKU6ZM0WWXXWZK++3atVOzZs00btw4HTt2TMXFxZo4caL27dvnt899RfX+7teBLiMjQ99//71fUm3btm21YcMG5eTkaO7cuRo2bJiWLVtmWpjZu3evRo4cqUWLFp3TOeVzUXE0oXPnzurZs6fS09P13nvvmfa/GrfbrR49eujZZ5+VJHXt2lXff/+9pk2bpmHDhpnSx6lmzJihq6++ulpzC87kvffe09tvv63Zs2erQ4cO2rBhg0aNGqWUlBRT38e//vUv3XnnnWratKkcDoe6deumW2+9VWvXrjWtj/qupKREN910kwzD0NSpU01vv1+/ftqwYYOOHDmiN954QzfddJNWr16thISEGre9du1avfLKK1q3bp1po4mVueWWW7zfd+rUSZ07d1bLli21dOlSXXHFFTVu3+12S5IGDRqk0aNHS5IuuOACrVixQtOmTVPfvn1r3Mep/vGPf2jo0KGm/3s5efJkrVq1Sh999JHS09P15ZdfKiMjQykpKaaMlIeGhur999/XXXfdpUaNGsnhcKh///66+uqrTb+YoDKMyNRhI0aM0CeffKIlS5YoNTXV9PbDwsLUqlUrde/eXRMmTFCXLl30yiuvmNb+2rVrdejQIXXr1k0hISEKCQnRsmXL9OqrryokJMS0/zlVFBsbqzZt2mj79u2mtZmcnHxauDv//PNNP4XlsXv3bn3++ee6++67TW137Nix3lGZTp066fbbb9fo0aNNHy1r2bKlli1bpuPHj2vv3r1as2aNSkpK1KJFC1P78UhKSpJUNixfUVZWlndfIPGEmN27d2vRokWmj8ZIUmRkpFq1aqWLL75YM2bMUEhIiGbMmGFK2//73/906NAhNWvWzPu53717t/70pz/pvPPOM6WPyrRo0UKNGzc27bPfuHFjhYSE1Npn/3//+5+2bNli+ue+oKBA/+///T+9+OKLuvbaa9W5c2eNGDFCN998s/72t7+Z1k/37t21YcMGZWdn6+DBg1qwYIGOHj3qt899RQSZOsgwDI0YMULz5s3TF198oebNm9dKv26323uu0wxXXHGFNm7cqA0bNngfPXr00NChQ7VhwwY5HA7T+vI4fvy4duzYoeTkZNPa7N2792mXv2/dulXp6emm9VHRzJkzlZCQoGuuucbUdk+cOCG73fcj73A4vP/zNFtkZKSSk5N17NgxLVy4UIMGDfJLP82bN1dSUpIWL17s3Zabm6vVq1f7Zc6XP3lCzLZt2/T5558rPj6+Vvo187N/++2367vvvvP53KekpGjs2LFauHChKX1UZt++fTp69Khpn/2wsDBdeOGFtfbZnzFjhrp3727qXCWp7O9USUlJrX32Y2Ji1KRJE23btk3ffPON3z73FXFqqRqOHz/uk/p37dqlDRs2qFGjRmrWrFmN28/IyNDs2bP14YcfKioqynuePyYmRhERETVuX5LGjRunq6++Ws2aNVNeXp5mz56tpUuXmvoPTVRU1GnzeiIjIxUfH2/afJ+HHnpI1157rdLT03XgwAE9/vjjcjgcuvXWW01pX5JGjx6tSy65RM8++6xuuukmrVmzRtOnT9f06dNN68PD7XZr5syZGjZsmEJCzP14XnvttXrmmWfUrFkzdejQQevXr9eLL76oO++809R+Fi5cKMMw1LZtW23fvl1jx45Vu3btdMcdd1S7zbN95kaNGqWnn35arVu3VvPmzTV+/HilpKTo+uuvN62Pn3/+WXv27PGu6+L5BZeUlFTlkZ9f6iM5OVk33nij1q1bp08++UQul8v72W/UqJHCwsJq3Ed8fLyeeeYZXXfddUpOTtaRI0c0ZcoU7d+//5wu8z/bz+rUABYaGqqkpCS1bdvWlD4aNWqkJ598UoMHD1ZSUpJ27Nihhx9+WK1atdLAgQNNex9jx47VzTffrMsuu0z9+vXTggUL9PHHH2vp0qWm9SGVBe85c+bohRdeqHK759JH3759NXbsWEVERCg9PV3Lli3Tm2++qRdffNG0PubMmaMmTZqoWbNm2rhxo0aOHKnrr7/etAnFv8jv10XVQ0uWLDEknfYYNmyYKe1X1rYkY+bMmaa0bxiGceeddxrp6elGWFiY0aRJE+OKK64wPvvsM9PaPxOzL7+++eabjeTkZCMsLMxo2rSpcfPNNxvbt283rX2Pjz/+2OjYsaPhdDqNdu3aGdOnTze9D8MwjIULFxqSjC1btpjedm5urjFy5EijWbNmRnh4uNGiRQvjz3/+s1FUVGRqP++++67RokULIywszEhKSjIyMjKM7OzsGrV5ts+c2+02xo8fbyQmJhpOp9O44oorzvlneLY+Zs6cWen+xx9/3JQ+PJd1V/ZYsmSJKX0UFBQYv/3tb42UlBQjLCzMSE5ONq677jpjzZo1pv6sTlWdy69/qY8TJ04YAwYMMJo0aWKEhoYa6enpxj333GNkZmaa/j5mzJhhtGrVyggPDze6dOlifPDBB6b38frrrxsRERHV/pycrY+DBw8aw4cPN1JSUozw8HCjbdu2xgsvvHBOSzucrY9XXnnFSE1NNUJDQ41mzZoZf/nLX0z/t+VMbIZRCzNxAAAA/IA5MgAAIGARZAAAQMAiyAAAgIBFkAEAAAGLIAMAAAIWQQYAAAQsggwAAAhYBBkAlrDZbPrggw+sLgNAgCPIAPCLzMxMPfDAA2rRooWcTqfS0tJ07bXX+twTySxLly6VzWZTdna26W0DqNu41xIA0/3000/q3bu3YmNjNWnSJHXq1EklJSVauHChMjIy9OOPP1pdYqUMw5DL5TL9PlcA/IcRGQCmu//++2Wz2bRmzRoNHjxYbdq0UYcOHTRmzBitWrXqtOMrG1HZsGGDbDabfvrpJ0nS7t27de211youLk6RkZHq0KGD/vvf/+qnn35Sv379JElxcXGy2WwaPny4pLKbcE6YMEHNmzdXRESEunTporlz557W76effqru3bvL6XRq+fLl+vbbb9WvXz9FRUUpOjpa3bt31zfffOO3nxeA6uO/HQBM9fPPP2vBggV65plnFBkZedr+2NjYarWbkZGh4uJiffnll4qMjNQPP/yghg0bKi0tTf/5z380ePBgbdmyRdHR0d67xE+YMEFvvfWWpk2bptatW+vLL7/UbbfdpiZNmqhv377eth999FH97W9/U4sWLRQXF6fLLrtMXbt21dSpU+VwOLRhwwaFhoZWq24A/kWQAWCq7du3yzAMtWvXztR29+zZo8GDB6tTp06SpBYtWnj3NWrUSJKUkJDgDUpFRUV69tln9fnnn6tXr17e1yxfvlyvv/66T5B56qmndOWVV/r0NXbsWO97aN26tanvBYB5CDIATGUYhl/affDBB/XHP/5Rn332mfr376/Bgwerc+fOZzx++/btOnHihE9AkaTi4mJ17drVZ1uPHj18no8ZM0Z33323/vWvf6l///4aMmSIWrZsad6bAWAa5sgAMFXr1q1ls9nOaUKv3V72T1HFEFRSUuJzzN13362dO3fq9ttv18aNG9WjRw9Nnjz5jG0eP35ckjR//nxt2LDB+/jhhx985slIOu0U2BNPPKFNmzbpmmuu0RdffKH27dtr3rx5VX4/AGoPQQaAqRo1aqSBAwdqypQpys/PP21/ZZdIN2nSRJJ08OBB77YNGzacdlxaWpruu+8+vf/++/rTn/6kN954Q5IUFhYmSXK5XN5j27dvL6fTqT179qhVq1Y+j7S0tLO+jzZt2mj06NH67LPPdMMNN2jmzJlnfQ2A2keQAWC6KVOmyOVy6aKLLtJ//vMfbdu2TZs3b9arr77qna9SkSdcPPHEE9q2bZvmz5+vF154weeYUaNGaeHChdq1a5fWrVunJUuW6Pzzz5ckpaeny2az6ZNPPtHhw4d1/PhxRUVF6aGHHtLo0aM1a9Ys7dixQ+vWrdPkyZM1a9asM9ZeUFCgESNGaOnSpdq9e7e++uorff31196+ANQxBgD4wYEDB4yMjAwjPT3dCAsLM5o2bWpcd911xpIlSwzDMAxJxrx587zHL1++3OjUqZMRHh5uXHrppcacOXMMScauXbsMwzCMESNGGC1btjScTqfRpEkT4/bbbzeOHDniff1TTz1lJCUlGTabzRg2bJhhGIbhdruNl19+2Wjbtq0RGhpqNGnSxBg4cKCxbNkywzAMY8mSJYYk49ixY952ioqKjFtuucVIS0szwsLCjJSUFGPEiBFGQUGBP39cAKrJZhh+mpkHAADgZ5xaAgAAAYsgAwAAAhZBBgAABCyCDAAACFgEGQAAELAIMgAAIGARZAAAQMAiyAAAgIBFkAEAAAGLIAMAAAIWQQYAAAQsggwAAAhY/x8F8S79Bp4p5gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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S0RERPXHIONkTTgiQ0REJBsGGSczGiqCTKaJc2SIiIjqi0HGyThHhoiISD4MMk5WdWopp7AUJWVWhashIiJybwwyTubnpYFeqwbAURkiIqL6YpBxMkmSuJcMERGRTBhkFMB5MkRERPJgkFGAkXvJEBERyYJBRgFVS7A5IkNERFQ/DDIKqDq1xL1kiIiI6odBRgGcI0NERCQPBhkFVO0lcy6vGEIIhashIiJyXwwyCggz6CBJgKXchtzCUqXLISIiclsMMgrQadQI8dEB4F4yRERE9cEgo5CIy04vERERUd0wyCikSeVeMpzwS0REVHcMMgrhXjJERET1xyCjEO4lQ0REVH8MMgoxco4MERFRvTHIKKQJN8UjIiKqNwYZhVRdOPJ8vgWWcqvC1RAREbknBhmFBOq10GkqfvzZJovC1RAREbknBhmFSJLEeTJERET1xCCjICP3kiEiIqoXBhkFVe0lk2likCEiIqoLBhkF/XlqiXvJEBER1QWDjIK4BJuIiKh+GGQUZGSQISIiqhcGGQVdPtlXCKFwNURERO6n3kEmPT0dhw8fhs1mk6OeRqVqRKaw1ApzcbnC1RAREbmfWgeZjz/+GG+99Va1x5588knExcWhbdu2aNOmDc6cOSN7gQ2Zp4cagXotAO4lQ0REVBe1DjLz589HQECA/f6qVauwcOFCfPLJJ9i1axf8/f3xyiuvOKTIhox7yRAREdVdrYNMamoqOnfubL///fffY9iwYXjwwQfRsWNHvP7661i3bp1DimzIuJcMERFR3dU6yBQXF8PPz89+f+vWrejdu7f9flxcHLKysuStrhHgXjJERER1V+sgEx0djT179gAALl68iEOHDqFnz57257OysmAwGOSvsIHjXjJERER1p6ntgWPGjEFycjIOHTqE9evXIzExEZ06dbI/v3XrVrRp08YhRTZk3EuGiIio7modZF588UUUFRXh22+/RXh4OJYtW1bt+d9++w2jR4+WvcCGjpN9iYiI6k4SDXwnNrPZDIPBAJPJVG2Oj6vINpeg2+vroJKAY68NgUbNPQqJiIhq+/u71iMy11JSUoIvv/wShYWFGDhwIJo1a1af5hqlEB8dPNQSyqwC2fkW+5wZIiIiurFa//k/adIkPPvss/b7paWl6N69O5544gn8/e9/R/v27bFt2zaHFNmQqVQSwg08vURERFQXtQ4ya9aswe23326///nnnyM9PR2pqam4dOkSRo4ciddee80hRTZ0VXvJMMgQERHdnFoHmdOnT6NVq1b2+2vWrMG9996L6OhoSJKE8ePH4/fff3dIkQ3dn0uwuZcMERHRzah1kFGpVNWu0Lx9+3bccsst9vv+/v64dOmSvNU1ElyCTUREVDe1DjItW7bEihUrAACHDh3C6dOn0bdvX/vz6enpCAsLk7/CRoBBhoiIqG5uah+ZUaNGYeXKlTh06BD+7//+D7Gxsfbnf/rpJ3Tt2tUhRTZ0VXvJ8ArYREREN6fWIzL33HMPfvrpJ7Rr1w4TJ07El19+We15b29v/PWvf5W9wMaAIzJERER1ww3xXEB+SRnaTl8DADj4yiD46Oq1vQ8REZHbq+3v71qPyKSmpmL06NEwm81XPWcymfDAAw/g5MmTdau2kfP19ICfZ0V4yeSoDBERUa3VOsjMmjULUVFR10xFBoMBUVFRmDVrlqzFNSZVp5c4T4aIiKj2ah1kNm3ahJEjR9b4/H333Yf169fLUlRjxL1kiIiIbt5NbYgXGhpa4/PBwcE4c+aMLEU1RpzwS0REdPNqHWQMBgNOnDhR4/PHjx932cm07oBBhoiI6ObVOsj07t0bs2fPrvH59957D7feeqssRTVG3EuGiIjo5tU6yEyZMgU///wz7r33XuzcuRMmkwkmkwk7duzAiBEjsHr1akyZMsWRtTZo9hEZE4MMERFRbdV6w5IOHTrg66+/xqOPPorly5dXey4oKAhfffUVOnbsKHuBjUVVkMkylcBmE1CpJIUrIiIicn21DjJpaWm48847kZ6ejtWrVyM1NRVCCDRv3hwDBw6Et7e3I+ts8MJ8dVBJQJlV4GKBBaF+nkqXRERE5PJqHWTi4+MRHR2Nvn37om/fvhg9ejQiIyMdWVujolGrEO7niQxTCc7lFTPIEBER1UKt58isX78eY8aMwcmTJ/Hkk08iOjoaCQkJeOqpp7B06VJkZ2c7ss5Gwci9ZIiIiG5KrUdkbrvtNtx2220AgJKSEmzduhUbN27Exo0bsXjxYpSVlSExMRGHDh1yVK0NntHfC0i/xCXYREREtVSnqxN6enqiX79+6NWrF/r27Yuff/4ZH374If744w+562tUeJkCIiKim3NTQaa0tBTbt2/Hhg0bsHHjRuzYsQNRUVHo3bs33n//ffTp08dRdTYKVXvJcESGiIiodmodZPr164cdO3YgNjYWffr0wVNPPYUlS5YgIiLCkfU1KkYD95IhIiK6GbWe7Pvrr78iKCgI/fr1Q//+/XH77bfXO8Rs3rwZQ4cOhdFohCRJ+O6776o9L4TAyy+/jIiICHh5eWHAgAFITU2tV5+ujJN9iYiIbk6tg0xeXh7mz58Pb29vzJw5E0ajEW3btsW4cePw9ddf48KFCzfdeWFhIZKSkjBnzpxrPv/GG2/gvffew7x587Bjxw7o9XoMGjQIJSUN8xd91RWwcwtLUVJmVbgaIiIi1ycJIURdXpifn48tW7bY58vs27cPCQkJOHjwYN0KkSQsX74cd999N4CK0Rij0Yjnn38eL7zwAgDAZDIhLCwMixYtwqhRo2rVrtlshsFggMlkcvmLWgoh0GbaahSWWrH++T6IC/FRuiQiIiJF1Pb3d61HZK6k1+sRGBiIwMBABAQEQKPR4MiRI3Vt7ippaWnIysrCgAED7I8ZDAZ069YN27Ztq/F1FosFZrO52s1dSJLE00tEREQ3odZBxmazYefOnXjjjTcwZMgQ+Pv7o0ePHvjggw8QHh6OOXPm4OTJk7IVlpWVBQAICwur9nhYWJj9uWuZMWMGDAaD/RYVFSVbTc7wZ5DhhF8iIqIbqfWqJX9/fxQWFiI8PBx9+/bF22+/jdtuuw3x8fGOrO+mTZkyBZMmTbLfN5vNbhVmuJcMERFR7dU6yMyaNQt9+/ZF8+bNHVmPXXh4OAAgOzu72uqo7OxstG/fvsbX6XQ66HQ6R5fnMEYD95IhIiKqrVqfWnrqqaecFmIAIDY2FuHh4Vi3bp39MbPZjB07dqB79+5Oq8PZ7KeWuJcMERHRDdXpEgVyKSgowPHjx+3309LSkJKSgsDAQDRt2hQTJkzAa6+9hoSEBMTGxmLq1KkwGo32lU0NUVWQyeRkXyIiohtSNMjs3r0bffv2td+vmtsyZswYLFq0CC+++CIKCwvx5JNPIi8vD7169cKqVavg6empVMkO1+SyOTJCCEiSpHBFRERErqvO+8i4C3faRwYALOVWJE5dBSGAPf8cgCAf953vQ0REVFcO30eGHEOnUSOkMrxwLxkiIqLrY5BxQVyCTUREVDsMMi6oCTfFIyIiqhUGGRcUwb1kiIiIaoVBxgVxLxkiIqLaYZBxQbxwJBERUe0wyLggzpEhIiKqHQYZF2T0r5gjcz7fAku5VeFqiIiIXBeDjAsK1Guh01T8p8k2WRSuhoiIyHUxyLggSZKqXaqAiIiIro1BxkUZOU+GiIjohhhkXBT3kiEiIroxBhkXxb1kiIiIboxBxkU14V4yREREN8Qg46I4R4aIiOjGGGRcVNVeMhl5xRBCKFwNERGRa2KQcVFVIzKFpVaYi8sVroaIiMg1Mci4KE8PNYL0WgDcS4aIiKgmDDIuLMKfS7CJiIiuh0HGhRkNXIJNRER0PQwyLiwywBsAsOGP85zwS0REdA0MMi7svi6R0KpV2HD0Aj7fcVrpcoiIiFwOg4wLSwz3w4uDWwAAXlt5GMfP5ytcERERkWthkHFxj/aMxa0JwSgps+G5L1JgKbcqXRIREZHLYJBxcSqVhDdHJiHA2wOHM8347+qjSpdERETkMhhk3EConyfeuDcJAPDRr2nYknpR4YqIiIhcA4OMm7i9VRge7NYUADDpqxTkFpYqXBEREZHyGGTcyD/vaIX4ED3O51vw0jf7uSSbiIgaPQYZN+KlVePdUR3goZaw9nA2vth5RumSiIiIFMUg42baNDHgxUGJAIBXfzyE4+cLFK6IiIhIOQwybuixXrHo1axiSfaEL39HablN6ZKIiIgUwSDjhlQqCW/elwR/bw8cPGfGm2u5JJuIiBonBhk3FebniZkj2gEA5m8+ia3HuSSbiIgaHwYZNzaodThGd20KIYCJX6XgEpdkExFRI8Mg4+am3tkScSF6ZJst+Nu3XJJNRESNC4OMm/PWavBe5ZLs1Yey8eUuLskmIqLGg0GmAWjTxIDnB1ZcJfuVFYdx8gKXZBMRUePAINNAPHlrHHrEB6G4zIrxS1O4JJuIiBoFBpkGompJtsHLAwfOmfD2L8eULomIiMjhGGQakAiDF2aOaAsAmLfpBLae4JJsIiJq2BhkGpjBbSIwqksUhAAmfbkPeUVckk1ERA0Xg0wDNPXOVogN1iPLXIK/Lz/AJdlERNRgMcg0QHqdBu+Oag+NSsJPB7KwbPdZpUsiIiJyCAaZBqpdpD8mDWwOAJi+4hDSLhYqXBEREZH8GGQasKd6x+OWuEAUlVoxYenvKLNySTYRETUsDDINmFol4a372sPg5YF9Z014h0uyiYiogWGQaeCM/l54/Z6KJdkfbDyB7SdzFK6IiIhIPgwyjcAd7SIwslNk5ZLsFJiKypQuiYiISBYMMo3E9LtaIybIGxmmEvz9Oy7JJiKihoFBppHQ6zR4Z1QHaFQSVu7PxDd7zyldEhERUb0xyDQi7aP8MfH2iiXZ074/iFNckk1ERG5Oo3QB5FxP94nHpmMXsDMtF+O/TMHXT3eHh1rePFtcasXp3CKk5xRWfi3C+fwSjOkRgx7xwbL2RUREjZskGvhkCbPZDIPBAJPJBD8/P6XLcQnn8oox5J3NMJeU49l+zfD8wBY39XohBC4VlVULKuk5RTidW1gZWizXfJ2nhwqfPdYNnWMC5XgbRETUgNX29zeDTCP14/4MjFvyO1QSsPTJ7ugaWz1cWG0CmaZinM4pQnpu9aByOqcI+Zby67bv56lBdJAeTYO80TTQG/vO5GHriRz4emrw5ZPd0crI/xZERFQzBplKDDI1e/6rffhm71k08ffCo71icTqnEOm5FUHlzKUilFmv/79GuJ8nmgZ5IzrQG9FB3mgapLd/7++trXZscakVDy/Ygd3plxDso8PXT3dHTLDekW+PiIjcGINMJQaZmhVYyvF/7/6K07lF13zeQy0hKsDbHlYuDypRgd7w9FDfVH+m4jKMmr8dRzLNiAzwwtdP90C4wVOOt0JERA0Mg0wlBpnrO5Rhwus/HYHBywNNA/WItocWb0QYvKBWSbL2dyHfgpHztuJUThESQn3w1VPdEaDX3viFRETUqDDIVGKQcT1ncotw77ytyDZbkBTlj88f7wYfHRfQERHRn2r7+5v7yJDTRQV647PHusHf2wP7zuThyU92o6TMqnRZRETkhhhkSBEJYb5Y9EhX6LVqbD2Rg+e++B3lVpvSZRERkZthkCHFtI/yx0d/6QytWoU1h7Pxt28PwGZr0Gc6iYhIZgwypKgezYIx+4EOUEnA13vO4t8/HeEFLYmIqNYYZEhxg1qHY+aIdgCABVvSMGfDcYUrIiIid8EgQy5hZOcoTL2zFQDgv2uO4dNtp5QtiIiI3AKDDLmMx3rF4rl+zQAAL/9wCN+nnFO4IiIicnUMMuRSJt7eHH/pHg0hKi6hsP6PbKVLIiIiF8YgQy5FkiRMH9oaw9obUW4TeOazvdiZlqt0WURE5KIYZMjlqFQS/jsyCf0SQ2Ept+GxRbtw8JxJ6bKIiMgFMciQS/JQq/DBgx3RNTYQ+ZZyjPl4J05eKFC6LCIicjEuHWSmT58OSZKq3RITE5Uui5zE00ON/43pjNZGP+QUluLhBTuRaSpWuiwiInIhLh1kAKB169bIzMy037Zs2aJ0SeREfp4eWPxoV8QF63EurxgP/W8HcgtLlS6LiIhchMsHGY1Gg/DwcPstODhY6ZLIyYJ9dPj08W6IMHjixIVCjF24E/klZUqXRURELsDlg0xqaiqMRiPi4uLw4IMP4vTp09c93mKxwGw2V7uR+2vi74VPH+uGQL0W+8+a8ASvmE1ERHDxINOtWzcsWrQIq1atwty5c5GWloZbb70V+fn5Nb5mxowZMBgM9ltUVJQTKyZHahbqg8WPdIWPToPtJ3MxbgmvmE1E1NhJwo2u0JeXl4fo6Gi89dZbeOyxx655jMVigcVisd83m82IioqCyWSCn5+fs0olB9p2IgdjFu5EabkNwzs2wX/vTYJKJSldFhERychsNsNgMNzw97dLj8hcyd/fH82bN8fx4zVfVFCn08HPz6/ajRqW7vFBmPNAR6hVEr7dew6v/niYV8wmImqk3CrIFBQU4MSJE4iIiFC6FFLY7a3CMOveiitmL9p6Cu+t4xWziYgaI5cOMi+88AI2bdqEU6dOYevWrbjnnnugVqsxevRopUsjFzC8YySmDa24YvbbvxzDot/SFK6IiIicTaN0Addz9uxZjB49Gjk5OQgJCUGvXr2wfft2hISEKF0auYhHesbCVFyGd35JxfQVh6HzUGN016ZKl0VERE7iVpN966K2k4XIfQkh8MqKw1i09RQA4LFesZgyJBEatUsPOBIR0XU0yMm+RNciSRJevrMVxvdPAAAs2JKGRxfvhqmYm+YRETV0DDLUIKhUEibe3hxzHugITw8VNh+7gHvm/IYTvNAkEVGDxiBDDcod7SLw9dM9YDR44uTFQtw95zdsOnZB6bKIiMhBGGSowWnTxIDvx/VCp+gA5JeU45GFO/G/X09yrxkiogaIQYYapBBfHZY80Q33dY6ETQCvrTyCF7/eD0s5r89ERNSQMMhQg6XTqDFzRDtMvbMVVBKwbM9ZPPDRDlzIt9z4xURE5BYYZKhBkyQJj/WKxcJHusLXU4M96Zcw7P0tOHjOpHRpREQkAwYZahT6NA/B98k9EResR4apBPfO24qV+zOVLouIiOqJQYYajbgQHyxP7onezUNQUmZD8pK9eGvtMdhsnARMROSuGGSoUTF4eeDjMZ3xeK9YAMB761Lx18/3otBSrnBlRERUFwwy1Oho1Cr8885WeOPedtCqVVh1KAsj5m7F2UtFitaVV1SKpTtP44lPduOTbae4XJyIqBZ4rSVq1Pak5+KpT/fiYoEFQXot5j3cCV1iAp3Wf35JGdYezsaKfRn4NfUiyi87zfVAt6Z45a7W8OA1o4ioEart728GGWr0MvKK8cQnu3EowwwPtYR/DWuDUQ68gnZxqRXr/ziPFfsysP7oeZSW2+zPtYrwQ1KUAUt3nYEQwK0JwXj/gY4weHk4rB4iIlfEIFOJQYZqo6i0HJOX7cfKAxUrmcb2iME/72gp2xW0LeVW/HrsIlbsz8Daw9koKv1zY774ED2GJhlxZzsjmoX6AAB+OZyN55b+jqJSKxJCffDx2C6ICvSWpRYiInfAIFOJQYZqSwiB2euP4621xwAAvZoF4/0HOsDfW1un9sqtNmw7mYMV+zKw6mAWzCV/TiiODPDC0CQjhrYzomWELyRJuur1B8+Z8Pji3cgylyBIr8X8v3RGp+iAur05IiI3wyBTiUGGbtaqg5mY+OU+FJdZERPkjf+N6Yxmob61eq3NJrDrVC5W7M/AzweykFNYan8uzE+HO9sZMTTJiKRIwzXDy5WyTCV4bPEuHMowQ6tR4c2RSRiaZKzzeyMichcMMpUYZKguDmeY8cQnu3Eurxi+Og3eG90BfRNDr3msEAL7zpqwYl8GVu7PRJa5xP5coF6L/2sbjqHtjOgSEwiV6sbh5UqFlnKMX5qCX45kAwBeGNgcyX2b1SoIERG5KwaZSgwyVFcXCyz462d7sfNULiQJmDIkEU/cGgdJkiCEwB9Z+VixLwMr9mfgTG6x/XW+nhoMbh2OoUlG9IgPkmWejdUmMOOnI/jfljQAwIiOkXh9eBvoNOp6t01E5IoYZCoxyFB9lJbb8PL3B7F01xkAwPAOTRAdpMeK/Rk4fr7AfpyXhxq3twrD0CQjejcPdljA+HR7Oqb/cAhWm0DX2EB8+FAnBOjrNoeHiMiVMchUYpCh+hJCYPHWU/jXyiOwXrbPi1ajQt8WIRiaZES/xFB4azVOqWfTsQtI/nwvCizliA3W4+OxXRAbrHdK30REzsIgU4lBhuSyJfUipv1wEJEB3rgryYjbW4fBz1OZ/V2OZuXj0UW7cC6vGP7eHvjwoU7oFhekSC1ERI7AIFOJQYYaqgv5FjzxyW6knMmDh1rCf4a3w4hOkUqXRUQki9r+/ube50RuKsRXh6VP3oI72kagzCrw/LJ9eHPNUV7Nm4gaFQYZIjfm6aHG7NEd8Nfb4gEAs9cfx3NLf0dJmfUGryQiahgYZIjcnEol4cXBiXjj3nbQqCT8uD8TD3y0HRcLLEqXRkTkcAwyRA3EfZ2j8MljXeHnqcHe03m454PfkJqdr3RZREQOxSBD1ID0iA/G8uSeiA7yxpncYgyfuxVbUi8qXRYRkcMwyBA1MPEhPlj+157oEhOA/JJyjFm4E1/sPK10WUREDsEgQ9QABeq1+OzxbrinQxNYbQJTvj2A1386whVNRNTgMMgQNVA6jRpv3ZeEiQOaAwDmbz6Jpz/bg6LScoUrIyKSD4MMUQMmSRLGD0jAu6PaQ6tWYc3hbNz/4XZkX3aFbiIid8YgQ9QIDGvfBEue6IZAvRYHzplw95zfsHJ/JlKz87nnDBG5NV6igKgRSc8pxCOLduHkhUL7Y5IEGA1eiA3WIybYGzFB+srv9YgK8IZWw793iMj5eK2lSgwyRNWZisowa80f2HfGhLSLhSiw1DxnRq2SEBng9We4CfJGTHDF9038vaBRM+QQkWMwyFRikCGqmRACFwtKcSqnEGkXC3HqYmHl90U4dbEQxdc57eShlhAV6I3YoIrRm5hgfeX33jAavKBSSU58J0TU0NT297fGiTURkYuRJAkhvjqE+OrQJSaw2nNCCJzPt+DkhYpwc+piZdjJKcSpnCKUlttw8kJhtdNUVbQaFWKCvNE+yh/9EsNwa0Iw9Dr+c0NE8uOIDBHdNJtNINNcglMXC3GyaiTnYiHScgpxJrcIZdbq/6xo1SrcEh+E/omh6JcYiqhAb4UqJyJ3wVNLlRhkiJyr3GpDRl4JTlwowJbjF7HuSDZO5RRVO6ZFmC/6tQxF/8RQdGgaADVPQxHRFRhkKjHIEClLCIGTFwux7kg21h05j93pl2C9bIfhAG8P9G0Riv4tw3Br82D4eXooWC0RuQoGmUoMMkSuJa+oFJuOXcC6I+ex8eh5mEv+XDWlUUnoFheIfolh6J8YiphgvYKVEpGSGGQqMcgQua5yqw170i9h3R/nse5INk5cMXE4PkSP/i0rQk2n6AAu9yZqRBhkKjHIELmPUxcL7aFmZ1ouyi87BeXnqcFtLULRv2UobmseCoO3e5+CspRb8fvpPGw7kYMdaTmwCaBj0wB0jg5Ap+gABOi1SpdIpCgGmUoMMkTuyVxShl+PVUwW3nD0PC4VldmfU6skdIoOwICWoegRH4yEMB/oNGoFq72x0nIb9p2tCC7bTuRg7+lLsJTbajw+PkSPztGB6BQdgE4xAYgL1kOSOCmaGg8GmUoMMkTuz2oT+P30n6egjmUXVHveQy2hWagvWhv9Km8GtIzwha+CE4fLrDYcOGfCthM52H4yB7tPXbpqg8FgHx26xwehe1wQNCoJe9IvYXd67lWn2AAgUK+tGLGJqRixadvEAE8P1w5vRPXBIFOJQYao4TmTW4T1f5zH+j/OI+VMHkzFZdc8LibIG62NBrS6LOCE+OocUpPVJnDwnAnbTlYEl11puSgsrR5cAvVa3BIXiO5xQegeH4T4EJ9rjrLkFpZib/ol7E6/hD3pudh31oTSK0ZvtGoV2jTxQ+eYQHvACfZxzHsjUgKDTCUGGaKGTQiBc3nFOJRhxqEMMw5nmHAow4xMU8k1jw/11dlDTdXXqECvmz5tY7MJHM40Y/vJilNFO9NykX/Fdav8vT3QLbYquAQjIdSnTpduKC234WCGCXtOVYzY7Em/hIsFpVcdFxPkjU7RgfZRm2YhdeuPyBUwyFRikCFqnHILS3GoMtRU3Couknmtf/F8PTVoFXFZuGnih/gQH3hctkrKZhM4dj7fPsdlR1ruVSNBvp4adIsNxC2VIy4tw/0cEiSEEEjPKao8FVUxanPl6TYAMHh5oGNTf3SOqZhr0y7SAG8tLxVB7oFBphKDDBFVKbSU44+symBzzoxDmSYcyypAqfXqSbdajQqJ4b5oFeEHc0kZtp/MRW5h9VEQH50GXWICKue5BKOV0U+xXYpNRWXYe/qSfZ5Nypk8lJRVf1+SBEQFeKN5mA8Swnwrvob6olmoD+fbkMthkKnEIENE11NmtSE1u8A+enM4w4zDmWYUXHGaCAC8tWp0jgm0z3Np28TgsnvblFltOJxhxu70S5XzbXKRbbZc81iVBEQH6ZEQ6oPmYb5ICKv4Gheid/nVYNRwMchUYpAhoptlswmczi3C4cyKYOOlVeOWuEC0i/SvdrrJ3VwssOBYdj5SswtwLDu/8lZQ42RptUpCTJB3ZbipGMFpHuaL2GC9W/8cyD0wyFRikCEiqpkQAhfyLThWGW5Sz1eEm2NZ+VdNXq6iUUmIC9FXhJtQX/upqpggb5cdoSL3wyBTiUGGiOjmCSGQZS7BsewCpF42epOanX/VsvIqWrUKCWE+FbsTxwSic3QAjP5eTq6cGgoGmUoMMkRE8qla7v7n6akCpJ6vOF115YZ/AGA0eNpDTafoALSMUG5CNLkXBplKDDJERI5nswmcvVSM/efysPtUxeqpw5lmWG3Vf8XotWp0rAw1naMD0b6pP3x0XBJOV2OQqcQgQ0SkjEJLOVLOVASb3em5+P103lWrwVQS0DLCj6ej6CoMMpUYZIiIXIPVJnA0Kx970nOxO/0Sdp+6hHN5xVcdZzR4onPMnzsUJ4bzdFRjxCBTiUGGiMh1ZZlKsDs997qno3x0GnRo6m8/HdXa6AeDlwcvv9DAMchUYpAhInIftTkdBVTsUuyr08Dg7QGDV8XNz/Oy772u/X3FcRouE3cDtf39zRlWRETkMvQ6DXo2C0bPZsEAaj4dJQRgLimHuaQcZ3D16akb8dFp4OepuSrkVAUfX08NPD3U8PRQQae53lc1dB4qeGrU8FBLN33x0fqy2gTKrDZYym0os1beygVKrVaUlleMUwTqtQjUa6HVNMzwxhEZIiJyK5ZyK0zFZTAXl8FUXF75tfrtyseq7te0B44cVBLsIcfTQw2d5s+vOg91tcc8NSpo1BLKrAKll4WQUqtAabkVZdaKgFL1XGllQKn6vupx2038BvfVaRDoo0WQXotAva7ia+X9IJ/LHqu8KX39LY7IEBFRg6TTqBHqq0aor+dNv7bcaoO5pLzG4FP1Nd9SDkuZDZZyK0rKrLCU21BSZkWJ/TGb/fEqNgEUl1kr99O59mUfHM1DLcFDrYKHWgWtRgUhBC4VlcFqE8i3lCPfUo70nKJateWj09hDTbBPVcDRXRZ8tAjS6xDoU/G8UtflYpAhIqJGQ6NW2X85y0EIAUu57bLQY0NJuRWWy7+WWas9VhWGyq2iMnRI0GlU9gDioVFBq1ZBq6keSrRVz1eGFftrNBWPadWqa57astkEzCVlyCksRU5BKXILLcgpLEVuQWnFY4WVj1Xev1RYinKbQIGlHAWWcpzOvXHwmXpnKzzWK1aWn+nNYpAhIiKqI0mSKufSqAF4KF3ONalUEvy9tfD31iI+5MbHCyFgLi5HTmXgqQg/FWHnov376gEo2EeeYFgXDDJERERkJ0lSxWowbw/E1TL43MxcHbkxyBAREVGdSZIEtYJb+jTMtVhERETUKDDIEBERkdtikCEiIiK35RZBZs6cOYiJiYGnpye6deuGnTt3Kl0SERERuQCXDzJffvklJk2ahGnTpmHv3r1ISkrCoEGDcP78eaVLIyIiIoW5fJB566238MQTT+CRRx5Bq1atMG/ePHh7e+Pjjz9WujQiIiJSmEsHmdLSUuzZswcDBgywP6ZSqTBgwABs27btmq+xWCwwm83VbkRERNQwuXSQuXjxIqxWK8LCwqo9HhYWhqysrGu+ZsaMGTAYDPZbVFSUM0olIiIiBbh0kKmLKVOmwGQy2W9nzpxRuiQiIiJyEJfe2Tc4OBhqtRrZ2dnVHs/OzkZ4ePg1X6PT6aDT6ZxRHhERESnMpUdktFotOnXqhHXr1tkfs9lsWLduHbp3765gZUREROQKXHpEBgAmTZqEMWPGoHPnzujatSveeecdFBYW4pFHHlG6NCIiIlKYyweZ+++/HxcuXMDLL7+MrKwstG/fHqtWrbpqAjARERE1PpIQQsGLbzueyWSCv78/zpw5Az8/P6XLISIiolowm82IiopCXl4eDAZDjce5/IhMfeXn5wMAl2ETERG5ofz8/OsGmQY/ImOz2ZCRkQFfX19IkiRbu1VJ0ZEjPc7ow1n9sA/2wT7YB/tgHzdDCIH8/HwYjUaoVDWvTWrwIzIqlQqRkZEOa9/Pz8/hp6yc0Yez+mEf7IN9sA/2wT5q63ojMVVcevk1ERER0fUwyBAREZHbYpCpI51Oh2nTpjl0F2Fn9OGsftgH+2Af7IN9sA9HaPCTfYmIiKjh4ogMERERuS0GGSIiInJbDDJERETkthhkiIiIyG0xyNTB5s2bMXToUBiNRkiShO+++07W9mfMmIEuXbrA19cXoaGhuPvuu3H06FFZ+5g7dy7atWtn38Soe/fu+Pnnn2Xt40r/+c9/IEkSJkyYIFub06dPhyRJ1W6JiYmytV/l3LlzeOihhxAUFAQvLy+0bdsWu3fvlrWPmJiYq96LJElITk6WpX2r1YqpU6ciNjYWXl5eiI+Px7/+9S/IPd8/Pz8fEyZMQHR0NLy8vNCjRw/s2rWrXm3e6DMnhMDLL7+MiIgIeHl5YcCAAUhNTZW1j2+//RYDBw5EUFAQJElCSkqKrO+jrKwML730Etq2bQu9Xg+j0Yi//OUvyMjIkPV9TJ8+HYmJidDr9QgICMCAAQOwY8cOWfu43NNPPw1JkvDOO+/I2sfYsWOv+qwMHjxY9vdx5MgR3HXXXTAYDNDr9ejSpQtOnz4tWx/X+sxLkoRZs2bJ1kdBQQHGjRuHyMhIeHl5oVWrVpg3b16t269NH9nZ2Rg7diyMRiO8vb0xePDgm/4M1hWDTB0UFhYiKSkJc+bMcUj7mzZtQnJyMrZv3461a9eirKwMAwcORGFhoWx9REZG4j//+Q/27NmD3bt3o1+/fhg2bBgOHTokWx+X27VrFz788EO0a9dO9rZbt26NzMxM+23Lli2ytn/p0iX07NkTHh4e+Pnnn3H48GG8+eabCAgIkLWfXbt2VXsfa9euBQCMHDlSlvZnzpyJuXPn4v3338eRI0cwc+ZMvPHGG5g9e7Ys7Vd5/PHHsXbtWnz66ac4cOAABg4ciAEDBuDcuXN1bvNGn7k33ngD7733HubNm4cdO3ZAr9dj0KBBKCkpka2PwsJC9OrVCzNnzqzTe7hRH0VFRdi7dy+mTp2KvXv34ttvv8XRo0dx1113ydYHADRv3hzvv/8+Dhw4gC1btiAmJgYDBw7EhQsXZOujyvLly7F9+3YYjcabeg+17WPw4MHVPjNffPGFrH2cOHECvXr1QmJiIjZu3Ij9+/dj6tSp8PT0lK2Py+vPzMzExx9/DEmSMGLECNn6mDRpElatWoXPPvsMR44cwYQJEzBu3Dj88MMPsvQhhMDdd9+NkydP4vvvv8fvv/+O6OhoDBgwQNbfWzUSVC8AxPLlyx3ax/nz5wUAsWnTJof2ExAQIP73v//J3m5+fr5ISEgQa9euFX369BHjx4+Xre1p06aJpKQk2dq7lpdeekn06tXLoX1cy/jx40V8fLyw2WyytHfHHXeIRx99tNpjw4cPFw8++KAs7QshRFFRkVCr1eLHH3+s9njHjh3FP/7xD1n6uPIzZ7PZRHh4uJg1a5b9sby8PKHT6cQXX3whSx+XS0tLEwDE77//Xqe2a9NHlZ07dwoAIj093WF9mEwmAUD88ssvsvZx9uxZ0aRJE3Hw4EERHR0t3n777Tq1X1MfY8aMEcOGDatzm7Xp4/777xcPPfSQQ/u40rBhw0S/fv1k7aN169bi1VdfrfZYfT6TV/Zx9OhRAUAcPHjQ/pjVahUhISHio48+qlMfN4MjMm7AZDIBAAIDAx3SvtVqxdKlS1FYWIju3bvL3n5ycjLuuOMODBgwQPa2ASA1NRVGoxFxcXF48MEHb2rYtzZ++OEHdO7cGSNHjkRoaCg6dOiAjz76SNY+rlRaWorPPvsMjz76qGwXO+3RowfWrVuHY8eOAQD27duHLVu2YMiQIbK0DwDl5eWwWq1X/cXq5eUl+0hZlbS0NGRlZVX7/8tgMKBbt27Ytm2bQ/p0FpPJBEmS4O/v75D2S0tLMX/+fBgMBiQlJcnWrs1mw8MPP4zJkyejdevWsrV7pY0bNyI0NBQtWrTAM888g5ycHNnattlsWLlyJZo3b45BgwYhNDQU3bp1k30qweWys7OxcuVKPPbYY7K226NHD/zwww84d+4chBDYsGEDjh07hoEDB8rSvsViAYBqn3uVSgWdTuewz/3lGGRcnM1mw4QJE9CzZ0+0adNG1rYPHDgAHx8f6HQ6PP3001i+fDlatWolax9Lly7F3r17MWPGDFnbrdKtWzcsWrQIq1atwty5c5GWloZbb70V+fn5svVx8uRJzJ07FwkJCVi9ejWeeeYZPPfcc1i8eLFsfVzpu+++Q15eHsaOHStbm3/7298watQoJCYmwsPDAx06dMCECRPw4IMPytaHr68vunfvjn/961/IyMiA1WrFZ599hm3btiEzM1O2fi6XlZUFAAgLC6v2eFhYmP05d1RSUoKXXnoJo0ePlv1ifD/++CN8fHzg6emJt99+G2vXrkVwcLBs7c+cORMajQbPPfecbG1eafDgwfjkk0+wbt06zJw5E5s2bcKQIUNgtVplaf/8+fMoKCjAf/7zHwwePBhr1qzBPffcg+HDh2PTpk2y9HGlxYsXw9fXF8OHD5e13dmzZ6NVq1aIjIyEVqvF4MGDMWfOHPTu3VuW9hMTE9G0aVNMmTIFly5dQmlpKWbOnImzZ8867HN/uQZ/9Wt3l5ycjIMHDzok1bZo0QIpKSkwmUz4+uuvMWbMGGzatEm2MHPmzBmMHz8ea9euvalzyjfj8tGEdu3aoVu3boiOjsZXX30l2181NpsNnTt3xuuvvw4A6NChAw4ePIh58+ZhzJgxsvRxpQULFmDIkCF1mltQk6+++gqff/45lixZgtatWyMlJQUTJkyA0WiU9X18+umnePTRR9GkSROo1Wp07NgRo0ePxp49e2Tro6ErKyvDfffdByEE5s6dK3v7ffv2RUpKCi5evIiPPvoI9913H3bs2IHQ0NB6t71nzx68++672Lt3r2yjidcyatQo+/dt27ZFu3btEB8fj40bN6J///71bt9mswEAhg0bhokTJwIA2rdvj61bt2LevHno06dPvfu40scff4wHH3xQ9n8vZ8+eje3bt+OHH35AdHQ0Nm/ejOTkZBiNRllGyj08PPDtt9/iscceQ2BgINRqNQYMGIAhQ4bIvpjgWjgi48LGjRuHH3/8ERs2bEBkZKTs7Wu1WjRr1gydOnXCjBkzkJSUhHfffVe29vfs2YPz58+jY8eO0Gg00Gg02LRpE9577z1oNBrZ/nK6nL+/P5o3b47jx4/L1mZERMRV4a5ly5ayn8Kqkp6ejl9++QWPP/64rO1OnjzZPirTtm1bPPzww5g4caLso2Xx8fHYtGkTCgoKcObMGezcuRNlZWWIi4uTtZ8q4eHhACqG5S+XnZ1tf86dVIWY9PR0rF27VvbRGADQ6/Vo1qwZbrnlFixYsAAajQYLFiyQpe1ff/0V58+fR9OmTe2f+/T0dDz//POIiYmRpY9riYuLQ3BwsGyf/eDgYGg0Gqd99n/99VccPXpU9s99cXEx/v73v+Ott97C0KFD0a5dO4wbNw73338//vvf/8rWT6dOnZCSkoK8vDxkZmZi1apVyMnJcdjn/nIMMi5ICIFx48Zh+fLlWL9+PWJjY53Sr81ms5/rlEP//v1x4MABpKSk2G+dO3fGgw8+iJSUFKjVatn6qlJQUIATJ04gIiJCtjZ79ux51fL3Y8eOITo6WrY+Lrdw4UKEhobijjvukLXdoqIiqFTVP/Jqtdr+l6fc9Ho9IiIicOnSJaxevRrDhg1zSD+xsbEIDw/HunXr7I+ZzWbs2LHDIXO+HKkqxKSmpuKXX35BUFCQU/qV87P/8MMPY//+/dU+90ajEZMnT8bq1atl6eNazp49i5ycHNk++1qtFl26dHHaZ3/BggXo1KmTrHOVgIr/p8rKypz22TcYDAgJCUFqaip2797tsM/95XhqqQ4KCgqqpf60tDSkpKQgMDAQTZs2rXf7ycnJWLJkCb7//nv4+vraz/MbDAZ4eXnVu30AmDJlCoYMGYKmTZsiPz8fS5YswcaNG2X9h8bX1/eqeT16vR5BQUGyzfd54YUXMHToUERHRyMjIwPTpk2DWq3G6NGjZWkfACZOnIgePXrg9ddfx3333YedO3di/vz5mD9/vmx9VLHZbFi4cCHGjBkDjUbej+fQoUPx73//G02bNkXr1q3x+++/46233sKjjz4qaz+rV6+GEAItWrTA8ePHMXnyZCQmJuKRRx6pc5s3+sxNmDABr732GhISEhAbG4upU6fCaDTi7rvvlq2P3NxcnD592r6vS9UvuPDw8FqP/Fyvj4iICNx7773Yu3cvfvzxR1itVvtnPzAwEFqttt59BAUF4d///jfuuusuRERE4OLFi5gzZw7OnTt3U8v8b/SzujKAeXh4IDw8HC1atJClj8DAQLzyyisYMWIEwsPDceLECbz44oto1qwZBg0aJNv7mDx5Mu6//3707t0bffv2xapVq7BixQps3LhRtj6AiuC9bNkyvPnmm7Vu92b66NOnDyZPngwvLy9ER0dj06ZN+OSTT/DWW2/J1seyZcsQEhKCpk2b4sCBAxg/fjzuvvtu2SYUX5fD10U1QBs2bBAArrqNGTNGlvav1TYAsXDhQlnaF0KIRx99VERHRwutVitCQkJE//79xZo1a2RrvyZyL7++//77RUREhNBqtaJJkybi/vvvF8ePH5et/SorVqwQbdq0ETqdTiQmJor58+fL3ocQQqxevVoAEEePHpW9bbPZLMaPHy+aNm0qPD09RVxcnPjHP/4hLBaLrP18+eWXIi4uTmi1WhEeHi6Sk5NFXl5evdq80WfOZrOJqVOnirCwMKHT6UT//v1v+md4oz4WLlx4zeenTZsmSx9Vy7qvdduwYYMsfRQXF4t77rlHGI1GodVqRUREhLjrrrvEzp07Zf1ZXakuy6+v10dRUZEYOHCgCAkJER4eHiI6Olo88cQTIisrS/b3sWDBAtGsWTPh6ekpkpKSxHfffSd7Hx9++KHw8vKq8+fkRn1kZmaKsWPHCqPRKDw9PUWLFi3Em2++eVNbO9yoj3fffVdERkYKDw8P0bRpU/HPf/5T9n9baiIJ4YSZOEREREQOwDkyRERE5LYYZIiIiMhtMcgQERGR22KQISIiIrfFIENERERui0GGiIiI3BaDDBEREbktBhkiUoQkSfjuu++ULoOI3ByDDBE5RFZWFp599lnExcVBp9MhKioKQ4cOrXZNJLls3LgRkiQhLy9P9raJyLXxWktEJLtTp06hZ8+e8Pf3x6xZs9C2bVuUlZVh9erVSE5Oxh9//KF0idckhIDVapX9OldE5DgckSEi2f31r3+FJEnYuXMnRowYgebNm6N169aYNGkStm/fftXx1xpRSUlJgSRJOHXqFAAgPT0dQ4cORUBAAPR6PVq3bo2ffvoJp06dQt++fQEAAQEBkCQJY8eOBVBxEc4ZM2YgNjYWXl5eSEpKwtdff31Vvz///DM6deoEnU6HLVu2YN++fejbty98fX3h5+eHTp06Yffu3Q77eRFR3fHPDiKSVW5uLlatWoV///vf0Ov1Vz3v7+9fp3aTk5NRWlqKzZs3Q6/X4/Dhw/Dx8UFUVBS++eYbjBgxAkePHoWfn5/9KvEzZszAZ599hnnz5iEhIQGbN2/GQw89hJCQEPTp08fe9t/+9jf897//RVxcHAICAtC7d2906NABc+fOhVqtRkpKCjw8POpUNxE5FoMMEcnq+PHjEEIgMTFR1nZPnz6NESNGoG3btgCAuLg4+3OBgYEAgNDQUHtQslgseP311/HLL7+ge/fu9tds2bIFH374YbUg8+qrr+L222+v1tfkyZPt7yEhIUHW90JE8mGQISJZCSEc0u5zzz2HZ555BmvWrMGAAQMwYsQItGvXrsbjjx8/jqKiomoBBQBKS0vRoUOHao917ty52v1Jkybh8ccfx6effooBAwZg5MiRiI+Pl+/NEJFsOEeGiGSVkJAASZJuakKvSlXxT9HlIaisrKzaMY8//jhOnjyJhx9+GAcOHEDnzp0xe/bsGtssKCgAAKxcuRIpKSn22+HDh6vNkwFw1Smw6dOn49ChQ7jjjjuwfv16tGrVCsuXL6/1+yEi52GQISJZBQYGYtCgQZgzZw4KCwuvev5aS6RDQkIAAJmZmfbHUlJSrjouKioKTz/9NL799ls8//zz+OijjwAAWq0WAGC1Wu3HtmrVCjqdDqdPn0azZs2q3aKiom74Ppo3b46JEydizZo1GD58OBYuXHjD1xCR8zHIEJHs5syZA6vViq5du+Kbb75Bamoqjhw5gvfee88+X+VyVeFi+vTpSE1NxcqVK/Hmm29WO2bChAlYvXo10tLSsHfvXmzYsAEtW7YEAERHR0OSJPz444+4cOECCgoK4OvrixdeeAETJ07E4sWLceLECezduxezZ8/G4sWLa6y9uLgY48aNw8aNG5Geno7ffvsNu3btsvdFRC5GEBE5QEZGhkhOThbR0dFCq9WKJk2aiLvuukts2LBBCCEEALF8+XL78Vu2bBFt27YVnp6e4tZbbxXLli0TAERaWpoQQohx48aJ+Ph4odPpREhIiHj44YfFxYsX7a9/9dVXRXh4uJAkSYwZM0YIIYTNZhPvvPOOaNGihfDw8BAhISFi0KBBYtOmTUIIITZs2CAAiEuXLtnbsVgsYtSoUSIqKkpotVphNBrFuHHjRHFxsSN/XERUR5IQDpqZR0RERORgPLVEREREbotBhoiIiNwWgwwRERG5LQYZIiIiclsMMkREROS2GGSIiIjIbTHIEBERkdtikCEiIiK3xSBDREREbotBhoiIiNwWgwwRERG5LQYZIiIiclv/D3Su9QVBx3WlAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ge_object = GaussianMixtureElbowMethod(classes=[0, 1], \n", + " cluster_count_selection=list(range(1, 20)))\n", + "ge_results = ge_object.fit_plot(X, y)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.16" + }, + "vscode": { + "interpreter": { + "hash": "d86f111616862d19b4a31c0f57fe36c2d6f8663b0bf9b53456006ede2cf812e8" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/data_difficulty/y.npy b/examples/data_difficulty/y.npy new file mode 100644 index 0000000000000000000000000000000000000000..fb1c00df72a29a0d21ec82d129bdcc4df0d5add1 GIT binary patch literal 1088 zcmbV`u}T9`6ht?s^DDM{5w;LXCDwL|jfIsgW<^0v*bO!zUy&d79p%Uvti14;d*{x~ zeTUooo4bcu^U>_eYM7qJa@m%v*JbJ2^1L3mWB>lR9#;eWb^kUEm7iYv%~0pX#qzv6 z>)L($?>e0~-!-dnQXj~J_sJcjdNZo!$8Sbr_L;38RO6l-6#Vf^Jvv@;nPH!MZ<(7K zvq1Oi(Ye>7Cg&>q<<$>TX!VKksq?Fl4ggBz8{q%| literal 0 HcmV?d00001