diff --git a/.DS_Store b/.DS_Store index a80b7bf..8236b2b 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.ipynb_checkpoints/2_Model_selection-checkpoint.ipynb b/.ipynb_checkpoints/2_Model_selection-checkpoint.ipynb index f376ae9..ed6b946 100644 --- a/.ipynb_checkpoints/2_Model_selection-checkpoint.ipynb +++ b/.ipynb_checkpoints/2_Model_selection-checkpoint.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "id": "1c8b0045", "metadata": {}, "outputs": [], @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "id": "bee5e0b0", "metadata": {}, "outputs": [ @@ -58,7 +58,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "id": "bede7c6a", "metadata": {}, "outputs": [ @@ -306,7 +306,7 @@ " False]" ] }, - "execution_count": 7, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -321,7 +321,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 4, "id": "ee29821b", "metadata": {}, "outputs": [ @@ -331,7 +331,7 @@ "pandas.core.frame.DataFrame" ] }, - "execution_count": 53, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -423,7 +423,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "id": "8d982f88", "metadata": {}, "outputs": [], @@ -556,7 +556,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "id": "e340e485", "metadata": {}, "outputs": [], @@ -607,7 +607,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "id": "6b273236", "metadata": {}, "outputs": [ @@ -620,11 +620,25 @@ ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best Hyperparameters: {'max_depth': None, 'min_samples_leaf': 1, 'min_samples_split': 5, 'n_estimators': 200}\n", - "Accuracy on Test Set: 0.8828349836593337\n" + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[8], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m RFC_model_smote, best_params_smote \u001b[38;5;241m=\u001b[39m \u001b[43mRFC_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx_train_smote\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my_train_smote\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[7], line 17\u001b[0m, in \u001b[0;36mRFC_model\u001b[0;34m(X_train, Y_train)\u001b[0m\n\u001b[1;32m 14\u001b[0m grid_search \u001b[38;5;241m=\u001b[39m GridSearchCV(rf_classifier, param_grid, cv\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m, scoring\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124maccuracy\u001b[39m\u001b[38;5;124m'\u001b[39m, n_jobs\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# Perform the grid search on the training data\u001b[39;00m\n\u001b[0;32m---> 17\u001b[0m \u001b[43mgrid_search\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY_train\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;66;03m# Get the best hyperparameters from the grid search\u001b[39;00m\n\u001b[1;32m 20\u001b[0m best_params \u001b[38;5;241m=\u001b[39m grid_search\u001b[38;5;241m.\u001b[39mbest_params_\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152\u001b[0m, in \u001b[0;36m_fit_context..decorator..wrapper\u001b[0;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1145\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[1;32m 1147\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[1;32m 1148\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[1;32m 1149\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[1;32m 1150\u001b[0m )\n\u001b[1;32m 1151\u001b[0m ):\n\u001b[0;32m-> 1152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfit_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/model_selection/_search.py:898\u001b[0m, in \u001b[0;36mBaseSearchCV.fit\u001b[0;34m(self, X, y, groups, **fit_params)\u001b[0m\n\u001b[1;32m 892\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_format_results(\n\u001b[1;32m 893\u001b[0m all_candidate_params, n_splits, all_out, all_more_results\n\u001b[1;32m 894\u001b[0m )\n\u001b[1;32m 896\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m results\n\u001b[0;32m--> 898\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_search\u001b[49m\u001b[43m(\u001b[49m\u001b[43mevaluate_candidates\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 900\u001b[0m \u001b[38;5;66;03m# multimetric is determined here because in the case of a callable\u001b[39;00m\n\u001b[1;32m 901\u001b[0m \u001b[38;5;66;03m# self.scoring the return type is only known after calling\u001b[39;00m\n\u001b[1;32m 902\u001b[0m first_test_score \u001b[38;5;241m=\u001b[39m all_out[\u001b[38;5;241m0\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest_scores\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/model_selection/_search.py:1422\u001b[0m, in \u001b[0;36mGridSearchCV._run_search\u001b[0;34m(self, evaluate_candidates)\u001b[0m\n\u001b[1;32m 1420\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_run_search\u001b[39m(\u001b[38;5;28mself\u001b[39m, evaluate_candidates):\n\u001b[1;32m 1421\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Search all candidates in param_grid\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1422\u001b[0m \u001b[43mevaluate_candidates\u001b[49m\u001b[43m(\u001b[49m\u001b[43mParameterGrid\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparam_grid\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/model_selection/_search.py:845\u001b[0m, in \u001b[0;36mBaseSearchCV.fit..evaluate_candidates\u001b[0;34m(candidate_params, cv, more_results)\u001b[0m\n\u001b[1;32m 837\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 838\u001b[0m \u001b[38;5;28mprint\u001b[39m(\n\u001b[1;32m 839\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFitting \u001b[39m\u001b[38;5;132;01m{0}\u001b[39;00m\u001b[38;5;124m folds for each of \u001b[39m\u001b[38;5;132;01m{1}\u001b[39;00m\u001b[38;5;124m candidates,\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 840\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m totalling \u001b[39m\u001b[38;5;132;01m{2}\u001b[39;00m\u001b[38;5;124m fits\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\n\u001b[1;32m 841\u001b[0m n_splits, n_candidates, n_candidates \u001b[38;5;241m*\u001b[39m n_splits\n\u001b[1;32m 842\u001b[0m )\n\u001b[1;32m 843\u001b[0m )\n\u001b[0;32m--> 845\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mparallel\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 846\u001b[0m \u001b[43m \u001b[49m\u001b[43mdelayed\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_fit_and_score\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 847\u001b[0m \u001b[43m \u001b[49m\u001b[43mclone\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbase_estimator\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 848\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 849\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 850\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 851\u001b[0m \u001b[43m \u001b[49m\u001b[43mtest\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 852\u001b[0m \u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 853\u001b[0m \u001b[43m \u001b[49m\u001b[43msplit_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msplit_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_splits\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 854\u001b[0m \u001b[43m \u001b[49m\u001b[43mcandidate_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcand_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_candidates\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 855\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mfit_and_score_kwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 856\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 857\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mcand_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43msplit_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrain\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mproduct\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 858\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcandidate_params\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcv\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgroups\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 859\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 860\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 862\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(out) \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m 863\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 864\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo fits were performed. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 865\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWas the CV iterator empty? \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 866\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWere there no candidates?\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 867\u001b[0m )\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/parallel.py:65\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[0;34m(self, iterable)\u001b[0m\n\u001b[1;32m 60\u001b[0m config \u001b[38;5;241m=\u001b[39m get_config()\n\u001b[1;32m 61\u001b[0m iterable_with_config \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 62\u001b[0m (_with_config(delayed_func, config), args, kwargs)\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m delayed_func, args, kwargs \u001b[38;5;129;01min\u001b[39;00m iterable\n\u001b[1;32m 64\u001b[0m )\n\u001b[0;32m---> 65\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__call__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43miterable_with_config\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/joblib/parallel.py:1098\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[0;34m(self, iterable)\u001b[0m\n\u001b[1;32m 1095\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_iterating \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 1097\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backend\u001b[38;5;241m.\u001b[39mretrieval_context():\n\u001b[0;32m-> 1098\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mretrieve\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1099\u001b[0m \u001b[38;5;66;03m# Make sure that we get a last message telling us we are done\u001b[39;00m\n\u001b[1;32m 1100\u001b[0m elapsed_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_start_time\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/joblib/parallel.py:975\u001b[0m, in \u001b[0;36mParallel.retrieve\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 973\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 974\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backend, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msupports_timeout\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m--> 975\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_output\u001b[38;5;241m.\u001b[39mextend(\u001b[43mjob\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 976\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_output\u001b[38;5;241m.\u001b[39mextend(job\u001b[38;5;241m.\u001b[39mget())\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/joblib/_parallel_backends.py:567\u001b[0m, in \u001b[0;36mLokyBackend.wrap_future_result\u001b[0;34m(future, timeout)\u001b[0m\n\u001b[1;32m 564\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Wrapper for Future.result to implement the same behaviour as\u001b[39;00m\n\u001b[1;32m 565\u001b[0m \u001b[38;5;124;03mAsyncResults.get from multiprocessing.\"\"\"\u001b[39;00m\n\u001b[1;32m 566\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 567\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 568\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m CfTimeoutError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 569\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/concurrent/futures/_base.py:434\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 431\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[1;32m 432\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__get_result()\n\u001b[0;32m--> 434\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_condition\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwait\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 436\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;129;01min\u001b[39;00m [CANCELLED, CANCELLED_AND_NOTIFIED]:\n\u001b[1;32m 437\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/threading.py:302\u001b[0m, in \u001b[0;36mCondition.wait\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 300\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m: \u001b[38;5;66;03m# restore state no matter what (e.g., KeyboardInterrupt)\u001b[39;00m\n\u001b[1;32m 301\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 302\u001b[0m \u001b[43mwaiter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43macquire\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 303\u001b[0m gotit \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 304\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], @@ -634,69 +648,12 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "2b391492", "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABWxUlEQVR4nO3deVhUZf8G8HsGGBbZZTcU933FRFxSiyT1p1bva5amZqVZZqalaZamldpiamlZ7pblUqml5hJuqbghuIuK4A6Iyi4MzHx/f/hycmRQBoHDcn+uay7nnPOcme8cxpl7nvOcczQiIiAiIiJSiVbtAoiIiKhyYxghIiIiVTGMEBERkaoYRoiIiEhVDCNERESkKoYRIiIiUhXDCBEREamKYYSIiIhUZa12AYVhNBpx9epVODk5QaPRqF0OERERFYKIIC0tDX5+ftBqC+7/KBdh5OrVq/D391e7DCIiIiqCS5cu4ZFHHilwebkII05OTgDuvBhnZ2eVqyEiIqLCSE1Nhb+/v/I9XpByEUbyds04OzszjBAREZUzDxpiwQGsREREpCqGESIiIlIVwwgRERGpimGEiIiIVMUwQkRERKpiGCEiIiJVMYwQERGRqhhGiIiISFUMI0RERKQqi8PIrl270LNnT/j5+UGj0WDt2rUPXGfHjh1o1aoVbG1tUadOHSxZsqQIpRIREVFFZHEYycjIQPPmzTF37txCtY+NjUWPHj3QpUsXREVF4e2338arr76KzZs3W1wsERERVTwWX5umW7du6NatW6Hbz5s3DzVr1sSMGTMAAA0bNsTu3bsxc+ZMhIaGWvr0REREVMGU+IXywsPDERISYjIvNDQUb7/9doHrZGdnIzs7W5lOTU0tqfKIiIgqJKNRcD09G/EpWcjKMSAr14iLNzNha6VFzPV0WFtpYBQgJ9eIHIMRQx6rhUfcHFSptcTDSHx8PLy9vU3meXt7IzU1Fbdv34a9vX2+daZNm4bJkyeXdGlERETllohAbzDi8q3bWHHgIgDg5/0XkaE3QKMBRCx7vN4tq1XcMFIU48ePx+jRo5Xp1NRU+Pv7q1gRERGROgxGwcG4m1i4OxYpmTk4m5iGW5k5913n7iCi1QBGARr4OCHHYERaVi5aVXfDleTbaO7vgiq21tBZaeHlZFvCr6RgJR5GfHx8kJCQYDIvISEBzs7OZntFAMDW1ha2tuptFCIiotJmNApuZeoRdyMDJ66m4q9j8Th6ORkZesMD19VZa2FrrcULbarDWqvBY/U8UcuzCtwddLC2Kvtn8SjxMBIcHIyNGzeazNu6dSuCg4NL+qmJiIjKnL0xSTh5NRV7ziXh2JUUaDUaJKZlP3hFAMG1qqJ7Ux94Otmhoa8T3KroYG9jBZtyEDjux+Iwkp6ejnPnzinTsbGxiIqKgru7O6pXr47x48fjypUrWLZsGQBg2LBhmDNnDsaOHYuXX34Z27Ztw6pVq7Bhw4biexVERERlUEZ2Lo5eTsGlm5n4dsc5xN3ILPS63s628HKyw1tP1EX7OlXhoCuTIyuKhcWv7NChQ+jSpYsynTe2Y9CgQViyZAmuXbuGixcvKstr1qyJDRs2YNSoUZg9ezYeeeQRLFiwgIf1EhFRhaLPNeLwxVvYey4JJ6+l4u9Tifdt/1RjH2TocxFcuyqCa1WFexUdvJzsYK+zKqWKyw6NiKXjbUtfamoqXFxckJKSAmdnZ7XLISIiAgAkZ+rx++ErCDudgD3nbhTYrlV1V3g52eFsYhpmP98STaq5lGKV6ins93fF7fMhIiIqZpn6XMSnZOGfs0n47fBlHL2cYrbdC22qw8fZDq1quKJDHQ9oNJpSrrR8YRghIiK6R67BiNPxaThxNQWXb93Gwbib2Hf+ZoHtG/s5o1sTHwzrVLtcHL1S1jCMEBFRpZSUno2IC7dwK0OPy7duI+LCLRiMgkMXbsL4gAEMNao64GaGHsM61cZL7QJQxZZfpw+DW4+IiCq862nZ+Ofsdew+l4QNR6/BzUGH+NSsB66Xd8KwPoGPoJ63E+p4O6JzPU/udilmDCNERFThJKZmYdvpRPwacRmHLtzKt/zuIOLrYodqrvawsdLC2kqD7k19Ud/HCc2quXCXSylhGCEionIvMS0LW04k4MfwC4hOSCuwXXN/V3hU0aGBrxP6BPojwKNKKVZJBWEYISKickVEkJCajYNxN3Ew7iaWhV8osG1DX2forDQY8XhdhDTyLrAdqYthhIiIyqwcgxFxSRkIO52Ik1dT8ceRqw9cp2dzP0zu1RjuVXSlUCEVB4YRIiIqM1KzcrD60GWsP3oVkReTH9heqwHa1/FA+zoeGNqxFrRaDiwtjxhGiIhIVYfibmLiuhPINRpxJiHdbBsnO2vYWGnx4f81hL2NNTrX94SdTeU7bXpFxTBCRESlKjE1C7vOJuH3w5exNyb/KdR1VlpotcBzrf3RrrYHQhp68aiWCo5hhIiISpTBKFgTeQWzw84gPiULOQbzZxTr1dwPb4fURS1Px1KukNTGMEJERMXutt6A41dT8PpPh5GUnp1vuauDDTKyc/FkI28MDA5A21pVVaiSygqGESIiKhb7z9/Asn0XsOHoNbPLNRqge1NfvP1EXdT1dirl6qgsYxghIqIiEREcuZyC+bvOY29MEm5l5uRrE1jDDfY2Vvh+QCCv30IF4juDiIgKJSk9G6eupeKHXecRn5KFs4nmj3wZ0rEm+gfV4NlNqdAYRoiIqEB/HLmK73bE4NS11Pu26xdUHT2b+SGwhht01jzyhSzDMEJERCYu3MjA1I2nsPlEgtnl1VztUcuzCj7o0QgBHg6wteb5PujhMIwQEREysnPx0R8nsDristnlE7o3RI9mvvBztS/lyqgyYBghIqqERAT/nE3CF5ujcexKSoHtFr3UGo834AXmqGQxjBARVQJZOQasjriM66lZWH/0Gs4nZZht1+wRF0zq2RitqrtCo+F1Xqh0MIwQEVVgRy4lo9/8fcjQGwps07aWO6Y92wwBVR0YQEgVDCNERBXQD7tiMHXj6Xzzm1RzRmNfF9jZaPFGlzrwdrZToToiUwwjREQVRMrtHGw6fg2LdschOiHNZFmPpr74ok8zOOj4sU9lD9+VRETlWGxSBr7aegZ/Hrmab5m/uz0Wv/Qoans6cvcLlWkMI0RE5Ux6di5m/30G8/+JNbvczcEGH/VqjN4tqpVyZURFwzBCRFTG5R2GO2PrGRy5lGy2TXN/V4x7qgGCa/Pqt1T+MIwQEZVB+lwjoi4lY8XBi/j98JUC233QoyFeahcAayuegp3KL4YRIqIyQp9rxLLwOHy/6zyup2WbbeOgs8Kyl9ugVXU3aLUcB0IVA8MIEZFKsnMN2HjsGn6NuIw9524U2K6WZxVM/L9G6FzfqxSrIyo9DCNERKUsK8eAj9efxPL9FwtsM/rJehjSsRbsdbwIHVV8DCNERKXgn7PXMWjRAeistcjKMZose8TNHj2a+aJNgDs61vWEzprjP6hyYRghIioBBqPg1LVUzNl2DntikpCWlQsAJkHk8QZe+PqFlnC05UcxVW78H0BEVIz0uUYMWnQA4efNjwH5qGcjPNHQG9Vc7TkAleh/GEaIiB7SzjPX8eeRqzgYdxMXbmSabTMmtD4GtQtgLwiRGfxfQURkIRHBX8fj8cuBi/jnbFKB7ba/2xk1PaqUYmVE5RPDCBFRIYkIZv19FrPDzppd/m7Xeuja2AfeznZwsbcp5eqIyi+GESKiBzh+JQVztp3DphPx+Za927UeWvi7oUNdDxUqI6oYGEaIiMxIyczBqFVROHIpGTcy9PmW//FmezR7xLX0CyOqgBhGiIjuIiL4dkcMvtgcnW/ZKx1q4omGXmhXm70gRMWJYYSI6H9WHLiITzeeUs4JAgC1PKpg9vMt0djPmYfiEpUQhhEiqtR2nrmORbtjsfPM9XzLNr7VEY38nFWoiqhyYRghokol12DEjujr+HHfBbMBBAB+fKUNOtb1LOXKiCovhhEiqhT0uUZ0/HwbElKzzS5/tlU1jA1tAB8Xu1KujIgYRoioQkvPzsVnf53Gj/su5FvWsrorPujREIE13FWojIjyMIwQUYUUdioBX2yOxun4NJP5fi522DW2C6yteGVcorKCYYSIKoy0rBws3RuHL7ecybesmqs9Pvy/RniqiY8KlRHR/TCMEFG5JSI4HZ+GNZFXsDP6OqIT8veCfPlccwTXqgqNhoflEpVVDCNEVO6kZuXgtWURCD9/w+zyHs18MSqkLup4OZVyZURUFAwjRFQuGI2CTSfi8dYvkcg1Sr7lgTXc0KOpLwYE14ANx4MQlSsMI0RU5qVk5uC578Pz7YZpUs0Zs/q2YA8IUTnHMEJEZZaI4Idd5zHtr9PKvAY+TujT2h8D2taAzpo9IEQVAcMIEZVJ0/86jXk7Y0zmjevWAMM61VapIiIqKQwjRFRm6HON2B6diE82nMSlm7dNln3XvxW6NfVVqTIiKkkMI0Skus0n4vHajxFml214qwMa+7mUckVEVJoYRohINccup+C/8/YiO9doMt+9ig5jQuvjhTbVVaqMiEoTwwgRlbqTV1PR/et/8s1/uoUfpj7bFA46fjQRVSZFGoo+d+5cBAQEwM7ODkFBQThw4MB928+aNQv169eHvb09/P39MWrUKGRlZRWpYCIqnxJSs/Dh2uMIGLchXxD56ZUgxE3vgVnPt2QQIaqELP5fv3LlSowePRrz5s1DUFAQZs2ahdDQUERHR8PLyytf+59//hnjxo3DokWL0K5dO5w5cwYvvfQSNBoNvvrqq2J5EURUdp24moIeX+82u+zTZ5qgX5vqPFU7USWnEZH8pzK8j6CgIDz66KOYM2cOAMBoNMLf3x8jRozAuHHj8rV/8803cerUKYSFhSnz3nnnHezfvx+7d5v/gLpXamoqXFxckJKSAmdnZ0vKJaJSZjAKzl9Px+Q/T+LQhZvIyjHma/Pzq0EIrs3rxRBVdIX9/raoZ0Sv1yMiIgLjx49X5mm1WoSEhCA8PNzsOu3atcNPP/2EAwcOoE2bNjh//jw2btyIAQMGFPg82dnZyM7ONnkxRFT2rY28grdXRpld9m3/VujWxIcBhIjysSiMJCUlwWAwwNvb22S+t7c3Tp8+bXadfv36ISkpCR06dICIIDc3F8OGDcP7779f4PNMmzYNkydPtqQ0IlJJjsGIP6Ku4p3VR0zmO9tZIyvHiF9fD0bTai4MIURUoBIfKbZjxw5MnToV3377LYKCgnDu3DmMHDkSH3/8MT788EOz64wfPx6jR49WplNTU+Hv71/SpRKRBW6kZ2Pc78ew9WRCvmV/j+6EOl6OKlRFROWRRWHEw8MDVlZWSEgw/fBJSEiAj4+P2XU+/PBDDBgwAK+++ioAoGnTpsjIyMDQoUMxYcIEaLX5D+ixtbWFra2tJaURUSn6YvNpzN0ek29+aGNvzHsxkL0gRGQRi8KITqdDYGAgwsLC8PTTTwO4M4A1LCwMb775ptl1MjMz8wUOKysrAHcugkVE5YfBKHhh/j4ciL2pzKvn7Yi5/VqhrjevnEtERWPxbprRo0dj0KBBaN26Ndq0aYNZs2YhIyMDgwcPBgAMHDgQ1apVw7Rp0wAAPXv2xFdffYWWLVsqu2k+/PBD9OzZUwklRFT2LQuPw8R1J0zm/TO2C/zdHVSqiIgqCovDSN++fXH9+nVMnDgR8fHxaNGiBTZt2qQMar148aJJT8gHH3wAjUaDDz74AFeuXIGnpyd69uyJTz/9tPheBRGVCKNRsD/2Jl6Yv89kvqeTLfaPfwJaLXfHENHDs/g8I2rgeUaISleOwYg3lh82Ozh13ouBeKqJ+TFiRER3K5HzjBBRxabPNeLrsLOYs/1cvmUjn6iLUU/WU6EqIqroGEaICACwcHcsPl5/Mt98jgshopLGMEJUyYXH3Mg3JqRTPU98/XxLuDjYqFQVEVUmDCNEldjKgxfx3m/HTObtfq8LHnFjTwgRlR6GEaJKaM+5JPRfsN9k3uznW6B3i2oqVURElRnDCFElkpSejdaf/J1v/pGJXblLhohUwzBCVAlkZOdidthZ/LDrvMn8Z1tVw4w+zXn6diJSFcMIUQVmNAr6LdiHfedvmsx/7bFaGNetAUMIEZUJDCNEFVB2rgFvr4jCX8fjTebX8qiCHwa25hV1iahMYRghqkBEBEOWHcLfpxJN5jvZWePopK7sCSGiMolhhKiCOB2fiv98uxcZeoMyz0qrwYH3n0BVR1sVKyMiuj+GEaIKwNwVdTe93RENfHgtJyIq+xhGiMopo1Ewb1cMZm09C73BqMx/rVMtjO/WUMXKiIgswzBCVA4dv5KC//tmt8k8J1trrBneDnW8nFSqioioaBhGiMoJEUH4+Rt4afFB6HONJssWDmqNJxp6q1QZEdHDYRghKgf2xiRh8OKDyL4nhEz8v0Z4uUNNlaoiIioeDCNEZVimPhdvr4jClpMJJvNb+LtixdC2sLOxUqkyIqLiwzBCVEYlZ+rx2OfbkZqVq8z7+oWW6NXcT8WqiIiKH8MIURmz68x1TFx3HHE3MpV5jrbW2P1eF7g66FSsjIioZDCMEJURyZl6tP7kb+QaxWT+nH4t8X/N2BtCRBUXwwhRGZCQmoWgqWEm80Ibe+PrF1rC1prjQoioYmMYIVLZV1ui8fW2c8p0p3qeWDL4UV5HhogqDYYRIpUkpmVh4MIDOB2fpsz75OkmeLFtDRWrIiIqfQwjRCo4eTUV3b/+R5nWaoBjH4Wiii3/SxJR5cNPPqJStnhPLCb/eVKZHvpYLYzv1oC7ZYio0mIYISol+87fwPM/7DOZ9+ebHdD0EReVKiIiKhsYRohKmMEomLbxFBbsjjWZ//fox3hROyIiMIwQlai0rBw0/WiLybw3OtfG2KcaqFQREVHZwzBCVEJSbueg+eR/g4iDzgqHPgiBg47/7YiI7sZPRaIScPJqKvov+Hd8yDMtq2Fm3xbqFUREVIYxjBAVs7d+icQfR64q03P7tUKPZr4qVkREVLYxjBAVk+2nEzF4yUGTeWuHt0cLf1d1CiIiKicYRoiKQXjMjXxBJPqTp3hdGSKiQmAYIXpIp66l4qXFB5Tpj3o2wkvta6pYERFR+cIwQvQQvt8Zg2l/nVamf341CO3qeKhYERFR+cMwQlREc7adxZdbzijTS19uwyBCRFQEDCNERfDZptP4bkeMMr393c6o6VFFxYqIiMovhhEiCy3457xJEDn6UVc429moWBERUfnGMEJUSEnp2ejx9T9ISM1W5p3++CnY2fCIGSKih8EwQlQIX4edxVdb/x0fYmejxZFJXXnoLhFRMWAYIXqA3w9fNgkis59vgd4tqqlYERFRxcIwQlSAmxl6vL0yCrvOXFfmHZnUFS72HB9CRFScGEaIzMjIzkW76WHIyjEq8w68/wSDCBFRCWAYITJj7K9HlSDSo6kv5vRrCY1Go3JVREQVE8MI0V3Ss3MRPC0MaVm5AIBhnWpjXLcGKldFRFSxMYwQ/c+lm5no+Pl2ZbpldVcGESKiUqBVuwCisuDUtVT0+Pofk3mrXgtWqRoiosqFPSNU6b285CC2nU5UppcMfhSd63upWBERUeXCMEKVltEoePa7vYi6lKzMm/5sUwYRIqJSxjBCldLC3bH4eP1Jk3nnp3aHVssjZoiIShvDCFUqOQYjgqdtQ1L6v9eXcbazxpFJXXnoLhGRShhGqFLp8uUOkyCy+e3HUN/HScWKiIiIYYQqjfG/H8PlW7cBAAPa1sDHTzdRuSIiIgJ4aC9VEjO2ROOXAxcBADU9qjCIEBGVIQwjVOHN2xmDb7adAwD4u9tj09sdVa6IiIjuxjBCFdq6qCuY/tdpZXr9iI6wtbZSsSIiIrpXkcLI3LlzERAQADs7OwQFBeHAgQP3bZ+cnIzhw4fD19cXtra2qFevHjZu3FikgokK62DcTYxcEaVMH58cyqvuEhGVQRYPYF25ciVGjx6NefPmISgoCLNmzUJoaCiio6Ph5ZX/ZFF6vR5PPvkkvLy88Ouvv6JatWq4cOECXF1di6N+onwy9bl4eclB7Dt/U5m3fkQHONpyvDYRUVmkERGxZIWgoCA8+uijmDNnDgDAaDTC398fI0aMwLhx4/K1nzdvHr744gucPn0aNjZF+1WampoKFxcXpKSkwNnZuUiPQZWDPteIeh/8ZTJv55jOqFG1ikoVERFVXoX9/rZoN41er0dERARCQkL+fQCtFiEhIQgPDze7zh9//IHg4GAMHz4c3t7eaNKkCaZOnQqDwVDg82RnZyM1NdXkRvQgm45fMwki/YOqI3ZadwYRIqIyzqJ+66SkJBgMBnh7e5vM9/b2xunTp82uc/78eWzbtg39+/fHxo0bce7cObzxxhvIycnBpEmTzK4zbdo0TJ482ZLSqJJrPnkLUm7nKNPvd2+AoY/VVrEiIiIqrBI/msZoNMLLyws//PADAgMD0bdvX0yYMAHz5s0rcJ3x48cjJSVFuV26dKmky6Ry6tLNTNSdsNEkiCx6qTWDCBFROWJRz4iHhwesrKyQkJBgMj8hIQE+Pj5m1/H19YWNjQ2srP49nLJhw4aIj4+HXq+HTqfLt46trS1sbW0tKY0qoSvJt9Hx8+3KtL+7PXaN6cJrzBARlTMW9YzodDoEBgYiLCxMmWc0GhEWFobg4GCz67Rv3x7nzp2D0WhU5p05cwa+vr5mgwhRYaTczkH76duU6ZFP1MU/Yx9nECEiKocs3k0zevRozJ8/H0uXLsWpU6fw+uuvIyMjA4MHDwYADBw4EOPHj1fav/7667h58yZGjhyJM2fOYMOGDZg6dSqGDx9efK+CKpVMfS6emLFDmf55SBBGPVlPvYKIiOihWHzihb59++L69euYOHEi4uPj0aJFC2zatEkZ1Hrx4kVotf9mHH9/f2zevBmjRo1Cs2bNUK1aNYwcORLvvfde8b0KqjRSs3LQ7KMtyvSY0PpoV9tDxYqIiOhhWXyeETXwPCMEAAaj4Nnv9uLIpWQAQJ/AR/BFn+bqFkVERAUq7Pc3T0lJ5YKIoM+8f4PI9Geb4vk21dUtioiIigXDCJV5IoLuX+/GqWt3Tn7XrYkPgwgRUQXCMEJlmtEoqPfBX8g13tmb2MLfFd+9GKhyVUREVJxK/KRnRA9j3O9HlSDi5WSL315vp3JFRERU3NgzQmXW0GWHsOXknRPsNX/EBeve7KByRUREVBIYRqjMERG8vOQgtkdfV+atHd5exYqIiKgkMYxQmbLpeDyG/RRhMu/sp914ZlUiogqMY0aozFi4O9YkiDjbWSNmanfYWPFtSkRUkbFnhMqEDUev4eP1J5XptcPbo4W/q3oFERFRqWEYIdVtPZmA4T8fVqbDxz8OXxd7FSsiIqLSxP5vUtW5xHQMWXZImf5rZEcGESKiSoZhhFSTnKlHyFc7lelVrwWjoS+vPUREVNkwjJAqcg1GtPx4qzI9q28LtKnprmJFRESkFo4ZIVXUmfCXcn9Yp9p4umU1FashIiI1sWeESt28nTHK/RpVHTCuWwMVqyEiIrUxjFCpOn4lBdP/Oq1M7xzTRcVqiIioLOBuGio1C3fHmpxLZM+4x1WshoiIygr2jFCpyM41mASRHe92RjVXHsJLRETsGaFS8sSMfw/hPT45FI62fOsREdEd7BmhEvfer0dx+dZtAECr6q4MIkREZIJhhErU/vM3sPLQJQBAXS9H/P5Ge5UrIiKisoZhhErM74cvo+8P+5TpP0d0ULEaIiIqq9hfTiVi5tYzmB12VpleP6ID7GysVKyIiIjKKoYRKnZv/nwY649eU6Z3vNsZAR5VVKyIiIjKMoYRKlaLdseaBJHTHz/FHhEiIrovjhmhYhOfkoUpd51L5NQUBhEiInow9ozQQxMRvL/mGH45cEmZt2XUY7DXMYgQEdGDMYzQQxvxS6TJrpl3nqyHet5OKlZERETlCcMIPZRXlx7E36cSAQAu9jY4MOEJ2FqzR4SIiAqPYYSKbMqfJ5Ug4mhrjSOTuqpcERERlUccwEpFsnz/BSzaE6tMH/uIQYSIiIqGYYQs9vP+i5iw5rgyfXxyKDQajYoVERFRecbdNGSRjOxcvL/mmDJ9YnIoqvDCd0RE9BDYM0KFZjAKGk/arEz/PfoxBhEiInpoDCNUaP0X/HvRuze71EEdLx6+S0RED49hhArllwMXse/8TQDAi22r493Q+ipXREREFQXDCD1QcqYe43+/M07E390enzzdVOWKiIioImEYoQdafeiycv+vkY+pWAkREVVEDCN0X5dvZeLTjacAAKOfrAdHDlglIqJixjBCBbp0MxMdPtuuTA9oW0PFaoiIqKJiGCGzUrNy0PHzf4PIvBdbwa2KTsWKiIioomKfO+VzIz0bj376tzId0tAbTzXxVbEiIiKqyBhGyMSV5NtoP32bMj2+WwO81qm2ihUREVFFxzBCJp6eu0e5/9l/mqLvo9VVrIaIiCoDjhkhxfCfD+N6WjYA4OPejRlEiIioVDCMEADgt4jL2HD0GgCgjpcjBgQHqFsQERFVGgwjhMiLt/DO6iMAAJ21FptGdlS5IiIiqkwYRggDFh5Q7h+Z2BXWVnxbEBFR6eG3TiWWkZ2LlxYfQHp2LgBgyeBHYa+zUrkqIiKqbHg0TSX22o8R2H0uCQDQpb4nOtf3UrkiIiKqjNgzUkkt3RunBJH/a+aLRS89qnJFRERUWTGMVEIZ2bmY9McJZfqbF1pCo9GoWBEREVVmDCOV0Ptrjin3w97pxCBCRESqYhipZA5fvIV1UVcBAC+2rY7ano4qV0RERJUdw0glYjQK3vv1KADAyc4ak3s1UbkiIiIihpFK5ZMNp3A2MR0AsOaN9rDScvcMERGpr0hhZO7cuQgICICdnR2CgoJw4MCBB68EYMWKFdBoNHj66aeL8rT0EJIz9Vi0JxYA0LaWO+p4cfcMERGVDRaHkZUrV2L06NGYNGkSDh8+jObNmyM0NBSJiYn3XS8uLg7vvvsuOnbkqcbVMP2v08r9b/sHqlgJERGRKYvDyFdffYUhQ4Zg8ODBaNSoEebNmwcHBwcsWrSowHUMBgP69++PyZMno1atWg9VMFkuOVOPFQcvAQCeaOAF9yo6lSsiIiL6l0VhRK/XIyIiAiEhIf8+gFaLkJAQhIeHF7jelClT4OXlhVdeeaVQz5OdnY3U1FSTGxXd4CUHlftf9mmuYiVERET5WRRGkpKSYDAY4O3tbTLf29sb8fHxZtfZvXs3Fi5ciPnz5xf6eaZNmwYXFxfl5u/vb0mZdJfo+DREXkwGAIzr1gBu7BUhIqIypkSPpklLS8OAAQMwf/58eHh4FHq98ePHIyUlRbldunSpBKusuIxGQbfZu5Tpl9vXVLEaIiIi8yy6UJ6HhwesrKyQkJBgMj8hIQE+Pj752sfExCAuLg49e/ZU5hmNxjtPbG2N6Oho1K5dO996tra2sLW1taQ0ukdyph4tpmxVptcNbw+dNY/kJiKisseibyedTofAwECEhYUp84xGI8LCwhAcHJyvfYMGDXDs2DFERUUpt169eqFLly6Iiori7pcSknI7xySIdKrnieb+ruoVREREdB8W9YwAwOjRozFo0CC0bt0abdq0waxZs5CRkYHBgwcDAAYOHIhq1aph2rRpsLOzQ5Mmpmf5dHV1BYB886l4ZOUY0HzyFmW6Qx0PLH25jYoVERER3Z/FYaRv3764fv06Jk6ciPj4eLRo0QKbNm1SBrVevHgRWi13B6hBRDBk2SFlukczX8zt10rFioiIiB5MIyKidhEPkpqaChcXF6SkpMDZ2Vntcsqsp+fuQdSlZADAlN6NMTA4QNV6iIiocivs9ze7MCqIE1dTlCDi62LHIEJEROUGw0gFcffp3ve897iKlRAREVmGYaQC2HQ8Hv+cTQIArHotGFpejZeIiMoRhpFy7rbegOE/HwYAdG3kjTY13VWuiIiIyDIMI+Xckr1xMBjvjEGe3LuxytUQERFZjmGkHBMRfL8rBgAw+sl68HWxV7kiIiIiyzGMlGOjVx1BcmYOAODlDrzuDBERlU8MI+XUhRsZWBN5BQDwQpvqcLS1+Px1REREZQLDSDn1w67zAIDq7g6Y9mxTlashIiIqOoaRcig85gaW778IABjXrYHK1RARET0chpFy6I3lEQCAgKoO6NbER+VqiIiIHg7DSDnzypKDuPW/QauTejWGRsMTnBERUfnGMFKOrIu6grDTiQCAR9zs0aW+l8oVERERPTyGkXJk2sZ/rz+z7Z3O6hVCRERUjBhGyomk9GzEp2YBAJa/GgSdNf90RERUMfAbrZz4ad8FAHcGrbav46FyNURERMWHYaQcuJ6WjW+33znte49mvipXQ0REVLwYRsqBj/44Ab3BCAAY8XhdlashIiIqXgwjZdyN9GxsOHYNAPBSuwDY2VipXBEREVHxYhgpw4xGwctLDirTo7vWU7EaIiKiksEwUoZNWHscRy6nAADGPlUfznY2KldERERU/BhGyqhLNzPxy4E715/p2sgbb3Suo3JFREREJYNhpAzKzjWg4+fblemvX2ipYjVEREQli2GkDPom7Jxyf8ngRzlolYiIKjSGkTImPTsXc7bfCSPdm/qgM68/Q0REFRzDSBnz6YZTyv0PejRSsRIiIqLSwTBShqRk5iiDVt/oXBt+rvYqV0RERFTyGEbKkNGropT7b3Th0TNERFQ5MIyUEb9GXEbY6UQAwITuDeFoa61yRURERKWDYaQMyDEY8e7qI8r0oHYB6hVDRERUyhhGyoCle+OU+wcmPAGdNf8sRERUefBbT2WZ+lx88r8jaDrU8YCXk53KFREREZUuhhGVfbPt3xOczezbQr1CiIiIVMIworKF/8QCAPoHVYenk63K1RAREZU+hhEVHbmUDL3BCAAY+1QDlashIiJSB8OIip79bi8AwM/FDi72NipXQ0REpA6GEZVcvpUJg1EAALN5VV4iIqrEGEZU0uGz7cr9RwPcVayEiIhIXQwjKjh+JUW5/3rn2ipWQkREpD6GkVImInh/zTEAQH1vJ7zHgatERFTJMYyUsh/3XcDRy3d6RmY811zlaoiIiNTHMFLKJq47AQBoV7sqmlRzUbkaIiIi9TGMlKLfIi4r9yf1bKxiJURERGUHw0gpuZWhx9SNp5Tp+j5OKlZDRERUdlirXUBl0fLjrcr97e92Vq8QIiKiMoY9I6UgNStHuf9x78ao6VFFxWqIiIjKFoaRUrBkTxwAoJqrPQYEB6haCxERUVnDMFIKNh67BgB4spG3ypUQERGVPQwjJSw6Pg2n49MA8GyrRERE5jCMlLCtJ+MB3Lkyr7ezncrVEBERlT0MIyXs+53nAQAtq7upXAkREVHZxDBSgg7E3kRadi4AYNST9VSuhoiIqGxiGClBm47f2UXTwt8VdbwcVa6GiIiobGIYKSEJqVlYtCcWAPBKh5oqV0NERFR2MYyUkGE/RSj3ezT1VbESIiKiso1hpATczNAj8mIyAODjp5tAq9WoWxAREVEZVqQwMnfuXAQEBMDOzg5BQUE4cOBAgW3nz5+Pjh07ws3NDW5ubggJCblv+4rglaUHlfv92lRXsRIiIqKyz+IwsnLlSowePRqTJk3C4cOH0bx5c4SGhiIxMdFs+x07duCFF17A9u3bER4eDn9/f3Tt2hVXrlx56OLLoqwcA6IuJQMARoXUgxV7RYiIiO5LIyJiyQpBQUF49NFHMWfOHACA0WiEv78/RowYgXHjxj1wfYPBADc3N8yZMwcDBw4s1HOmpqbCxcUFKSkpcHZ2tqTcUrfy4EW899sxuNjbIGrik9BoGEaIiKhyKuz3t0U9I3q9HhEREQgJCfn3AbRahISEIDw8vFCPkZmZiZycHLi7uxfYJjs7G6mpqSa38uK9344BAJpUc2YQISIiKgSLwkhSUhIMBgO8vU0v+Obt7Y34+PhCPcZ7770HPz8/k0Bzr2nTpsHFxUW5+fv7W1Kman45cFG5P7gdD+clIiIqjFI9mmb69OlYsWIF1qxZAzu7gq/TMn78eKSkpCi3S5culWKVRZNrMOL9NXd6RRr7OSOEV+glIiIqFGtLGnt4eMDKygoJCQkm8xMSEuDj43Pfdb/88ktMnz4df//9N5o1a3bftra2trC1tbWkNNX1nLMHeaNvFr30qLrFEBERlSMW9YzodDoEBgYiLCxMmWc0GhEWFobg4OAC1/v888/x8ccfY9OmTWjdunXRqy2jYq6n49S1O+Na6ng58uq8REREFrCoZwQARo8ejUGDBqF169Zo06YNZs2ahYyMDAwePBgAMHDgQFSrVg3Tpk0DAHz22WeYOHEifv75ZwQEBChjSxwdHeHoWDGu1zJ8+WHl/voRHVSshIiIqPyxOIz07dsX169fx8SJExEfH48WLVpg06ZNyqDWixcvQqv9t8Plu+++g16vx3//+1+Tx5k0aRI++uijh6u+DEjJzMHp+DQAwNx+rWBnY6VyRUREROWLxecZUUNZPs/I8OWHseHYNQBA3PQeKldDRERUdpTIeUbIlIgoQaRJtbIVkoiIiMoLhpGH8Pepf0+B/13/QBUrISIiKr8YRh7C9ztjAADN/V3h7+6gcjVERETlE8NIEcUmZeDQhVsAgPdC66tcDRERUfnFMFJEX209AwCo6+WI4NpVVa6GiIio/GIYKQKjUbDnXBIAoHtTX14Qj4iI6CEwjBTB36cScDNDD52VFq905AXxiIiIHgbDSBFsPXnn2jyhTXzgbGejcjVERETlG8OIhUQE26OvAwBCG/PKvERERA+LYcRCRy6nICk9G1ZaDR6r56l2OUREROUew4iFftp3AQDg6WjLXTRERETFgGHEQr9GXAYAvNQ+QN1CiIiIKgiGEQtE/O8kZwDQtRHHixARERUHhhELfB12Vrlfy9NRxUqIiIgqDoYRC9zM0AMAWtdwU7kSIiKiioNhpJCOXErGsSspAIBx3RqoXA0REVHFwTBSSL3n7lHutw5wV7ESIiKiioVhpBBupGcr9yd0b6hiJURERBUPw0ghzN0eo9wf8lgtFSshIiKqeBhGHiDXYMSiPbEAgJoeVVSuhoiIqOJhGHmA8b8fU+7/+EobFSshIiKqmBhG7sNoFGw+EQ8AGBRcA4+4OahcERERUcXDMHIfc7efQ2pWLgBgzFM8nJeIiKgkMIzcx5K9cQCAoJrucLS1VrcYIiKiCophpAAiAmsrDQCgWxMflashIiKquBhGChCdkIaE1DvnF3mm5SMqV0NERFRxMYwUYM3hKwDuXIfGxcFG5WqIiIgqLoaRAsRczwAABPKieERERCWKYcSMrBwDtkcnAgAeb+ClcjVEREQVG8OIGVtPJsBgFLhX0eFRXhSPiIioRDGMmBF2KgEAENrYB1qtRuVqiIiIKjaGETMiLyUDAOp6OapbCBERUSXAMHKPaym3ceFGJgDgKZ5fhIiIqMQxjNzjlwOXAAAt/F3h52qvcjVEREQVH8PIPfLGi/i62KlcCRERUeXAMHKPU9dSAQDV3XmFXiIiotLAMHKXy7cyYZQ79/sFVVe3GCIiokqCYeQuC/6JBQBUc7VHjapVVK6GiIiocmAYuUt6di4AoEk1Z5UrISIiqjwYRu6y+Xg8AOCJht4qV0JERFR5MIz8j9EoSPtfz0gAd9EQERGVGoaR/9kbc0O538LfVb1CiIiIKhmGkf9ZGh4HAGhV3RU6a24WIiKi0sJvXdzZRbPvfz0jLfzdVK6GiIiocrF+2AcwGAzIyckpjloKpNfrUaNGDej1emRlZRX744edSoCzTuCss8LIzjVK5DmIiIgqGhsbG1hZWT3042hERIqyooggPj4eycnJD13EgxiNRly6dAn+/v7Qaou/MyctKwcpt3Oh0dw5xwgREREVjqurK3x8fKDRaPItS01NhYuLC1JSUuDsXPBpM4rcM5IXRLy8vODg4GC2iOJiMBhw+/ZtBAQEFEsCu9fV5NuwzcqBi50NfBhGiIiIHkhEkJmZicTERACAr69vkR+rSGHEYDAoQaRq1apFfnJLng8A7OzsSiSMGLW50Fhr4OrsADs7XbE/PhERUUVkb3/nB3xiYiK8vLyK/B1dpH0eeWNEHBzK/8XkjCLI1N85v4gtj6IhIiKySF4WeJjxow/17VuSu2ZKy229QblvZ1P8vS5EREQVWXFkgUrfFZCVcyeM6Ky1FSJcERERlTeVPoxk/q9nxNH2oY9ypjLqpZdewtNPP33fNjt27IBGoymVo8PKs86dO+Ptt9+usM9HROqotGEkPDwcVlZW6N/nGQCAlfbfXpH7fTEFBARg1qxZJvO2b9+O7t27o2rVqnBwcECjRo3wzjvv4MqVKwU+f0BAADQaDTQaDRwcHNC0aVMsWLAgXzuDwYCZM2eiadOmsLOzg5ubG7p164Y9e/bka6vX6/H555+jefPmcHBwgIeHB9q3b4/Fixffd1+eiOCHH35AUFAQHB0d4erqitatW2PWrFnIzMwscL3yYvbs2ViyZIkyXRJfcK+99hqsrKywevXqYn1cSxUUvMp62Crr9ZUnFy9eRI8ePeDg4AAvLy+MGTMGubm5BbbP2/bmbgcPHgQAREdHo0uXLvD29oadnR1q1aqFDz74wORz5ffff0fr1q3h6uqKKlWqoEWLFvjxxx9Nnqug5/niiy+UNp9++inatWsHBwcHuLq65qt3yZIlBT5O3lEdALB8+XLls9DX1xcvv/wybtz497IfnTt3NvsYPXr0UNokJCTgpZdegp+fHxwcHPDUU0/h7NmzJvXExMTgmWeegaenJ5ydnfHcc88hISHBpM3dn/d5t+nTp5u02bx5M9q2bQsnJyd4enriP//5D+Li4h74d4qPjzf7d50+fTo0Gk2+z7offvgBnTt3hrOzc4H/53r16oXq1avDzs4Ovr6+GDBgAK5evWr2eYpLpQ0jCxcuxIgRIxCxfy8S46+hiq5oPSPff/89QkJC4OPjg99++w0nT57EvHnzkJKSghkzZtx33SlTpuDatWs4fvw4XnzxRQwZMgR//fWXslxE8Pzzz2PKlCkYOXIkTp06hR07dsDf3x+dO3fG2rVrlbZ6vR6hoaGYPn06hg4dir179+LAgQMYPnw4vvnmG5w4caLAOgYMGIC3334bvXv3xvbt2xEVFYUPP/wQ69atw5YtW4q0XfJqKgtcXFzMfqgVl8zMTKxYsQJjx47FokWLHti+rGwXNRgMBhiNRrXLKHZl5W9qMBjQo0cP6PV67N27F0uXLsWSJUswceLEAtdp164drl27ZnJ79dVXUbNmTbRu3RrAnRNbDRw4EFu2bEF0dDRmzZqF+fPnY9KkScrjuLu7Y8KECQgPD8fRo0cxePBgDB48GJs3b1ba3Ps8ixYtgkajwX/+8x+ljV6vR58+ffD666+brbdv3775Hic0NBSdOnWCl5cXAGDPnj0YOHAgXnnlFZw4cQKrV6/GgQMHMGTIEOVxfv/9d5PHOH78OKysrNCnTx8Adz5/n376aZw/fx7r1q1DZGQkatSogZCQEGRkZAAAMjIy0LVrV2g0Gmzbtg179uyBXq9Hz549873P8z7v824jRoxQlsXGxqJ37954/PHHERUVhc2bNyMpKQnPPvtsvtcfHR1t8jh5r/luBw8exPfff49mzZrlW5aZmYmnnnoK77//vtntCwBdunTBqlWrEB0djd9++w0xMTH473//W2D7YiFFcPv2bTl58qTcvn27KKtbLDc3Vw4ePCi5ubnF8nhpaWni6Ogox0+clNCez8iIsR9IrsGoLN++fbsAkFu3buVbt0aNGjJz5kwREbl06ZLodDp5++23zT6PufXNPU4ed3d3GTVqlDK9YsUKASB//PFHvvWfffZZqVq1qqSnp4uIyGeffSZarVYOHz6cr61er1fa3WvlypUCQNauXZtvmdFolOTkZBER6dSpk4wcOdJkee/evWXQoEEmr2nKlCkyYMAAcXJykkGDBklwcLCMHTvWZL3ExESxtraWnTt3iohIVlaWvPPOO+Ln5ycODg7Spk0b2b59u9l6RUTeeecd6dGjhzI9c+ZMASB//fWXMq927doyf/58EREZNGiQ9O7dW7kPwOQWGxur/M3//vtvCQwMFHt7ewkODpbTp08XWEeeJUuWSNu2bSU5OVkcHBzk4sWLJsvznv+TTz4RX19fCQgIEBGRixcvSp8+fcTFxUXc3NykV69eEhsbq6x34MABCQkJkapVq4qzs7M89thjEhERcd9a7n6td7v3PT1p0iRp3ry5LFu2TGrUqCHOzs7St29fSU1NVdZJT0+XAQMGSJUqVcTHx0e+/PLLfO+DB/3tFi9eLC4uLrJu3Tpp2LChWFlZmbxGEZHY2Nh8f5O891WnTp1kxIgRMmbMGHFzcxNvb2+ZNGmSyfq3bt2SV155RTw8PMTJyUm6dOkiUVFR991Oly5dkueff17c3NzEwcFBAgMDZd++fQVuw5EjR0qnTp2U6U6dOsnw4cNl5MiRUrVqVencubO88MIL8txzz5msp9frpWrVqrJ06VIRETEYDDJ16lQJCAgQOzs7adasmaxevfq+tVpi48aNotVqJT4+Xpn33XffibOzs2RnZxfqMfR6vXh6esqUKVPu227UqFHSoUOH+7Zp2bKlfPDBBwUu7927tzz++ONml+W9dx4kMTFRbGxsZNmyZcq8L774QmrVqmXS7uuvv5Zq1aoV+DgzZ84UJycn5bMyOjpaAMjx48eVNgaDQTw9PZXPls2bN4tWq5WUlBSlTXJysmg0Gtm6dasyz9zn/d1Wr14t1tbWYjAYlHl//PGHaDQa0ev1InL/76W7paWlSd26dWXr1q1mP7fzFPbxRETWrVtnUsu97pcJUlJSBIDJNjKn2HpG5H+HyJbULSu34McXC08iu2rVKjRo0AD+Neugx7PPYe2q5dAWYezq6tWrodfrMXbsWLPLC/tr3Gg04rfffsOtW7eg0/17npOff/4Z9erVQ8+ePfOt88477+DGjRvYunUrgDtdkiEhIWjZsmW+tjY2NqhSpYrZ516+fDnq16+P3r1751um0Wjg4uJSqNeQ58svv0Tz5s0RGRmJDz/8EP3798eKFStM/kYrV66En58fOnbsCAB48803ER4ejhUrVuDo0aPo06eP2e7QPJ06dcLu3buV88/s3LkTHh4e2LFjBwDgypUriImJQefOnfOtO3v2bAQHB2PIkCHKLwt/f39l+YQJEzBjxgwcOnQI1tbWePnllx/4mhcuXIgXX3wRLi4u6Natm8kuoTxhYWGIjo7G1q1bsX79euTk5CA0NBROTk74559/sGfPHjg6OuKpp55SfmWnpaVh0KBB2L17N/bt24e6deuie/fuSEtLe2BNhRETE4O1a9di/fr1WL9+PXbu3GnSdTxmzBjs3LlT6SHbsWMHDh8+bPIYhfnbZWZm4rPPPsOCBQtw4sSJfL/k/P398dtvvwH491ff7NmzleVLly5FlSpVsH//fnz++eeYMmWK8r4HgD59+iAxMRF//fUXIiIi0KpVKzzxxBO4efOm2dednp6OTp064cqVK/jjjz9w5MgRjB071uIem6VLl0Kn02HPnj2YN28e+vfvjz///BPp6elKm82bNyMzMxPPPHNnd/C0adOwbNkyzJs3DydOnMCoUaPw4osvYufOnQU+z7Bhw+Do6HjfW57w8HA0bdoU3t7eyrzQ0FCkpqbet3f0bn/88Qdu3LiBwYMHF9jm3Llz2LRpEzp16mR2uYgo7/nHHnvMbJuEhARs2LABr7zySqHqKsiyZcvg4OBg8ss9ODgYly5dwsaNGyEiSEhIwK+//oru3bsX+DgLFy7E888/r3xWZmdnA7hzfqs8Wq0Wtra22L17t9JGo9HA1tZWaWNnZwetVqu0yTN9+nRUrVoVLVu2xBdffGGy6ywwMBBarRaLFy+GwWBASkoKfvzxR4SEhMDGxsbkcVq0aAFfX188+eSTZnfXDx8+HD169EBISMgDt11h3Lx5E8uXL0e7du3y1VKsHhiJzFiwYIFs2bJFDh06JCdPnpT09HTJyM6RGu+tV+WWkZ1jUf3t2rWTWbNmydXkTImIvS5u7lVNfs0Vtmfk9ddfF2dn56JsQqlRo4bodDqpUqWKWFtbCwBxd3eXs2fPKm0aNGhg9leuiMjNmzcFgHz22WciImJvby9vvfWWxXU0bNhQevXq9cB2he0Zefrpp03a5PWC7Nq1S5kXHBws7733noiIXLhwQaysrOTKlSsm6z3xxBMyfvx4s7XcunVLtFqtHDx4UIxGo7i7u8u0adMkKChIRER++uknk19A9/7SNfda7u4ZybNhwwYBcN8ewDNnzoiNjY1cv35dRETWrFkjNWvWFKPx3562QYMGibe3t8kv0x9//FHq169v0i47O1vs7e1l8+bNZp/LYDCIk5OT/PnnnwXWY0nPiIODg0lPyJgxY5RtmJaWJjqdTlatWqUsv3Hjhtjb2yvbrjB/u8WLFwuAB/ZUFPR/rlOnTvl+fT/66KPK++eff/4RZ2dnycrKMmlTu3Zt+f77780+1/fffy9OTk5y48YNs8sL2zPSsmVLkzY5OTni4eFh8gv9hRdekL59+4rInV4kBwcH2bt3r8l6r7zyirzwwgtmaxERSUhIkLNnz973lmfIkCHStWtXk/UzMjIEgGzcuLHA57hbt27dpFu3bmaXBQcHi62trQCQoUOHmvySF7nTK5D3mWZraysLFy4s8Hk+++wzcXNzK/D/V2F7Rho2bCivv/56vvmrVq0SR0dH5fO1Z8+eBf6y379/vwCQ/fv3K/P0er1Ur15d+vTpIzdv3pTs7GyZPn26AFC2cWJiojg7O8vIkSMlIyND0tPT5c0331S2T54ZM2bI9u3b5ciRI/Ldd9+Jq6urSS+4iMiOHTvEy8tLrKysBIAEBweb/H84ffq0zJs3Tw4dOiR79uyRwYMHi7W1tUlv6S+//CJNmjRRtunD9IyMHTtWHBwcBIC0bdtWkpKSzLYTUalnZOXKlfjss8/g6uqK2rVrw97eHmfOnCnxi+UVl+joaBw4cAAvvPACcg0Ca2tr/N/T/8HChQstfiwReajDgceMGYOoqChs27YNQUFBmDlzJurUqZPvOQpbS1EUdb2C5O1jzuPp6YmuXbti+fLlAO7sGw0PD0f//v0BAMeOHYPBYEC9evVMfunt3LkTMTExZp/D1dUVzZs3x44dO3Ds2DHodDoMHToUkZGRSE9Px86dOwv8xfYgd+9jzTu18d2D4u61aNEihIaGwsPDAwDQvXt3pKSkYNu2bSbtmjZtatLrdeTIEZw7dw5OTk7Ka3Z3d0dWVpbyuhMSEjBkyBDUrVsXLi4ucHZ2Rnp6Oi5evFik13avgIAAODk5mbzevNcaExMDvV6PoKAgZbm7uzvq16+vTBf2b6fT6czuuy6se9e9u84jR44gPT0dVatWNakhNja2wPdPVFQUWrZsCXd39yLXBNz5NXs3a2trPPfcc8p7PSMjA+vWrVPe6+fOnUNmZiaefPJJk1qXLVtWYK0A4OXlhTp16tz3VlwuX76MzZs3F9hbsXLlShw+fBg///wzNmzYgC+//NJkuZOTE6KionDw4EF8+umnGD16tNJjea9Fixahf//+Jj0PlgoPD8epU6fy1Xvy5EmMHDkSEydOREREBDZt2oS4uDgMGzbM7OMsXLgQTZs2RZs2bZR5NjY2+P3333HmzBm4u7vDwcEB27dvR7du3ZRrpHl6emL16tX4888/4ejoCBcXFyQnJ6NVq1Ym11EbPXo0OnfujGbNmmHYsGGYMWMGvvnmG6X3JT4+HkOGDMGgQYNw8OBB7Ny5EzqdDv/973+Vz+j69evjtddeQ2BgINq1a4dFixahXbt2mDlzJgDg0qVLGDlyJJYvX/5Q2zTPmDFjEBkZiS1btsDKygoDBw4s9u+Lu1k8avOrr75Cnz594OjoCDs7O9SoUQMpKSnISLmFk1NC87U/fz4WRqMRderUVuZFn46GvYMDqlf3z9feHIPBgCNHjqJ582ZmTzVrb8HJyhYuXIjc3Fz4+fkp80QEtra2mDNnjvKhDwApKSn5drUkJycruy7q1auHlJQUXLt2rUjn5Pfw8FA+TFavXo2mTZuidevWaNSokfL4p06dMrtu3vx69eop/54+fdriGgq7nlarzfdGNBdAze0O6t+/P9566y188803+Pnnn9G0aVM0bdoUwJ0ucysrK0REROT7297d/Xyvzp07Y8eOHbC1tUWnTp3g7u6Ohg0bYvfu3di5cyfeeeedB74mc+7uhswLmgV13xsMBixduhTx8fGwtrY2mb9o0SI88cQTyrx7t0t6ejoCAwOVL667eXp6AgAGDRqEGzduYPbs2ahRowZsbW0RHBx838GSzs7OuHDhQr75ycnJsLKyMqnj3i5XjUZj0a6Kwv7t7O3tHyq036/O9PR0+Pr6mv3CK2g3ad7pqwvysO/1Tp06ITExEVu3boW9vT2eeuoppVYA2LBhA6pVq2ay3t3d/PcaNmwYfvrpp/vWnPfYPj4+OHDggMmyvCM7fHx87vsYALB48WJUrVoVvXr1Mrs8b5dmo0aNYDAYMHToULzzzjvK31+r1SrhqEWLFjh16hSmTZuWb5fpP//8g+joaKxcufKBNd3PggUL0KJFi3zBcNq0aWjfvj3GjBkD4E6grVKlCjp27IhPPvnE5PM6IyMDK1aswJQpU/I9fmBgIKKiopCSkgK9Xg9PT08EBQWZ/Ojq2rUrYmJikJSUBGtra+WicbVq1Sqw7qCgIOTm5iIuLg7169fH3Llz4eLigs8//1xp89NPP8Hf3x/79+9H27ZtzT5OmzZtlN1BERERSExMRKtWrZTlBoMBu3btwpw5c5CdnW3Rqdo9PDzg4eGBevXqoWHDhvD398e+ffsQHBxc6MewhEU9I3q9HhERESbFaDQaODs7IzMzEw4663w3o/42vKu6mszzquoKQ7b59g46a9hZa2FrpTG52VlrCmxf2A+63NxcLFu2DDNmzEBUVBTWb9+LlZt2YVf4Qfj5+eGXX34BANStWxdarRYREREm658/fx4pKSlKAPjvf/8LnU5n8ga6myWHKfr7+6Nv374YP368Mu/555/H2bNn8eeff+ZrP2PGDFStWhVPPvkkAKBfv374+++/ERkZma9tTk6OMvr7Xv369cOZM2ewbt26fMtEBCkpKQDufEFeu3ZNWWYwGHD8+PFCvbbevXsjKysLmzZtws8//6z8UgSAli1bwmAwIDExMd+vvft9eOaNGwkLC1M+6Dp37oxffvkFZ86cMTteJI9Op1PGmzyMjRs3Ii0tDZGRkYiKilJuv/zyC37//ff7/v1btWqFs2fPmv3Vmxd29+zZg7feegvdu3dH48aNYWtri6SkpPvWVL9+fZw4cUL5xZXn8OHDqFmzZqH3+dauXRs2NjbYv3+/Mu/WrVs4c+aMMl3Uv505eb1Glv5dWrVqpYTBe2vI6626V7NmzRAVFVXgmJJ73+vAnd6UwmjXrh38/f2xcuVKLF++HH369FG2eaNGjWBra4uLFy/mq/XucUv3mjJlisn7y9wtT3BwMI4dO2bSm7d161Y4OzsrP3IKIiJYvHgxBg4cWKj3idFoRE5Ozn0DrNFozPdeBO78KAwMDETz5s0f+DwFSU9Px6pVq8z24mRmZua7wnveF/G9QXP16tXIzs7Giy++WOBzubi4wNPTE2fPnsWhQ4fMjrHz8PCAq6srtm3bhsTExAIDHXDn/aTVapXxU/er937bNyoqSglWTzzxBI4dO2byvmjdujX69++PqKioh7quW14N5v6Wxea+O3HuceXKFQEge/fuNdk/dOnSJTl58qTZdQ4dOpRvX1NCQoJERkbe93kOHjyY7/awR9OsWbNGdDqdcoTI2YQ0OXLpliRn6mXs2LHSunVrpe3QoUMlICBA1q1bJ+fPn5edO3dK27ZtpW3btib7+efOnSsajUZefvll2bFjh8TFxcnu3btl6NChMnr06AJrMTe6+sSJE6LRaOTgwYMicudolmeeeUbc3NxkwYIFEhsbK0eOHJGhQ4eKtbW1rFmzRlk3KytLOnbsKG5ubjJnzhyJioqSmJgYWblypbRq1arA7W00GqVv375ib28vn376qRw8eFDi4uLkzz//lMcff1x5jnnz5omDg4OsX79eTp06JUOGDBFnZ+d8Y0YKGjHev39/ad68uWg0Grlw4UK+ZQEBAfLbb7/J+fPnZf/+/TJ16lRZv359gdvv5s2botVqxcrKSk6dOiUid/6+VlZW4uvra9L23jEAQ4YMkUcffVRiY2Pl+vXrYjAYzO4/jYyMVI62Mad3797KeIC7GQwG8fHxkTlz5ph9fpE7+/Hr1q0rnTt3ll27dsn58+dl+/btMmLECLl06ZKI3DkS4cknn5STJ0/Kvn37pGPHjmJvb3/fUfm3bt0SLy8vee655+TQoUNy9uxZWbhwoTg5Ocl3332ntMs7muZuM2fOlBo1aijTw4YNkxo1akhYWJgcO3ZMevXqJY6Ojib7oB/0tyvsfv/Lly+LRqORJUuWSGJioqSlpYnIg8cqGY1G6dChgzRv3lw2b94ssbGxsmfPHnn//feV/0f3ys7Olnr16knHjh1l9+7dEhMTI7/++qsylmPTpk2i0Whk6dKlcubMGZk4caI4OzvnGzNS0L74CRMmSKNGjcTa2lr++eeffMuqVq0qS5YskXPnzklERIR8/fXXsmTJkgduo8LIzc2VJk2aSNeuXSUqKko2bdoknp6eJuOv9u/fL/Xr15fLly+brPv3338LAOX/091++uknWblypZw8eVL5XPHz85P+/fsrbaZOnSpbtmyRmJgYOXnypHz55ZdibW2tHHmSJyUlRRwcHEzej3e7cOGCREZGyuTJk8XR0VEiIyMlMjJSeU/kWbBggdjZ2Zkd87B48WKxtraWb7/9VmJiYmT37t3SunVradOmTb62HTp0MPv/WOTOuJPt27dLTEyMrF27VmrUqCHPPvusSZtFixZJeHi4nDt3Tn788Udxd3c3+ezfu3evzJw5U/lM/umnn8TT01MGDhyotAkLCxONRiOTJ0+WM2fOSEREhISGhkqNGjUkMzNTRO78/1y7dq2cPXtWjh07JiNHjhStVmsyzu1e5t6n165dk8jISJk/f74AkF27dklkZKQyhmrfvn3yzTffSGRkpMTFxUlYWJi0a9dOateunW9sVp7iGDNSJsOIwWCQ3Nxc5ZadnV0sYeT//u//pHv37sr0jfQsuZqcKVn6XGUA05EjR0TkzsadNGmSNGjQQOzt7aVmzZoydOhQZaDi3bZu3SqhoaHi5uYmdnZ20qBBA3n33Xfl6tWrBdZS0Bd3aGioyeCxnJwc+eKLL6Rx48ai0+nE2dlZQkNDZffu3fnWzcrKkmnTpknTpk3Fzs5O3N3dpX379rJkyRLJySl4kK/BYJDvvvtOHn30UXFwcBBnZ2cJDAyU2bNnK/8R9Hq9vP766+Lu7i5eXl4ybdo0swNYC/qi3LhxowCQxx57LN8yvV4vEydOlICAALGxsRFfX1955pln5OjRowXWLCLSvHlz8fHxUaZv3LghGo1Gnn/+eZN294aB6Ohoadu2rdjb2+c7tLewYSQ+Pl6sra1NBnje7fXXX1cGOBY0qPTatWsycOBA8fDwEFtbW6lVq5YMGTJE+U97+PBhad26tdjZ2UndunVl9erVDzxEMO/1PfPMM+Ln5ydVqlSR5s2by/z5801CdGHCSFpamrz44ovi4OAg3t7e8vnnn+f7cHvQ366wYUREZMqUKeLj4yMajcbk0N4HDZxOTU2VESNGiJ+fn9jY2Ii/v7/0798/3yHWd4uLi5P//Oc/4uzsLA4ODtK6dWuTwYsTJ04Ub29vcXFxkVGjRsmbb75Z6DBy8uRJASA1atQw2eYid8LTrFmzpH79+mJjYyOenp4SGhqqHOZeHOLi4qRbt25ib28vHh4e8s4775j8/897r9/7vn7hhRekXbt2Zh9zxYoV0qpVK3F0dJQqVapIo0aNZOrUqSZfPhMmTJA6deqInZ2duLm5SXBwsKxYsSLfY33//fdib2+v/Ci8l7nD7wHkO9w/ODhY+vXrV+B2+Prrr6VRo0Zib28vvr6+0r9//3wB7PTp0wJAtmzZYvYxZs+eLY888ojY2NhI9erV5YMPPsh3iPR7770n3t7eYmNjI3Xr1pUZM2aY/N0jIiIkKChIXFxcxM7OTho2bChTp07N98X+yy+/SMuWLaVKlSri6ekpvXr1MgmGn332mdSuXVv5bO/cubNs27atwNcvYv59OmnSJLPbd/HixSIicvToUenSpYu4u7uLra2tBAQEyLBhw/Jtu7sVRxjRiBR+RIper4eDgwPWrl2L2rVro2bNmrCzs0NsbCwMBoPZgVRHjx6Ft7e3yaFmV65cQXJyMho3blyo5zUYDIiMjETLli0fqquJiIiIildWVhZiY2OVTHC31NRUuLi4ICUlRRmPaY5FY0Z0Oh0CAwOxb98+ZZ6IIDU1tcDzWFSpUgWpqan5irvf4EQiIiKqPCw+tHf06NFYtWoV0tPTkZWVhYsXL8JoNCqDxWJjY3H58mWlvbe3N1JTUxEfH4/bt2/j6tWryMzMNHsKWyIiIqp8LD60t2/fvkhLS0NycjJiYmLg4OCAunXrKqOv7z3s0NHRETVr1sTVq1dx5coV2NnZoU6dOg88vI6IiIgqhyJdHe7FF18scP/Q3SdFyuPu7v7QJxgiIiKiiqnSXrWXiIiIyoaHCiMV8VLgREREVHjFkQWKtJtGp9NBq9Xi6tWr8PT0hE6ne6jTPT9I3lkZs7KyeGgvERFRGSAi0Ov1uH79OrRarcn1tyxVpDCi1WpRs2ZNXLt2DVevXi3ykxeW0WhEUlIS4uLi8p0yl4iIiNTj4OCA6tWrP9T3c5HCCHCnd6R69erIzc0tlut83E96ejp69OiBQ4cO8fwkREREZYSVlRWsrQt/jbiCFDmMAHcukmdjY1Poi28VlV6vx4ULF6DT6Yrl0shERERUdnCfBxEREamKYYSIiIhUxTBCREREqnqoMSOlJe/CwvdecI+IiIjKrrzv7bzv8YKUizCSlpYGAPD391e5EiIiIrJUWloaXFxcClyukQfFlTLAaDTi6tWrcHJyKtaTq6WmpsLf3x+XLl2Cs7NzsT0umeJ2Lj3c1qWD27l0cDuXjpLcziKCtLQ0+Pn53fc8JOWiZ0Sr1eKRRx4pscd3dnbmG70UcDuXHm7r0sHtXDq4nUtHSW3n+/WI5OEAViIiIlIVwwgRERGpqlKHEVtbW0yaNAm2trZql1KhcTuXHm7r0sHtXDq4nUtHWdjO5WIAKxEREVVclbpnhIiIiNTHMEJERESqYhghIiIiVTGMEBERkaoqfBiZO3cuAgICYGdnh6CgIBw4cOC+7VevXo0GDRrAzs4OTZs2xcaNG0up0vLNku08f/58dOzYEW5ubnBzc0NISMgD/y70L0vf03lWrFgBjUaDp59+umQLrCAs3c7JyckYPnw4fH19YWtri3r16vHzoxAs3c6zZs1C/fr1YW9vD39/f4waNQpZWVmlVG35tGvXLvTs2RN+fn7QaDRYu3btA9fZsWMHWrVqBVtbW9SpUwdLliwp2SKlAluxYoXodDpZtGiRnDhxQoYMGSKurq6SkJBgtv2ePXvEyspKPv/8czl58qR88MEHYmNjI8eOHSvlyssXS7dzv379ZO7cuRIZGSmnTp2Sl156SVxcXOTy5culXHn5Y+m2zhMbGyvVqlWTjh07Su/evUun2HLM0u2cnZ0trVu3lu7du8vu3bslNjZWduzYIVFRUaVcefli6XZevny52NrayvLlyyU2NlY2b94svr6+MmrUqFKuvHzZuHGjTJgwQX7//XcBIGvWrLlv+/Pnz4uDg4OMHj1aTp48Kd98841YWVnJpk2bSqzGCh1G2rRpI8OHD1emDQaD+Pn5ybRp08y2f+6556RHjx4m84KCguS1114r0TrLO0u3871yc3PFyclJli5dWlIlVhhF2da5ubnSrl07WbBggQwaNIhhpBAs3c7fffed1KpVS/R6fWmVWCFYup2HDx8ujz/+uMm80aNHS/v27Uu0zoqkMGFk7Nix0rhxY5N5ffv2ldDQ0BKrq8LuptHr9YiIiEBISIgyT6vVIiQkBOHh4WbXCQ8PN2kPAKGhoQW2p6Jt53tlZmYiJycH7u7uJVVmhVDUbT1lyhR4eXnhlVdeKY0yy72ibOc//vgDwcHBGD58OLy9vdGkSRNMnToVBoOhtMoud4qyndu1a4eIiAhlV8758+exceNGdO/evVRqrizU+C4sFxfKK4qkpCQYDAZ4e3ubzPf29sbp06fNrhMfH2+2fXx8fInVWd4VZTvf67333oOfn1++Nz+ZKsq23r17NxYuXIioqKhSqLBiKMp2Pn/+PLZt24b+/ftj48aNOHfuHN544w3k5ORg0qRJpVF2uVOU7dyvXz8kJSWhQ4cOEBHk5uZi2LBheP/990uj5EqjoO/C1NRU3L59G/b29sX+nBW2Z4TKh+nTp2PFihVYs2YN7Ozs1C6nQklLS8OAAQMwf/58eHh4qF1OhWY0GuHl5YUffvgBgYGB6Nu3LyZMmIB58+apXVqFsmPHDkydOhXffvstDh8+jN9//x0bNmzAxx9/rHZp9JAqbM+Ih4cHrKyskJCQYDI/ISEBPj4+Ztfx8fGxqD0VbTvn+fLLLzF9+nT8/fffaNasWUmWWSFYuq1jYmIQFxeHnj17KvOMRiMAwNraGtHR0ahdu3bJFl0OFeU97evrCxsbG1hZWSnzGjZsiPj4eOj1euh0uhKtuTwqynb+8MMPMWDAALz66qsAgKZNmyIjIwNDhw7FhAkToNXy93VxKOi70NnZuUR6RYAK3DOi0+kQGBiIsLAwZZ7RaERYWBiCg4PNrhMcHGzSHgC2bt1aYHsq2nYGgM8//xwff/wxNm3ahNatW5dGqeWepdu6QYMGOHbsGKKiopRbr1690KVLF0RFRcHf3780yy83ivKebt++Pc6dO6eEPQA4c+YMfH19GUQKUJTtnJmZmS9w5AVA4WXWio0q34UlNjS2DFixYoXY2trKkiVL5OTJkzJ06FBxdXWV+Ph4EREZMGCAjBs3Tmm/Z88esba2li+//FJOnTolkyZN4qG9hWDpdp4+fbrodDr59ddf5dq1a8otLS1NrZdQbli6re/Fo2kKx9LtfPHiRXFycpI333xToqOjZf369eLl5SWffPKJWi+hXLB0O0+aNEmcnJzkl19+kfPnz8uWLVukdu3a8txzz6n1EsqFtLQ0iYyMlMjISAEgX331lURGRsqFCxdERGTcuHEyYMAApX3eob1jxoyRU6dOydy5c3lo78P65ptvpHr16qLT6aRNmzayb98+ZVmnTp1k0KBBJu1XrVol9erVE51OJ40bN5YNGzaUcsXlkyXbuUaNGgIg323SpEmlX3g5ZOl7+m4MI4Vn6Xbeu3evBAUFia2trdSqVUs+/fRTyc3NLeWqyx9LtnNOTo589NFHUrt2bbGzsxN/f39544035NatW6VfeDmyfft2s5+5edt20KBB0qlTp3zrtGjRQnQ6ndSqVUsWL15cojVqRNi3RUREROqpsGNGiIiIqHxgGCEiIiJVMYwQERGRqhhGiIiISFUMI0RERKQqhhEiIiJSFcMIERERqYphhIiIiFTFMEJERESqYhghIiIiVTGMEBERkaoYRoiIiEhV/w8MatRJqBq6bgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Logistic: f1=0.253 auc=0.210\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+4klEQVR4nO3deXxU1f3/8fdkSCZBSAJCFkI0gLKJ7JBfoAhiFEFRaKsolK2KWkGF1AUESQQhgIJRAXFBgVYEi5QvCkUlihak1QZiXQAXUDYTQCRBIlkm9/dHSiBkJmQms8/r+XjMA+bMuXc+c4HMm3PPPddkGIYhAACAABHi7QIAAABciXADAAACCuEGAAAEFMINAAAIKIQbAAAQUAg3AAAgoBBuAABAQKnn7QI8rby8XIcPH1bDhg1lMpm8XQ4AAKgFwzB08uRJNWvWTCEhNY/NBF24OXz4sBITE71dBgAAcMKBAwfUvHnzGvsEXbhp2LChpIqDExkZ6eVqAABAbRQWFioxMbHye7wmQRduzpyKioyMJNwAAOBnajOlhAnFAAAgoBBuAABAQCHcAACAgEK4AQAAAYVwAwAAAgrhBgAABBTCDQAACCiEGwAAEFAINwAAIKAQbgAAQEDxarj56KOPNHjwYDVr1kwmk0nr1q274DZbtmxR165dZbFYdNlll2nZsmVurxMAAPgPr4abU6dOqVOnTlq0aFGt+u/bt0833HCDrr76auXm5mrixIm688479c4777i50lo6mCN9vLDiVwAA4BVevXHmwIEDNXDgwFr3X7JkiVq0aKH58+dLktq1a6etW7fq6aef1oABA9xVZu28eZf0+WpJkiGp7MrbVDq4amgLMZkUHmqufF5UUmZ3d3Xp+2uJVYYMm31NMikizLm+p0utKjds95Wk+mH1vN43ItRceVO14jKrrOWu6Rtez6yQkIq+JWXlKisvd0lfSz2zzE70LbWWq9Rqv2+YOUT1zCEO9y2zlqukhr6h5hCFOtHXWm6ouMxqt2+9kBCF1XO8b3m5odMu6msOMclSr+Lvu2EY+rXUNX099e+enxG168vPiAqe+BnhTX51V/Dt27crNTW1StuAAQM0ceJEu9sUFxeruLi48nlhYaHrCzuYUxlsJMkkqd5/V+m3n7bX57qssv3qNk316tielc+7zdxs94dicovGWn13SuXz38z9QMdPldjs27F5lNZP+E3l89QFH+rQiV9t9r08poHeS+tb+fymhVv1zZFfbPZNiI7Qtsn9K5/f+sJ2/fdggc2+jS8K047Hrq18PvqVT/Tvfcdt9o0INWvXzOsrn//przn6YM9Rm30l6fs5N1T+Pu2NXG38PM9u369mDKj8Qffo2i/05o6DdvvmTEvVxQ0skqQn3t6lv/zrB7t9//nw1UpsXF+S9NS7e/TiR3vt9n130lVqHdtQkrTog2/1TPY3dvv+3/je6pQYLUl6dds+Zf5jt92+r4/7f0ppdXHF7z/Zr+n/96Xdvq+M6a7+bWMlSet2HtJDa/5rt++i4V11Q8d4SdI7X+Zr/Moddvs++fuOuqV7oiTpo2+O6o/L/mO374ybr9ColCRJ0if7juv2l/5lt++UgW11d99WkqQvDhXo5kXb7PZ94JrLNena1pKkb4/+ouue/shu37uuaqlHB7WTJB068av6zPvAbt+R/+9SzRzSQZJ0/FSJuj2x2W7f33Vtrvm3dpIk/VpqVfvp9kePB10Zp8UjulU+r6kvPyMq8DPiLH/+GeFN3o9XDsjLy1NsbGyVttjYWBUWFurXX23/Q83MzFRUVFTlIzHRDQd9//ZqTSaT1MP8tevfCwAA1MhkGDWM33mQyWTS3//+dw0ZMsRun9atW2vs2LGaMmVKZdvGjRt1ww03qKioSBEREdW2sTVyk5iYqIKCAkVGRrqm+IM50sv9qzQZkk6PeVdGs7P/Y2PI2f19GXKuwGkpx/tyWqoCPyOc68vPiAruPC1VWFioqKioWn1/+9Vpqbi4OOXn51dpy8/PV2RkpM1gI0kWi0UWi8W9hTXvJrW7Sdq1vrLJ1Gm4IpKSa9zs3H+QF+JI33N/2Liy77k/HP2h75kvH1f3DasXorBaDnq6q68jP0Ac6VvvnB9iruxrDjHV+u+wI31D3NTXZHJPX8l9/+75GeF4X35GON7XkX/33uT7FZ4jJSVF2dnZVdree+89paSk2NnCg657ouLXkFDpzveloc97tx4AAIKUV8PNL7/8otzcXOXm5kqquNQ7NzdX+/fvlyRNmTJFo0aNqux/zz33aO/evXr44Ye1e/duLV68WG+88YYmTZrkjfJtM4dWjOQAAACv8Gq4+c9//qMuXbqoS5cukqS0tDR16dJF06dPlyT9+OOPlUFHklq0aKENGzbovffeU6dOnTR//ny9/PLL3r8MHAAA+AyfmVDsKY5MSHLIzz9Iz3SUQutLU3903X4BAIBD399+NecGAADgQgg3AAAgoBBuAABAQCHcAACAgEK4AQAAAYVwAwAAAgrhBgAABBTCDQAACCiEGwAAEFAINwAAIKAQbgAAQEAh3AAAgIBCuAEAAAGFcAMAAAIK4QYAAAQUwg0AAAgohBsAABBQCDcAACCgEG4AAEBAIdwAAICAQrgBAAABhXADAAACCuEGAAAEFMINAAAIKIQbAAAQUAg3AAAgoBBuAABAQCHcAACAgEK4AQAAAYVwAwAAAgrhBgAABBTCDQAACCiEGwAAEFAINwAAIKAQbgAAQEAh3AAAgIBCuAEAAAGFcAMAAAIK4QYAAAQUwg0AAAgohBsAABBQCDcAACCgEG5crdwqFRzydhUAAAQtwo2rfLG24ldrsZTVQdqxwrv1AAAQpAg3rlBwSHp/xtnnRrn01kRGcAAA8ALCjSsc/64i0JzLsErH93qnHgAAghjhxhUat5JM5x1Kk1lq3NI79QAAEMQIN64QlSD1n161bXBWRTsAAPAowo2rdPjt2d/HtJO6jvJeLQAABDHCjTvUi/B2BQAABC3CjTuEmL1dAQAAQYtw4w7WUm9XAABA0CLcuMqZRfwk6cdcFvEDAMBLCDeucP4ifhKL+AEA4CWEG1dgET8AAHwG4cYVWMQPAACfQbhxBVuL+KVmsIgfAABeQLhxlXMX8ZOkzelMKgYAwAsIN65yMq/qc+4MDgCAVxBuXOXE/uptTCoGAMDjCDeuEn1J9TYmFQMA4HGEG1dpGFf1ucnMncEBAPACr4ebRYsWKSkpSeHh4UpOTtYnn3xSY/+srCy1adNGERERSkxM1KRJk3T69GkPVeuAiZ9zZ3AAALzAq+Fm9erVSktLU3p6unbs2KFOnTppwIABOnLkiM3+K1eu1OTJk5Wenq5du3Zp6dKlWr16tR599FEPVw4AAHyVV8PNggULNG7cOI0dO1bt27fXkiVLVL9+fb3yyis2+3/88cfq3bu3hg8frqSkJF133XW6/fbbLzja4xHn3ltKkp6+gkvBAQDwAq+Fm5KSEuXk5Cg1NfVsMSEhSk1N1fbt221u06tXL+Xk5FSGmb1792rjxo0aNGiQ3fcpLi5WYWFhlYfL2bq3lAxp/QNcCg4AgIfV89YbHzt2TFarVbGxsVXaY2NjtXv3bpvbDB8+XMeOHdNvfvMbGYahsrIy3XPPPTWelsrMzNTjjz/u0tqrsXVvKUlSecWl4EwqBgDAY7w+odgRW7Zs0ezZs7V48WLt2LFDa9eu1YYNGzRz5ky720yZMkUFBQWVjwMHDri+MFv3lpIkhXApOAAAHua1kZsmTZrIbDYrPz+/Snt+fr7i4uJsbvPYY49p5MiRuvPOOyVJV155pU6dOqW77rpLU6dOVUhI9YBhsVhksVhc/wHOdebeUtkZ5zSapJueYdQGAAAP89rITVhYmLp166bs7OzKtvLycmVnZyslJcXmNkVFRdUCjNlsliQZhuG+Ymvj/HtLTfqSS8EBAPACr43cSFJaWppGjx6t7t27q2fPnsrKytKpU6c0duxYSdKoUaOUkJCgzMxMSdLgwYO1YMECdenSRcnJyfr222/12GOPafDgwZUhx2cwYgMAgFd4NdwMGzZMR48e1fTp05WXl6fOnTtr06ZNlZOM9+/fX2WkZtq0aTKZTJo2bZoOHTqkpk2bavDgwZo1a5a3PgIAAPAxJsPr53M8q7CwUFFRUSooKFBkZKTrdvzPp6vOubnpOU5LAQDgIo58f/vV1VI+y9Y6N29NZI0bAAC8gHDjCrbWuTGsFWvcAAAAjyLcuIKtdW5MZta4AQDACwg3rnBmnZtzDc7iiikAALyAcOMq569zw2RiAAC8gnADAAACCuEGAAAEFMINAAAIKIQbd2GNGwAAvIJw4yrvTqv6/On20o4V3qkFAIAgRrhxhYM50q711dvX388IDgAAHka4cYX92+28YLBKMQAAHka4cYVLUuy8YGKVYgAAPIxw4wrNu0ntbqreftOzrFIMAICHEW5c5bonzv7+olhp0lesUgwAgBcQbtyhfmNGbAAA8BLCjTuYTN6uAACAoEW4cQvCDQAA3kK4AQAAAYVw4w6clgIAwGsINwAAIKAQbtyCkRsAALyFcAMAAAIK4cYdGLgBAMBrCDfuUPwLdwMHAMBLCDfu8PM+KauDtGOFtysBACDoEG5c5WRe1edGufTWREZwAADwMMKNq5zYX73NsErH93q+FgAAghjhxlWiL6neZjJLjVt6vhYAAIIY4cZVGsad1xAiDc7i7uAAAHgY4cZduBwcAACvINy4ChOKAQDwCYQbV2FCMQAAPoFw4yqhEXba63u2DgAAghzhxlVKf7XTXuTZOgAACHKEG1dh5AYAAJ9AuHGVQjsTh23NxQEAAG5DuHEVw9sFAAAAiXDjOs0622g0SYk9PV0JAABBjXDjKtVWKJZ007OsUAwAgIcRblzlizert/1zgefrAAAgyBFuXKHgkJQ9o3r7z/ukna95vh4AAIIY4cYVjn8nuzOKd7/t0VIAAAh2hBtXaNxKdu+U2fZGj5YCAECwI9y4QlSCdM1j1dvrN5G6jPB8PQAABDHCjatc0qt6W9FP3BUcAAAPI9y4yo+5NhoN6cAnnq4EAICgRrhxldMFttuLjnu2DgAAghzhxlXCo2y312/s2ToAAAhyhBtXadjMdnv0JZ6tAwCAIEe4cZXSIsfaAQCAWxBuXCU6sXqbySw1bun5WgAACGKEG1dpEFu9reMwbpwJAICHEW5c5WRe9bb/vs46NwAAeBjhxlV+/G/1NoN1bgAA8DTCjcvYuXEmAADwKMKNq8R3tN2e2NOzdQAAEOQIN65i2Bq5sXOncAAA4DaEG1cpOGCj0ZCO7/V4KQAABDPCjatE2VjnRpIO7/BsHQAABDnCjas0iLHdvvlxLgcHAMCDCDeuYnPOjSTDyqkpAAA8yKlwY7VatXTpUg0fPlypqanq379/lYcjFi1apKSkJIWHhys5OVmffFLzujAnTpzQ+PHjFR8fL4vFotatW2vjxo3OfAzX+uWI/ddKTnmuDgAAglw9ZzZ64IEHtGzZMt1www3q0KGDTCbnrgpavXq10tLStGTJEiUnJysrK0sDBgzQnj17FBNT/TRPSUmJrr32WsXExGjNmjVKSEjQDz/8oOjoaKfe36UK9tt/7fVhUqfh0tDnPVcPAABBymQY9s6n2NekSROtWLFCgwYNqtObJycnq0ePHlq4cKEkqby8XImJibrvvvs0efLkav2XLFmiJ598Urt371ZoaKhT71lYWKioqCgVFBQoMjKyTvVX8d0H0l+G1Nznzvel5t1c954AAAQJR76/nTotFRYWpssuu8yp4s4oKSlRTk6OUlNTzxYTEqLU1FRt377d5jbr169XSkqKxo8fr9jYWHXo0EGzZ8+W1Wq1+z7FxcUqLCys8nCL2mTEz9e4570BAEAlp8LNn//8Zz3zzDNyYtCn0rFjx2S1WhUbW/Vu2rGxscrLs3ETSkl79+7VmjVrZLVatXHjRj322GOaP3++nnjiCbvvk5mZqaioqMpHYqKdS7bryuY6N+c5me+e9wYAAJWcmnOzdetWffDBB/rHP/6hK664otoporVr17qkuPOVl5crJiZGL774osxms7p166ZDhw7pySefVHp6us1tpkyZorS0tMrnhYWF7gk4Uc0v3OenPa5/XwAAUIVT4SY6OlpDhw6t0xs3adJEZrNZ+flVRzPy8/MVFxdnc5v4+HiFhobKbDZXtrVr1055eXkqKSlRWFhYtW0sFossFkudaq0Ve+vcnCv/i4o1b6IS3F8PAABByqlw8+qrr9b5jcPCwtStWzdlZ2dryJAhkipGZrKzszVhwgSb2/Tu3VsrV65UeXm5QkIqzqh9/fXXio+PtxlsPKq2p+iO7yXcAADgRnVaxO/o0aPaunWrtm7dqqNHjzq8fVpaml566SUtX75cu3bt0p/+9CedOnVKY8eOlSSNGjVKU6ZMqez/pz/9ScePH9cDDzygr7/+Whs2bNDs2bM1fvz4unwMzwqt7+0KAAAIaE6N3Jw6dUr33XefVqxYofLyckmS2WzWqFGj9Nxzz6l+/dp9gQ8bNkxHjx7V9OnTlZeXp86dO2vTpk2Vk4z3799fOUIjSYmJiXrnnXc0adIkdezYUQkJCXrggQf0yCOPOPMxXKyWIzeHc7kcHAAAN3JqnZu7775bmzdv1sKFC9W7d29JFZOM77//fl177bV6/nnfXazObevc/PiZ9MJVF+7X9xHp6kdd974AAAQBR76/nRq5efPNN7VmzRr169evsm3QoEGKiIjQrbfe6tPhxm1qmxGPcsUUAADu5NScm6Kiomrr00hSTEyMioqK6lxUQPtqHXcJBwDAjZwKNykpKUpPT9fp06cr23799Vc9/vjjSklJcVlx/sWBs3vcJRwAALdx6rTUM888owEDBqh58+bq1KmTJOmzzz5TeHi43nnnHZcWGJC4YgoAALdxKtx06NBB33zzjV577TXt3r1bknT77bdrxIgRioiIcGmBfsORedmlnLoDAMBdnAo3klS/fn2NGzfOlbUED0ZuAABwm1qHm/Xr12vgwIEKDQ3V+vXra+x700031bkw/+PAyM2J/ax1AwCAm9Q63AwZMkR5eXmKiYmpvF2CLSaTSVar1RW1Ba6fmFAMAIC71DrcnFmJ+Pzf438cWQrRWuy2MgAACHZ1urfUuU6cOOGqXfkpB9JNQlf3lQEAQJBzKtzMnTtXq1evrnx+yy23qHHjxkpISNBnn33msuICVumv3q4AAICA5VS4WbJkiRITEyVJ7733njZv3qxNmzZp4MCBeuihh1xaoN+ocin4BQ4rc24AAHAbpy4Fz8vLqww3b7/9tm699VZdd911SkpKUnJysksL9EuTvqhYhXj3BunfNu6zxZwbAADcxqmRm0aNGunAgQOSpE2bNik1NVWSZBhGEF8pdc7ITVSC1KKP1LKf7a7MuQEAwG2cGrn57W9/q+HDh+vyyy/XTz/9pIEDB0qSdu7cqcsuu8ylBfq1MDuL9YVd5Nk6AAAIIk6Fm6efflpJSUk6cOCA5s2bpwYNGkiSfvzxR917770uLdBv2Lr9QqidEMMKxQAAuI1T4SY0NFQPPvhgtfZJkybVuaCAcuIHO+2sUAwAgLtw+wWXcWQVPwAA4C7cfsGdoi+1036JZ+sAACCIcPsFV7E154bTUgAAeJzLbr8AG4qOO9YOAADqzKlwc//99+vZZ5+t1r5w4UJNnDixrjX5KRsjNz/vt93VXjsAAKgzp8LNm2++qd69e1dr79Wrl9asWVPnogLGqTw77fmerQMAgCDiVLj56aefFBUVVa09MjJSx44dq3NRfsnWnJu4jrb7xnVwby0AAAQxp8LNZZddpk2bNlVr/8c//qGWLVvWuaiAcbrATnuhZ+sAACCIOLWIX1pamiZMmKCjR4+qf//+kqTs7GzNnz9fWVlZrqzPj9gYuWkQa7urvXYAAFBnToWbP/7xjyouLtasWbM0c+ZMSVJSUpKef/55jRo1yqUF+qWCQxU3z4xqbvv10HDP1gMAQBAxGYatySK1d/ToUUVERFTeX8rXFRYWKioqSgUFBYqMjHTdjt99TPr4f1eQmUKkwc9I+V9J/37edv+bnpO6EgQBAKgNR76/nV7npqysTJs3b9batWt1Jh8dPnxYv/zyi7O79F8Fh6Ttz519bpRLb02Uju+zv836+yq2AwAALuXUaakffvhB119/vfbv36/i4mJde+21atiwoebOnavi4mItWbLE1XX6tuPfVb9ayrBK9cJq3u7fL0rXPe6+ugAACEJOjdw88MAD6t69u37++WdFRERUtg8dOlTZ2dkuK85vNG5VcSrqXCaz1LRtzdvtest9NQEAEKScCjf//Oc/NW3aNIWFVR2ZSEpK0qFDQXiqJSqhYo6NyVzx3GSWBmdJez+oeTtuwwAAgMs5dVqqvLzc5p2/Dx48qIYNG9a5KL/UdZTU6hrp+F6pccuKwLP5iZq3CTF7pjYAAIKIUyM31113XZX1bEwmk3755Relp6dr0KBBrqrN/0QlSC36VPwqSZYLXEF2UVP31wQAQJBxKtw89dRT2rZtm9q3b6/Tp09r+PDhlaek5s6d6+oa/VfbG2t+Paa9Z+oAACCIOL3OTVlZmVavXq3PPvtMv/zyi7p27aoRI0ZUmWDsi9y2zo0tBYekp2sIMGENpVH/JzXv5t46AADwc458fzscbkpLS9W2bVu9/fbbateuXZ0K9QaPhhtJeiJOKvu15j6dhktD7Sz2BwAA3LuIX2hoqE6fPu10cUGnSZsL9/lspXQwx/21AAAQBJyaczN+/HjNnTtXZWVlrq4n8Fw9pXb9Pl/j3joAAAgSTl0K/umnnyo7O1vvvvuurrzySl100UVVXl+7dq1LigsIba6XGl8mHf+25n4n8z1TDwAAAc6pcBMdHa3f/e53rq4lcI1eX/PEYkkKq++ZWgAACHAOhZvy8nI9+eST+vrrr1VSUqL+/fsrIyPD56+Q8rqoBCm0gVRaw01Fj31TcXXVmTVyAACAUxyaczNr1iw9+uijatCggRISEvTss89q/Pjx7qotsNQLr/n1g/+qGN3ZscIz9QAAEKAcCjcrVqzQ4sWL9c4772jdunV666239Nprr6m8vNxd9QWOBrVcjXj9fRUjOAAAwCkOhZv9+/dXub1CamqqTCaTDh8+7PLCAk5C99r33bPJfXUAABDgHAo3ZWVlCg+venolNDRUpaWlLi0qIHUfW/u+h3PdVgYAAIHOoQnFhmFozJgxslgslW2nT5/WPffcU+VycC4Ft6F5t4qViD9beeG+u9+S9JzbSwIAIBA5FG5Gjx5dre0Pf/iDy4oJeEOfr7gq6tCnNfc7/XPFqak213umLgAAAojTN870Vx6/t9T5ZsZK1lrcvqJ+U+nhCyz8BwBAkHDrvaVQR9bi2vUrOubeOgAACFCEG09rGFu7fpYo99YBAECAItx4WvdxtetX8qv0/iz31gIAQAAi3Hha59tr188olj6aJz0R5956AAAIMIQbT4tKkG56TpKpdv3LfpVmxLi1JAAAAgnhxhu6jpImfSmNflu6uPWF+5cXSxnMwQEAoDYIN94SlSC16CPVb1z7bRb1cl89AAAECMKNt3UdVfu+R7/kruEAAFwA4cbbuoxwrD93DQcAoEaEG1+Q/CfH+mfPcE8dAAAEAMKNLxg4Rwpx4DZfX29yXy0AAPg5wo2vmP5Txf2kaqOsxL21AADgxwg3vuThb6XbV0sNmtXcz8QfGwAA9vjEt+SiRYuUlJSk8PBwJScn65NPPqnVdqtWrZLJZNKQIUPcW6AntbleenCX1LS9/T6lv3iuHgAA/IzXw83q1auVlpam9PR07dixQ506ddKAAQN05MiRGrf7/vvv9eCDD6pPnz4eqtTDxm+v+fWPF3qmDgAA/IzXw82CBQs0btw4jR07Vu3bt9eSJUtUv359vfLKK3a3sVqtGjFihB5//HG1bNnSg9X6kE+XersCAAB8klfDTUlJiXJycpSamlrZFhISotTUVG3fbn/kYsaMGYqJidEdd9xxwfcoLi5WYWFhlYffaFzDrRlKijxXBwAAfsSr4ebYsWOyWq2KjY2t0h4bG6u8vDyb22zdulVLly7VSy+9VKv3yMzMVFRUVOUjMTGxznV7zP2f2n+tlHADAIAtXj8t5YiTJ09q5MiReumll9SkSZNabTNlyhQVFBRUPg4cOODmKl3Nzt3DS056tgwAAPyEAyvHuV6TJk1kNpuVn59fpT0/P19xcXHV+n/33Xf6/vvvNXjw4Mq28vJySVK9evW0Z88etWrVqso2FotFFovFDdV7iuFgOwAAwc2rIzdhYWHq1q2bsrOzK9vKy8uVnZ2tlJSUav3btm2rzz//XLm5uZWPm266SVdffbVyc3P965STKyy7ueLXN8ZKmZdU/AoAQJDz6siNJKWlpWn06NHq3r27evbsqaysLJ06dUpjx1Z8UY8aNUoJCQnKzMxUeHi4OnToUGX76OhoSarWHhR++KeUEXX2+VdrpYy1UkaB92oCAMDLvB5uhg0bpqNHj2r69OnKy8tT586dtWnTpspJxvv371dIiF9NDXKtsEipxM4VXobVdntGtJRxwl0VAQDg00yGYQTV5I3CwkJFRUWpoKBAkZGR3i7nwg7mSC/3d3y7qx6W+k91fT0AAHiBI9/fQTwk4iead3NuOxb5AwAEKcKNP4hu4fg2vx53fR0AAPgBwo0/mJjrxEZGxWTjjCjpiXhXVwQAgM8i3PiLy693ftuyoqpXVQEAEMAIN/5ixOq674OAAwAIAoQbf5JRINW7qI77+N+pqsxLXVMTAAA+hnDjb6YdluqF130/xScYyQEABCTCjT+all+xjk3TdhW/Nk92fl8EHABAgGERv0CxZ5P0+jDntg2xSNOPuLYeAABciEX8glGb6yvm5DS9wvFty4vPzsV5eYDrawMAwIMYuQl0zp524uabAAAfwsgNznI2pJwZyQEAwM8QboJBRoFUr76T2xJwAAD+hXATLKb9WLdRHAAA/AThJtgQcAAAAY5wE4wyCqTOI53YjoADAPB9hJtgNWRhRchxdCTn44XuqQcAABch3KAi4CT/SZL5wn03Z7i7GgAA6oRwgwoD50gZxy88klNe6pl6AABwEuEG1U36qubX513umToAAHAC4QbVRSXU/HrRkYrJxY839Uw9AAA4gHAD2xrEX7iPUcIVVAAAn0O4gW0P7q59X0ZwAAA+hHAD+9r/tnb9jBL31gEAgAO4Kzhq5sxpp+gW0sRcl5cCAAhe3BUcruPM7RpO7Dt7V/FFvVxfEwAANajn7QLgBzIKnJ84fPRL29s6e48rAAAugJEb1E5GgaRQF+7vfyM7M2Ndt08AAES4gSMyjkmNWrh2n9bTFSHn/Vmu3S8AIGgRbuCYB3Klqx52/X4/mseaOQAAl2DODRzXf6pUcFD6bKXr930m4JjCpPSjrt8/ACDgMXID5wx9XrrzfdXqTuLOOLP6cUaUtKSfe94DABCQWOcGrlVwSMrqJBluuHs4V1gBQNBy5Pub01JwragEKf2Y7dfWTZBy/+L8vjOiCDgAgAvitBQ8Z8jC/62ZU4eAwqRjAMAFEG7gHRkFUlwXJ7dlfRwAgH2EG3jPPVsqQk7TKxzf9sz6OAAAnIc5N/C+8R+f/b2jgeX8/szJAYCgR7iBbzk3nDgzMnNmG0IOAAQtTkvBd9V14nFGlDQjxnX1AAD8AiM38G11uSO5JJUXO7Z9XJeKuUAAAL/FyA18nydPMeXtZKIyAPg5wg38Q0aBZA734PsRcADAX3FaCv7jsXzp44XSu1M9835ciQUAfomRG/iXXhPOWQDQJIU1lCITPfPeZyYpvzbMM+8HAHAKN85E4Hh5gHTwX14uIkTK+NnLNQBA4OHGmQhOd75z9vdemzNTXvW9m/+/qnUBANyOkRsEh52vSbvfltreKHUZUdH22jDpm02eq4E5OwDgNEe+vwk3wBkeHe3h9BUAOMKR728mFANnZBRIYZ4KvOVnJyhz2TkAuBRzboBzPXqg6nNPBY/K9zFJGSc8854AEKAIN0BN6nojT4cZZ9+nSVup/U1Sfw+t6wMAAYI5N4CzsjpLJ/ZVrJxsPe2dGpikDCBIcCk44AkTc223/2Oy9O/nPVPD+aNJ182qWOgQAIIYIzeAO/nSZGFTmJR+1NtVAIBTGLkBfMX5p428GXaMkurvH5kopX3hnXoAwE0IN4AneXyC8gUUHjhbB0EHQIBgnRvAWzIKzj58wZmgczDH25UAQJ0wcgP4gjMB54l4qazIu7W83P9/v2EVZQD+iXAD+JJpP164j8dOZ5XX7r2uepi1eAD4FK6WAvzZwZxzRlp8kK+ccgPg97hxZg0INwg6vjBx+QzCDgAn+d2NMxctWqSkpCSFh4crOTlZn3zyid2+L730kvr06aNGjRqpUaNGSk1NrbE/EPTOnbjs7QnM594sNCNKWtTLe7UACFheDzerV69WWlqa0tPTtWPHDnXq1EkDBgzQkSNHbPbfsmWLbr/9dn3wwQfavn27EhMTdd111+nQoUMerhzwY74QdCTp6Jdng07mpd6tBUDA8PppqeTkZPXo0UMLFy6UJJWXlysxMVH33XefJk+efMHtrVarGjVqpIULF2rUqFEX7M9pKcAGT94ywhneDmEAvM5vViguKSlRTk6OpkyZUtkWEhKi1NRUbd++vVb7KCoqUmlpqRo3bmzz9eLiYhUXF1c+LywsrFvRQCAaOKfiIfnWHJ0z7NU06SspKsGztQDweV4NN8eOHZPValVsbGyV9tjYWO3evbtW+3jkkUfUrFkzpaam2nw9MzNTjz/+eJ1rBYJGbUdJfCEEPd2+6vPoFvZvaAogaPj1Ojdz5szRqlWrtGXLFoWHh9vsM2XKFKWlpVU+LywsVGJioqdKBAKXvRDkzdBzYt/Z9+dUFhC0vBpumjRpIrPZrPz8/Crt+fn5iouLq3Hbp556SnPmzNHmzZvVsWNHu/0sFossFotL6gVQC+eHijktpdM/eaEOGyGLwAMEBa+Gm7CwMHXr1k3Z2dkaMmSIpIoJxdnZ2ZowYYLd7ebNm6dZs2bpnXfeUffu3T1ULQCnTN5b9XnBoeqnkzzlQqNKhB8gIHj9tFRaWppGjx6t7t27q2fPnsrKytKpU6c0duxYSdKoUaOUkJCgzMxMSdLcuXM1ffp0rVy5UklJScrLy5MkNWjQQA0aNPDa5wBQS1EJvnd39DPs1ULoAfyK18PNsGHDdPToUU2fPl15eXnq3LmzNm3aVDnJeP/+/QoJObscz/PPP6+SkhL9/ve/r7Kf9PR0ZWRkeLJ0AK5gLzgsu1n6fotHS7GrpgBG8AF8jtfXufE01rkB/Jwvr8lD0AHchntL1aC2B8dqtaq0tNSDlcGe0NBQmc1mb5cBX+ZLp7bsIfgAdeI3i/j5IsMwlJeXpxMnTni7FJwjOjpacXFxMplM3i4FvuhMcPDlkMNChIDHEG7OcybYxMTEqH79+nyZeplhGCoqKqq811h8fLyXK4JPszU64suBR7J95RijPECdEG7OYbVaK4PNxRdf7O1y8D8RERGSpCNHjigmJoZTVHCMvaBQcEg6vldafqNn66kNJjADdUK4OceZOTb169f3ciU435k/k9LSUsINXCMqofpl6efy1REfFicELohwYwOnonwPfybwuJoCg68FH9bnAaog3ACAo3x1EcLzsSIzghThBi7Rr18/de7cWVlZWTZfHzNmjE6cOKF169bZ7J+UlKSJEydq4sSJHqkXcJmaAsKMGKm82HO1OKo2wYwABD9EuAkQY8aM0fLly5WZmanJkydXtq9bt05Dhw5VXZYzslqtevLJJ7Vs2TL98MMPioiI0OWXX65x48bpzjvvrNU+nnnmmTrVAPil6Udst/vyQoTnsxeAwiKlRw94thaglgg3ASQ8PFxz587V3XffrUaNGrlsv48//rheeOEFLVy4UN27d1dhYaH+85//6Oeff671PqKifHjoHvC0gXMqHufy5dNbtpQUMrkZPotwU0tFJWV2XwsxmRQeanZp3/phjv/RpKam6ttvv1VmZqbmzZtnt9+bb76p6dOn69tvv1V8fLzuu+8+/fnPf7bbf/369br33nt1yy23VLZ16tSpxlo2bNig4cOHa/HixRoxYkS101IAzuNPE5hrwuRm+ADCTS21n/6O3deubtNUr47tWfm828zN+rXUarNvcovGWn13SuXz38z9QMdPlVTr9/2cGxyu0Ww2a/bs2Ro+fLjuv/9+NW/evFqfnJwc3XrrrcrIyNCwYcP08ccf695779XFF1+sMWPG2NxvXFyc3n//fd17771q2rTpBetYuXKl7rnnHq1cuVI33uiDa4gA/sZWMJiVIJX+4vlanMUo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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "+------------------+---------------------+---------------------+\n", - "| Confusion Matrix | Positive prediction | Negative prediction |\n", - "+------------------+---------------------+---------------------+\n", - "| Positive class | True positive (TP) | False negative (FN) |\n", - "| Negative class | False positive (FP) | True negative (TN) |\n", - "+------------------+---------------------+---------------------+\n", - "+------------------+---------------------+---------------------+\n", - "| Confusion Matrix | Positive prediction | Negative prediction |\n", - "+------------------+---------------------+---------------------+\n", - "| Positive class | 1222 | 3662 |\n", - "| Negative class | 3544 | 53075 |\n", - "+------------------+---------------------+---------------------+\n", - "ROC AUC: 0.5938054606390324\n", - "Accuracy = 0.8828349836593337\n", - "Precision = 0.2563994964330676\n", - "Recall = 0.2502047502047502\n", - "F1 Score = 0.2532642487046632\n", - "Fbeta Score = (0.59, 0.88, 0.88)\n", - " model tn fp fn tp FP+10*FN accuracy ROC_AUC precision \\\n", - "0 RFC 53075 3544 3662 1222 40164 0.882835 0.593805 0.256399 \n", - "\n", - " recall F1_Score Fbeta_macro Fbeta_micro Fbeta_weighted \n", - "0 0.250205 0.253264 0.59 0.88 0.88 \n" - ] - } - ], + "outputs": [], "source": [ "result_smote = generate_model_report(RFC_model_smote, \"RFC\", X_test, Y_test)" ] @@ -711,1274 +668,34 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "ef859590", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/joblib/externals/loky/process_executor.py:700: UserWarning: A worker stopped while some jobs were given to the executor. This can be caused by a too short worker timeout or by a memory leak.\n", - " warnings.warn(\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best Hyperparameters: {'max_depth': None, 'min_samples_leaf': 1, 'min_samples_split': 2, 'n_estimators': 50}\n", - "Accuracy on Test Set: 0.920556720810367\n" - ] - } - ], + "outputs": [], "source": [ "RFC_model, best_params = RFC_model(X_train, Y_train)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "829aa82b", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['NAME_CONTRACT_TYPE',\n", - " 'FLAG_OWN_CAR',\n", - " 'FLAG_OWN_REALTY',\n", - " 'CNT_CHILDREN',\n", - " 'AMT_INCOME_TOTAL',\n", - " 'AMT_CREDIT',\n", - " 'AMT_ANNUITY',\n", - " 'AMT_GOODS_PRICE',\n", - " 'REGION_POPULATION_RELATIVE',\n", - " 'DAYS_BIRTH',\n", - " 'DAYS_EMPLOYED',\n", - " 'DAYS_REGISTRATION',\n", - " 'DAYS_ID_PUBLISH',\n", - " 'OWN_CAR_AGE',\n", - " 'FLAG_MOBIL',\n", - " 'FLAG_EMP_PHONE',\n", - " 'FLAG_WORK_PHONE',\n", - " 'FLAG_CONT_MOBILE',\n", - " 'FLAG_PHONE',\n", - " 'FLAG_EMAIL',\n", - " 'CNT_FAM_MEMBERS',\n", - " 'REGION_RATING_CLIENT',\n", - " 'REGION_RATING_CLIENT_W_CITY',\n", - " 'HOUR_APPR_PROCESS_START',\n", - " 'REG_REGION_NOT_LIVE_REGION',\n", - " 'REG_REGION_NOT_WORK_REGION',\n", - " 'LIVE_REGION_NOT_WORK_REGION',\n", - " 'REG_CITY_NOT_LIVE_CITY',\n", - " 'REG_CITY_NOT_WORK_CITY',\n", - " 'LIVE_CITY_NOT_WORK_CITY',\n", - " 'EXT_SOURCE_1',\n", - " 'EXT_SOURCE_2',\n", - " 'EXT_SOURCE_3',\n", - " 'APARTMENTS_AVG',\n", - " 'BASEMENTAREA_AVG',\n", - " 'YEARS_BEGINEXPLUATATION_AVG',\n", - " 'YEARS_BUILD_AVG',\n", - " 'COMMONAREA_AVG',\n", - " 'ELEVATORS_AVG',\n", - " 'ENTRANCES_AVG',\n", - " 'FLOORSMAX_AVG',\n", - " 'FLOORSMIN_AVG',\n", - " 'LANDAREA_AVG',\n", - " 'LIVINGAPARTMENTS_AVG',\n", - " 'LIVINGAREA_AVG',\n", - " 'NONLIVINGAPARTMENTS_AVG',\n", - " 'NONLIVINGAREA_AVG',\n", - " 'APARTMENTS_MODE',\n", - " 'BASEMENTAREA_MODE',\n", - " 'YEARS_BEGINEXPLUATATION_MODE',\n", - " 'YEARS_BUILD_MODE',\n", - " 'COMMONAREA_MODE',\n", - " 'ELEVATORS_MODE',\n", - " 'ENTRANCES_MODE',\n", - " 'FLOORSMAX_MODE',\n", - " 'FLOORSMIN_MODE',\n", - " 'LANDAREA_MODE',\n", - " 'LIVINGAPARTMENTS_MODE',\n", - " 'LIVINGAREA_MODE',\n", - " 'NONLIVINGAPARTMENTS_MODE',\n", - " 'NONLIVINGAREA_MODE',\n", - " 'APARTMENTS_MEDI',\n", - " 'BASEMENTAREA_MEDI',\n", - " 'YEARS_BEGINEXPLUATATION_MEDI',\n", - " 'YEARS_BUILD_MEDI',\n", - " 'COMMONAREA_MEDI',\n", - " 'ELEVATORS_MEDI',\n", - " 'ENTRANCES_MEDI',\n", - " 'FLOORSMAX_MEDI',\n", - " 'FLOORSMIN_MEDI',\n", - " 'LANDAREA_MEDI',\n", - " 'LIVINGAPARTMENTS_MEDI',\n", - " 'LIVINGAREA_MEDI',\n", - " 'NONLIVINGAPARTMENTS_MEDI',\n", - " 'NONLIVINGAREA_MEDI',\n", - " 'TOTALAREA_MODE',\n", - " 'OBS_30_CNT_SOCIAL_CIRCLE',\n", - " 'DEF_30_CNT_SOCIAL_CIRCLE',\n", - " 'OBS_60_CNT_SOCIAL_CIRCLE',\n", - " 'DEF_60_CNT_SOCIAL_CIRCLE',\n", - " 'DAYS_LAST_PHONE_CHANGE',\n", - " 'FLAG_DOCUMENT_2',\n", - " 'FLAG_DOCUMENT_3',\n", - " 'FLAG_DOCUMENT_4',\n", - " 'FLAG_DOCUMENT_5',\n", - " 'FLAG_DOCUMENT_6',\n", - " 'FLAG_DOCUMENT_7',\n", - " 'FLAG_DOCUMENT_8',\n", - " 'FLAG_DOCUMENT_9',\n", - " 'FLAG_DOCUMENT_10',\n", - " 'FLAG_DOCUMENT_11',\n", - " 'FLAG_DOCUMENT_12',\n", - " 'FLAG_DOCUMENT_13',\n", - " 'FLAG_DOCUMENT_14',\n", - " 'FLAG_DOCUMENT_15',\n", - " 'FLAG_DOCUMENT_16',\n", - " 'FLAG_DOCUMENT_17',\n", - " 'FLAG_DOCUMENT_18',\n", - " 'FLAG_DOCUMENT_19',\n", - " 'FLAG_DOCUMENT_20',\n", - " 'FLAG_DOCUMENT_21',\n", - " 'AMT_REQ_CREDIT_BUREAU_HOUR',\n", - " 'AMT_REQ_CREDIT_BUREAU_DAY',\n", - " 'AMT_REQ_CREDIT_BUREAU_WEEK',\n", - " 'AMT_REQ_CREDIT_BUREAU_MON',\n", - " 'AMT_REQ_CREDIT_BUREAU_QRT',\n", - " 'AMT_REQ_CREDIT_BUREAU_YEAR',\n", - " 'CODE_GENDER_F',\n", - " 'CODE_GENDER_M',\n", - " 'NAME_TYPE_SUITE_Children',\n", - " 'NAME_TYPE_SUITE_Family',\n", - " 'NAME_TYPE_SUITE_Group of people',\n", - " 'NAME_TYPE_SUITE_Other_A',\n", - " 'NAME_TYPE_SUITE_Other_B',\n", - " 'NAME_TYPE_SUITE_Spouse, partner',\n", - " 'NAME_TYPE_SUITE_Unaccompanied',\n", - " 'NAME_INCOME_TYPE_Businessman',\n", - " 'NAME_INCOME_TYPE_Commercial associate',\n", - " 'NAME_INCOME_TYPE_Pensioner',\n", - " 'NAME_INCOME_TYPE_State servant',\n", - " 'NAME_INCOME_TYPE_Student',\n", - " 'NAME_INCOME_TYPE_Unemployed',\n", - " 'NAME_INCOME_TYPE_Working',\n", - " 'NAME_EDUCATION_TYPE_Academic degree',\n", - " 'NAME_EDUCATION_TYPE_Higher education',\n", - " 'NAME_EDUCATION_TYPE_Incomplete higher',\n", - " 'NAME_EDUCATION_TYPE_Lower secondary',\n", - " 'NAME_EDUCATION_TYPE_Secondary / secondary special',\n", - " 'NAME_FAMILY_STATUS_Civil marriage',\n", - " 'NAME_FAMILY_STATUS_Married',\n", - " 'NAME_FAMILY_STATUS_Separated',\n", - " 'NAME_FAMILY_STATUS_Single / not married',\n", - " 'NAME_FAMILY_STATUS_Widow',\n", - " 'NAME_HOUSING_TYPE_Co-op apartment',\n", - " 'NAME_HOUSING_TYPE_House / apartment',\n", - " 'NAME_HOUSING_TYPE_Municipal apartment',\n", - " 'NAME_HOUSING_TYPE_Office apartment',\n", - " 'NAME_HOUSING_TYPE_Rented apartment',\n", - " 'NAME_HOUSING_TYPE_With parents',\n", - " 'OCCUPATION_TYPE_Accountants',\n", - " 'OCCUPATION_TYPE_Cleaning staff',\n", - " 'OCCUPATION_TYPE_Cooking staff',\n", - " 'OCCUPATION_TYPE_Core staff',\n", - " 'OCCUPATION_TYPE_Drivers',\n", - " 'OCCUPATION_TYPE_HR staff',\n", - " 'OCCUPATION_TYPE_High skill tech staff',\n", - " 'OCCUPATION_TYPE_IT staff',\n", - " 'OCCUPATION_TYPE_Laborers',\n", - " 'OCCUPATION_TYPE_Low-skill Laborers',\n", - " 'OCCUPATION_TYPE_Managers',\n", - " 'OCCUPATION_TYPE_Medicine staff',\n", - " 'OCCUPATION_TYPE_Private service staff',\n", - " 'OCCUPATION_TYPE_Realty agents',\n", - " 'OCCUPATION_TYPE_Sales staff',\n", - " 'OCCUPATION_TYPE_Secretaries',\n", - " 'OCCUPATION_TYPE_Security staff',\n", - " 'OCCUPATION_TYPE_Waiters/barmen staff',\n", - " 'WEEKDAY_APPR_PROCESS_START_FRIDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_MONDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_SATURDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_SUNDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_THURSDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_TUESDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_WEDNESDAY',\n", - " 'ORGANIZATION_TYPE_Advertising',\n", - " 'ORGANIZATION_TYPE_Agriculture',\n", - " 'ORGANIZATION_TYPE_Bank',\n", - " 'ORGANIZATION_TYPE_Business Entity Type 1',\n", - " 'ORGANIZATION_TYPE_Business Entity Type 2',\n", - " 'ORGANIZATION_TYPE_Business Entity Type 3',\n", - " 'ORGANIZATION_TYPE_Cleaning',\n", - " 'ORGANIZATION_TYPE_Construction',\n", - " 'ORGANIZATION_TYPE_Culture',\n", - " 'ORGANIZATION_TYPE_Electricity',\n", - " 'ORGANIZATION_TYPE_Emergency',\n", - " 'ORGANIZATION_TYPE_Government',\n", - " 'ORGANIZATION_TYPE_Hotel',\n", - " 'ORGANIZATION_TYPE_Housing',\n", - " 'ORGANIZATION_TYPE_Industry: type 1',\n", - " 'ORGANIZATION_TYPE_Industry: type 10',\n", - " 'ORGANIZATION_TYPE_Industry: type 11',\n", - " 'ORGANIZATION_TYPE_Industry: type 12',\n", - " 'ORGANIZATION_TYPE_Industry: type 13',\n", - " 'ORGANIZATION_TYPE_Industry: type 2',\n", - " 'ORGANIZATION_TYPE_Industry: type 3',\n", - " 'ORGANIZATION_TYPE_Industry: type 4',\n", - " 'ORGANIZATION_TYPE_Industry: type 5',\n", - " 'ORGANIZATION_TYPE_Industry: type 6',\n", - " 'ORGANIZATION_TYPE_Industry: type 7',\n", - " 'ORGANIZATION_TYPE_Industry: type 8',\n", - " 'ORGANIZATION_TYPE_Industry: type 9',\n", - " 'ORGANIZATION_TYPE_Insurance',\n", - " 'ORGANIZATION_TYPE_Kindergarten',\n", - " 'ORGANIZATION_TYPE_Legal Services',\n", - " 'ORGANIZATION_TYPE_Medicine',\n", - " 'ORGANIZATION_TYPE_Military',\n", - " 'ORGANIZATION_TYPE_Mobile',\n", - " 'ORGANIZATION_TYPE_Other',\n", - " 'ORGANIZATION_TYPE_Police',\n", - " 'ORGANIZATION_TYPE_Postal',\n", - " 'ORGANIZATION_TYPE_Realtor',\n", - " 'ORGANIZATION_TYPE_Religion',\n", - " 'ORGANIZATION_TYPE_Restaurant',\n", - " 'ORGANIZATION_TYPE_School',\n", - " 'ORGANIZATION_TYPE_Security',\n", - " 'ORGANIZATION_TYPE_Security Ministries',\n", - " 'ORGANIZATION_TYPE_Self-employed',\n", - " 'ORGANIZATION_TYPE_Services',\n", - " 'ORGANIZATION_TYPE_Telecom',\n", - " 'ORGANIZATION_TYPE_Trade: type 1',\n", - " 'ORGANIZATION_TYPE_Trade: type 2',\n", - " 'ORGANIZATION_TYPE_Trade: type 3',\n", - " 'ORGANIZATION_TYPE_Trade: type 4',\n", - " 'ORGANIZATION_TYPE_Trade: type 5',\n", - " 'ORGANIZATION_TYPE_Trade: type 6',\n", - " 'ORGANIZATION_TYPE_Trade: type 7',\n", - " 'ORGANIZATION_TYPE_Transport: type 1',\n", - " 'ORGANIZATION_TYPE_Transport: type 2',\n", - " 'ORGANIZATION_TYPE_Transport: type 3',\n", - " 'ORGANIZATION_TYPE_Transport: type 4',\n", - " 'ORGANIZATION_TYPE_University',\n", - " 'ORGANIZATION_TYPE_XNA',\n", - " 'FONDKAPREMONT_MODE_not specified',\n", - " 'FONDKAPREMONT_MODE_org spec account',\n", - " 'FONDKAPREMONT_MODE_reg oper account',\n", - " 'FONDKAPREMONT_MODE_reg oper spec account',\n", - " 'HOUSETYPE_MODE_block of flats',\n", - " 'HOUSETYPE_MODE_specific housing',\n", - " 'HOUSETYPE_MODE_terraced house',\n", - " 'WALLSMATERIAL_MODE_Block',\n", - " 'WALLSMATERIAL_MODE_Mixed',\n", - " 'WALLSMATERIAL_MODE_Monolithic',\n", - " 'WALLSMATERIAL_MODE_Others',\n", - " 'WALLSMATERIAL_MODE_Panel',\n", - " 'WALLSMATERIAL_MODE_Stone, brick',\n", - " 'WALLSMATERIAL_MODE_Wooden',\n", - " 'EMERGENCYSTATE_MODE_No',\n", - " 'EMERGENCYSTATE_MODE_Yes',\n", - " 'DAYS_EMPLOYED_ANOM']" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "feature_names.iloc[:,0].values.tolist()" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "691e65b2", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Feature: NAME_CONTRACT_TYPE, Importance: 0.001957730975090701\n", - "Feature: FLAG_OWN_CAR, Importance: 0.004152092040479087\n", - "Feature: FLAG_OWN_REALTY, Importance: 0.005525288692862896\n", - "Feature: CNT_CHILDREN, Importance: 0.007688592504856424\n", - "Feature: AMT_INCOME_TOTAL, Importance: 0.026229721173933476\n", - "Feature: AMT_CREDIT, Importance: 0.028958138457014705\n", - "Feature: AMT_ANNUITY, Importance: 0.031096520888708103\n", - "Feature: AMT_GOODS_PRICE, Importance: 0.02585103457947628\n", - "Feature: REGION_POPULATION_RELATIVE, Importance: 0.025870898664867317\n", - "Feature: DAYS_BIRTH, Importance: 0.034571535007287456\n", - "Feature: DAYS_EMPLOYED, Importance: 0.02971849750273892\n", - "Feature: DAYS_REGISTRATION, Importance: 0.03342144767701012\n", - "Feature: DAYS_ID_PUBLISH, Importance: 0.0345094192456134\n", - "Feature: OWN_CAR_AGE, Importance: 0.012681809737832315\n", - "Feature: FLAG_MOBIL, Importance: 0.0\n", - "Feature: FLAG_EMP_PHONE, Importance: 0.0008304266699965818\n", - "Feature: FLAG_WORK_PHONE, Importance: 0.004872853548325793\n", - "Feature: FLAG_CONT_MOBILE, Importance: 0.00025537147561377515\n", - "Feature: FLAG_PHONE, Importance: 0.004987787479444958\n", - "Feature: FLAG_EMAIL, Importance: 0.0024670163989076437\n", - "Feature: CNT_FAM_MEMBERS, Importance: 0.010607814434273005\n", - "Feature: REGION_RATING_CLIENT, Importance: 0.00493369837617007\n", - "Feature: REGION_RATING_CLIENT_W_CITY, Importance: 0.004807207101733674\n", - "Feature: HOUR_APPR_PROCESS_START, Importance: 0.0233700328637204\n", - "Feature: REG_REGION_NOT_LIVE_REGION, Importance: 0.00108416204614435\n", - "Feature: REG_REGION_NOT_WORK_REGION, Importance: 0.001907757203181667\n", - "Feature: LIVE_REGION_NOT_WORK_REGION, Importance: 0.0017377695341080951\n", - "Feature: REG_CITY_NOT_LIVE_CITY, Importance: 0.0037987542235729064\n", - "Feature: REG_CITY_NOT_WORK_CITY, Importance: 0.004104707394427242\n", - "Feature: LIVE_CITY_NOT_WORK_CITY, Importance: 0.004233660875276542\n", - "Feature: EXT_SOURCE_1, Importance: 0.020575096796335332\n", - "Feature: EXT_SOURCE_2, Importance: 0.051463540274966496\n", - "Feature: EXT_SOURCE_3, Importance: 0.03993323567087052\n", - "Feature: APARTMENTS_AVG, Importance: 0.0069099000538046405\n", - "Feature: BASEMENTAREA_AVG, Importance: 0.00599302427239291\n", - "Feature: YEARS_BEGINEXPLUATATION_AVG, Importance: 0.007547368730194931\n", - "Feature: YEARS_BUILD_AVG, Importance: 0.004803285222832575\n", - "Feature: COMMONAREA_AVG, Importance: 0.0049018347551106735\n", - "Feature: ELEVATORS_AVG, Importance: 0.0019719070996480916\n", - "Feature: ENTRANCES_AVG, Importance: 0.004711736175776684\n", - "Feature: FLOORSMAX_AVG, Importance: 0.0035628852658478004\n", - "Feature: FLOORSMIN_AVG, Importance: 0.002859491828491796\n", - "Feature: LANDAREA_AVG, Importance: 0.006623473545852668\n", - "Feature: LIVINGAPARTMENTS_AVG, Importance: 0.004408900430581695\n", - "Feature: LIVINGAREA_AVG, Importance: 0.00840622965819783\n", - "Feature: NONLIVINGAPARTMENTS_AVG, Importance: 0.0021633823064500686\n", - "Feature: NONLIVINGAREA_AVG, Importance: 0.005146395749121164\n", - "Feature: APARTMENTS_MODE, Importance: 0.007002530460650968\n", - "Feature: BASEMENTAREA_MODE, Importance: 0.005851899502367028\n", - "Feature: YEARS_BEGINEXPLUATATION_MODE, Importance: 0.007550303435761082\n", - "Feature: YEARS_BUILD_MODE, Importance: 0.004761787082772722\n", - "Feature: COMMONAREA_MODE, Importance: 0.005001506361979729\n", - "Feature: ELEVATORS_MODE, Importance: 0.0016097008909208516\n", - "Feature: ENTRANCES_MODE, Importance: 0.004303638064757056\n", - "Feature: FLOORSMAX_MODE, Importance: 0.003066399244124279\n", - "Feature: FLOORSMIN_MODE, Importance: 0.002694119417468505\n", - "Feature: LANDAREA_MODE, Importance: 0.006431881595380161\n", - "Feature: LIVINGAPARTMENTS_MODE, Importance: 0.004415650855690741\n", - "Feature: LIVINGAREA_MODE, Importance: 0.008455088748850472\n", - "Feature: NONLIVINGAPARTMENTS_MODE, Importance: 0.001896505437527934\n", - "Feature: NONLIVINGAREA_MODE, Importance: 0.004460229025542702\n", - "Feature: APARTMENTS_MEDI, Importance: 0.006999507899678712\n", - "Feature: BASEMENTAREA_MEDI, Importance: 0.006109993930783509\n", - "Feature: YEARS_BEGINEXPLUATATION_MEDI, Importance: 0.007580129446470024\n", - "Feature: YEARS_BUILD_MEDI, Importance: 0.0046647632889741455\n", - "Feature: COMMONAREA_MEDI, Importance: 0.00491774749577254\n", - "Feature: ELEVATORS_MEDI, Importance: 0.001772973430831143\n", - "Feature: ENTRANCES_MEDI, Importance: 0.0043581601234201316\n", - "Feature: FLOORSMAX_MEDI, Importance: 0.0032105106921975096\n", - "Feature: FLOORSMIN_MEDI, Importance: 0.0027372570827300683\n", - "Feature: LANDAREA_MEDI, Importance: 0.006665706780955334\n", - "Feature: LIVINGAPARTMENTS_MEDI, Importance: 0.004586735962397332\n", - "Feature: LIVINGAREA_MEDI, Importance: 0.00826789375818457\n", - "Feature: NONLIVINGAPARTMENTS_MEDI, Importance: 0.0021749473388174316\n", - "Feature: NONLIVINGAREA_MEDI, Importance: 0.004898676079635528\n", - "Feature: TOTALAREA_MODE, Importance: 0.009112981055360826\n", - "Feature: OBS_30_CNT_SOCIAL_CIRCLE, Importance: 0.013550611393563044\n", - "Feature: DEF_30_CNT_SOCIAL_CIRCLE, Importance: 0.005569894588379675\n", - "Feature: OBS_60_CNT_SOCIAL_CIRCLE, Importance: 0.013717840333755324\n", - "Feature: DEF_60_CNT_SOCIAL_CIRCLE, Importance: 0.0046230110330103815\n", - "Feature: DAYS_LAST_PHONE_CHANGE, Importance: 0.029928176701241493\n", - "Feature: FLAG_DOCUMENT_2, Importance: 7.251909191016778e-05\n", - "Feature: FLAG_DOCUMENT_3, Importance: 0.004088410608889042\n", - "Feature: FLAG_DOCUMENT_4, Importance: 2.087132085846856e-09\n", - "Feature: FLAG_DOCUMENT_5, Importance: 0.0011308362070268376\n", - "Feature: FLAG_DOCUMENT_6, Importance: 0.001446013005027591\n", - "Feature: FLAG_DOCUMENT_7, Importance: 3.742547076678272e-05\n", - "Feature: FLAG_DOCUMENT_8, Importance: 0.001963433898906897\n", - "Feature: FLAG_DOCUMENT_9, Importance: 0.00040527379636271145\n", - "Feature: FLAG_DOCUMENT_10, Importance: 0.0\n", - "Feature: FLAG_DOCUMENT_11, Importance: 0.00024548224478553905\n", - "Feature: FLAG_DOCUMENT_12, Importance: 0.0\n", - "Feature: FLAG_DOCUMENT_13, Importance: 0.00016318817234748251\n", - "Feature: FLAG_DOCUMENT_14, Importance: 0.00014256472120697757\n", - "Feature: FLAG_DOCUMENT_15, Importance: 7.218393436083788e-05\n", - "Feature: FLAG_DOCUMENT_16, Importance: 0.0005273362448115842\n", - "Feature: FLAG_DOCUMENT_17, Importance: 3.1971960047961596e-05\n", - "Feature: FLAG_DOCUMENT_18, Importance: 0.0005088321493039585\n", - "Feature: FLAG_DOCUMENT_19, Importance: 0.00012024169857747176\n", - "Feature: FLAG_DOCUMENT_20, Importance: 0.00011772404185520299\n", - "Feature: FLAG_DOCUMENT_21, Importance: 0.00010299684398918945\n", - "Feature: AMT_REQ_CREDIT_BUREAU_HOUR, Importance: 0.0007369964855405097\n", - "Feature: AMT_REQ_CREDIT_BUREAU_DAY, Importance: 0.0008427057054187579\n", - "Feature: AMT_REQ_CREDIT_BUREAU_WEEK, Importance: 0.0019162459778579077\n", - "Feature: AMT_REQ_CREDIT_BUREAU_MON, Importance: 0.00542492337937631\n", - "Feature: AMT_REQ_CREDIT_BUREAU_QRT, Importance: 0.00628726829703831\n", - "Feature: AMT_REQ_CREDIT_BUREAU_YEAR, Importance: 0.016558844997040932\n", - "Feature: CODE_GENDER_F, Importance: 0.0035839311052144134\n", - "Feature: CODE_GENDER_M, Importance: 0.0033161839303909356\n", - "Feature: NAME_TYPE_SUITE_Children, Importance: 0.0010791125200155962\n", - "Feature: NAME_TYPE_SUITE_Family, Importance: 0.0035863616172258674\n", - "Feature: NAME_TYPE_SUITE_Group of people, Importance: 0.0002067855319520526\n", - "Feature: NAME_TYPE_SUITE_Other_A, Importance: 0.0004924911356080182\n", - "Feature: NAME_TYPE_SUITE_Other_B, Importance: 0.0008990847768567533\n", - "Feature: NAME_TYPE_SUITE_Spouse, partner, Importance: 0.0018987884286627687\n", - "Feature: NAME_TYPE_SUITE_Unaccompanied, Importance: 0.004277239970638957\n", - "Feature: NAME_INCOME_TYPE_Businessman, Importance: 0.0\n", - "Feature: NAME_INCOME_TYPE_Commercial associate, Importance: 0.0034924396410795115\n", - "Feature: NAME_INCOME_TYPE_Pensioner, Importance: 0.0011653578357635418\n", - "Feature: NAME_INCOME_TYPE_State servant, Importance: 0.001705547947252571\n", - "Feature: NAME_INCOME_TYPE_Student, Importance: 0.0\n", - "Feature: NAME_INCOME_TYPE_Unemployed, Importance: 0.00010906541230025278\n", - "Feature: NAME_INCOME_TYPE_Working, Importance: 0.004149834119259588\n", - "Feature: NAME_EDUCATION_TYPE_Academic degree, Importance: 4.197621266794809e-05\n", - "Feature: NAME_EDUCATION_TYPE_Higher education, Importance: 0.0029966563172810485\n", - "Feature: NAME_EDUCATION_TYPE_Incomplete higher, Importance: 0.0014590123694284724\n", - "Feature: NAME_EDUCATION_TYPE_Lower secondary, Importance: 0.0013694164869373887\n", - "Feature: NAME_EDUCATION_TYPE_Secondary / secondary special, Importance: 0.003536152841076203\n", - "Feature: NAME_FAMILY_STATUS_Civil marriage, Importance: 0.0036592578488952154\n", - "Feature: NAME_FAMILY_STATUS_Married, Importance: 0.0051012695580233535\n", - "Feature: NAME_FAMILY_STATUS_Separated, Importance: 0.0028092943483220443\n", - "Feature: NAME_FAMILY_STATUS_Single / not married, Importance: 0.0036751088407928744\n", - "Feature: NAME_FAMILY_STATUS_Widow, Importance: 0.0017057139089209602\n", - "Feature: NAME_HOUSING_TYPE_Co-op apartment, Importance: 0.0005212693502835349\n", - "Feature: NAME_HOUSING_TYPE_House / apartment, Importance: 0.0033932005467127587\n", - "Feature: NAME_HOUSING_TYPE_Municipal apartment, Importance: 0.0018164431701525833\n", - "Feature: NAME_HOUSING_TYPE_Office apartment, Importance: 0.0007990034781014567\n", - "Feature: NAME_HOUSING_TYPE_Rented apartment, Importance: 0.0015951809813693095\n", - "Feature: NAME_HOUSING_TYPE_With parents, Importance: 0.0025622095631744625\n", - "Feature: OCCUPATION_TYPE_Accountants, Importance: 0.0010841411816554817\n", - "Feature: OCCUPATION_TYPE_Cleaning staff, Importance: 0.001379853282556569\n", - "Feature: OCCUPATION_TYPE_Cooking staff, Importance: 0.0016033799086115662\n", - "Feature: OCCUPATION_TYPE_Core staff, Importance: 0.002248305052271677\n", - "Feature: OCCUPATION_TYPE_Drivers, Importance: 0.0027523800202795606\n", - "Feature: OCCUPATION_TYPE_HR staff, Importance: 0.0001897365037091178\n", - "Feature: OCCUPATION_TYPE_High skill tech staff, Importance: 0.0014558626025815127\n", - "Feature: OCCUPATION_TYPE_IT staff, Importance: 0.000252551291479433\n", - "Feature: OCCUPATION_TYPE_Laborers, Importance: 0.004314479865749665\n", - "Feature: OCCUPATION_TYPE_Low-skill Laborers, Importance: 0.001393515403143551\n", - "Feature: OCCUPATION_TYPE_Managers, Importance: 0.0020340666287631663\n", - "Feature: OCCUPATION_TYPE_Medicine staff, Importance: 0.0012656282694865106\n", - "Feature: OCCUPATION_TYPE_Private service staff, Importance: 0.000652717081207626\n", - "Feature: OCCUPATION_TYPE_Realty agents, Importance: 0.00038477938278876897\n", - "Feature: OCCUPATION_TYPE_Sales staff, Importance: 0.0035360628333425746\n", - "Feature: OCCUPATION_TYPE_Secretaries, Importance: 0.00045231531157935304\n", - "Feature: OCCUPATION_TYPE_Security staff, Importance: 0.0017354323327697001\n", - "Feature: OCCUPATION_TYPE_Waiters/barmen staff, Importance: 0.0007135921742946077\n", - "Feature: WEEKDAY_APPR_PROCESS_START_FRIDAY, Importance: 0.004472949867680715\n", - "Feature: WEEKDAY_APPR_PROCESS_START_MONDAY, Importance: 0.004363718954899849\n", - "Feature: WEEKDAY_APPR_PROCESS_START_SATURDAY, Importance: 0.003622283198369107\n", - "Feature: WEEKDAY_APPR_PROCESS_START_SUNDAY, Importance: 0.0025991862234910723\n", - "Feature: WEEKDAY_APPR_PROCESS_START_THURSDAY, Importance: 0.004580026018925162\n", - "Feature: WEEKDAY_APPR_PROCESS_START_TUESDAY, Importance: 0.004582356306737999\n", - "Feature: WEEKDAY_APPR_PROCESS_START_WEDNESDAY, Importance: 0.004673118426911656\n", - "Feature: ORGANIZATION_TYPE_Advertising, Importance: 0.0002916553920625715\n", - "Feature: ORGANIZATION_TYPE_Agriculture, Importance: 0.0011091927407306215\n", - "Feature: ORGANIZATION_TYPE_Bank, Importance: 0.0004921626127207906\n", - "Feature: ORGANIZATION_TYPE_Business Entity Type 1, Importance: 0.0014393752095418625\n", - "Feature: ORGANIZATION_TYPE_Business Entity Type 2, Importance: 0.001927073313351474\n", - "Feature: ORGANIZATION_TYPE_Business Entity Type 3, Importance: 0.0045596554403153034\n", - "Feature: ORGANIZATION_TYPE_Cleaning, Importance: 0.0002610845522366371\n", - "Feature: ORGANIZATION_TYPE_Construction, Importance: 0.0019653213371018767\n", - "Feature: ORGANIZATION_TYPE_Culture, Importance: 0.00024010386700032242\n", - "Feature: ORGANIZATION_TYPE_Electricity, Importance: 0.00045188436022035436\n", - "Feature: ORGANIZATION_TYPE_Emergency, Importance: 0.00023090557065396256\n", - "Feature: ORGANIZATION_TYPE_Government, Importance: 0.001695978105560102\n", - "Feature: ORGANIZATION_TYPE_Hotel, Importance: 0.00044031388649212554\n", - "Feature: ORGANIZATION_TYPE_Housing, Importance: 0.0010649520012983704\n", - "Feature: ORGANIZATION_TYPE_Industry: type 1, Importance: 0.0007506426899599058\n", - "Feature: ORGANIZATION_TYPE_Industry: type 10, Importance: 6.908913513875086e-05\n", - "Feature: ORGANIZATION_TYPE_Industry: type 11, Importance: 0.0010414765191959481\n", - "Feature: ORGANIZATION_TYPE_Industry: type 12, Importance: 0.00014933041857628714\n", - "Feature: ORGANIZATION_TYPE_Industry: type 13, Importance: 7.280102803451184e-05\n", - "Feature: ORGANIZATION_TYPE_Industry: type 2, Importance: 0.0002915384683910028\n", - "Feature: ORGANIZATION_TYPE_Industry: type 3, Importance: 0.001473424074171206\n", - "Feature: ORGANIZATION_TYPE_Industry: type 4, Importance: 0.0006241727764147348\n", - "Feature: ORGANIZATION_TYPE_Industry: type 5, Importance: 0.00030319064391780217\n", - "Feature: ORGANIZATION_TYPE_Industry: type 6, Importance: 7.135923359422927e-05\n", - "Feature: ORGANIZATION_TYPE_Industry: type 7, Importance: 0.0006319982840572988\n", - "Feature: ORGANIZATION_TYPE_Industry: type 8, Importance: 2.5598480787384414e-05\n", - "Feature: ORGANIZATION_TYPE_Industry: type 9, Importance: 0.0008766091138092322\n", - "Feature: ORGANIZATION_TYPE_Insurance, Importance: 0.0002795301887092319\n", - "Feature: ORGANIZATION_TYPE_Kindergarten, Importance: 0.0013171536541050843\n", - "Feature: ORGANIZATION_TYPE_Legal Services, Importance: 0.00017856433950829152\n", - "Feature: ORGANIZATION_TYPE_Medicine, Importance: 0.0015673939658635032\n", - "Feature: ORGANIZATION_TYPE_Military, Importance: 0.0005340709402414758\n", - "Feature: ORGANIZATION_TYPE_Mobile, Importance: 0.0002285362580617896\n", - "Feature: ORGANIZATION_TYPE_Other, Importance: 0.002480667145186796\n", - "Feature: ORGANIZATION_TYPE_Police, Importance: 0.0005170793337906507\n", - "Feature: ORGANIZATION_TYPE_Postal, Importance: 0.0008445436511605105\n", - "Feature: ORGANIZATION_TYPE_Realtor, Importance: 0.0003468466915942135\n", - "Feature: ORGANIZATION_TYPE_Religion, Importance: 8.600821171936675e-05\n", - "Feature: ORGANIZATION_TYPE_Restaurant, Importance: 0.0010103801513367985\n", - "Feature: ORGANIZATION_TYPE_School, Importance: 0.0013018865919114\n", - "Feature: ORGANIZATION_TYPE_Security, Importance: 0.0011577087482746364\n", - "Feature: ORGANIZATION_TYPE_Security Ministries, Importance: 0.0004884049014665208\n", - "Feature: ORGANIZATION_TYPE_Self-employed, Importance: 0.0042179128015803905\n", - "Feature: ORGANIZATION_TYPE_Services, Importance: 0.0005448426553105232\n", - "Feature: ORGANIZATION_TYPE_Telecom, Importance: 0.0003524272603528748\n", - "Feature: ORGANIZATION_TYPE_Trade: type 1, Importance: 0.00025103053154982576\n", - "Feature: ORGANIZATION_TYPE_Trade: type 2, Importance: 0.00048614543687462394\n", - "Feature: ORGANIZATION_TYPE_Trade: type 3, Importance: 0.001219989456913292\n", - "Feature: ORGANIZATION_TYPE_Trade: type 4, Importance: 3.505249271809596e-05\n", - "Feature: ORGANIZATION_TYPE_Trade: type 5, Importance: 4.1896857247502286e-05\n", - "Feature: ORGANIZATION_TYPE_Trade: type 6, Importance: 0.00023179831057186867\n", - "Feature: ORGANIZATION_TYPE_Trade: type 7, Importance: 0.0018303425862477227\n", - "Feature: ORGANIZATION_TYPE_Transport: type 1, Importance: 8.839502434634744e-05\n", - "Feature: ORGANIZATION_TYPE_Transport: type 2, Importance: 0.0008147599309745402\n", - "Feature: ORGANIZATION_TYPE_Transport: type 3, Importance: 0.001071391641734681\n", - "Feature: ORGANIZATION_TYPE_Transport: type 4, Importance: 0.0015144702200745868\n", - "Feature: ORGANIZATION_TYPE_University, Importance: 0.00037022426065727777\n", - "Feature: ORGANIZATION_TYPE_XNA, Importance: 0.0008298816031935682\n", - "Feature: FONDKAPREMONT_MODE_not specified, Importance: 0.0007293685229467241\n", - "Feature: FONDKAPREMONT_MODE_org spec account, Importance: 0.0005428241521890336\n", - "Feature: FONDKAPREMONT_MODE_reg oper account, Importance: 0.001274428990378451\n", - "Feature: FONDKAPREMONT_MODE_reg oper spec account, Importance: 0.0007556988476421127\n", - "Feature: HOUSETYPE_MODE_block of flats, Importance: 0.0012314686774097074\n", - "Feature: HOUSETYPE_MODE_specific housing, Importance: 0.00042947044902928776\n", - "Feature: HOUSETYPE_MODE_terraced house, Importance: 0.0003400160579191961\n", - "Feature: WALLSMATERIAL_MODE_Block, Importance: 0.0008764658039667922\n", - "Feature: WALLSMATERIAL_MODE_Mixed, Importance: 0.0005572313852180715\n", - "Feature: WALLSMATERIAL_MODE_Monolithic, Importance: 0.00016799924458252958\n", - "Feature: WALLSMATERIAL_MODE_Others, Importance: 0.0005346733967184081\n", - "Feature: WALLSMATERIAL_MODE_Panel, Importance: 0.0013481217685146652\n", - "Feature: WALLSMATERIAL_MODE_Stone, brick, Importance: 0.0016122127584213622\n", - "Feature: WALLSMATERIAL_MODE_Wooden, Importance: 0.00067175160863202\n", - "Feature: EMERGENCYSTATE_MODE_No, Importance: 0.0013249453049179718\n", - "Feature: EMERGENCYSTATE_MODE_Yes, Importance: 0.0005595949316886116\n", - "Feature: DAYS_EMPLOYED_ANOM, Importance: 0.0008020609148881914\n" - ] - } - ], + "outputs": [], "source": [ "# Accessing feature importance\n", "feature_importance = RFC_model.feature_importances_\n", @@ -1990,40 +707,10 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "b02f7c87", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['EXT_SOURCE_2',\n", - " 'EXT_SOURCE_3',\n", - " 'DAYS_BIRTH',\n", - " 'DAYS_ID_PUBLISH',\n", - " 'DAYS_REGISTRATION',\n", - " 'AMT_ANNUITY',\n", - " 'DAYS_LAST_PHONE_CHANGE',\n", - " 'DAYS_EMPLOYED',\n", - " 'AMT_CREDIT',\n", - " 'AMT_INCOME_TOTAL',\n", - " 'REGION_POPULATION_RELATIVE',\n", - " 'AMT_GOODS_PRICE',\n", - " 'HOUR_APPR_PROCESS_START',\n", - " 'EXT_SOURCE_1',\n", - " 'AMT_REQ_CREDIT_BUREAU_YEAR',\n", - " 'OBS_60_CNT_SOCIAL_CIRCLE',\n", - " 'OBS_30_CNT_SOCIAL_CIRCLE',\n", - " 'OWN_CAR_AGE',\n", - " 'CNT_FAM_MEMBERS',\n", - " 'TOTALAREA_MODE']" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "feature_importance_df = pd.DataFrame({\n", " 'Feature': feature_names.iloc[:,0].values.tolist(),\n", @@ -2040,7 +727,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "9aa9ebad", "metadata": {}, "outputs": [], @@ -2061,7 +748,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "id": "d592cad4", "metadata": {}, "outputs": [], @@ -2071,147 +758,19 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "id": "570c2a0f", "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "image/png": "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fBhEylGZ/Zybm1sqcJQEQOFl1qqMIsfCausaWwusXr1atFqtLF26VOLj42X8+PHSoEEDSU1NFRGRUaNGyauvvmpcf+/evWJtbS0ffvihHD9+XGbOnMmhvRVg7n6eM2eOaDQa+eGHH+TSpUvGW1ZWllIvwWKYu69vxdE0FWPufk5KShInJyd5/vnn5eTJk7Jx40bx9PSUd955R6mXYBHM3c8zZ84UJycnWbVqlZw7d05+++03adasmTz22GNKvQSLkJWVJTExMRITEyMA5OOPP5aYmBg5f/68iIi8+uqrMmrUKOP6JUN7X3rpJTl+/LjMnz+fQ3vv1ueffy6NGzcWjUYj3bp1k/379xvv6927t4wZM8Zk/e+//15atmwpGo1G2rZtK5s2barhii2TOfs5ICBAAJS6zZw5s+YLt0DmfqZvxjBScebu53379kloaKhotVpp2rSpvPvuu1JUVFTDVVsec/ZzYWGhvPnmm9KsWTOxtbUVf39/+b//+z+5ceNGzRduQXbs2FHmd27Jvh0zZoz07t271DadOnUSjUYjTZs2lSVLllRrjSoRtm0RERGRcupsnxEiIiKyDAwjREREpCiGESIiIlIUwwgREREpimGEiIiIFMUwQkRERIpiGCEiIiJFMYwQERGRohhGiIiISFEMI0RERKQohhEiIiJSFMMIERERKer/AZVWoRLjoWWgAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Logistic: f1=0.004 auc=0.178\n" - ] - }, - { - "data": { - "image/png": "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ihWaOnWqnn/+ea1du1bvvvuuFi9erMcff9zq0uAF9NzUUKtWreRwOJSdne22Pzs7W3FxcR6PiYuLq1V71O08l3n66ac1bdo0ffzxxzrnnHN8WWajV9vzvHXrVu3YsUOpqanl+1wulyQpKChImzZtUqdOnXxbdCNUl7/Pbdq0UXBwsBwOR/m+s846S1lZWSosLFRISIhPa26M6nKeH374Yd1000265ZZbJEk9evRQfn6+br31Vj344IOy2/m/vzdU93swIiLCZ702Ej03NRYSEqK+ffsqMzOzfJ/L5VJmZqaSk5M9HpOcnOzWXpKWLVtWbXvU7TxL0pNPPqnHH39cS5cuVb9+/fxRaqNW2/PctWtXfffdd1q/fn35dtVVV+miiy7S+vXrlZCQ4M/yG426/H0eOHCgtmzZUh4eJWnz5s1q06YNwaYadTnPR48erRJgygKlwZKLXmPZ70GfDlcOMPPnzzecTqcxb94848cffzRuvfVWIyoqysjKyjIMwzBuuukm4/777y9vv2rVKiMoKMh4+umnjQ0bNhhTpkxhKngN1PY8T5s2zQgJCTHefvtt45dffinf8vLyrPoIjUJtz/OJmC1VM7U9zzt37jTCw8ON8ePHG5s2bTLef/99IyYmxvjLX/5i1UdoFGp7nqdMmWKEh4cb//znP41t27YZH330kdGpUyfjuuuus+ojNAp5eXnGunXrjHXr1hmSjJkzZxrr1q0zfv75Z8MwDOP+++83brrppvL2ZVPB77nnHmPDhg3G7NmzmQreED333HPG6aefboSEhBj9+/c3vvzyy/LvDRo0yBg5cqRb+7feesvo3LmzERISYnTr1s1YvHixnytunGpzntu3b29IqrJNmTLF/4U3MrX9+1wZ4abmanuev/jiCyMpKclwOp1Gx44djSeeeMIoLi72c9WNT23Oc1FRkfHII48YnTp1MkJDQ42EhATjzjvvNA4dOuT/whuRTz75xOPP27JzO3LkSGPQoEFVjunVq5cREhJidOzY0Xj11Vd9XqfNMOh/AwAAgYMxNwAAIKAQbgAAQEAh3AAAgIBCuAEAAAGFcAMAAAIK4QYAAAQUwg0AAAgohBsAABBQCDcAIMlms+m9996TJO3YsUM2m03r16+3tCYAdUO4AWC5UaNGyWazyWazKTg4WB06dNC9996r48ePW10agEYoyOoCAECSLr/8cr366qsqKirSmjVrNHLkSNlsNk2fPt3q0gA0MvTcAGgQnE6n4uLilJCQoKFDhyolJUXLli2TJLlcLqWnp6tDhw4KCwtTz5499fbbb7sd/8MPP+i3v/2tIiIiFB4ervPPP19bt26VJH399de69NJL1apVK0VGRmrQoEFau3at3z8jAP8g3ABocL7//nt98cUXCgkJkSSlp6fr9ddf15w5c/TDDz9o4sSJ+sMf/qBPP/1UkrRnzx5dcMEFcjqdWr58udasWaObb75ZxcXFkqS8vDyNHDlSK1eu1JdffqkzzzxTQ4YMUV5enmWfEYDvcFkKQIPw/vvvq0WLFiouLlZBQYHsdrtmzZqlgoICTZ06VR9//LGSk5MlSR07dtTKlSv1t7/9TYMGDdLs2bMVGRmp+fPnKzg4WJLUuXPn8te++OKL3d7rxRdfVFRUlD799FP99re/9d+HBOAXhBsADcJFF12kF154Qfn5+XrmmWcUFBSk3/3ud/rhhx909OhRXXrppW7tCwsL1bt3b0nS+vXrdf7555cHmxNlZ2froYce0ooVK7Rv3z6VlJTo6NGj2rlzp88/FwD/I9wAaBCaN2+uM844Q5I0d+5c9ezZU6+88oq6d+8uSVq8eLHi4+PdjnE6nZKksLCwk772yJEj9euvv+rZZ59V+/bt5XQ6lZycrMLCQh98EgBWI9wAaHDsdrseeOABpaWlafPmzXI6ndq5c6cGDRrksf0555yj1157TUVFRR57b1atWqXnn39eQ4YMkSTt2rVLBw4c8OlnAGAdBhQDaJCuvfZaORwO/e1vf9Pdd9+tiRMn6rXXXtPWrVu1du1aPffcc3rttdckSePHj1dubq6uv/56ffPNN/rpp5/097//XZs2bZIknXnmmfr73/+uDRs26L///a+GDx9+yt4eAI0XPTcAGqSgoCCNHz9eTz75pLZv367WrVsrPT1d27ZtU1RUlPr06aMHHnhAknTaaadp+fLluueeezRo0CA5HA716tVLAwcOlCS98soruvXWW9WnTx8lJCRo6tSpuvvuu638eAB8yGYYhmF1EQAAAN7CZSkAABBQCDcAACCgEG4AAEBAIdwAAICAQrgBAAABhXADAAACCuEGAAAEFMINAAAIKIQbAAAQUAg3AAAgoBBuAABAQPl/0AhxfU9y6WcAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "+------------------+---------------------+---------------------+\n", - "| Confusion Matrix | Positive prediction | Negative prediction |\n", - "+------------------+---------------------+---------------------+\n", - "| Positive class | True positive (TP) | False negative (FN) |\n", - "| Negative class | False positive (FP) | True negative (TN) |\n", - "+------------------+---------------------+---------------------+\n", - "+------------------+---------------------+---------------------+\n", - "| Confusion Matrix | Positive prediction | Negative prediction |\n", - "+------------------+---------------------+---------------------+\n", - "| Positive class | 9 | 4875 |\n", - "| Negative class | 3 | 56616 |\n", - "+------------------+---------------------+---------------------+\n", - "ROC AUC: 0.5008948830479588\n", - "Accuracy = 0.9206867957660602\n", - "Precision = 0.75\n", - "Recall = 0.0018427518427518428\n", - "F1 Score = 0.0036764705882352945\n", - "Fbeta Score = (0.49, 0.92, 0.91)\n", - " model tn fp fn tp FP+10*FN accuracy ROC_AUC precision \\\n", - "0 RFC 56616 3 4875 9 48753 0.920687 0.500895 0.75 \n", - "\n", - " recall F1_Score Fbeta_macro Fbeta_micro Fbeta_weighted \n", - "0 0.001843 0.003676 0.49 0.92 0.91 \n" - ] - }, - { - "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", - "
modeltnfpfntpFP+10*FNaccuracyROC_AUCprecisionrecallF1_ScoreFbeta_macroFbeta_microFbeta_weighted
0RFC56616348759487530.9206870.5008950.750.0018430.0036760.490.920.91
\n", - "
" - ], - "text/plain": [ - " model tn fp fn tp FP+10*FN accuracy ROC_AUC precision \\\n", - "0 RFC 56616 3 4875 9 48753 0.920687 0.500895 0.75 \n", - "\n", - " recall F1_Score Fbeta_macro Fbeta_micro Fbeta_weighted \n", - "0 0.001843 0.003676 0.49 0.92 0.91 " - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "generate_model_report(best_rf_classifier, \"RFC\", X_test, Y_test)" ] }, { "cell_type": "code", - "execution_count": 87, + "execution_count": null, "id": "ccf49b0d", "metadata": {}, "outputs": [], @@ -2286,47 +845,10 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": null, "id": "532c0079", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "prediction proba 61503\n", - "Y_true 61503\n", - "Series([], Name: best, dtype: object)\n", - "0 1\n", - "Name: best, dtype: object\n", - "best b score 38323 1 0.1\n", - "Name: threshold, dtype: float64\n", - " threshold tn fp fn tp FP+10*FN accuracy ROC_AUC \\\n", - "0 0.0 0 56619 0 4884 56619 0.079411 0.500000 \n", - "1 0.1 35476 21143 1718 3166 38323 0.628295 0.637407 \n", - "2 0.2 52293 4326 3650 1234 40826 0.870315 0.588128 \n", - "3 0.3 55883 736 4570 314 46436 0.913728 0.525646 \n", - "4 0.4 56537 82 4812 72 48202 0.920427 0.506647 \n", - "5 0.5 56614 5 4873 11 48735 0.920687 0.501082 \n", - "\n", - " precision recall F1_Score Fbeta_macro Fbeta_micro Fbeta_weighted \\\n", - "0 0.079411 1.000000 0.147137 0.150668 0.079411 0.023929 \n", - "1 0.130240 0.648239 0.216901 0.516890 0.628295 0.647983 \n", - "2 0.221942 0.252662 0.236308 0.585831 0.870315 0.871810 \n", - "3 0.299048 0.064292 0.105831 0.525039 0.913728 0.902537 \n", - "4 0.467532 0.014742 0.028583 0.500213 0.920427 0.905601 \n", - "5 0.687500 0.002252 0.004490 0.492911 0.920687 0.905170 \n", - "\n", - " best \n", - "0 0 \n", - "1 1 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", - "5 0 \n" - ] - } - ], + "outputs": [], "source": [ "test_metrics = find_optimal_business_score(y_pred_proba, Y_test)\n", "metrics_domain = { \"train\": metrics[\"train\"][5], \n", @@ -2452,26 +974,18 @@ }, { "cell_type": "markdown", - "id": "afede784", + "id": "8233f52e", "metadata": {}, "source": [ - "Test MLflow" + "## Test MLflow on Fastapi model serving" ] }, { "cell_type": "code", - "execution_count": 2, - "id": "8ecd21bd", + "execution_count": null, + "id": "38b56318", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\"prediction\":0.857982822560715,\"probability\":0.9}" - ] - } - ], + "outputs": [], "source": [ "!curl http://127.0.0.1:8000/predict -H 'Content-Type: application/json' -d '{\"inputs\": [[0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, false, false, false, false, true, false, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]]}'\n", " " @@ -2479,61 +993,34 @@ }, { "cell_type": "code", - "execution_count": 18, - "id": "ed54a311", + "execution_count": 9, + "id": "d2780b28", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{\"detail\":[{\"type\":\"list_type\",\"loc\":[\"body\"],\"msg\":\"Input should be a valid list\",\"input\":{\"inputs\":[[0,0,1,1,63000.0,310500.0,15232.5,310500.0,0.026392,16263,-214.0,-8930.0,-573,0.0,1,1,0,1,1,0,2.0,2,2,11,0,0,0,0,1,1,0.0,0.0765011930557638,0.0005272652387098,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]]},\"url\":\"https://errors.pydantic.dev/2.6/v/list_type\"}]}" + "{\"detail\":[{\"type\":\"float_type\",\"loc\":[\"body\",\"data_point\",0],\"msg\":\"Input should be a valid number\",\"input\":[0,0,1,1,63000.0,310500.0,15232.5,310500.0,0.026392,16263,-214.0,-8930.0,-573,0.0,1,1,0,1,1,0,2.0,2,2,11,0,0,0,0,1,1,0.0,0.0765011930557638,0.0005272652387098,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],\"url\":\"https://errors.pydantic.dev/2.6/v/float_type\"}]}" ] } ], "source": [ - "!curl http://127.0.0.1:8000/predict -H 'Content-Type: application/json' -d '{\"data_points\": [[0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, false, false, false, false, true, false, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]]}'\n" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "id": "bce33b3c", - "metadata": {}, - "outputs": [], - "source": [ - "# Select columns with data type 'int64'\n", - "int_columns = X_test.select_dtypes(include=['int64']).columns\n", - "\n", - "# Convert selected columns to int\n", - "X_test[int_columns] = X_test[int_columns].astype(int)" + "!curl http://127.0.0.1:8000/predict -H 'Content-Type: application/json' -d '{\"data_point\": [[0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, false, false, false, false, true, false, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]]}'\n" ] }, { - "cell_type": "code", - "execution_count": 65, - "id": "06f81d35", + "cell_type": "markdown", + "id": "7e3a6ca0", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "41" - ] - }, - "execution_count": 65, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "len(int_columns)" + "**Conversion of type of the test data**" ] }, { "cell_type": "code", - "execution_count": 66, - "id": "6023e3a3", + "execution_count": 14, + "id": "16023232", "metadata": {}, "outputs": [ { @@ -2541,380 +1028,72 @@ "output_type": "stream", "text": [ "\n", - "RangeIndex: 61503 entries, 0 to 61502\n", + "RangeIndex: 246008 entries, 0 to 246007\n", "Columns: 239 entries, 0 to 238\n", - "dtypes: bool(132), float64(66), int64(41)\n", - "memory usage: 58.0 MB\n" + "dtypes: float64(239)\n", + "memory usage: 448.6 MB\n" ] } ], "source": [ "# Select columns with data type 'int64'\n", - "X_test.info()\n" + "int_columns = X_train.select_dtypes(include=['int64']).columns\n", + "\n", + "# Convert selected columns to int\n", + "X_train[int_columns] = X_train[int_columns].astype('float')\n", + "# Select columns with data type 'int64'\n", + "int_columns = X_train.select_dtypes(include=['bool']).columns\n", + "\n", + "# Convert selected columns to int\n", + "X_train[int_columns] = X_train[int_columns].astype('float')\n", + "X_train.info()" + ] + }, + { + "cell_type": "markdown", + "id": "028a98c5", + "metadata": {}, + "source": [ + "**Selection of a data point for testing**" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "77aac7cb", + "execution_count": 15, + "id": "4718bed0", "metadata": {}, "outputs": [], "source": [ - "data_for_request = test.loc[100008].values.tolist()" + "test = X_train.copy()\n", + "test[\"ID\"] = ids_test\n", + "test.set_index(\"ID\", inplace=True)\n", + "ids_test.iloc[5]\n", + "#test.loc[100008].values.tolist()\n", + "data_for_request = test.loc[100030].values.tolist()" ] }, { "cell_type": "code", - "execution_count": 41, - "id": "756901df", + "execution_count": 17, + "id": "a7a4a0ca", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "list" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "type(data_for_request)" + "#data_for_request" ] }, { "cell_type": "code", - "execution_count": 47, - "id": "6a8aef39", - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'list' object has no attribute 'describe'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[47], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdata_for_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdescribe\u001b[49m()\n", - "\u001b[0;31mAttributeError\u001b[0m: 'list' object has no attribute 'describe'" - ] - } - ], - "source": [ - "data_for_request" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "9ab5016c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0,\n", - " 0,\n", - " 1,\n", - " 0,\n", - " 99000.0,\n", - " 490495.5,\n", - " 27517.5,\n", - " 454500.0,\n", - " 0.035792,\n", - " 16941,\n", - " -1588.0,\n", - " -4970.0,\n", - " -477,\n", - " 0.0,\n", - " 1,\n", - " 1,\n", - " 1,\n", - " 1,\n", - " 1,\n", - " 0,\n", - " 2.0,\n", - " 2,\n", - " 2,\n", - " 16,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0.0,\n", - " 0.3542247319929012,\n", - " 0.6212263380626669,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " -2536.0,\n", - " 0,\n", - " 1,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 1.0,\n", - " False,\n", - " True,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " True,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " True,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " True,\n", - " False,\n", - " True,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " True,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " True,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " True,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " True,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False,\n", - " False]" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "[x for x in data_for_request if isinstance(x, object)]" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "722d29ba", + "execution_count": 18, + "id": "8d5b7cc8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "URI : http://127.0.0.1:8000/predict\n" - ] - }, - { - "ename": "ConnectionError", - "evalue": "HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /predict (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 61] Connection refused'))", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mConnectionRefusedError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/connection.py:203\u001b[0m, in \u001b[0;36mHTTPConnection._new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 202\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 203\u001b[0m sock \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_connection\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 204\u001b[0m \u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_dns_host\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mport\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 205\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 206\u001b[0m \u001b[43m \u001b[49m\u001b[43msource_address\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msource_address\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 207\u001b[0m \u001b[43m \u001b[49m\u001b[43msocket_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msocket_options\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 208\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m socket\u001b[38;5;241m.\u001b[39mgaierror \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/util/connection.py:85\u001b[0m, in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 85\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m err\n\u001b[1;32m 86\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 87\u001b[0m \u001b[38;5;66;03m# Break explicitly a reference cycle\u001b[39;00m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/util/connection.py:73\u001b[0m, in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[1;32m 72\u001b[0m sock\u001b[38;5;241m.\u001b[39mbind(source_address)\n\u001b[0;32m---> 73\u001b[0m \u001b[43msock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43msa\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 74\u001b[0m \u001b[38;5;66;03m# Break explicitly a reference cycle\u001b[39;00m\n", - "\u001b[0;31mConnectionRefusedError\u001b[0m: [Errno 61] Connection refused", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mNewConnectionError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/connectionpool.py:790\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[1;32m 789\u001b[0m \u001b[38;5;66;03m# Make the request on the HTTPConnection object\u001b[39;00m\n\u001b[0;32m--> 790\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 791\u001b[0m \u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 792\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 793\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 794\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout_obj\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 795\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 796\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 797\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 798\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 799\u001b[0m \u001b[43m \u001b[49m\u001b[43mresponse_conn\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mresponse_conn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 800\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpreload_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 801\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdecode_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 802\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mresponse_kw\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 803\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 805\u001b[0m \u001b[38;5;66;03m# Everything went great!\u001b[39;00m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/connectionpool.py:496\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[1;32m 495\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 496\u001b[0m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 499\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 501\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 502\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpreload_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 503\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdecode_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 504\u001b[0m \u001b[43m \u001b[49m\u001b[43menforce_content_length\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43menforce_content_length\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 505\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 507\u001b[0m \u001b[38;5;66;03m# We are swallowing BrokenPipeError (errno.EPIPE) since the server is\u001b[39;00m\n\u001b[1;32m 508\u001b[0m \u001b[38;5;66;03m# legitimately able to close the connection after sending a valid response.\u001b[39;00m\n\u001b[1;32m 509\u001b[0m \u001b[38;5;66;03m# With this behaviour, the received response is still readable.\u001b[39;00m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/connection.py:395\u001b[0m, in \u001b[0;36mHTTPConnection.request\u001b[0;34m(self, method, url, body, headers, chunked, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mputheader(header, value)\n\u001b[0;32m--> 395\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mendheaders\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 397\u001b[0m \u001b[38;5;66;03m# If we're given a body we start sending that in chunks.\u001b[39;00m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/http/client.py:1250\u001b[0m, in \u001b[0;36mHTTPConnection.endheaders\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1249\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CannotSendHeader()\n\u001b[0;32m-> 1250\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_output\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmessage_body\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mencode_chunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mencode_chunked\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/http/client.py:1010\u001b[0m, in \u001b[0;36mHTTPConnection._send_output\u001b[0;34m(self, message_body, encode_chunked)\u001b[0m\n\u001b[1;32m 1009\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_buffer[:]\n\u001b[0;32m-> 1010\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1012\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m message_body \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1013\u001b[0m \n\u001b[1;32m 1014\u001b[0m \u001b[38;5;66;03m# create a consistent interface to message_body\u001b[39;00m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/http/client.py:950\u001b[0m, in \u001b[0;36mHTTPConnection.send\u001b[0;34m(self, data)\u001b[0m\n\u001b[1;32m 949\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mauto_open:\n\u001b[0;32m--> 950\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 951\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/connection.py:243\u001b[0m, in \u001b[0;36mHTTPConnection.connect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mconnect\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 243\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msock \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_new_conn\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 244\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_tunnel_host:\n\u001b[1;32m 245\u001b[0m \u001b[38;5;66;03m# If we're tunneling it means we're connected to our proxy.\u001b[39;00m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/connection.py:218\u001b[0m, in \u001b[0;36mHTTPConnection._new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 217\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m--> 218\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m NewConnectionError(\n\u001b[1;32m 219\u001b[0m \u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFailed to establish a new connection: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 220\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n\u001b[1;32m 222\u001b[0m \u001b[38;5;66;03m# Audit hooks are only available in Python 3.8+\u001b[39;00m\n", - "\u001b[0;31mNewConnectionError\u001b[0m: : Failed to establish a new connection: [Errno 61] Connection refused", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mMaxRetryError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/adapters.py:486\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 485\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 486\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 487\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 488\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 489\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 490\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 491\u001b[0m \u001b[43m \u001b[49m\u001b[43mredirect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 492\u001b[0m \u001b[43m \u001b[49m\u001b[43massert_same_host\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 493\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 494\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmax_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 496\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (ProtocolError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m err:\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/connectionpool.py:844\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[1;32m 842\u001b[0m new_e \u001b[38;5;241m=\u001b[39m ProtocolError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnection aborted.\u001b[39m\u001b[38;5;124m\"\u001b[39m, new_e)\n\u001b[0;32m--> 844\u001b[0m retries \u001b[38;5;241m=\u001b[39m \u001b[43mretries\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mincrement\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 845\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merror\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnew_e\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_stacktrace\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msys\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexc_info\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 846\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 847\u001b[0m retries\u001b[38;5;241m.\u001b[39msleep()\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/urllib3/util/retry.py:515\u001b[0m, in \u001b[0;36mRetry.increment\u001b[0;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[1;32m 514\u001b[0m reason \u001b[38;5;241m=\u001b[39m error \u001b[38;5;129;01mor\u001b[39;00m ResponseError(cause)\n\u001b[0;32m--> 515\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m MaxRetryError(_pool, url, reason) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mreason\u001b[39;00m \u001b[38;5;66;03m# type: ignore[arg-type]\u001b[39;00m\n\u001b[1;32m 517\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIncremented Retry for (url=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m): \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, url, new_retry)\n", - "\u001b[0;31mMaxRetryError\u001b[0m: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /predict (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 61] Connection refused'))", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[0;31mConnectionError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[38], line 25\u001b[0m\n\u001b[1;32m 22\u001b[0m headers \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mContent-Type\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mapplication/json\u001b[39m\u001b[38;5;124m'\u001b[39m}\n\u001b[1;32m 24\u001b[0m \u001b[38;5;66;03m# Send POST request to the scoring server\u001b[39;00m\n\u001b[0;32m---> 25\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mrequests\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpost\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mpayload\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPredictions: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mresponse\u001b[38;5;241m.\u001b[39mtext\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/api.py:115\u001b[0m, in \u001b[0;36mpost\u001b[0;34m(url, data, json, **kwargs)\u001b[0m\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(url, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, json\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 104\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Sends a POST request.\u001b[39;00m\n\u001b[1;32m 105\u001b[0m \n\u001b[1;32m 106\u001b[0m \u001b[38;5;124;03m :param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;124;03m :rtype: requests.Response\u001b[39;00m\n\u001b[1;32m 113\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpost\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/api.py:59\u001b[0m, in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001b[39;00m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;66;03m# cases, and look like a memory leak in others.\u001b[39;00m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m sessions\u001b[38;5;241m.\u001b[39mSession() \u001b[38;5;28;01mas\u001b[39;00m session:\n\u001b[0;32m---> 59\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/sessions.py:589\u001b[0m, in \u001b[0;36mSession.request\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 584\u001b[0m send_kwargs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 585\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m\"\u001b[39m: timeout,\n\u001b[1;32m 586\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow_redirects\u001b[39m\u001b[38;5;124m\"\u001b[39m: allow_redirects,\n\u001b[1;32m 587\u001b[0m }\n\u001b[1;32m 588\u001b[0m send_kwargs\u001b[38;5;241m.\u001b[39mupdate(settings)\n\u001b[0;32m--> 589\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43msend_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 591\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/sessions.py:703\u001b[0m, in \u001b[0;36mSession.send\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 700\u001b[0m start \u001b[38;5;241m=\u001b[39m preferred_clock()\n\u001b[1;32m 702\u001b[0m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[0;32m--> 703\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43madapter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[1;32m 706\u001b[0m elapsed \u001b[38;5;241m=\u001b[39m preferred_clock() \u001b[38;5;241m-\u001b[39m start\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/adapters.py:519\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 515\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e\u001b[38;5;241m.\u001b[39mreason, _SSLError):\n\u001b[1;32m 516\u001b[0m \u001b[38;5;66;03m# This branch is for urllib3 v1.22 and later.\u001b[39;00m\n\u001b[1;32m 517\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m SSLError(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[0;32m--> 519\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[1;32m 521\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ClosedPoolError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 522\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m(e, request\u001b[38;5;241m=\u001b[39mrequest)\n", - "\u001b[0;31mConnectionError\u001b[0m: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /predict (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 61] Connection refused'))" + "URI : http://127.0.0.1:8000/predict\n", + "Predictions: {\"prediction\":0.8939533102108367,\"probability\":0.8}\n" ] } ], @@ -2923,6 +1102,7 @@ "\n", "# initialised with: mlflow models serve -m model_LGBM02/ --port 8092\n", "#http://127.0.0.1:8092\n", + "\n", "host = '127.0.0.1'\n", "port = '8000'\n", "\n", @@ -2933,1132 +1113,61 @@ " 'Content-Type': 'application/json',\n", "}\n", "\n", - "#test_data = pd.DataFrame(X_test)\n", - "test_data = data_for_request\n", - "\n", - "# Convert the DataFrame to JSON with the 'dataframe_records' format\n", - "payload = test.loc[100008].to_json(orient='records')\n", - "\n", "headers = {'Content-Type': 'application/json'}\n", "\n", - "# Send POST request to the scoring server\n", - "response = requests.post(url=url, headers=headers, data=payload)\n", + "# Send the POST request with the data\n", + "response = requests.post(url, json={\"data_point\": data_for_request})\n", "\n", "print(f'Predictions: {response.text}')" ] }, { - "cell_type": "code", - "execution_count": 42, - "id": "6a9c565f", + "cell_type": "markdown", + "id": "42a804db", "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "Object of type int64 is not JSON serializable", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[42], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Send the POST request with the data\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mrequests\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mpost\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m{\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdata_point\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata_for_request\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/api.py:115\u001b[0m, in \u001b[0;36mpost\u001b[0;34m(url, data, json, **kwargs)\u001b[0m\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(url, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, json\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 104\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Sends a POST request.\u001b[39;00m\n\u001b[1;32m 105\u001b[0m \n\u001b[1;32m 106\u001b[0m \u001b[38;5;124;03m :param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[38;5;124;03m :rtype: requests.Response\u001b[39;00m\n\u001b[1;32m 113\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 115\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mpost\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/api.py:59\u001b[0m, in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001b[39;00m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;66;03m# cases, and look like a memory leak in others.\u001b[39;00m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m sessions\u001b[38;5;241m.\u001b[39mSession() \u001b[38;5;28;01mas\u001b[39;00m session:\n\u001b[0;32m---> 59\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/sessions.py:575\u001b[0m, in \u001b[0;36mSession.request\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 562\u001b[0m \u001b[38;5;66;03m# Create the Request.\u001b[39;00m\n\u001b[1;32m 563\u001b[0m req \u001b[38;5;241m=\u001b[39m Request(\n\u001b[1;32m 564\u001b[0m method\u001b[38;5;241m=\u001b[39mmethod\u001b[38;5;241m.\u001b[39mupper(),\n\u001b[1;32m 565\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 573\u001b[0m hooks\u001b[38;5;241m=\u001b[39mhooks,\n\u001b[1;32m 574\u001b[0m )\n\u001b[0;32m--> 575\u001b[0m prep \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprepare_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 577\u001b[0m proxies \u001b[38;5;241m=\u001b[39m proxies \u001b[38;5;129;01mor\u001b[39;00m {}\n\u001b[1;32m 579\u001b[0m settings \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmerge_environment_settings(\n\u001b[1;32m 580\u001b[0m prep\u001b[38;5;241m.\u001b[39murl, proxies, stream, verify, cert\n\u001b[1;32m 581\u001b[0m )\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/sessions.py:486\u001b[0m, in \u001b[0;36mSession.prepare_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 483\u001b[0m auth \u001b[38;5;241m=\u001b[39m get_netrc_auth(request\u001b[38;5;241m.\u001b[39murl)\n\u001b[1;32m 485\u001b[0m p \u001b[38;5;241m=\u001b[39m PreparedRequest()\n\u001b[0;32m--> 486\u001b[0m \u001b[43mp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprepare\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 487\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mupper\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 488\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 489\u001b[0m \u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 490\u001b[0m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 491\u001b[0m \u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 492\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmerge_setting\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 493\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdict_class\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mCaseInsensitiveDict\u001b[49m\n\u001b[1;32m 494\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 495\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmerge_setting\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 496\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmerge_setting\u001b[49m\u001b[43m(\u001b[49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 497\u001b[0m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmerged_cookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 498\u001b[0m \u001b[43m \u001b[49m\u001b[43mhooks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmerge_hooks\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhooks\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhooks\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 499\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 500\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m p\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/models.py:371\u001b[0m, in \u001b[0;36mPreparedRequest.prepare\u001b[0;34m(self, method, url, headers, files, data, params, auth, cookies, hooks, json)\u001b[0m\n\u001b[1;32m 369\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprepare_headers(headers)\n\u001b[1;32m 370\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprepare_cookies(cookies)\n\u001b[0;32m--> 371\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprepare_body\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 372\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprepare_auth(auth, url)\n\u001b[1;32m 374\u001b[0m \u001b[38;5;66;03m# Note that prepare_auth must be last to enable authentication schemes\u001b[39;00m\n\u001b[1;32m 375\u001b[0m \u001b[38;5;66;03m# such as OAuth to work on a fully prepared request.\u001b[39;00m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# This MUST go after prepare_auth. Authenticators could add a hook\u001b[39;00m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/requests/models.py:511\u001b[0m, in \u001b[0;36mPreparedRequest.prepare_body\u001b[0;34m(self, data, files, json)\u001b[0m\n\u001b[1;32m 508\u001b[0m content_type \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mapplication/json\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 510\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 511\u001b[0m body \u001b[38;5;241m=\u001b[39m \u001b[43mcomplexjson\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdumps\u001b[49m\u001b[43m(\u001b[49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mallow_nan\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 512\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m ve:\n\u001b[1;32m 513\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidJSONError(ve, request\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/json/__init__.py:234\u001b[0m, in \u001b[0;36mdumps\u001b[0;34m(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m JSONEncoder\n\u001b[0;32m--> 234\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mcls\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m 235\u001b[0m \u001b[43m \u001b[49m\u001b[43mskipkeys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mskipkeys\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mensure_ascii\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mensure_ascii\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 236\u001b[0m \u001b[43m \u001b[49m\u001b[43mcheck_circular\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcheck_circular\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mallow_nan\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mallow_nan\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindent\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mindent\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[43m \u001b[49m\u001b[43mseparators\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mseparators\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdefault\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdefault\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msort_keys\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msort_keys\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 238\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkw\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mencode\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/json/encoder.py:199\u001b[0m, in \u001b[0;36mJSONEncoder.encode\u001b[0;34m(self, o)\u001b[0m\n\u001b[1;32m 195\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m encode_basestring(o)\n\u001b[1;32m 196\u001b[0m \u001b[38;5;66;03m# This doesn't pass the iterator directly to ''.join() because the\u001b[39;00m\n\u001b[1;32m 197\u001b[0m \u001b[38;5;66;03m# exceptions aren't as detailed. The list call should be roughly\u001b[39;00m\n\u001b[1;32m 198\u001b[0m \u001b[38;5;66;03m# equivalent to the PySequence_Fast that ''.join() would do.\u001b[39;00m\n\u001b[0;32m--> 199\u001b[0m chunks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43miterencode\u001b[49m\u001b[43m(\u001b[49m\u001b[43mo\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_one_shot\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[1;32m 200\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(chunks, (\u001b[38;5;28mlist\u001b[39m, \u001b[38;5;28mtuple\u001b[39m)):\n\u001b[1;32m 201\u001b[0m chunks \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(chunks)\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/json/encoder.py:257\u001b[0m, in \u001b[0;36mJSONEncoder.iterencode\u001b[0;34m(self, o, _one_shot)\u001b[0m\n\u001b[1;32m 252\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 253\u001b[0m _iterencode \u001b[38;5;241m=\u001b[39m _make_iterencode(\n\u001b[1;32m 254\u001b[0m markers, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdefault, _encoder, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindent, floatstr,\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mkey_separator, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mitem_separator, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msort_keys,\n\u001b[1;32m 256\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mskipkeys, _one_shot)\n\u001b[0;32m--> 257\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_iterencode\u001b[49m\u001b[43m(\u001b[49m\u001b[43mo\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/json/encoder.py:179\u001b[0m, in \u001b[0;36mJSONEncoder.default\u001b[0;34m(self, o)\u001b[0m\n\u001b[1;32m 160\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdefault\u001b[39m(\u001b[38;5;28mself\u001b[39m, o):\n\u001b[1;32m 161\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Implement this method in a subclass such that it returns\u001b[39;00m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;124;03m a serializable object for ``o``, or calls the base implementation\u001b[39;00m\n\u001b[1;32m 163\u001b[0m \u001b[38;5;124;03m (to raise a ``TypeError``).\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 177\u001b[0m \n\u001b[1;32m 178\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 179\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mObject of type \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mo\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 180\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mis not JSON serializable\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", - "\u001b[0;31mTypeError\u001b[0m: Object of type int64 is not JSON serializable" - ] - } - ], "source": [ - "# Send the POST request with the data\n", - "response = requests.post(url, json={\"data_point\": data_for_request})" + "**TEST with empty data set**" ] }, { "cell_type": "code", - "execution_count": 39, - "id": "ba1435ab", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "str" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "type(payload)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "9f38ea27", + "execution_count": null, + "id": "910c8f63", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['[',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '1',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '9',\n", - " '9',\n", - " '0',\n", - " '0',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '4',\n", - " '9',\n", - " '0',\n", - " '4',\n", - " '9',\n", - " '5',\n", - " '.',\n", - " '5',\n", - " ',',\n", - " '2',\n", - " '7',\n", - " '5',\n", - " '1',\n", - " '7',\n", - " '.',\n", - " '5',\n", - " ',',\n", - " '4',\n", - " '5',\n", - " '4',\n", - " '5',\n", - " '0',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " '3',\n", - " '5',\n", - " '7',\n", - " '9',\n", - " '2',\n", - " ',',\n", - " '1',\n", - " '6',\n", - " '9',\n", - " '4',\n", - " '1',\n", - " ',',\n", - " '-',\n", - " '1',\n", - " '5',\n", - " '8',\n", - " '8',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '-',\n", - " '4',\n", - " '9',\n", - " '7',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '-',\n", - " '4',\n", - " '7',\n", - " '7',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '1',\n", - " ',',\n", - " '1',\n", - " ',',\n", - " '1',\n", - " ',',\n", - " '1',\n", - " ',',\n", - " '1',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '2',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '2',\n", - " ',',\n", - " '2',\n", - " ',',\n", - " '1',\n", - " '6',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '3',\n", - " '5',\n", - " '4',\n", - " '2',\n", - " '2',\n", - " '4',\n", - " '7',\n", - " '3',\n", - " '2',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '6',\n", - " '2',\n", - " '1',\n", - " '2',\n", - " '2',\n", - " '6',\n", - " '3',\n", - " '3',\n", - " '8',\n", - " '1',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '-',\n", - " '2',\n", - " '5',\n", - " '3',\n", - " '6',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '1',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '0',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '1',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " '1',\n", - " '.',\n", - " '0',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 't',\n", - " 'r',\n", - " 'u',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " 'l',\n", - " 's',\n", - " 'e',\n", - " ',',\n", - " 'f',\n", - " 'a',\n", - " ...]" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "[x for x in payload if isinstance(x, str)]\n", - " " + "# Send the POST request with the data\n", + "response = requests.post(url, json={\"data_point\":[]})\n", + "\n", + "print(f'Predictions: {response.text}')" ] }, { - "cell_type": "code", - "execution_count": 31, - "id": "b8befe42", + "cell_type": "markdown", + "id": "aea8d907", "metadata": {}, - "outputs": [ - { - "ename": "ValueError", - "evalue": "could not convert string to float: '['", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[31], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m payload \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28mfloat\u001b[39m(x) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m payload]\n\u001b[1;32m 2\u001b[0m payload\n", - "Cell \u001b[0;32mIn[31], line 1\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0m payload \u001b[38;5;241m=\u001b[39m [\u001b[38;5;28;43mfloat\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m payload]\n\u001b[1;32m 2\u001b[0m payload\n", - "\u001b[0;31mValueError\u001b[0m: could not convert string to float: '['" - ] - } - ], "source": [ - "payload = [float(x) for x in payload]\n", - "payload" + "**TEST on hosting environment**" ] }, { "cell_type": "code", "execution_count": null, - "id": "f45532b8", + "id": "e705243c", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "url = 'https://fastapi-cd-webapp.azurewebsites.net/predict'\n", + "# Send the POST request with the data\n", + "response = requests.post(url, json={\"data_point\": data_for_request})\n", + "\n", + "print(f'Predictions: {response.text}')" + ] }, { "cell_type": "code", "execution_count": null, - "id": "580e0cc1", + "id": "40be404e", "metadata": {}, "outputs": [], "source": [] diff --git a/2_Model_selection.ipynb b/2_Model_selection.ipynb index 3a38227..29ff574 100644 --- a/2_Model_selection.ipynb +++ b/2_Model_selection.ipynb @@ -321,7 +321,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 4, "id": "ee29821b", "metadata": {}, "outputs": [ @@ -331,7 +331,7 @@ "pandas.core.frame.DataFrame" ] }, - "execution_count": 53, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -423,7 +423,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "id": "8d982f88", "metadata": {}, "outputs": [], @@ -556,7 +556,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 7, "id": "e340e485", "metadata": {}, "outputs": [], @@ -607,7 +607,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "id": "6b273236", "metadata": {}, "outputs": [ @@ -620,11 +620,25 @@ ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best Hyperparameters: {'max_depth': None, 'min_samples_leaf': 1, 'min_samples_split': 5, 'n_estimators': 200}\n", - "Accuracy on Test Set: 0.8828349836593337\n" + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[8], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m RFC_model_smote, best_params_smote \u001b[38;5;241m=\u001b[39m \u001b[43mRFC_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx_train_smote\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my_train_smote\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[7], line 17\u001b[0m, in \u001b[0;36mRFC_model\u001b[0;34m(X_train, Y_train)\u001b[0m\n\u001b[1;32m 14\u001b[0m grid_search \u001b[38;5;241m=\u001b[39m GridSearchCV(rf_classifier, param_grid, cv\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m, scoring\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124maccuracy\u001b[39m\u001b[38;5;124m'\u001b[39m, n_jobs\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# Perform the grid search on the training data\u001b[39;00m\n\u001b[0;32m---> 17\u001b[0m \u001b[43mgrid_search\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mY_train\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;66;03m# Get the best hyperparameters from the grid search\u001b[39;00m\n\u001b[1;32m 20\u001b[0m best_params \u001b[38;5;241m=\u001b[39m grid_search\u001b[38;5;241m.\u001b[39mbest_params_\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152\u001b[0m, in \u001b[0;36m_fit_context..decorator..wrapper\u001b[0;34m(estimator, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1145\u001b[0m estimator\u001b[38;5;241m.\u001b[39m_validate_params()\n\u001b[1;32m 1147\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config_context(\n\u001b[1;32m 1148\u001b[0m skip_parameter_validation\u001b[38;5;241m=\u001b[39m(\n\u001b[1;32m 1149\u001b[0m prefer_skip_nested_validation \u001b[38;5;129;01mor\u001b[39;00m global_skip_validation\n\u001b[1;32m 1150\u001b[0m )\n\u001b[1;32m 1151\u001b[0m ):\n\u001b[0;32m-> 1152\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfit_method\u001b[49m\u001b[43m(\u001b[49m\u001b[43mestimator\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/model_selection/_search.py:898\u001b[0m, in \u001b[0;36mBaseSearchCV.fit\u001b[0;34m(self, X, y, groups, **fit_params)\u001b[0m\n\u001b[1;32m 892\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_format_results(\n\u001b[1;32m 893\u001b[0m all_candidate_params, n_splits, all_out, all_more_results\n\u001b[1;32m 894\u001b[0m )\n\u001b[1;32m 896\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m results\n\u001b[0;32m--> 898\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_search\u001b[49m\u001b[43m(\u001b[49m\u001b[43mevaluate_candidates\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 900\u001b[0m \u001b[38;5;66;03m# multimetric is determined here because in the case of a callable\u001b[39;00m\n\u001b[1;32m 901\u001b[0m \u001b[38;5;66;03m# self.scoring the return type is only known after calling\u001b[39;00m\n\u001b[1;32m 902\u001b[0m first_test_score \u001b[38;5;241m=\u001b[39m all_out[\u001b[38;5;241m0\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtest_scores\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/model_selection/_search.py:1422\u001b[0m, in \u001b[0;36mGridSearchCV._run_search\u001b[0;34m(self, evaluate_candidates)\u001b[0m\n\u001b[1;32m 1420\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_run_search\u001b[39m(\u001b[38;5;28mself\u001b[39m, evaluate_candidates):\n\u001b[1;32m 1421\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Search all candidates in param_grid\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1422\u001b[0m \u001b[43mevaluate_candidates\u001b[49m\u001b[43m(\u001b[49m\u001b[43mParameterGrid\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mparam_grid\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/model_selection/_search.py:845\u001b[0m, in \u001b[0;36mBaseSearchCV.fit..evaluate_candidates\u001b[0;34m(candidate_params, cv, more_results)\u001b[0m\n\u001b[1;32m 837\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mverbose \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[1;32m 838\u001b[0m \u001b[38;5;28mprint\u001b[39m(\n\u001b[1;32m 839\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFitting \u001b[39m\u001b[38;5;132;01m{0}\u001b[39;00m\u001b[38;5;124m folds for each of \u001b[39m\u001b[38;5;132;01m{1}\u001b[39;00m\u001b[38;5;124m candidates,\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 840\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m totalling \u001b[39m\u001b[38;5;132;01m{2}\u001b[39;00m\u001b[38;5;124m fits\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(\n\u001b[1;32m 841\u001b[0m n_splits, n_candidates, n_candidates \u001b[38;5;241m*\u001b[39m n_splits\n\u001b[1;32m 842\u001b[0m )\n\u001b[1;32m 843\u001b[0m )\n\u001b[0;32m--> 845\u001b[0m out \u001b[38;5;241m=\u001b[39m \u001b[43mparallel\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 846\u001b[0m \u001b[43m \u001b[49m\u001b[43mdelayed\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_fit_and_score\u001b[49m\u001b[43m)\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 847\u001b[0m \u001b[43m \u001b[49m\u001b[43mclone\u001b[49m\u001b[43m(\u001b[49m\u001b[43mbase_estimator\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 848\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 849\u001b[0m \u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 850\u001b[0m \u001b[43m \u001b[49m\u001b[43mtrain\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtrain\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 851\u001b[0m \u001b[43m \u001b[49m\u001b[43mtest\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 852\u001b[0m \u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparameters\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 853\u001b[0m \u001b[43m \u001b[49m\u001b[43msplit_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msplit_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_splits\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 854\u001b[0m \u001b[43m \u001b[49m\u001b[43mcandidate_progress\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcand_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_candidates\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 855\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mfit_and_score_kwargs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 856\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 857\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mcand_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparameters\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43msplit_idx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mtrain\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtest\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mproduct\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 858\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcandidate_params\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43menumerate\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mcv\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msplit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgroups\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 859\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 860\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 862\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(out) \u001b[38;5;241m<\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m 863\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 864\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNo fits were performed. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 865\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWas the CV iterator empty? \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 866\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWere there no candidates?\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 867\u001b[0m )\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/parallel.py:65\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[0;34m(self, iterable)\u001b[0m\n\u001b[1;32m 60\u001b[0m config \u001b[38;5;241m=\u001b[39m get_config()\n\u001b[1;32m 61\u001b[0m iterable_with_config \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 62\u001b[0m (_with_config(delayed_func, config), args, kwargs)\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m delayed_func, args, kwargs \u001b[38;5;129;01min\u001b[39;00m iterable\n\u001b[1;32m 64\u001b[0m )\n\u001b[0;32m---> 65\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__call__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43miterable_with_config\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/joblib/parallel.py:1098\u001b[0m, in \u001b[0;36mParallel.__call__\u001b[0;34m(self, iterable)\u001b[0m\n\u001b[1;32m 1095\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_iterating \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m 1097\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backend\u001b[38;5;241m.\u001b[39mretrieval_context():\n\u001b[0;32m-> 1098\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mretrieve\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1099\u001b[0m \u001b[38;5;66;03m# Make sure that we get a last message telling us we are done\u001b[39;00m\n\u001b[1;32m 1100\u001b[0m elapsed_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_start_time\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/joblib/parallel.py:975\u001b[0m, in \u001b[0;36mParallel.retrieve\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 973\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 974\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backend, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msupports_timeout\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[0;32m--> 975\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_output\u001b[38;5;241m.\u001b[39mextend(\u001b[43mjob\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 976\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_output\u001b[38;5;241m.\u001b[39mextend(job\u001b[38;5;241m.\u001b[39mget())\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/joblib/_parallel_backends.py:567\u001b[0m, in \u001b[0;36mLokyBackend.wrap_future_result\u001b[0;34m(future, timeout)\u001b[0m\n\u001b[1;32m 564\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Wrapper for Future.result to implement the same behaviour as\u001b[39;00m\n\u001b[1;32m 565\u001b[0m \u001b[38;5;124;03mAsyncResults.get from multiprocessing.\"\"\"\u001b[39;00m\n\u001b[1;32m 566\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 567\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 568\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m CfTimeoutError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 569\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/concurrent/futures/_base.py:434\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 431\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[1;32m 432\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__get_result()\n\u001b[0;32m--> 434\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_condition\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwait\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 436\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;129;01min\u001b[39;00m [CANCELLED, CANCELLED_AND_NOTIFIED]:\n\u001b[1;32m 437\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n", + "File \u001b[0;32m~/opt/anaconda3/lib/python3.8/threading.py:302\u001b[0m, in \u001b[0;36mCondition.wait\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 300\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m: \u001b[38;5;66;03m# restore state no matter what (e.g., KeyboardInterrupt)\u001b[39;00m\n\u001b[1;32m 301\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m timeout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 302\u001b[0m \u001b[43mwaiter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43macquire\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 303\u001b[0m gotit \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 304\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], @@ -634,69 +648,12 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "2b391492", "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABWxUlEQVR4nO3deVhUZf8G8HsGGBbZZTcU933FRFxSiyT1p1bva5amZqVZZqalaZamldpiamlZ7pblUqml5hJuqbghuIuK4A6Iyi4MzHx/f/hycmRQBoHDcn+uay7nnPOcme8cxpl7nvOcczQiIiAiIiJSiVbtAoiIiKhyYxghIiIiVTGMEBERkaoYRoiIiEhVDCNERESkKoYRIiIiUhXDCBEREamKYYSIiIhUZa12AYVhNBpx9epVODk5QaPRqF0OERERFYKIIC0tDX5+ftBqC+7/KBdh5OrVq/D391e7DCIiIiqCS5cu4ZFHHilwebkII05OTgDuvBhnZ2eVqyEiIqLCSE1Nhb+/v/I9XpByEUbyds04OzszjBAREZUzDxpiwQGsREREpCqGESIiIlIVwwgRERGpimGEiIiIVMUwQkRERKpiGCEiIiJVMYwQERGRqhhGiIiISFUMI0RERKQqi8PIrl270LNnT/j5+UGj0WDt2rUPXGfHjh1o1aoVbG1tUadOHSxZsqQIpRIREVFFZHEYycjIQPPmzTF37txCtY+NjUWPHj3QpUsXREVF4e2338arr76KzZs3W1wsERERVTwWX5umW7du6NatW6Hbz5s3DzVr1sSMGTMAAA0bNsTu3bsxc+ZMhIaGWvr0REREVMGU+IXywsPDERISYjIvNDQUb7/9doHrZGdnIzs7W5lOTU0tqfKIiIgqJKNRcD09G/EpWcjKMSAr14iLNzNha6VFzPV0WFtpYBQgJ9eIHIMRQx6rhUfcHFSptcTDSHx8PLy9vU3meXt7IzU1Fbdv34a9vX2+daZNm4bJkyeXdGlERETllohAbzDi8q3bWHHgIgDg5/0XkaE3QKMBRCx7vN4tq1XcMFIU48ePx+jRo5Xp1NRU+Pv7q1gRERGROgxGwcG4m1i4OxYpmTk4m5iGW5k5913n7iCi1QBGARr4OCHHYERaVi5aVXfDleTbaO7vgiq21tBZaeHlZFvCr6RgJR5GfHx8kJCQYDIvISEBzs7OZntFAMDW1ha2tuptFCIiotJmNApuZeoRdyMDJ66m4q9j8Th6ORkZesMD19VZa2FrrcULbarDWqvBY/U8UcuzCtwddLC2Kvtn8SjxMBIcHIyNGzeazNu6dSuCg4NL+qmJiIjKnL0xSTh5NRV7ziXh2JUUaDUaJKZlP3hFAMG1qqJ7Ux94Otmhoa8T3KroYG9jBZtyEDjux+Iwkp6ejnPnzinTsbGxiIqKgru7O6pXr47x48fjypUrWLZsGQBg2LBhmDNnDsaOHYuXX34Z27Ztw6pVq7Bhw4biexVERERlUEZ2Lo5eTsGlm5n4dsc5xN3ILPS63s628HKyw1tP1EX7OlXhoCuTIyuKhcWv7NChQ+jSpYsynTe2Y9CgQViyZAmuXbuGixcvKstr1qyJDRs2YNSoUZg9ezYeeeQRLFiwgIf1EhFRhaLPNeLwxVvYey4JJ6+l4u9Tifdt/1RjH2TocxFcuyqCa1WFexUdvJzsYK+zKqWKyw6NiKXjbUtfamoqXFxckJKSAmdnZ7XLISIiAgAkZ+rx++ErCDudgD3nbhTYrlV1V3g52eFsYhpmP98STaq5lGKV6ins93fF7fMhIiIqZpn6XMSnZOGfs0n47fBlHL2cYrbdC22qw8fZDq1quKJDHQ9oNJpSrrR8YRghIiK6R67BiNPxaThxNQWXb93Gwbib2Hf+ZoHtG/s5o1sTHwzrVLtcHL1S1jCMEBFRpZSUno2IC7dwK0OPy7duI+LCLRiMgkMXbsL4gAEMNao64GaGHsM61cZL7QJQxZZfpw+DW4+IiCq862nZ+Ofsdew+l4QNR6/BzUGH+NSsB66Xd8KwPoGPoJ63E+p4O6JzPU/udilmDCNERFThJKZmYdvpRPwacRmHLtzKt/zuIOLrYodqrvawsdLC2kqD7k19Ud/HCc2quXCXSylhGCEionIvMS0LW04k4MfwC4hOSCuwXXN/V3hU0aGBrxP6BPojwKNKKVZJBWEYISKickVEkJCajYNxN3Ew7iaWhV8osG1DX2forDQY8XhdhDTyLrAdqYthhIiIyqwcgxFxSRkIO52Ik1dT8ceRqw9cp2dzP0zu1RjuVXSlUCEVB4YRIiIqM1KzcrD60GWsP3oVkReTH9heqwHa1/FA+zoeGNqxFrRaDiwtjxhGiIhIVYfibmLiuhPINRpxJiHdbBsnO2vYWGnx4f81hL2NNTrX94SdTeU7bXpFxTBCRESlKjE1C7vOJuH3w5exNyb/KdR1VlpotcBzrf3RrrYHQhp68aiWCo5hhIiISpTBKFgTeQWzw84gPiULOQbzZxTr1dwPb4fURS1Px1KukNTGMEJERMXutt6A41dT8PpPh5GUnp1vuauDDTKyc/FkI28MDA5A21pVVaiSygqGESIiKhb7z9/Asn0XsOHoNbPLNRqge1NfvP1EXdT1dirl6qgsYxghIqIiEREcuZyC+bvOY29MEm5l5uRrE1jDDfY2Vvh+QCCv30IF4juDiIgKJSk9G6eupeKHXecRn5KFs4nmj3wZ0rEm+gfV4NlNqdAYRoiIqEB/HLmK73bE4NS11Pu26xdUHT2b+SGwhht01jzyhSzDMEJERCYu3MjA1I2nsPlEgtnl1VztUcuzCj7o0QgBHg6wteb5PujhMIwQEREysnPx0R8nsDristnlE7o3RI9mvvBztS/lyqgyYBghIqqERAT/nE3CF5ujcexKSoHtFr3UGo834AXmqGQxjBARVQJZOQasjriM66lZWH/0Gs4nZZht1+wRF0zq2RitqrtCo+F1Xqh0MIwQEVVgRy4lo9/8fcjQGwps07aWO6Y92wwBVR0YQEgVDCNERBXQD7tiMHXj6Xzzm1RzRmNfF9jZaPFGlzrwdrZToToiUwwjREQVRMrtHGw6fg2LdschOiHNZFmPpr74ok8zOOj4sU9lD9+VRETlWGxSBr7aegZ/Hrmab5m/uz0Wv/Qoans6cvcLlWkMI0RE5Ux6di5m/30G8/+JNbvczcEGH/VqjN4tqpVyZURFwzBCRFTG5R2GO2PrGRy5lGy2TXN/V4x7qgGCa/Pqt1T+MIwQEZVB+lwjoi4lY8XBi/j98JUC233QoyFeahcAayuegp3KL4YRIqIyQp9rxLLwOHy/6zyup2WbbeOgs8Kyl9ugVXU3aLUcB0IVA8MIEZFKsnMN2HjsGn6NuIw9524U2K6WZxVM/L9G6FzfqxSrIyo9DCNERKUsK8eAj9efxPL9FwtsM/rJehjSsRbsdbwIHVV8DCNERKXgn7PXMWjRAeistcjKMZose8TNHj2a+aJNgDs61vWEzprjP6hyYRghIioBBqPg1LVUzNl2DntikpCWlQsAJkHk8QZe+PqFlnC05UcxVW78H0BEVIz0uUYMWnQA4efNjwH5qGcjPNHQG9Vc7TkAleh/GEaIiB7SzjPX8eeRqzgYdxMXbmSabTMmtD4GtQtgLwiRGfxfQURkIRHBX8fj8cuBi/jnbFKB7ba/2xk1PaqUYmVE5RPDCBFRIYkIZv19FrPDzppd/m7Xeuja2AfeznZwsbcp5eqIyi+GESKiBzh+JQVztp3DphPx+Za927UeWvi7oUNdDxUqI6oYGEaIiMxIyczBqFVROHIpGTcy9PmW//FmezR7xLX0CyOqgBhGiIjuIiL4dkcMvtgcnW/ZKx1q4omGXmhXm70gRMWJYYSI6H9WHLiITzeeUs4JAgC1PKpg9vMt0djPmYfiEpUQhhEiqtR2nrmORbtjsfPM9XzLNr7VEY38nFWoiqhyYRghokol12DEjujr+HHfBbMBBAB+fKUNOtb1LOXKiCovhhEiqhT0uUZ0/HwbElKzzS5/tlU1jA1tAB8Xu1KujIgYRoioQkvPzsVnf53Gj/su5FvWsrorPujREIE13FWojIjyMIwQUYUUdioBX2yOxun4NJP5fi522DW2C6yteGVcorKCYYSIKoy0rBws3RuHL7ecybesmqs9Pvy/RniqiY8KlRHR/TCMEFG5JSI4HZ+GNZFXsDP6OqIT8veCfPlccwTXqgqNhoflEpVVDCNEVO6kZuXgtWURCD9/w+zyHs18MSqkLup4OZVyZURUFAwjRFQuGI2CTSfi8dYvkcg1Sr7lgTXc0KOpLwYE14ANx4MQlSsMI0RU5qVk5uC578Pz7YZpUs0Zs/q2YA8IUTnHMEJEZZaI4Idd5zHtr9PKvAY+TujT2h8D2taAzpo9IEQVAcMIEZVJ0/86jXk7Y0zmjevWAMM61VapIiIqKQwjRFRm6HON2B6diE82nMSlm7dNln3XvxW6NfVVqTIiKkkMI0Skus0n4vHajxFml214qwMa+7mUckVEVJoYRohINccup+C/8/YiO9doMt+9ig5jQuvjhTbVVaqMiEoTwwgRlbqTV1PR/et/8s1/uoUfpj7bFA46fjQRVSZFGoo+d+5cBAQEwM7ODkFBQThw4MB928+aNQv169eHvb09/P39MWrUKGRlZRWpYCIqnxJSs/Dh2uMIGLchXxD56ZUgxE3vgVnPt2QQIaqELP5fv3LlSowePRrz5s1DUFAQZs2ahdDQUERHR8PLyytf+59//hnjxo3DokWL0K5dO5w5cwYvvfQSNBoNvvrqq2J5EURUdp24moIeX+82u+zTZ5qgX5vqPFU7USWnEZH8pzK8j6CgIDz66KOYM2cOAMBoNMLf3x8jRozAuHHj8rV/8803cerUKYSFhSnz3nnnHezfvx+7d5v/gLpXamoqXFxckJKSAmdnZ0vKJaJSZjAKzl9Px+Q/T+LQhZvIyjHma/Pzq0EIrs3rxRBVdIX9/raoZ0Sv1yMiIgLjx49X5mm1WoSEhCA8PNzsOu3atcNPP/2EAwcOoE2bNjh//jw2btyIAQMGFPg82dnZyM7ONnkxRFT2rY28grdXRpld9m3/VujWxIcBhIjysSiMJCUlwWAwwNvb22S+t7c3Tp8+bXadfv36ISkpCR06dICIIDc3F8OGDcP7779f4PNMmzYNkydPtqQ0IlJJjsGIP6Ku4p3VR0zmO9tZIyvHiF9fD0bTai4MIURUoBIfKbZjxw5MnToV3377LYKCgnDu3DmMHDkSH3/8MT788EOz64wfPx6jR49WplNTU+Hv71/SpRKRBW6kZ2Pc78ew9WRCvmV/j+6EOl6OKlRFROWRRWHEw8MDVlZWSEgw/fBJSEiAj4+P2XU+/PBDDBgwAK+++ioAoGnTpsjIyMDQoUMxYcIEaLX5D+ixtbWFra2tJaURUSn6YvNpzN0ek29+aGNvzHsxkL0gRGQRi8KITqdDYGAgwsLC8PTTTwO4M4A1LCwMb775ptl1MjMz8wUOKysrAHcugkVE5YfBKHhh/j4ciL2pzKvn7Yi5/VqhrjevnEtERWPxbprRo0dj0KBBaN26Ndq0aYNZs2YhIyMDgwcPBgAMHDgQ1apVw7Rp0wAAPXv2xFdffYWWLVsqu2k+/PBD9OzZUwklRFT2LQuPw8R1J0zm/TO2C/zdHVSqiIgqCovDSN++fXH9+nVMnDgR8fHxaNGiBTZt2qQMar148aJJT8gHH3wAjUaDDz74AFeuXIGnpyd69uyJTz/9tPheBRGVCKNRsD/2Jl6Yv89kvqeTLfaPfwJaLXfHENHDs/g8I2rgeUaISleOwYg3lh82Ozh13ouBeKqJ+TFiRER3K5HzjBBRxabPNeLrsLOYs/1cvmUjn6iLUU/WU6EqIqroGEaICACwcHcsPl5/Mt98jgshopLGMEJUyYXH3Mg3JqRTPU98/XxLuDjYqFQVEVUmDCNEldjKgxfx3m/HTObtfq8LHnFjTwgRlR6GEaJKaM+5JPRfsN9k3uznW6B3i2oqVURElRnDCFElkpSejdaf/J1v/pGJXblLhohUwzBCVAlkZOdidthZ/LDrvMn8Z1tVw4w+zXn6diJSFcMIUQVmNAr6LdiHfedvmsx/7bFaGNetAUMIEZUJDCNEFVB2rgFvr4jCX8fjTebX8qiCHwa25hV1iahMYRghqkBEBEOWHcLfpxJN5jvZWePopK7sCSGiMolhhKiCOB2fiv98uxcZeoMyz0qrwYH3n0BVR1sVKyMiuj+GEaIKwNwVdTe93RENfHgtJyIq+xhGiMopo1Ewb1cMZm09C73BqMx/rVMtjO/WUMXKiIgswzBCVA4dv5KC//tmt8k8J1trrBneDnW8nFSqioioaBhGiMoJEUH4+Rt4afFB6HONJssWDmqNJxp6q1QZEdHDYRghKgf2xiRh8OKDyL4nhEz8v0Z4uUNNlaoiIioeDCNEZVimPhdvr4jClpMJJvNb+LtixdC2sLOxUqkyIqLiwzBCVEYlZ+rx2OfbkZqVq8z7+oWW6NXcT8WqiIiKH8MIURmz68x1TFx3HHE3MpV5jrbW2P1eF7g66FSsjIioZDCMEJURyZl6tP7kb+QaxWT+nH4t8X/N2BtCRBUXwwhRGZCQmoWgqWEm80Ibe+PrF1rC1prjQoioYmMYIVLZV1ui8fW2c8p0p3qeWDL4UV5HhogqDYYRIpUkpmVh4MIDOB2fpsz75OkmeLFtDRWrIiIqfQwjRCo4eTUV3b/+R5nWaoBjH4Wiii3/SxJR5cNPPqJStnhPLCb/eVKZHvpYLYzv1oC7ZYio0mIYISol+87fwPM/7DOZ9+ebHdD0EReVKiIiKhsYRohKmMEomLbxFBbsjjWZ//fox3hROyIiMIwQlai0rBw0/WiLybw3OtfG2KcaqFQREVHZwzBCVEJSbueg+eR/g4iDzgqHPgiBg47/7YiI7sZPRaIScPJqKvov+Hd8yDMtq2Fm3xbqFUREVIYxjBAVs7d+icQfR64q03P7tUKPZr4qVkREVLYxjBAVk+2nEzF4yUGTeWuHt0cLf1d1CiIiKicYRoiKQXjMjXxBJPqTp3hdGSKiQmAYIXpIp66l4qXFB5Tpj3o2wkvta6pYERFR+cIwQvQQvt8Zg2l/nVamf341CO3qeKhYERFR+cMwQlREc7adxZdbzijTS19uwyBCRFQEDCNERfDZptP4bkeMMr393c6o6VFFxYqIiMovhhEiCy3457xJEDn6UVc429moWBERUfnGMEJUSEnp2ejx9T9ISM1W5p3++CnY2fCIGSKih8EwQlQIX4edxVdb/x0fYmejxZFJXXnoLhFRMWAYIXqA3w9fNgkis59vgd4tqqlYERFRxcIwQlSAmxl6vL0yCrvOXFfmHZnUFS72HB9CRFScGEaIzMjIzkW76WHIyjEq8w68/wSDCBFRCWAYITJj7K9HlSDSo6kv5vRrCY1Go3JVREQVE8MI0V3Ss3MRPC0MaVm5AIBhnWpjXLcGKldFRFSxMYwQ/c+lm5no+Pl2ZbpldVcGESKiUqBVuwCisuDUtVT0+Pofk3mrXgtWqRoiosqFPSNU6b285CC2nU5UppcMfhSd63upWBERUeXCMEKVltEoePa7vYi6lKzMm/5sUwYRIqJSxjBCldLC3bH4eP1Jk3nnp3aHVssjZoiIShvDCFUqOQYjgqdtQ1L6v9eXcbazxpFJXXnoLhGRShhGqFLp8uUOkyCy+e3HUN/HScWKiIiIYYQqjfG/H8PlW7cBAAPa1sDHTzdRuSIiIgJ4aC9VEjO2ROOXAxcBADU9qjCIEBGVIQwjVOHN2xmDb7adAwD4u9tj09sdVa6IiIjuxjBCFdq6qCuY/tdpZXr9iI6wtbZSsSIiIrpXkcLI3LlzERAQADs7OwQFBeHAgQP3bZ+cnIzhw4fD19cXtra2qFevHjZu3FikgokK62DcTYxcEaVMH58cyqvuEhGVQRYPYF25ciVGjx6NefPmISgoCLNmzUJoaCiio6Ph5ZX/ZFF6vR5PPvkkvLy88Ouvv6JatWq4cOECXF1di6N+onwy9bl4eclB7Dt/U5m3fkQHONpyvDYRUVmkERGxZIWgoCA8+uijmDNnDgDAaDTC398fI0aMwLhx4/K1nzdvHr744gucPn0aNjZF+1WampoKFxcXpKSkwNnZuUiPQZWDPteIeh/8ZTJv55jOqFG1ikoVERFVXoX9/rZoN41er0dERARCQkL+fQCtFiEhIQgPDze7zh9//IHg4GAMHz4c3t7eaNKkCaZOnQqDwVDg82RnZyM1NdXkRvQgm45fMwki/YOqI3ZadwYRIqIyzqJ+66SkJBgMBnh7e5vM9/b2xunTp82uc/78eWzbtg39+/fHxo0bce7cObzxxhvIycnBpEmTzK4zbdo0TJ482ZLSqJJrPnkLUm7nKNPvd2+AoY/VVrEiIiIqrBI/msZoNMLLyws//PADAgMD0bdvX0yYMAHz5s0rcJ3x48cjJSVFuV26dKmky6Ry6tLNTNSdsNEkiCx6qTWDCBFROWJRz4iHhwesrKyQkJBgMj8hIQE+Pj5m1/H19YWNjQ2srP49nLJhw4aIj4+HXq+HTqfLt46trS1sbW0tKY0qoSvJt9Hx8+3KtL+7PXaN6cJrzBARlTMW9YzodDoEBgYiLCxMmWc0GhEWFobg4GCz67Rv3x7nzp2D0WhU5p05cwa+vr5mgwhRYaTczkH76duU6ZFP1MU/Yx9nECEiKocs3k0zevRozJ8/H0uXLsWpU6fw+uuvIyMjA4MHDwYADBw4EOPHj1fav/7667h58yZGjhyJM2fOYMOGDZg6dSqGDx9efK+CKpVMfS6emLFDmf55SBBGPVlPvYKIiOihWHzihb59++L69euYOHEi4uPj0aJFC2zatEkZ1Hrx4kVotf9mHH9/f2zevBmjRo1Cs2bNUK1aNYwcORLvvfde8b0KqjRSs3LQ7KMtyvSY0PpoV9tDxYqIiOhhWXyeETXwPCMEAAaj4Nnv9uLIpWQAQJ/AR/BFn+bqFkVERAUq7Pc3T0lJ5YKIoM+8f4PI9Geb4vk21dUtioiIigXDCJV5IoLuX+/GqWt3Tn7XrYkPgwgRUQXCMEJlmtEoqPfBX8g13tmb2MLfFd+9GKhyVUREVJxK/KRnRA9j3O9HlSDi5WSL315vp3JFRERU3NgzQmXW0GWHsOXknRPsNX/EBeve7KByRUREVBIYRqjMERG8vOQgtkdfV+atHd5exYqIiKgkMYxQmbLpeDyG/RRhMu/sp914ZlUiogqMY0aozFi4O9YkiDjbWSNmanfYWPFtSkRUkbFnhMqEDUev4eP1J5XptcPbo4W/q3oFERFRqWEYIdVtPZmA4T8fVqbDxz8OXxd7FSsiIqLSxP5vUtW5xHQMWXZImf5rZEcGESKiSoZhhFSTnKlHyFc7lelVrwWjoS+vPUREVNkwjJAqcg1GtPx4qzI9q28LtKnprmJFRESkFo4ZIVXUmfCXcn9Yp9p4umU1FashIiI1sWeESt28nTHK/RpVHTCuWwMVqyEiIrUxjFCpOn4lBdP/Oq1M7xzTRcVqiIioLOBuGio1C3fHmpxLZM+4x1WshoiIygr2jFCpyM41mASRHe92RjVXHsJLRETsGaFS8sSMfw/hPT45FI62fOsREdEd7BmhEvfer0dx+dZtAECr6q4MIkREZIJhhErU/vM3sPLQJQBAXS9H/P5Ge5UrIiKisoZhhErM74cvo+8P+5TpP0d0ULEaIiIqq9hfTiVi5tYzmB12VpleP6ID7GysVKyIiIjKKoYRKnZv/nwY649eU6Z3vNsZAR5VVKyIiIjKMoYRKlaLdseaBJHTHz/FHhEiIrovjhmhYhOfkoUpd51L5NQUBhEiInow9ozQQxMRvL/mGH45cEmZt2XUY7DXMYgQEdGDMYzQQxvxS6TJrpl3nqyHet5OKlZERETlCcMIPZRXlx7E36cSAQAu9jY4MOEJ2FqzR4SIiAqPYYSKbMqfJ5Ug4mhrjSOTuqpcERERlUccwEpFsnz/BSzaE6tMH/uIQYSIiIqGYYQs9vP+i5iw5rgyfXxyKDQajYoVERFRecbdNGSRjOxcvL/mmDJ9YnIoqvDCd0RE9BDYM0KFZjAKGk/arEz/PfoxBhEiInpoDCNUaP0X/HvRuze71EEdLx6+S0RED49hhArllwMXse/8TQDAi22r493Q+ipXREREFQXDCD1QcqYe43+/M07E390enzzdVOWKiIioImEYoQdafeiycv+vkY+pWAkREVVEDCN0X5dvZeLTjacAAKOfrAdHDlglIqJixjBCBbp0MxMdPtuuTA9oW0PFaoiIqKJiGCGzUrNy0PHzf4PIvBdbwa2KTsWKiIioomKfO+VzIz0bj376tzId0tAbTzXxVbEiIiKqyBhGyMSV5NtoP32bMj2+WwO81qm2ihUREVFFxzBCJp6eu0e5/9l/mqLvo9VVrIaIiCoDjhkhxfCfD+N6WjYA4OPejRlEiIioVDCMEADgt4jL2HD0GgCgjpcjBgQHqFsQERFVGgwjhMiLt/DO6iMAAJ21FptGdlS5IiIiqkwYRggDFh5Q7h+Z2BXWVnxbEBFR6eG3TiWWkZ2LlxYfQHp2LgBgyeBHYa+zUrkqIiKqbHg0TSX22o8R2H0uCQDQpb4nOtf3UrkiIiKqjNgzUkkt3RunBJH/a+aLRS89qnJFRERUWTGMVEIZ2bmY9McJZfqbF1pCo9GoWBEREVVmDCOV0Ptrjin3w97pxCBCRESqYhipZA5fvIV1UVcBAC+2rY7ano4qV0RERJUdw0glYjQK3vv1KADAyc4ak3s1UbkiIiIihpFK5ZMNp3A2MR0AsOaN9rDScvcMERGpr0hhZO7cuQgICICdnR2CgoJw4MCBB68EYMWKFdBoNHj66aeL8rT0EJIz9Vi0JxYA0LaWO+p4cfcMERGVDRaHkZUrV2L06NGYNGkSDh8+jObNmyM0NBSJiYn3XS8uLg7vvvsuOnbkqcbVMP2v08r9b/sHqlgJERGRKYvDyFdffYUhQ4Zg8ODBaNSoEebNmwcHBwcsWrSowHUMBgP69++PyZMno1atWg9VMFkuOVOPFQcvAQCeaOAF9yo6lSsiIiL6l0VhRK/XIyIiAiEhIf8+gFaLkJAQhIeHF7jelClT4OXlhVdeeaVQz5OdnY3U1FSTGxXd4CUHlftf9mmuYiVERET5WRRGkpKSYDAY4O3tbTLf29sb8fHxZtfZvXs3Fi5ciPnz5xf6eaZNmwYXFxfl5u/vb0mZdJfo+DREXkwGAIzr1gBu7BUhIqIypkSPpklLS8OAAQMwf/58eHh4FHq98ePHIyUlRbldunSpBKusuIxGQbfZu5Tpl9vXVLEaIiIi8yy6UJ6HhwesrKyQkJBgMj8hIQE+Pj752sfExCAuLg49e/ZU5hmNxjtPbG2N6Oho1K5dO996tra2sLW1taQ0ukdyph4tpmxVptcNbw+dNY/kJiKisseibyedTofAwECEhYUp84xGI8LCwhAcHJyvfYMGDXDs2DFERUUpt169eqFLly6Iiori7pcSknI7xySIdKrnieb+ruoVREREdB8W9YwAwOjRozFo0CC0bt0abdq0waxZs5CRkYHBgwcDAAYOHIhq1aph2rRpsLOzQ5Mmpmf5dHV1BYB886l4ZOUY0HzyFmW6Qx0PLH25jYoVERER3Z/FYaRv3764fv06Jk6ciPj4eLRo0QKbNm1SBrVevHgRWi13B6hBRDBk2SFlukczX8zt10rFioiIiB5MIyKidhEPkpqaChcXF6SkpMDZ2Vntcsqsp+fuQdSlZADAlN6NMTA4QNV6iIiocivs9ze7MCqIE1dTlCDi62LHIEJEROUGw0gFcffp3ve897iKlRAREVmGYaQC2HQ8Hv+cTQIArHotGFpejZeIiMoRhpFy7rbegOE/HwYAdG3kjTY13VWuiIiIyDIMI+Xckr1xMBjvjEGe3LuxytUQERFZjmGkHBMRfL8rBgAw+sl68HWxV7kiIiIiyzGMlGOjVx1BcmYOAODlDrzuDBERlU8MI+XUhRsZWBN5BQDwQpvqcLS1+Px1REREZQLDSDn1w67zAIDq7g6Y9mxTlashIiIqOoaRcig85gaW778IABjXrYHK1RARET0chpFy6I3lEQCAgKoO6NbER+VqiIiIHg7DSDnzypKDuPW/QauTejWGRsMTnBERUfnGMFKOrIu6grDTiQCAR9zs0aW+l8oVERERPTyGkXJk2sZ/rz+z7Z3O6hVCRERUjBhGyomk9GzEp2YBAJa/GgSdNf90RERUMfAbrZz4ad8FAHcGrbav46FyNURERMWHYaQcuJ6WjW+33znte49mvipXQ0REVLwYRsqBj/44Ab3BCAAY8XhdlashIiIqXgwjZdyN9GxsOHYNAPBSuwDY2VipXBEREVHxYhgpw4xGwctLDirTo7vWU7EaIiKiksEwUoZNWHscRy6nAADGPlUfznY2KldERERU/BhGyqhLNzPxy4E715/p2sgbb3Suo3JFREREJYNhpAzKzjWg4+fblemvX2ipYjVEREQli2GkDPom7Jxyf8ngRzlolYiIKjSGkTImPTsXc7bfCSPdm/qgM68/Q0REFRzDSBnz6YZTyv0PejRSsRIiIqLSwTBShqRk5iiDVt/oXBt+rvYqV0RERFTyGEbKkNGropT7b3Th0TNERFQ5MIyUEb9GXEbY6UQAwITuDeFoa61yRURERKWDYaQMyDEY8e7qI8r0oHYB6hVDRERUyhhGyoCle+OU+wcmPAGdNf8sRERUefBbT2WZ+lx88r8jaDrU8YCXk53KFREREZUuhhGVfbPt3xOczezbQr1CiIiIVMIworKF/8QCAPoHVYenk63K1RAREZU+hhEVHbmUDL3BCAAY+1QDlashIiJSB8OIip79bi8AwM/FDi72NipXQ0REpA6GEZVcvpUJg1EAALN5VV4iIqrEGEZU0uGz7cr9RwPcVayEiIhIXQwjKjh+JUW5/3rn2ipWQkREpD6GkVImInh/zTEAQH1vJ7zHgatERFTJMYyUsh/3XcDRy3d6RmY811zlaoiIiNTHMFLKJq47AQBoV7sqmlRzUbkaIiIi9TGMlKLfIi4r9yf1bKxiJURERGUHw0gpuZWhx9SNp5Tp+j5OKlZDRERUdlirXUBl0fLjrcr97e92Vq8QIiKiMoY9I6UgNStHuf9x78ao6VFFxWqIiIjKFoaRUrBkTxwAoJqrPQYEB6haCxERUVnDMFIKNh67BgB4spG3ypUQERGVPQwjJSw6Pg2n49MA8GyrRERE5jCMlLCtJ+MB3Lkyr7ezncrVEBERlT0MIyXs+53nAQAtq7upXAkREVHZxDBSgg7E3kRadi4AYNST9VSuhoiIqGxiGClBm47f2UXTwt8VdbwcVa6GiIiobGIYKSEJqVlYtCcWAPBKh5oqV0NERFR2MYyUkGE/RSj3ezT1VbESIiKiso1hpATczNAj8mIyAODjp5tAq9WoWxAREVEZVqQwMnfuXAQEBMDOzg5BQUE4cOBAgW3nz5+Pjh07ws3NDW5ubggJCblv+4rglaUHlfv92lRXsRIiIqKyz+IwsnLlSowePRqTJk3C4cOH0bx5c4SGhiIxMdFs+x07duCFF17A9u3bER4eDn9/f3Tt2hVXrlx56OLLoqwcA6IuJQMARoXUgxV7RYiIiO5LIyJiyQpBQUF49NFHMWfOHACA0WiEv78/RowYgXHjxj1wfYPBADc3N8yZMwcDBw4s1HOmpqbCxcUFKSkpcHZ2tqTcUrfy4EW899sxuNjbIGrik9BoGEaIiKhyKuz3t0U9I3q9HhEREQgJCfn3AbRahISEIDw8vFCPkZmZiZycHLi7uxfYJjs7G6mpqSa38uK9344BAJpUc2YQISIiKgSLwkhSUhIMBgO8vU0v+Obt7Y34+PhCPcZ7770HPz8/k0Bzr2nTpsHFxUW5+fv7W1Kman45cFG5P7gdD+clIiIqjFI9mmb69OlYsWIF1qxZAzu7gq/TMn78eKSkpCi3S5culWKVRZNrMOL9NXd6RRr7OSOEV+glIiIqFGtLGnt4eMDKygoJCQkm8xMSEuDj43Pfdb/88ktMnz4df//9N5o1a3bftra2trC1tbWkNNX1nLMHeaNvFr30qLrFEBERlSMW9YzodDoEBgYiLCxMmWc0GhEWFobg4OAC1/v888/x8ccfY9OmTWjdunXRqy2jYq6n49S1O+Na6ng58uq8REREFrCoZwQARo8ejUGDBqF169Zo06YNZs2ahYyMDAwePBgAMHDgQFSrVg3Tpk0DAHz22WeYOHEifv75ZwQEBChjSxwdHeHoWDGu1zJ8+WHl/voRHVSshIiIqPyxOIz07dsX169fx8SJExEfH48WLVpg06ZNyqDWixcvQqv9t8Plu+++g16vx3//+1+Tx5k0aRI++uijh6u+DEjJzMHp+DQAwNx+rWBnY6VyRUREROWLxecZUUNZPs/I8OWHseHYNQBA3PQeKldDRERUdpTIeUbIlIgoQaRJtbIVkoiIiMoLhpGH8Pepf0+B/13/QBUrISIiKr8YRh7C9ztjAADN/V3h7+6gcjVERETlE8NIEcUmZeDQhVsAgPdC66tcDRERUfnFMFJEX209AwCo6+WI4NpVVa6GiIio/GIYKQKjUbDnXBIAoHtTX14Qj4iI6CEwjBTB36cScDNDD52VFq905AXxiIiIHgbDSBFsPXnn2jyhTXzgbGejcjVERETlG8OIhUQE26OvAwBCG/PKvERERA+LYcRCRy6nICk9G1ZaDR6r56l2OUREROUew4iFftp3AQDg6WjLXTRERETFgGHEQr9GXAYAvNQ+QN1CiIiIKgiGEQtE/O8kZwDQtRHHixARERUHhhELfB12Vrlfy9NRxUqIiIgqDoYRC9zM0AMAWtdwU7kSIiKiioNhpJCOXErGsSspAIBx3RqoXA0REVHFwTBSSL3n7lHutw5wV7ESIiKiioVhpBBupGcr9yd0b6hiJURERBUPw0ghzN0eo9wf8lgtFSshIiKqeBhGHiDXYMSiPbEAgJoeVVSuhoiIqOJhGHmA8b8fU+7/+EobFSshIiKqmBhG7sNoFGw+EQ8AGBRcA4+4OahcERERUcXDMHIfc7efQ2pWLgBgzFM8nJeIiKgkMIzcx5K9cQCAoJrucLS1VrcYIiKiCophpAAiAmsrDQCgWxMflashIiKquBhGChCdkIaE1DvnF3mm5SMqV0NERFRxMYwUYM3hKwDuXIfGxcFG5WqIiIgqLoaRAsRczwAABPKieERERCWKYcSMrBwDtkcnAgAeb+ClcjVEREQVG8OIGVtPJsBgFLhX0eFRXhSPiIioRDGMmBF2KgEAENrYB1qtRuVqiIiIKjaGETMiLyUDAOp6OapbCBERUSXAMHKPaym3ceFGJgDgKZ5fhIiIqMQxjNzjlwOXAAAt/F3h52qvcjVEREQVH8PIPfLGi/i62KlcCRERUeXAMHKPU9dSAQDV3XmFXiIiotLAMHKXy7cyYZQ79/sFVVe3GCIiokqCYeQuC/6JBQBUc7VHjapVVK6GiIiocmAYuUt6di4AoEk1Z5UrISIiqjwYRu6y+Xg8AOCJht4qV0JERFR5MIz8j9EoSPtfz0gAd9EQERGVGoaR/9kbc0O538LfVb1CiIiIKhmGkf9ZGh4HAGhV3RU6a24WIiKi0sJvXdzZRbPvfz0jLfzdVK6GiIiocrF+2AcwGAzIyckpjloKpNfrUaNGDej1emRlZRX744edSoCzTuCss8LIzjVK5DmIiIgqGhsbG1hZWT3042hERIqyooggPj4eycnJD13EgxiNRly6dAn+/v7Qaou/MyctKwcpt3Oh0dw5xwgREREVjqurK3x8fKDRaPItS01NhYuLC1JSUuDsXPBpM4rcM5IXRLy8vODg4GC2iOJiMBhw+/ZtBAQEFEsCu9fV5NuwzcqBi50NfBhGiIiIHkhEkJmZicTERACAr69vkR+rSGHEYDAoQaRq1apFfnJLng8A7OzsSiSMGLW50Fhr4OrsADs7XbE/PhERUUVkb3/nB3xiYiK8vLyK/B1dpH0eeWNEHBzK/8XkjCLI1N85v4gtj6IhIiKySF4WeJjxow/17VuSu2ZKy229QblvZ1P8vS5EREQVWXFkgUrfFZCVcyeM6Ky1FSJcERERlTeVPoxk/q9nxNH2oY9ypjLqpZdewtNPP33fNjt27IBGoymVo8PKs86dO+Ptt9+usM9HROqotGEkPDwcVlZW6N/nGQCAlfbfXpH7fTEFBARg1qxZJvO2b9+O7t27o2rVqnBwcECjRo3wzjvv4MqVKwU+f0BAADQaDTQaDRwcHNC0aVMsWLAgXzuDwYCZM2eiadOmsLOzg5ubG7p164Y9e/bka6vX6/H555+jefPmcHBwgIeHB9q3b4/Fixffd1+eiOCHH35AUFAQHB0d4erqitatW2PWrFnIzMwscL3yYvbs2ViyZIkyXRJfcK+99hqsrKywevXqYn1cSxUUvMp62Crr9ZUnFy9eRI8ePeDg4AAvLy+MGTMGubm5BbbP2/bmbgcPHgQAREdHo0uXLvD29oadnR1q1aqFDz74wORz5ffff0fr1q3h6uqKKlWqoEWLFvjxxx9Nnqug5/niiy+UNp9++inatWsHBwcHuLq65qt3yZIlBT5O3lEdALB8+XLls9DX1xcvv/wybtz497IfnTt3NvsYPXr0UNokJCTgpZdegp+fHxwcHPDUU0/h7NmzJvXExMTgmWeegaenJ5ydnfHcc88hISHBpM3dn/d5t+nTp5u02bx5M9q2bQsnJyd4enriP//5D+Li4h74d4qPjzf7d50+fTo0Gk2+z7offvgBnTt3hrOzc4H/53r16oXq1avDzs4Ovr6+GDBgAK5evWr2eYpLpQ0jCxcuxIgRIxCxfy8S46+hiq5oPSPff/89QkJC4OPjg99++w0nT57EvHnzkJKSghkzZtx33SlTpuDatWs4fvw4XnzxRQwZMgR//fWXslxE8Pzzz2PKlCkYOXIkTp06hR07dsDf3x+dO3fG2rVrlbZ6vR6hoaGYPn06hg4dir179+LAgQMYPnw4vvnmG5w4caLAOgYMGIC3334bvXv3xvbt2xEVFYUPP/wQ69atw5YtW4q0XfJqKgtcXFzMfqgVl8zMTKxYsQJjx47FokWLHti+rGwXNRgMBhiNRrXLKHZl5W9qMBjQo0cP6PV67N27F0uXLsWSJUswceLEAtdp164drl27ZnJ79dVXUbNmTbRu3RrAnRNbDRw4EFu2bEF0dDRmzZqF+fPnY9KkScrjuLu7Y8KECQgPD8fRo0cxePBgDB48GJs3b1ba3Ps8ixYtgkajwX/+8x+ljV6vR58+ffD666+brbdv3775Hic0NBSdOnWCl5cXAGDPnj0YOHAgXnnlFZw4cQKrV6/GgQMHMGTIEOVxfv/9d5PHOH78OKysrNCnTx8Adz5/n376aZw/fx7r1q1DZGQkatSogZCQEGRkZAAAMjIy0LVrV2g0Gmzbtg179uyBXq9Hz549873P8z7v824jRoxQlsXGxqJ37954/PHHERUVhc2bNyMpKQnPPvtsvtcfHR1t8jh5r/luBw8exPfff49mzZrlW5aZmYmnnnoK77//vtntCwBdunTBqlWrEB0djd9++w0xMTH473//W2D7YiFFcPv2bTl58qTcvn27KKtbLDc3Vw4ePCi5ubnF8nhpaWni6Ogox0+clNCez8iIsR9IrsGoLN++fbsAkFu3buVbt0aNGjJz5kwREbl06ZLodDp5++23zT6PufXNPU4ed3d3GTVqlDK9YsUKASB//PFHvvWfffZZqVq1qqSnp4uIyGeffSZarVYOHz6cr61er1fa3WvlypUCQNauXZtvmdFolOTkZBER6dSpk4wcOdJkee/evWXQoEEmr2nKlCkyYMAAcXJykkGDBklwcLCMHTvWZL3ExESxtraWnTt3iohIVlaWvPPOO+Ln5ycODg7Spk0b2b59u9l6RUTeeecd6dGjhzI9c+ZMASB//fWXMq927doyf/58EREZNGiQ9O7dW7kPwOQWGxur/M3//vtvCQwMFHt7ewkODpbTp08XWEeeJUuWSNu2bSU5OVkcHBzk4sWLJsvznv+TTz4RX19fCQgIEBGRixcvSp8+fcTFxUXc3NykV69eEhsbq6x34MABCQkJkapVq4qzs7M89thjEhERcd9a7n6td7v3PT1p0iRp3ry5LFu2TGrUqCHOzs7St29fSU1NVdZJT0+XAQMGSJUqVcTHx0e+/PLLfO+DB/3tFi9eLC4uLrJu3Tpp2LChWFlZmbxGEZHY2Nh8f5O891WnTp1kxIgRMmbMGHFzcxNvb2+ZNGmSyfq3bt2SV155RTw8PMTJyUm6dOkiUVFR991Oly5dkueff17c3NzEwcFBAgMDZd++fQVuw5EjR0qnTp2U6U6dOsnw4cNl5MiRUrVqVencubO88MIL8txzz5msp9frpWrVqrJ06VIRETEYDDJ16lQJCAgQOzs7adasmaxevfq+tVpi48aNotVqJT4+Xpn33XffibOzs2RnZxfqMfR6vXh6esqUKVPu227UqFHSoUOH+7Zp2bKlfPDBBwUu7927tzz++ONml+W9dx4kMTFRbGxsZNmyZcq8L774QmrVqmXS7uuvv5Zq1aoV+DgzZ84UJycn5bMyOjpaAMjx48eVNgaDQTw9PZXPls2bN4tWq5WUlBSlTXJysmg0Gtm6dasyz9zn/d1Wr14t1tbWYjAYlHl//PGHaDQa0ev1InL/76W7paWlSd26dWXr1q1mP7fzFPbxRETWrVtnUsu97pcJUlJSBIDJNjKn2HpG5H+HyJbULSu34McXC08iu2rVKjRo0AD+Neugx7PPYe2q5dAWYezq6tWrodfrMXbsWLPLC/tr3Gg04rfffsOtW7eg0/17npOff/4Z9erVQ8+ePfOt88477+DGjRvYunUrgDtdkiEhIWjZsmW+tjY2NqhSpYrZ516+fDnq16+P3r1751um0Wjg4uJSqNeQ58svv0Tz5s0RGRmJDz/8EP3798eKFStM/kYrV66En58fOnbsCAB48803ER4ejhUrVuDo0aPo06eP2e7QPJ06dcLu3buV88/s3LkTHh4e2LFjBwDgypUriImJQefOnfOtO3v2bAQHB2PIkCHKLwt/f39l+YQJEzBjxgwcOnQI1tbWePnllx/4mhcuXIgXX3wRLi4u6Natm8kuoTxhYWGIjo7G1q1bsX79euTk5CA0NBROTk74559/sGfPHjg6OuKpp55SfmWnpaVh0KBB2L17N/bt24e6deuie/fuSEtLe2BNhRETE4O1a9di/fr1WL9+PXbu3GnSdTxmzBjs3LlT6SHbsWMHDh8+bPIYhfnbZWZm4rPPPsOCBQtw4sSJfL/k/P398dtvvwH491ff7NmzleVLly5FlSpVsH//fnz++eeYMmWK8r4HgD59+iAxMRF//fUXIiIi0KpVKzzxxBO4efOm2dednp6OTp064cqVK/jjjz9w5MgRjB071uIem6VLl0Kn02HPnj2YN28e+vfvjz///BPp6elKm82bNyMzMxPPPHNnd/C0adOwbNkyzJs3DydOnMCoUaPw4osvYufOnQU+z7Bhw+Do6HjfW57w8HA0bdoU3t7eyrzQ0FCkpqbet3f0bn/88Qdu3LiBwYMHF9jm3Llz2LRpEzp16mR2uYgo7/nHHnvMbJuEhARs2LABr7zySqHqKsiyZcvg4OBg8ss9ODgYly5dwsaNGyEiSEhIwK+//oru3bsX+DgLFy7E888/r3xWZmdnA7hzfqs8Wq0Wtra22L17t9JGo9HA1tZWaWNnZwetVqu0yTN9+nRUrVoVLVu2xBdffGGy6ywwMBBarRaLFy+GwWBASkoKfvzxR4SEhMDGxsbkcVq0aAFfX188+eSTZnfXDx8+HD169EBISMgDt11h3Lx5E8uXL0e7du3y1VKsHhiJzFiwYIFs2bJFDh06JCdPnpT09HTJyM6RGu+tV+WWkZ1jUf3t2rWTWbNmydXkTImIvS5u7lVNfs0Vtmfk9ddfF2dn56JsQqlRo4bodDqpUqWKWFtbCwBxd3eXs2fPKm0aNGhg9leuiMjNmzcFgHz22WciImJvby9vvfWWxXU0bNhQevXq9cB2he0Zefrpp03a5PWC7Nq1S5kXHBws7733noiIXLhwQaysrOTKlSsm6z3xxBMyfvx4s7XcunVLtFqtHDx4UIxGo7i7u8u0adMkKChIRER++uknk19A9/7SNfda7u4ZybNhwwYBcN8ewDNnzoiNjY1cv35dRETWrFkjNWvWFKPx3562QYMGibe3t8kv0x9//FHq169v0i47O1vs7e1l8+bNZp/LYDCIk5OT/PnnnwXWY0nPiIODg0lPyJgxY5RtmJaWJjqdTlatWqUsv3Hjhtjb2yvbrjB/u8WLFwuAB/ZUFPR/rlOnTvl+fT/66KPK++eff/4RZ2dnycrKMmlTu3Zt+f77780+1/fffy9OTk5y48YNs8sL2zPSsmVLkzY5OTni4eFh8gv9hRdekL59+4rInV4kBwcH2bt3r8l6r7zyirzwwgtmaxERSUhIkLNnz973lmfIkCHStWtXk/UzMjIEgGzcuLHA57hbt27dpFu3bmaXBQcHi62trQCQoUOHmvySF7nTK5D3mWZraysLFy4s8Hk+++wzcXNzK/D/V2F7Rho2bCivv/56vvmrVq0SR0dH5fO1Z8+eBf6y379/vwCQ/fv3K/P0er1Ur15d+vTpIzdv3pTs7GyZPn26AFC2cWJiojg7O8vIkSMlIyND0tPT5c0331S2T54ZM2bI9u3b5ciRI/Ldd9+Jq6urSS+4iMiOHTvEy8tLrKysBIAEBweb/H84ffq0zJs3Tw4dOiR79uyRwYMHi7W1tUlv6S+//CJNmjRRtunD9IyMHTtWHBwcBIC0bdtWkpKSzLYTUalnZOXKlfjss8/g6uqK2rVrw97eHmfOnCnxi+UVl+joaBw4cAAvvPACcg0Ca2tr/N/T/8HChQstfiwReajDgceMGYOoqChs27YNQUFBmDlzJurUqZPvOQpbS1EUdb2C5O1jzuPp6YmuXbti+fLlAO7sGw0PD0f//v0BAMeOHYPBYEC9evVMfunt3LkTMTExZp/D1dUVzZs3x44dO3Ds2DHodDoMHToUkZGRSE9Px86dOwv8xfYgd+9jzTu18d2D4u61aNEihIaGwsPDAwDQvXt3pKSkYNu2bSbtmjZtatLrdeTIEZw7dw5OTk7Ka3Z3d0dWVpbyuhMSEjBkyBDUrVsXLi4ucHZ2Rnp6Oi5evFik13avgIAAODk5mbzevNcaExMDvV6PoKAgZbm7uzvq16+vTBf2b6fT6czuuy6se9e9u84jR44gPT0dVatWNakhNja2wPdPVFQUWrZsCXd39yLXBNz5NXs3a2trPPfcc8p7PSMjA+vWrVPe6+fOnUNmZiaefPJJk1qXLVtWYK0A4OXlhTp16tz3VlwuX76MzZs3F9hbsXLlShw+fBg///wzNmzYgC+//NJkuZOTE6KionDw4EF8+umnGD16tNJjea9Fixahf//+Jj0PlgoPD8epU6fy1Xvy5EmMHDkSEydOREREBDZt2oS4uDgMGzbM7OMsXLgQTZs2RZs2bZR5NjY2+P3333HmzBm4u7vDwcEB27dvR7du3ZRrpHl6emL16tX4888/4ejoCBcXFyQnJ6NVq1Ym11EbPXo0OnfujGbNmmHYsGGYMWMGvvnmG6X3JT4+HkOGDMGgQYNw8OBB7Ny5EzqdDv/973+Vz+j69evjtddeQ2BgINq1a4dFixahXbt2mDlzJgDg0qVLGDlyJJYvX/5Q2zTPmDFjEBkZiS1btsDKygoDBw4s9u+Lu1k8avOrr75Cnz594OjoCDs7O9SoUQMpKSnISLmFk1NC87U/fz4WRqMRderUVuZFn46GvYMDqlf3z9feHIPBgCNHjqJ582ZmTzVrb8HJyhYuXIjc3Fz4+fkp80QEtra2mDNnjvKhDwApKSn5drUkJycruy7q1auHlJQUXLt2rUjn5Pfw8FA+TFavXo2mTZuidevWaNSokfL4p06dMrtu3vx69eop/54+fdriGgq7nlarzfdGNBdAze0O6t+/P9566y188803+Pnnn9G0aVM0bdoUwJ0ucysrK0REROT7297d/Xyvzp07Y8eOHbC1tUWnTp3g7u6Ohg0bYvfu3di5cyfeeeedB74mc+7uhswLmgV13xsMBixduhTx8fGwtrY2mb9o0SI88cQTyrx7t0t6ejoCAwOVL667eXp6AgAGDRqEGzduYPbs2ahRowZsbW0RHBx838GSzs7OuHDhQr75ycnJsLKyMqnj3i5XjUZj0a6Kwv7t7O3tHyq036/O9PR0+Pr6mv3CK2g3ad7pqwvysO/1Tp06ITExEVu3boW9vT2eeuoppVYA2LBhA6pVq2ay3t3d/PcaNmwYfvrpp/vWnPfYPj4+OHDggMmyvCM7fHx87vsYALB48WJUrVoVvXr1Mrs8b5dmo0aNYDAYMHToULzzzjvK31+r1SrhqEWLFjh16hSmTZuWb5fpP//8g+joaKxcufKBNd3PggUL0KJFi3zBcNq0aWjfvj3GjBkD4E6grVKlCjp27IhPPvnE5PM6IyMDK1aswJQpU/I9fmBgIKKiopCSkgK9Xg9PT08EBQWZ/Ojq2rUrYmJikJSUBGtra+WicbVq1Sqw7qCgIOTm5iIuLg7169fH3Llz4eLigs8//1xp89NPP8Hf3x/79+9H27ZtzT5OmzZtlN1BERERSExMRKtWrZTlBoMBu3btwpw5c5CdnW3Rqdo9PDzg4eGBevXqoWHDhvD398e+ffsQHBxc6MewhEU9I3q9HhERESbFaDQaODs7IzMzEw4663w3o/42vKu6mszzquoKQ7b59g46a9hZa2FrpTG52VlrCmxf2A+63NxcLFu2DDNmzEBUVBTWb9+LlZt2YVf4Qfj5+eGXX34BANStWxdarRYREREm658/fx4pKSlKAPjvf/8LnU5n8ga6myWHKfr7+6Nv374YP368Mu/555/H2bNn8eeff+ZrP2PGDFStWhVPPvkkAKBfv374+++/ERkZma9tTk6OMvr7Xv369cOZM2ewbt26fMtEBCkpKQDufEFeu3ZNWWYwGHD8+PFCvbbevXsjKysLmzZtws8//6z8UgSAli1bwmAwIDExMd+vvft9eOaNGwkLC1M+6Dp37oxffvkFZ86cMTteJI9Op1PGmzyMjRs3Ii0tDZGRkYiKilJuv/zyC37//ff7/v1btWqFs2fPmv3Vmxd29+zZg7feegvdu3dH48aNYWtri6SkpPvWVL9+fZw4cUL5xZXn8OHDqFmzZqH3+dauXRs2NjbYv3+/Mu/WrVs4c+aMMl3Uv505eb1Glv5dWrVqpYTBe2vI6626V7NmzRAVFVXgmJJ73+vAnd6UwmjXrh38/f2xcuVKLF++HH369FG2eaNGjWBra4uLFy/mq/XucUv3mjJlisn7y9wtT3BwMI4dO2bSm7d161Y4OzsrP3IKIiJYvHgxBg4cWKj3idFoRE5Ozn0DrNFozPdeBO78KAwMDETz5s0f+DwFSU9Px6pVq8z24mRmZua7wnveF/G9QXP16tXIzs7Giy++WOBzubi4wNPTE2fPnsWhQ4fMjrHz8PCAq6srtm3bhsTExAIDHXDn/aTVapXxU/er937bNyoqSglWTzzxBI4dO2byvmjdujX69++PqKioh7quW14N5v6Wxea+O3HuceXKFQEge/fuNdk/dOnSJTl58qTZdQ4dOpRvX1NCQoJERkbe93kOHjyY7/awR9OsWbNGdDqdcoTI2YQ0OXLpliRn6mXs2LHSunVrpe3QoUMlICBA1q1bJ+fPn5edO3dK27ZtpW3btib7+efOnSsajUZefvll2bFjh8TFxcnu3btl6NChMnr06AJrMTe6+sSJE6LRaOTgwYMicudolmeeeUbc3NxkwYIFEhsbK0eOHJGhQ4eKtbW1rFmzRlk3KytLOnbsKG5ubjJnzhyJioqSmJgYWblypbRq1arA7W00GqVv375ib28vn376qRw8eFDi4uLkzz//lMcff1x5jnnz5omDg4OsX79eTp06JUOGDBFnZ+d8Y0YKGjHev39/ad68uWg0Grlw4UK+ZQEBAfLbb7/J+fPnZf/+/TJ16lRZv359gdvv5s2botVqxcrKSk6dOiUid/6+VlZW4uvra9L23jEAQ4YMkUcffVRiY2Pl+vXrYjAYzO4/jYyMVI62Mad3797KeIC7GQwG8fHxkTlz5ph9fpE7+/Hr1q0rnTt3ll27dsn58+dl+/btMmLECLl06ZKI3DkS4cknn5STJ0/Kvn37pGPHjmJvb3/fUfm3bt0SLy8vee655+TQoUNy9uxZWbhwoTg5Ocl3332ntMs7muZuM2fOlBo1aijTw4YNkxo1akhYWJgcO3ZMevXqJY6Ojib7oB/0tyvsfv/Lly+LRqORJUuWSGJioqSlpYnIg8cqGY1G6dChgzRv3lw2b94ssbGxsmfPHnn//feV/0f3ys7Olnr16knHjh1l9+7dEhMTI7/++qsylmPTpk2i0Whk6dKlcubMGZk4caI4OzvnGzNS0L74CRMmSKNGjcTa2lr++eeffMuqVq0qS5YskXPnzklERIR8/fXXsmTJkgduo8LIzc2VJk2aSNeuXSUqKko2bdoknp6eJuOv9u/fL/Xr15fLly+brPv3338LAOX/091++uknWblypZw8eVL5XPHz85P+/fsrbaZOnSpbtmyRmJgYOXnypHz55ZdibW2tHHmSJyUlRRwcHEzej3e7cOGCREZGyuTJk8XR0VEiIyMlMjJSeU/kWbBggdjZ2Zkd87B48WKxtraWb7/9VmJiYmT37t3SunVradOmTb62HTp0MPv/WOTOuJPt27dLTEyMrF27VmrUqCHPPvusSZtFixZJeHi4nDt3Tn788Udxd3c3+ezfu3evzJw5U/lM/umnn8TT01MGDhyotAkLCxONRiOTJ0+WM2fOSEREhISGhkqNGjUkMzNTRO78/1y7dq2cPXtWjh07JiNHjhStVmsyzu1e5t6n165dk8jISJk/f74AkF27dklkZKQyhmrfvn3yzTffSGRkpMTFxUlYWJi0a9dOateunW9sVp7iGDNSJsOIwWCQ3Nxc5ZadnV0sYeT//u//pHv37sr0jfQsuZqcKVn6XGUA05EjR0TkzsadNGmSNGjQQOzt7aVmzZoydOhQZaDi3bZu3SqhoaHi5uYmdnZ20qBBA3n33Xfl6tWrBdZS0Bd3aGioyeCxnJwc+eKLL6Rx48ai0+nE2dlZQkNDZffu3fnWzcrKkmnTpknTpk3Fzs5O3N3dpX379rJkyRLJySl4kK/BYJDvvvtOHn30UXFwcBBnZ2cJDAyU2bNnK/8R9Hq9vP766+Lu7i5eXl4ybdo0swNYC/qi3LhxowCQxx57LN8yvV4vEydOlICAALGxsRFfX1955pln5OjRowXWLCLSvHlz8fHxUaZv3LghGo1Gnn/+eZN294aB6Ohoadu2rdjb2+c7tLewYSQ+Pl6sra1NBnje7fXXX1cGOBY0qPTatWsycOBA8fDwEFtbW6lVq5YMGTJE+U97+PBhad26tdjZ2UndunVl9erVDzxEMO/1PfPMM+Ln5ydVqlSR5s2by/z5801CdGHCSFpamrz44ovi4OAg3t7e8vnnn+f7cHvQ366wYUREZMqUKeLj4yMajcbk0N4HDZxOTU2VESNGiJ+fn9jY2Ii/v7/0798/3yHWd4uLi5P//Oc/4uzsLA4ODtK6dWuTwYsTJ04Ub29vcXFxkVGjRsmbb75Z6DBy8uRJASA1atQw2eYid8LTrFmzpH79+mJjYyOenp4SGhqqHOZeHOLi4qRbt25ib28vHh4e8s4775j8/897r9/7vn7hhRekXbt2Zh9zxYoV0qpVK3F0dJQqVapIo0aNZOrUqSZfPhMmTJA6deqInZ2duLm5SXBwsKxYsSLfY33//fdib2+v/Ci8l7nD7wHkO9w/ODhY+vXrV+B2+Prrr6VRo0Zib28vvr6+0r9//3wB7PTp0wJAtmzZYvYxZs+eLY888ojY2NhI9erV5YMPPsh3iPR7770n3t7eYmNjI3Xr1pUZM2aY/N0jIiIkKChIXFxcxM7OTho2bChTp07N98X+yy+/SMuWLaVKlSri6ekpvXr1MgmGn332mdSuXVv5bO/cubNs27atwNcvYv59OmnSJLPbd/HixSIicvToUenSpYu4u7uLra2tBAQEyLBhw/Jtu7sVRxjRiBR+RIper4eDgwPWrl2L2rVro2bNmrCzs0NsbCwMBoPZgVRHjx6Ft7e3yaFmV65cQXJyMho3blyo5zUYDIiMjETLli0fqquJiIiIildWVhZiY2OVTHC31NRUuLi4ICUlRRmPaY5FY0Z0Oh0CAwOxb98+ZZ6IIDU1tcDzWFSpUgWpqan5irvf4EQiIiKqPCw+tHf06NFYtWoV0tPTkZWVhYsXL8JoNCqDxWJjY3H58mWlvbe3N1JTUxEfH4/bt2/j6tWryMzMNHsKWyIiIqp8LD60t2/fvkhLS0NycjJiYmLg4OCAunXrKqOv7z3s0NHRETVr1sTVq1dx5coV2NnZoU6dOg88vI6IiIgqhyJdHe7FF18scP/Q3SdFyuPu7v7QJxgiIiKiiqnSXrWXiIiIyoaHCiMV8VLgREREVHjFkQWKtJtGp9NBq9Xi6tWr8PT0hE6ne6jTPT9I3lkZs7KyeGgvERFRGSAi0Ov1uH79OrRarcn1tyxVpDCi1WpRs2ZNXLt2DVevXi3ykxeW0WhEUlIS4uLi8p0yl4iIiNTj4OCA6tWrP9T3c5HCCHCnd6R69erIzc0tlut83E96ejp69OiBQ4cO8fwkREREZYSVlRWsrQt/jbiCFDmMAHcukmdjY1Poi28VlV6vx4ULF6DT6Yrl0shERERUdnCfBxEREamKYYSIiIhUxTBCREREqnqoMSOlJe/CwvdecI+IiIjKrrzv7bzv8YKUizCSlpYGAPD391e5EiIiIrJUWloaXFxcClyukQfFlTLAaDTi6tWrcHJyKtaTq6WmpsLf3x+XLl2Cs7NzsT0umeJ2Lj3c1qWD27l0cDuXjpLcziKCtLQ0+Pn53fc8JOWiZ0Sr1eKRRx4pscd3dnbmG70UcDuXHm7r0sHtXDq4nUtHSW3n+/WI5OEAViIiIlIVwwgRERGpqlKHEVtbW0yaNAm2trZql1KhcTuXHm7r0sHtXDq4nUtHWdjO5WIAKxEREVVclbpnhIiIiNTHMEJERESqYhghIiIiVTGMEBERkaoqfBiZO3cuAgICYGdnh6CgIBw4cOC+7VevXo0GDRrAzs4OTZs2xcaNG0up0vLNku08f/58dOzYEW5ubnBzc0NISMgD/y70L0vf03lWrFgBjUaDp59+umQLrCAs3c7JyckYPnw4fH19YWtri3r16vHzoxAs3c6zZs1C/fr1YW9vD39/f4waNQpZWVmlVG35tGvXLvTs2RN+fn7QaDRYu3btA9fZsWMHWrVqBVtbW9SpUwdLliwp2SKlAluxYoXodDpZtGiRnDhxQoYMGSKurq6SkJBgtv2ePXvEyspKPv/8czl58qR88MEHYmNjI8eOHSvlyssXS7dzv379ZO7cuRIZGSmnTp2Sl156SVxcXOTy5culXHn5Y+m2zhMbGyvVqlWTjh07Su/evUun2HLM0u2cnZ0trVu3lu7du8vu3bslNjZWduzYIVFRUaVcefli6XZevny52NrayvLlyyU2NlY2b94svr6+MmrUqFKuvHzZuHGjTJgwQX7//XcBIGvWrLlv+/Pnz4uDg4OMHj1aTp48Kd98841YWVnJpk2bSqzGCh1G2rRpI8OHD1emDQaD+Pn5ybRp08y2f+6556RHjx4m84KCguS1114r0TrLO0u3871yc3PFyclJli5dWlIlVhhF2da5ubnSrl07WbBggQwaNIhhpBAs3c7fffed1KpVS/R6fWmVWCFYup2HDx8ujz/+uMm80aNHS/v27Uu0zoqkMGFk7Nix0rhxY5N5ffv2ldDQ0BKrq8LuptHr9YiIiEBISIgyT6vVIiQkBOHh4WbXCQ8PN2kPAKGhoQW2p6Jt53tlZmYiJycH7u7uJVVmhVDUbT1lyhR4eXnhlVdeKY0yy72ibOc//vgDwcHBGD58OLy9vdGkSRNMnToVBoOhtMoud4qyndu1a4eIiAhlV8758+exceNGdO/evVRqrizU+C4sFxfKK4qkpCQYDAZ4e3ubzPf29sbp06fNrhMfH2+2fXx8fInVWd4VZTvf67333oOfn1++Nz+ZKsq23r17NxYuXIioqKhSqLBiKMp2Pn/+PLZt24b+/ftj48aNOHfuHN544w3k5ORg0qRJpVF2uVOU7dyvXz8kJSWhQ4cOEBHk5uZi2LBheP/990uj5EqjoO/C1NRU3L59G/b29sX+nBW2Z4TKh+nTp2PFihVYs2YN7Ozs1C6nQklLS8OAAQMwf/58eHh4qF1OhWY0GuHl5YUffvgBgYGB6Nu3LyZMmIB58+apXVqFsmPHDkydOhXffvstDh8+jN9//x0bNmzAxx9/rHZp9JAqbM+Ih4cHrKyskJCQYDI/ISEBPj4+Ztfx8fGxqD0VbTvn+fLLLzF9+nT8/fffaNasWUmWWSFYuq1jYmIQFxeHnj17KvOMRiMAwNraGtHR0ahdu3bJFl0OFeU97evrCxsbG1hZWSnzGjZsiPj4eOj1euh0uhKtuTwqynb+8MMPMWDAALz66qsAgKZNmyIjIwNDhw7FhAkToNXy93VxKOi70NnZuUR6RYAK3DOi0+kQGBiIsLAwZZ7RaERYWBiCg4PNrhMcHGzSHgC2bt1aYHsq2nYGgM8//xwff/wxNm3ahNatW5dGqeWepdu6QYMGOHbsGKKiopRbr1690KVLF0RFRcHf3780yy83ivKebt++Pc6dO6eEPQA4c+YMfH19GUQKUJTtnJmZmS9w5AVA4WXWio0q34UlNjS2DFixYoXY2trKkiVL5OTJkzJ06FBxdXWV+Ph4EREZMGCAjBs3Tmm/Z88esba2li+//FJOnTolkyZN4qG9hWDpdp4+fbrodDr59ddf5dq1a8otLS1NrZdQbli6re/Fo2kKx9LtfPHiRXFycpI333xToqOjZf369eLl5SWffPKJWi+hXLB0O0+aNEmcnJzkl19+kfPnz8uWLVukdu3a8txzz6n1EsqFtLQ0iYyMlMjISAEgX331lURGRsqFCxdERGTcuHEyYMAApX3eob1jxoyRU6dOydy5c3lo78P65ptvpHr16qLT6aRNmzayb98+ZVmnTp1k0KBBJu1XrVol9erVE51OJ40bN5YNGzaUcsXlkyXbuUaNGgIg323SpEmlX3g5ZOl7+m4MI4Vn6Xbeu3evBAUFia2trdSqVUs+/fRTyc3NLeWqyx9LtnNOTo589NFHUrt2bbGzsxN/f39544035NatW6VfeDmyfft2s5+5edt20KBB0qlTp3zrtGjRQnQ6ndSqVUsWL15cojVqRNi3RUREROqpsGNGiIiIqHxgGCEiIiJVMYwQERGRqhhGiIiISFUMI0RERKQqhhEiIiJSFcMIERERqYphhIiIiFTFMEJERESqYhghIiIiVTGMEBERkaoYRoiIiEhV/w8MatRJqBq6bgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Logistic: f1=0.253 auc=0.210\n" - ] - }, - { - "data": { - "image/png": "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rVy5UklJScrLy5MkNWjQQA0aNPDa5wBQS1EJvnd39DPs1ULoAfyK18PNsGHDdPToUU2fPl15eXnq3LmzNm3aVDnJeP/+/QoJObscz/PPP6+SkhL9/ve/r7Kf9PR0ZWRkeLJ0AK5gLzgsu1n6fotHS7GrpgBG8AF8jtfXufE01rkB/Jwvr8lD0AHchntL1aC2B8dqtaq0tNSDlcGe0NBQmc1mb5cBX+ZLp7bsIfgAdeI3i/j5IsMwlJeXpxMnTni7FJwjOjpacXFxMplM3i4FvuhMcPDlkMNChIDHEG7OcybYxMTEqH79+nyZeplhGCoqKqq811h8fLyXK4JPszU64suBR7J95RijPECdEG7OYbVaK4PNxRdf7O1y8D8RERGSpCNHjigmJoZTVHCMvaBQcEg6vldafqNn66kNJjADdUK4OceZOTb169f3ciU435k/k9LSUsINXCMqofpl6efy1REfFicELohwYwOnonwPfybwuJoCg68FH9bnAaog3ACAo3x1EcLzsSIzghThBi7Rr18/de7cWVlZWTZfHzNmjE6cOKF169bZ7J+UlKSJEydq4sSJHqkXcJmaAsKMGKm82HO1OKo2wYwABD9EuAkQY8aM0fLly5WZmanJkydXtq9bt05Dhw5VXZYzslqtevLJJ7Vs2TL98MMPioiI0OWXX65x48bpzjvvrNU+nnnmmTrVAPil6Udst/vyQoTnsxeAwiKlRw94thaglgg3ASQ8PFxz587V3XffrUaNGrlsv48//rheeOEFLVy4UN27d1dhYaH+85//6Oeff671PqKifHjoHvC0gXMqHufy5dNbtpQUMrkZPotwU0tFJWV2XwsxmRQeanZp3/phjv/RpKam6ttvv1VmZqbmzZtnt9+bb76p6dOn69tvv1V8fLzuu+8+/fnPf7bbf/369br33nt1yy23VLZ16tSpxlo2bNig4cOHa/HixRoxYkS101IAzuNPE5hrwuRm+ADCTS21n/6O3deubtNUr47tWfm828zN+rXUarNvcovGWn13SuXz38z9QMdPlVTr9/2cGxyu0Ww2a/bs2Ro+fLjuv/9+NW/evFqfnJwc3XrrrcrIyNCwYcP08ccf695779XFF1+sMWPG2NxvXFyc3n//fd17771q2rTpBetYuXKl7rnnHq1cuVI33uiDa4gA/sZWMJiVIJX+4vlanMUo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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "+------------------+---------------------+---------------------+\n", - "| Confusion Matrix | Positive prediction | Negative prediction |\n", - "+------------------+---------------------+---------------------+\n", - "| Positive class | True positive (TP) | False negative (FN) |\n", - "| Negative class | False positive (FP) | True negative (TN) |\n", - "+------------------+---------------------+---------------------+\n", - "+------------------+---------------------+---------------------+\n", - "| Confusion Matrix | Positive prediction | Negative prediction |\n", - "+------------------+---------------------+---------------------+\n", - "| Positive class | 1222 | 3662 |\n", - "| Negative class | 3544 | 53075 |\n", - "+------------------+---------------------+---------------------+\n", - "ROC AUC: 0.5938054606390324\n", - "Accuracy = 0.8828349836593337\n", - "Precision = 0.2563994964330676\n", - "Recall = 0.2502047502047502\n", - "F1 Score = 0.2532642487046632\n", - "Fbeta Score = (0.59, 0.88, 0.88)\n", - " model tn fp fn tp FP+10*FN accuracy ROC_AUC precision \\\n", - "0 RFC 53075 3544 3662 1222 40164 0.882835 0.593805 0.256399 \n", - "\n", - " recall F1_Score Fbeta_macro Fbeta_micro Fbeta_weighted \n", - "0 0.250205 0.253264 0.59 0.88 0.88 \n" - ] - } - ], + "outputs": [], "source": [ "result_smote = generate_model_report(RFC_model_smote, \"RFC\", X_test, Y_test)" ] @@ -711,1274 +668,34 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "ef859590", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/joblib/externals/loky/process_executor.py:700: UserWarning: A worker stopped while some jobs were given to the executor. This can be caused by a too short worker timeout or by a memory leak.\n", - " warnings.warn(\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n", - "/Users/markobriesemann/opt/anaconda3/lib/python3.8/site-packages/sklearn/base.py:1152: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - " return fit_method(estimator, *args, **kwargs)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Best Hyperparameters: {'max_depth': None, 'min_samples_leaf': 1, 'min_samples_split': 2, 'n_estimators': 50}\n", - "Accuracy on Test Set: 0.920556720810367\n" - ] - } - ], + "outputs": [], "source": [ "RFC_model, best_params = RFC_model(X_train, Y_train)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "829aa82b", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['NAME_CONTRACT_TYPE',\n", - " 'FLAG_OWN_CAR',\n", - " 'FLAG_OWN_REALTY',\n", - " 'CNT_CHILDREN',\n", - " 'AMT_INCOME_TOTAL',\n", - " 'AMT_CREDIT',\n", - " 'AMT_ANNUITY',\n", - " 'AMT_GOODS_PRICE',\n", - " 'REGION_POPULATION_RELATIVE',\n", - " 'DAYS_BIRTH',\n", - " 'DAYS_EMPLOYED',\n", - " 'DAYS_REGISTRATION',\n", - " 'DAYS_ID_PUBLISH',\n", - " 'OWN_CAR_AGE',\n", - " 'FLAG_MOBIL',\n", - " 'FLAG_EMP_PHONE',\n", - " 'FLAG_WORK_PHONE',\n", - " 'FLAG_CONT_MOBILE',\n", - " 'FLAG_PHONE',\n", - " 'FLAG_EMAIL',\n", - " 'CNT_FAM_MEMBERS',\n", - " 'REGION_RATING_CLIENT',\n", - " 'REGION_RATING_CLIENT_W_CITY',\n", - " 'HOUR_APPR_PROCESS_START',\n", - " 'REG_REGION_NOT_LIVE_REGION',\n", - " 'REG_REGION_NOT_WORK_REGION',\n", - " 'LIVE_REGION_NOT_WORK_REGION',\n", - " 'REG_CITY_NOT_LIVE_CITY',\n", - " 'REG_CITY_NOT_WORK_CITY',\n", - " 'LIVE_CITY_NOT_WORK_CITY',\n", - " 'EXT_SOURCE_1',\n", - " 'EXT_SOURCE_2',\n", - " 'EXT_SOURCE_3',\n", - " 'APARTMENTS_AVG',\n", - " 'BASEMENTAREA_AVG',\n", - " 'YEARS_BEGINEXPLUATATION_AVG',\n", - " 'YEARS_BUILD_AVG',\n", - " 'COMMONAREA_AVG',\n", - " 'ELEVATORS_AVG',\n", - " 'ENTRANCES_AVG',\n", - " 'FLOORSMAX_AVG',\n", - " 'FLOORSMIN_AVG',\n", - " 'LANDAREA_AVG',\n", - " 'LIVINGAPARTMENTS_AVG',\n", - " 'LIVINGAREA_AVG',\n", - " 'NONLIVINGAPARTMENTS_AVG',\n", - " 'NONLIVINGAREA_AVG',\n", - " 'APARTMENTS_MODE',\n", - " 'BASEMENTAREA_MODE',\n", - " 'YEARS_BEGINEXPLUATATION_MODE',\n", - " 'YEARS_BUILD_MODE',\n", - " 'COMMONAREA_MODE',\n", - " 'ELEVATORS_MODE',\n", - " 'ENTRANCES_MODE',\n", - " 'FLOORSMAX_MODE',\n", - " 'FLOORSMIN_MODE',\n", - " 'LANDAREA_MODE',\n", - " 'LIVINGAPARTMENTS_MODE',\n", - " 'LIVINGAREA_MODE',\n", - " 'NONLIVINGAPARTMENTS_MODE',\n", - " 'NONLIVINGAREA_MODE',\n", - " 'APARTMENTS_MEDI',\n", - " 'BASEMENTAREA_MEDI',\n", - " 'YEARS_BEGINEXPLUATATION_MEDI',\n", - " 'YEARS_BUILD_MEDI',\n", - " 'COMMONAREA_MEDI',\n", - " 'ELEVATORS_MEDI',\n", - " 'ENTRANCES_MEDI',\n", - " 'FLOORSMAX_MEDI',\n", - " 'FLOORSMIN_MEDI',\n", - " 'LANDAREA_MEDI',\n", - " 'LIVINGAPARTMENTS_MEDI',\n", - " 'LIVINGAREA_MEDI',\n", - " 'NONLIVINGAPARTMENTS_MEDI',\n", - " 'NONLIVINGAREA_MEDI',\n", - " 'TOTALAREA_MODE',\n", - " 'OBS_30_CNT_SOCIAL_CIRCLE',\n", - " 'DEF_30_CNT_SOCIAL_CIRCLE',\n", - " 'OBS_60_CNT_SOCIAL_CIRCLE',\n", - " 'DEF_60_CNT_SOCIAL_CIRCLE',\n", - " 'DAYS_LAST_PHONE_CHANGE',\n", - " 'FLAG_DOCUMENT_2',\n", - " 'FLAG_DOCUMENT_3',\n", - " 'FLAG_DOCUMENT_4',\n", - " 'FLAG_DOCUMENT_5',\n", - " 'FLAG_DOCUMENT_6',\n", - " 'FLAG_DOCUMENT_7',\n", - " 'FLAG_DOCUMENT_8',\n", - " 'FLAG_DOCUMENT_9',\n", - " 'FLAG_DOCUMENT_10',\n", - " 'FLAG_DOCUMENT_11',\n", - " 'FLAG_DOCUMENT_12',\n", - " 'FLAG_DOCUMENT_13',\n", - " 'FLAG_DOCUMENT_14',\n", - " 'FLAG_DOCUMENT_15',\n", - " 'FLAG_DOCUMENT_16',\n", - " 'FLAG_DOCUMENT_17',\n", - " 'FLAG_DOCUMENT_18',\n", - " 'FLAG_DOCUMENT_19',\n", - " 'FLAG_DOCUMENT_20',\n", - " 'FLAG_DOCUMENT_21',\n", - " 'AMT_REQ_CREDIT_BUREAU_HOUR',\n", - " 'AMT_REQ_CREDIT_BUREAU_DAY',\n", - " 'AMT_REQ_CREDIT_BUREAU_WEEK',\n", - " 'AMT_REQ_CREDIT_BUREAU_MON',\n", - " 'AMT_REQ_CREDIT_BUREAU_QRT',\n", - " 'AMT_REQ_CREDIT_BUREAU_YEAR',\n", - " 'CODE_GENDER_F',\n", - " 'CODE_GENDER_M',\n", - " 'NAME_TYPE_SUITE_Children',\n", - " 'NAME_TYPE_SUITE_Family',\n", - " 'NAME_TYPE_SUITE_Group of people',\n", - " 'NAME_TYPE_SUITE_Other_A',\n", - " 'NAME_TYPE_SUITE_Other_B',\n", - " 'NAME_TYPE_SUITE_Spouse, partner',\n", - " 'NAME_TYPE_SUITE_Unaccompanied',\n", - " 'NAME_INCOME_TYPE_Businessman',\n", - " 'NAME_INCOME_TYPE_Commercial associate',\n", - " 'NAME_INCOME_TYPE_Pensioner',\n", - " 'NAME_INCOME_TYPE_State servant',\n", - " 'NAME_INCOME_TYPE_Student',\n", - " 'NAME_INCOME_TYPE_Unemployed',\n", - " 'NAME_INCOME_TYPE_Working',\n", - " 'NAME_EDUCATION_TYPE_Academic degree',\n", - " 'NAME_EDUCATION_TYPE_Higher education',\n", - " 'NAME_EDUCATION_TYPE_Incomplete higher',\n", - " 'NAME_EDUCATION_TYPE_Lower secondary',\n", - " 'NAME_EDUCATION_TYPE_Secondary / secondary special',\n", - " 'NAME_FAMILY_STATUS_Civil marriage',\n", - " 'NAME_FAMILY_STATUS_Married',\n", - " 'NAME_FAMILY_STATUS_Separated',\n", - " 'NAME_FAMILY_STATUS_Single / not married',\n", - " 'NAME_FAMILY_STATUS_Widow',\n", - " 'NAME_HOUSING_TYPE_Co-op apartment',\n", - " 'NAME_HOUSING_TYPE_House / apartment',\n", - " 'NAME_HOUSING_TYPE_Municipal apartment',\n", - " 'NAME_HOUSING_TYPE_Office apartment',\n", - " 'NAME_HOUSING_TYPE_Rented apartment',\n", - " 'NAME_HOUSING_TYPE_With parents',\n", - " 'OCCUPATION_TYPE_Accountants',\n", - " 'OCCUPATION_TYPE_Cleaning staff',\n", - " 'OCCUPATION_TYPE_Cooking staff',\n", - " 'OCCUPATION_TYPE_Core staff',\n", - " 'OCCUPATION_TYPE_Drivers',\n", - " 'OCCUPATION_TYPE_HR staff',\n", - " 'OCCUPATION_TYPE_High skill tech staff',\n", - " 'OCCUPATION_TYPE_IT staff',\n", - " 'OCCUPATION_TYPE_Laborers',\n", - " 'OCCUPATION_TYPE_Low-skill Laborers',\n", - " 'OCCUPATION_TYPE_Managers',\n", - " 'OCCUPATION_TYPE_Medicine staff',\n", - " 'OCCUPATION_TYPE_Private service staff',\n", - " 'OCCUPATION_TYPE_Realty agents',\n", - " 'OCCUPATION_TYPE_Sales staff',\n", - " 'OCCUPATION_TYPE_Secretaries',\n", - " 'OCCUPATION_TYPE_Security staff',\n", - " 'OCCUPATION_TYPE_Waiters/barmen staff',\n", - " 'WEEKDAY_APPR_PROCESS_START_FRIDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_MONDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_SATURDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_SUNDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_THURSDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_TUESDAY',\n", - " 'WEEKDAY_APPR_PROCESS_START_WEDNESDAY',\n", - " 'ORGANIZATION_TYPE_Advertising',\n", - " 'ORGANIZATION_TYPE_Agriculture',\n", - " 'ORGANIZATION_TYPE_Bank',\n", - " 'ORGANIZATION_TYPE_Business Entity Type 1',\n", - " 'ORGANIZATION_TYPE_Business Entity Type 2',\n", - " 'ORGANIZATION_TYPE_Business Entity Type 3',\n", - " 'ORGANIZATION_TYPE_Cleaning',\n", - " 'ORGANIZATION_TYPE_Construction',\n", - " 'ORGANIZATION_TYPE_Culture',\n", - " 'ORGANIZATION_TYPE_Electricity',\n", - " 'ORGANIZATION_TYPE_Emergency',\n", - " 'ORGANIZATION_TYPE_Government',\n", - " 'ORGANIZATION_TYPE_Hotel',\n", - " 'ORGANIZATION_TYPE_Housing',\n", - " 'ORGANIZATION_TYPE_Industry: type 1',\n", - " 'ORGANIZATION_TYPE_Industry: type 10',\n", - " 'ORGANIZATION_TYPE_Industry: type 11',\n", - " 'ORGANIZATION_TYPE_Industry: type 12',\n", - " 'ORGANIZATION_TYPE_Industry: type 13',\n", - " 'ORGANIZATION_TYPE_Industry: type 2',\n", - " 'ORGANIZATION_TYPE_Industry: type 3',\n", - " 'ORGANIZATION_TYPE_Industry: type 4',\n", - " 'ORGANIZATION_TYPE_Industry: type 5',\n", - " 'ORGANIZATION_TYPE_Industry: type 6',\n", - " 'ORGANIZATION_TYPE_Industry: type 7',\n", - " 'ORGANIZATION_TYPE_Industry: type 8',\n", - " 'ORGANIZATION_TYPE_Industry: type 9',\n", - " 'ORGANIZATION_TYPE_Insurance',\n", - " 'ORGANIZATION_TYPE_Kindergarten',\n", - " 'ORGANIZATION_TYPE_Legal Services',\n", - " 'ORGANIZATION_TYPE_Medicine',\n", - " 'ORGANIZATION_TYPE_Military',\n", - " 'ORGANIZATION_TYPE_Mobile',\n", - " 'ORGANIZATION_TYPE_Other',\n", - " 'ORGANIZATION_TYPE_Police',\n", - " 'ORGANIZATION_TYPE_Postal',\n", - " 'ORGANIZATION_TYPE_Realtor',\n", - " 'ORGANIZATION_TYPE_Religion',\n", - " 'ORGANIZATION_TYPE_Restaurant',\n", - " 'ORGANIZATION_TYPE_School',\n", - " 'ORGANIZATION_TYPE_Security',\n", - " 'ORGANIZATION_TYPE_Security Ministries',\n", - " 'ORGANIZATION_TYPE_Self-employed',\n", - " 'ORGANIZATION_TYPE_Services',\n", - " 'ORGANIZATION_TYPE_Telecom',\n", - " 'ORGANIZATION_TYPE_Trade: type 1',\n", - " 'ORGANIZATION_TYPE_Trade: type 2',\n", - " 'ORGANIZATION_TYPE_Trade: type 3',\n", - " 'ORGANIZATION_TYPE_Trade: type 4',\n", - " 'ORGANIZATION_TYPE_Trade: type 5',\n", - " 'ORGANIZATION_TYPE_Trade: type 6',\n", - " 'ORGANIZATION_TYPE_Trade: type 7',\n", - " 'ORGANIZATION_TYPE_Transport: type 1',\n", - " 'ORGANIZATION_TYPE_Transport: type 2',\n", - " 'ORGANIZATION_TYPE_Transport: type 3',\n", - " 'ORGANIZATION_TYPE_Transport: type 4',\n", - " 'ORGANIZATION_TYPE_University',\n", - " 'ORGANIZATION_TYPE_XNA',\n", - " 'FONDKAPREMONT_MODE_not specified',\n", - " 'FONDKAPREMONT_MODE_org spec account',\n", - " 'FONDKAPREMONT_MODE_reg oper account',\n", - " 'FONDKAPREMONT_MODE_reg oper spec account',\n", - " 'HOUSETYPE_MODE_block of flats',\n", - " 'HOUSETYPE_MODE_specific housing',\n", - " 'HOUSETYPE_MODE_terraced house',\n", - " 'WALLSMATERIAL_MODE_Block',\n", - " 'WALLSMATERIAL_MODE_Mixed',\n", - " 'WALLSMATERIAL_MODE_Monolithic',\n", - " 'WALLSMATERIAL_MODE_Others',\n", - " 'WALLSMATERIAL_MODE_Panel',\n", - " 'WALLSMATERIAL_MODE_Stone, brick',\n", - " 'WALLSMATERIAL_MODE_Wooden',\n", - " 'EMERGENCYSTATE_MODE_No',\n", - " 'EMERGENCYSTATE_MODE_Yes',\n", - " 'DAYS_EMPLOYED_ANOM']" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "feature_names.iloc[:,0].values.tolist()" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "691e65b2", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Feature: NAME_CONTRACT_TYPE, Importance: 0.001957730975090701\n", - "Feature: FLAG_OWN_CAR, Importance: 0.004152092040479087\n", - "Feature: FLAG_OWN_REALTY, Importance: 0.005525288692862896\n", - "Feature: CNT_CHILDREN, Importance: 0.007688592504856424\n", - "Feature: AMT_INCOME_TOTAL, Importance: 0.026229721173933476\n", - "Feature: AMT_CREDIT, Importance: 0.028958138457014705\n", - "Feature: AMT_ANNUITY, Importance: 0.031096520888708103\n", - "Feature: AMT_GOODS_PRICE, Importance: 0.02585103457947628\n", - "Feature: REGION_POPULATION_RELATIVE, Importance: 0.025870898664867317\n", - "Feature: DAYS_BIRTH, Importance: 0.034571535007287456\n", - "Feature: DAYS_EMPLOYED, Importance: 0.02971849750273892\n", - "Feature: DAYS_REGISTRATION, Importance: 0.03342144767701012\n", - "Feature: DAYS_ID_PUBLISH, Importance: 0.0345094192456134\n", - "Feature: OWN_CAR_AGE, Importance: 0.012681809737832315\n", - "Feature: FLAG_MOBIL, Importance: 0.0\n", - "Feature: FLAG_EMP_PHONE, Importance: 0.0008304266699965818\n", - "Feature: FLAG_WORK_PHONE, Importance: 0.004872853548325793\n", - "Feature: FLAG_CONT_MOBILE, Importance: 0.00025537147561377515\n", - "Feature: FLAG_PHONE, Importance: 0.004987787479444958\n", - "Feature: FLAG_EMAIL, Importance: 0.0024670163989076437\n", - "Feature: CNT_FAM_MEMBERS, Importance: 0.010607814434273005\n", - "Feature: REGION_RATING_CLIENT, Importance: 0.00493369837617007\n", - "Feature: REGION_RATING_CLIENT_W_CITY, Importance: 0.004807207101733674\n", - "Feature: HOUR_APPR_PROCESS_START, Importance: 0.0233700328637204\n", - "Feature: REG_REGION_NOT_LIVE_REGION, Importance: 0.00108416204614435\n", - "Feature: REG_REGION_NOT_WORK_REGION, Importance: 0.001907757203181667\n", - "Feature: LIVE_REGION_NOT_WORK_REGION, Importance: 0.0017377695341080951\n", - "Feature: REG_CITY_NOT_LIVE_CITY, Importance: 0.0037987542235729064\n", - "Feature: REG_CITY_NOT_WORK_CITY, Importance: 0.004104707394427242\n", - "Feature: LIVE_CITY_NOT_WORK_CITY, Importance: 0.004233660875276542\n", - "Feature: EXT_SOURCE_1, Importance: 0.020575096796335332\n", - "Feature: EXT_SOURCE_2, Importance: 0.051463540274966496\n", - "Feature: EXT_SOURCE_3, Importance: 0.03993323567087052\n", - "Feature: APARTMENTS_AVG, Importance: 0.0069099000538046405\n", - "Feature: BASEMENTAREA_AVG, Importance: 0.00599302427239291\n", - "Feature: YEARS_BEGINEXPLUATATION_AVG, Importance: 0.007547368730194931\n", - "Feature: YEARS_BUILD_AVG, Importance: 0.004803285222832575\n", - "Feature: COMMONAREA_AVG, Importance: 0.0049018347551106735\n", - "Feature: ELEVATORS_AVG, Importance: 0.0019719070996480916\n", - "Feature: ENTRANCES_AVG, Importance: 0.004711736175776684\n", - "Feature: FLOORSMAX_AVG, Importance: 0.0035628852658478004\n", - "Feature: FLOORSMIN_AVG, Importance: 0.002859491828491796\n", - "Feature: LANDAREA_AVG, Importance: 0.006623473545852668\n", - "Feature: LIVINGAPARTMENTS_AVG, Importance: 0.004408900430581695\n", - "Feature: LIVINGAREA_AVG, Importance: 0.00840622965819783\n", - "Feature: NONLIVINGAPARTMENTS_AVG, Importance: 0.0021633823064500686\n", - "Feature: NONLIVINGAREA_AVG, Importance: 0.005146395749121164\n", - "Feature: APARTMENTS_MODE, Importance: 0.007002530460650968\n", - "Feature: BASEMENTAREA_MODE, Importance: 0.005851899502367028\n", - "Feature: YEARS_BEGINEXPLUATATION_MODE, Importance: 0.007550303435761082\n", - "Feature: YEARS_BUILD_MODE, Importance: 0.004761787082772722\n", - "Feature: COMMONAREA_MODE, Importance: 0.005001506361979729\n", - "Feature: ELEVATORS_MODE, Importance: 0.0016097008909208516\n", - "Feature: ENTRANCES_MODE, Importance: 0.004303638064757056\n", - "Feature: FLOORSMAX_MODE, Importance: 0.003066399244124279\n", - "Feature: FLOORSMIN_MODE, Importance: 0.002694119417468505\n", - "Feature: LANDAREA_MODE, Importance: 0.006431881595380161\n", - "Feature: LIVINGAPARTMENTS_MODE, Importance: 0.004415650855690741\n", - "Feature: LIVINGAREA_MODE, Importance: 0.008455088748850472\n", - "Feature: NONLIVINGAPARTMENTS_MODE, Importance: 0.001896505437527934\n", - "Feature: NONLIVINGAREA_MODE, Importance: 0.004460229025542702\n", - "Feature: APARTMENTS_MEDI, Importance: 0.006999507899678712\n", - "Feature: BASEMENTAREA_MEDI, Importance: 0.006109993930783509\n", - "Feature: YEARS_BEGINEXPLUATATION_MEDI, Importance: 0.007580129446470024\n", - "Feature: YEARS_BUILD_MEDI, Importance: 0.0046647632889741455\n", - "Feature: COMMONAREA_MEDI, Importance: 0.00491774749577254\n", - "Feature: ELEVATORS_MEDI, Importance: 0.001772973430831143\n", - "Feature: ENTRANCES_MEDI, Importance: 0.0043581601234201316\n", - "Feature: FLOORSMAX_MEDI, Importance: 0.0032105106921975096\n", - "Feature: FLOORSMIN_MEDI, Importance: 0.0027372570827300683\n", - "Feature: LANDAREA_MEDI, Importance: 0.006665706780955334\n", - "Feature: LIVINGAPARTMENTS_MEDI, Importance: 0.004586735962397332\n", - "Feature: LIVINGAREA_MEDI, Importance: 0.00826789375818457\n", - "Feature: NONLIVINGAPARTMENTS_MEDI, Importance: 0.0021749473388174316\n", - "Feature: NONLIVINGAREA_MEDI, Importance: 0.004898676079635528\n", - "Feature: TOTALAREA_MODE, Importance: 0.009112981055360826\n", - "Feature: OBS_30_CNT_SOCIAL_CIRCLE, Importance: 0.013550611393563044\n", - "Feature: DEF_30_CNT_SOCIAL_CIRCLE, Importance: 0.005569894588379675\n", - "Feature: OBS_60_CNT_SOCIAL_CIRCLE, Importance: 0.013717840333755324\n", - "Feature: DEF_60_CNT_SOCIAL_CIRCLE, Importance: 0.0046230110330103815\n", - "Feature: DAYS_LAST_PHONE_CHANGE, Importance: 0.029928176701241493\n", - "Feature: FLAG_DOCUMENT_2, Importance: 7.251909191016778e-05\n", - "Feature: FLAG_DOCUMENT_3, Importance: 0.004088410608889042\n", - "Feature: FLAG_DOCUMENT_4, Importance: 2.087132085846856e-09\n", - "Feature: FLAG_DOCUMENT_5, Importance: 0.0011308362070268376\n", - "Feature: FLAG_DOCUMENT_6, Importance: 0.001446013005027591\n", - "Feature: FLAG_DOCUMENT_7, Importance: 3.742547076678272e-05\n", - "Feature: FLAG_DOCUMENT_8, Importance: 0.001963433898906897\n", - "Feature: FLAG_DOCUMENT_9, Importance: 0.00040527379636271145\n", - "Feature: FLAG_DOCUMENT_10, Importance: 0.0\n", - "Feature: FLAG_DOCUMENT_11, Importance: 0.00024548224478553905\n", - "Feature: FLAG_DOCUMENT_12, Importance: 0.0\n", - "Feature: FLAG_DOCUMENT_13, Importance: 0.00016318817234748251\n", - "Feature: FLAG_DOCUMENT_14, Importance: 0.00014256472120697757\n", - "Feature: FLAG_DOCUMENT_15, Importance: 7.218393436083788e-05\n", - "Feature: FLAG_DOCUMENT_16, Importance: 0.0005273362448115842\n", - "Feature: FLAG_DOCUMENT_17, Importance: 3.1971960047961596e-05\n", - "Feature: FLAG_DOCUMENT_18, Importance: 0.0005088321493039585\n", - "Feature: FLAG_DOCUMENT_19, Importance: 0.00012024169857747176\n", - "Feature: FLAG_DOCUMENT_20, Importance: 0.00011772404185520299\n", - "Feature: FLAG_DOCUMENT_21, Importance: 0.00010299684398918945\n", - "Feature: AMT_REQ_CREDIT_BUREAU_HOUR, Importance: 0.0007369964855405097\n", - "Feature: AMT_REQ_CREDIT_BUREAU_DAY, Importance: 0.0008427057054187579\n", - "Feature: AMT_REQ_CREDIT_BUREAU_WEEK, Importance: 0.0019162459778579077\n", - "Feature: AMT_REQ_CREDIT_BUREAU_MON, Importance: 0.00542492337937631\n", - "Feature: AMT_REQ_CREDIT_BUREAU_QRT, Importance: 0.00628726829703831\n", - "Feature: AMT_REQ_CREDIT_BUREAU_YEAR, Importance: 0.016558844997040932\n", - "Feature: CODE_GENDER_F, Importance: 0.0035839311052144134\n", - "Feature: CODE_GENDER_M, Importance: 0.0033161839303909356\n", - "Feature: NAME_TYPE_SUITE_Children, Importance: 0.0010791125200155962\n", - "Feature: NAME_TYPE_SUITE_Family, Importance: 0.0035863616172258674\n", - "Feature: NAME_TYPE_SUITE_Group of people, Importance: 0.0002067855319520526\n", - "Feature: NAME_TYPE_SUITE_Other_A, Importance: 0.0004924911356080182\n", - "Feature: NAME_TYPE_SUITE_Other_B, Importance: 0.0008990847768567533\n", - "Feature: NAME_TYPE_SUITE_Spouse, partner, Importance: 0.0018987884286627687\n", - "Feature: NAME_TYPE_SUITE_Unaccompanied, Importance: 0.004277239970638957\n", - "Feature: NAME_INCOME_TYPE_Businessman, Importance: 0.0\n", - "Feature: NAME_INCOME_TYPE_Commercial associate, Importance: 0.0034924396410795115\n", - "Feature: NAME_INCOME_TYPE_Pensioner, Importance: 0.0011653578357635418\n", - "Feature: NAME_INCOME_TYPE_State servant, Importance: 0.001705547947252571\n", - "Feature: NAME_INCOME_TYPE_Student, Importance: 0.0\n", - "Feature: NAME_INCOME_TYPE_Unemployed, Importance: 0.00010906541230025278\n", - "Feature: NAME_INCOME_TYPE_Working, Importance: 0.004149834119259588\n", - "Feature: NAME_EDUCATION_TYPE_Academic degree, Importance: 4.197621266794809e-05\n", - "Feature: NAME_EDUCATION_TYPE_Higher education, Importance: 0.0029966563172810485\n", - "Feature: NAME_EDUCATION_TYPE_Incomplete higher, Importance: 0.0014590123694284724\n", - "Feature: NAME_EDUCATION_TYPE_Lower secondary, Importance: 0.0013694164869373887\n", - "Feature: NAME_EDUCATION_TYPE_Secondary / secondary special, Importance: 0.003536152841076203\n", - "Feature: NAME_FAMILY_STATUS_Civil marriage, Importance: 0.0036592578488952154\n", - "Feature: NAME_FAMILY_STATUS_Married, Importance: 0.0051012695580233535\n", - "Feature: NAME_FAMILY_STATUS_Separated, Importance: 0.0028092943483220443\n", - "Feature: NAME_FAMILY_STATUS_Single / not married, Importance: 0.0036751088407928744\n", - "Feature: NAME_FAMILY_STATUS_Widow, Importance: 0.0017057139089209602\n", - "Feature: NAME_HOUSING_TYPE_Co-op apartment, Importance: 0.0005212693502835349\n", - "Feature: NAME_HOUSING_TYPE_House / apartment, Importance: 0.0033932005467127587\n", - "Feature: NAME_HOUSING_TYPE_Municipal apartment, Importance: 0.0018164431701525833\n", - "Feature: NAME_HOUSING_TYPE_Office apartment, Importance: 0.0007990034781014567\n", - "Feature: NAME_HOUSING_TYPE_Rented apartment, Importance: 0.0015951809813693095\n", - "Feature: NAME_HOUSING_TYPE_With parents, Importance: 0.0025622095631744625\n", - "Feature: OCCUPATION_TYPE_Accountants, Importance: 0.0010841411816554817\n", - "Feature: OCCUPATION_TYPE_Cleaning staff, Importance: 0.001379853282556569\n", - "Feature: OCCUPATION_TYPE_Cooking staff, Importance: 0.0016033799086115662\n", - "Feature: OCCUPATION_TYPE_Core staff, Importance: 0.002248305052271677\n", - "Feature: OCCUPATION_TYPE_Drivers, Importance: 0.0027523800202795606\n", - "Feature: OCCUPATION_TYPE_HR staff, Importance: 0.0001897365037091178\n", - "Feature: OCCUPATION_TYPE_High skill tech staff, Importance: 0.0014558626025815127\n", - "Feature: OCCUPATION_TYPE_IT staff, Importance: 0.000252551291479433\n", - "Feature: OCCUPATION_TYPE_Laborers, Importance: 0.004314479865749665\n", - "Feature: OCCUPATION_TYPE_Low-skill Laborers, Importance: 0.001393515403143551\n", - "Feature: OCCUPATION_TYPE_Managers, Importance: 0.0020340666287631663\n", - "Feature: OCCUPATION_TYPE_Medicine staff, Importance: 0.0012656282694865106\n", - "Feature: OCCUPATION_TYPE_Private service staff, Importance: 0.000652717081207626\n", - "Feature: OCCUPATION_TYPE_Realty agents, Importance: 0.00038477938278876897\n", - "Feature: OCCUPATION_TYPE_Sales staff, Importance: 0.0035360628333425746\n", - "Feature: OCCUPATION_TYPE_Secretaries, Importance: 0.00045231531157935304\n", - "Feature: OCCUPATION_TYPE_Security staff, Importance: 0.0017354323327697001\n", - "Feature: OCCUPATION_TYPE_Waiters/barmen staff, Importance: 0.0007135921742946077\n", - "Feature: WEEKDAY_APPR_PROCESS_START_FRIDAY, Importance: 0.004472949867680715\n", - "Feature: WEEKDAY_APPR_PROCESS_START_MONDAY, Importance: 0.004363718954899849\n", - "Feature: WEEKDAY_APPR_PROCESS_START_SATURDAY, Importance: 0.003622283198369107\n", - "Feature: WEEKDAY_APPR_PROCESS_START_SUNDAY, Importance: 0.0025991862234910723\n", - "Feature: WEEKDAY_APPR_PROCESS_START_THURSDAY, Importance: 0.004580026018925162\n", - "Feature: WEEKDAY_APPR_PROCESS_START_TUESDAY, Importance: 0.004582356306737999\n", - "Feature: WEEKDAY_APPR_PROCESS_START_WEDNESDAY, Importance: 0.004673118426911656\n", - "Feature: ORGANIZATION_TYPE_Advertising, Importance: 0.0002916553920625715\n", - "Feature: ORGANIZATION_TYPE_Agriculture, Importance: 0.0011091927407306215\n", - "Feature: ORGANIZATION_TYPE_Bank, Importance: 0.0004921626127207906\n", - "Feature: ORGANIZATION_TYPE_Business Entity Type 1, Importance: 0.0014393752095418625\n", - "Feature: ORGANIZATION_TYPE_Business Entity Type 2, Importance: 0.001927073313351474\n", - "Feature: ORGANIZATION_TYPE_Business Entity Type 3, Importance: 0.0045596554403153034\n", - "Feature: ORGANIZATION_TYPE_Cleaning, Importance: 0.0002610845522366371\n", - "Feature: ORGANIZATION_TYPE_Construction, Importance: 0.0019653213371018767\n", - "Feature: ORGANIZATION_TYPE_Culture, Importance: 0.00024010386700032242\n", - "Feature: ORGANIZATION_TYPE_Electricity, Importance: 0.00045188436022035436\n", - "Feature: ORGANIZATION_TYPE_Emergency, Importance: 0.00023090557065396256\n", - "Feature: ORGANIZATION_TYPE_Government, Importance: 0.001695978105560102\n", - "Feature: ORGANIZATION_TYPE_Hotel, Importance: 0.00044031388649212554\n", - "Feature: ORGANIZATION_TYPE_Housing, Importance: 0.0010649520012983704\n", - "Feature: ORGANIZATION_TYPE_Industry: type 1, Importance: 0.0007506426899599058\n", - "Feature: ORGANIZATION_TYPE_Industry: type 10, Importance: 6.908913513875086e-05\n", - "Feature: ORGANIZATION_TYPE_Industry: type 11, Importance: 0.0010414765191959481\n", - "Feature: ORGANIZATION_TYPE_Industry: type 12, Importance: 0.00014933041857628714\n", - "Feature: ORGANIZATION_TYPE_Industry: type 13, Importance: 7.280102803451184e-05\n", - "Feature: ORGANIZATION_TYPE_Industry: type 2, Importance: 0.0002915384683910028\n", - "Feature: ORGANIZATION_TYPE_Industry: type 3, Importance: 0.001473424074171206\n", - "Feature: ORGANIZATION_TYPE_Industry: type 4, Importance: 0.0006241727764147348\n", - "Feature: ORGANIZATION_TYPE_Industry: type 5, Importance: 0.00030319064391780217\n", - "Feature: ORGANIZATION_TYPE_Industry: type 6, Importance: 7.135923359422927e-05\n", - "Feature: ORGANIZATION_TYPE_Industry: type 7, Importance: 0.0006319982840572988\n", - "Feature: ORGANIZATION_TYPE_Industry: type 8, Importance: 2.5598480787384414e-05\n", - "Feature: ORGANIZATION_TYPE_Industry: type 9, Importance: 0.0008766091138092322\n", - "Feature: ORGANIZATION_TYPE_Insurance, Importance: 0.0002795301887092319\n", - "Feature: ORGANIZATION_TYPE_Kindergarten, Importance: 0.0013171536541050843\n", - "Feature: ORGANIZATION_TYPE_Legal Services, Importance: 0.00017856433950829152\n", - "Feature: ORGANIZATION_TYPE_Medicine, Importance: 0.0015673939658635032\n", - "Feature: ORGANIZATION_TYPE_Military, Importance: 0.0005340709402414758\n", - "Feature: ORGANIZATION_TYPE_Mobile, Importance: 0.0002285362580617896\n", - "Feature: ORGANIZATION_TYPE_Other, Importance: 0.002480667145186796\n", - "Feature: ORGANIZATION_TYPE_Police, Importance: 0.0005170793337906507\n", - "Feature: ORGANIZATION_TYPE_Postal, Importance: 0.0008445436511605105\n", - "Feature: ORGANIZATION_TYPE_Realtor, Importance: 0.0003468466915942135\n", - "Feature: ORGANIZATION_TYPE_Religion, Importance: 8.600821171936675e-05\n", - "Feature: ORGANIZATION_TYPE_Restaurant, Importance: 0.0010103801513367985\n", - "Feature: ORGANIZATION_TYPE_School, Importance: 0.0013018865919114\n", - "Feature: ORGANIZATION_TYPE_Security, Importance: 0.0011577087482746364\n", - "Feature: ORGANIZATION_TYPE_Security Ministries, Importance: 0.0004884049014665208\n", - "Feature: ORGANIZATION_TYPE_Self-employed, Importance: 0.0042179128015803905\n", - "Feature: ORGANIZATION_TYPE_Services, Importance: 0.0005448426553105232\n", - "Feature: ORGANIZATION_TYPE_Telecom, Importance: 0.0003524272603528748\n", - "Feature: ORGANIZATION_TYPE_Trade: type 1, Importance: 0.00025103053154982576\n", - "Feature: ORGANIZATION_TYPE_Trade: type 2, Importance: 0.00048614543687462394\n", - "Feature: ORGANIZATION_TYPE_Trade: type 3, Importance: 0.001219989456913292\n", - "Feature: ORGANIZATION_TYPE_Trade: type 4, Importance: 3.505249271809596e-05\n", - "Feature: ORGANIZATION_TYPE_Trade: type 5, Importance: 4.1896857247502286e-05\n", - "Feature: ORGANIZATION_TYPE_Trade: type 6, Importance: 0.00023179831057186867\n", - "Feature: ORGANIZATION_TYPE_Trade: type 7, Importance: 0.0018303425862477227\n", - "Feature: ORGANIZATION_TYPE_Transport: type 1, Importance: 8.839502434634744e-05\n", - "Feature: ORGANIZATION_TYPE_Transport: type 2, Importance: 0.0008147599309745402\n", - "Feature: ORGANIZATION_TYPE_Transport: type 3, Importance: 0.001071391641734681\n", - "Feature: ORGANIZATION_TYPE_Transport: type 4, Importance: 0.0015144702200745868\n", - "Feature: ORGANIZATION_TYPE_University, Importance: 0.00037022426065727777\n", - "Feature: ORGANIZATION_TYPE_XNA, Importance: 0.0008298816031935682\n", - "Feature: FONDKAPREMONT_MODE_not specified, Importance: 0.0007293685229467241\n", - "Feature: FONDKAPREMONT_MODE_org spec account, Importance: 0.0005428241521890336\n", - "Feature: FONDKAPREMONT_MODE_reg oper account, Importance: 0.001274428990378451\n", - "Feature: FONDKAPREMONT_MODE_reg oper spec account, Importance: 0.0007556988476421127\n", - "Feature: HOUSETYPE_MODE_block of flats, Importance: 0.0012314686774097074\n", - "Feature: HOUSETYPE_MODE_specific housing, Importance: 0.00042947044902928776\n", - "Feature: HOUSETYPE_MODE_terraced house, Importance: 0.0003400160579191961\n", - "Feature: WALLSMATERIAL_MODE_Block, Importance: 0.0008764658039667922\n", - "Feature: WALLSMATERIAL_MODE_Mixed, Importance: 0.0005572313852180715\n", - "Feature: WALLSMATERIAL_MODE_Monolithic, Importance: 0.00016799924458252958\n", - "Feature: WALLSMATERIAL_MODE_Others, Importance: 0.0005346733967184081\n", - "Feature: WALLSMATERIAL_MODE_Panel, Importance: 0.0013481217685146652\n", - "Feature: WALLSMATERIAL_MODE_Stone, brick, Importance: 0.0016122127584213622\n", - "Feature: WALLSMATERIAL_MODE_Wooden, Importance: 0.00067175160863202\n", - "Feature: EMERGENCYSTATE_MODE_No, Importance: 0.0013249453049179718\n", - "Feature: EMERGENCYSTATE_MODE_Yes, Importance: 0.0005595949316886116\n", - "Feature: DAYS_EMPLOYED_ANOM, Importance: 0.0008020609148881914\n" - ] - } - ], + "outputs": [], "source": [ "# Accessing feature importance\n", "feature_importance = RFC_model.feature_importances_\n", @@ -1990,40 +707,10 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "b02f7c87", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['EXT_SOURCE_2',\n", - " 'EXT_SOURCE_3',\n", - " 'DAYS_BIRTH',\n", - " 'DAYS_ID_PUBLISH',\n", - " 'DAYS_REGISTRATION',\n", - " 'AMT_ANNUITY',\n", - " 'DAYS_LAST_PHONE_CHANGE',\n", - " 'DAYS_EMPLOYED',\n", - " 'AMT_CREDIT',\n", - " 'AMT_INCOME_TOTAL',\n", - " 'REGION_POPULATION_RELATIVE',\n", - " 'AMT_GOODS_PRICE',\n", - " 'HOUR_APPR_PROCESS_START',\n", - " 'EXT_SOURCE_1',\n", - " 'AMT_REQ_CREDIT_BUREAU_YEAR',\n", - " 'OBS_60_CNT_SOCIAL_CIRCLE',\n", - " 'OBS_30_CNT_SOCIAL_CIRCLE',\n", - " 'OWN_CAR_AGE',\n", - " 'CNT_FAM_MEMBERS',\n", - " 'TOTALAREA_MODE']" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "feature_importance_df = pd.DataFrame({\n", " 'Feature': feature_names.iloc[:,0].values.tolist(),\n", @@ -2040,7 +727,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "9aa9ebad", "metadata": {}, "outputs": [], @@ -2061,7 +748,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": null, "id": "d592cad4", "metadata": {}, "outputs": [], @@ -2071,147 +758,19 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": null, "id": "570c2a0f", "metadata": { "scrolled": true }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABZbUlEQVR4nO3deVhUZf8G8HsGmGFHFllFcMV9A0U005IkNbXe9y01t8q0+pmZ+raYpWWL1ttipWWZa7llZZqaZuaSiqIIpuAuCKLgyr4MzHx/fxCTI6AMAoeB+3NdcxVnzpn5zplxzj3PeZ7nqEREQERERKQQtdIFEBERUf3GMEJERESKYhghIiIiRTGMEBERkaIYRoiIiEhRDCNERESkKIYRIiIiUhTDCBERESnKWukCKsJgMODixYtwcnKCSqVSuhwiIiKqABFBVlYWfH19oVaX3/5hEWHk4sWL8Pf3V7oMIiIiqoTk5GQ0atSo3PstIow4OTkBKH4xzs7OCldDREREFZGZmQl/f3/jcbw8FhFGSk7NODs7M4wQERFZmDt1sWAHViIiIlIUwwgREREpimGEiIiIFMUwQkRERIpiGCEiIiJFMYwQERGRohhGiIiISFEMI0RERKQohhEiIiJSlNlhZPfu3Rg0aBB8fX2hUqnw888/33GbnTt3okuXLtBqtWjevDmWLl1aiVKJiIioLjI7jOTk5KBjx46YP39+hdZPSEjAwIEDcd999yE2NhYvvvginn76aWzdutXsYomIiKjuMfvaNP3790f//v0rvP6CBQvQpEkTfPTRRwCA1q1bY8+ePfjkk08QERFh7tMTERFRHVPtfUYiIyMRHh5usiwiIgKRkZHlblNQUIDMzEyTGxEREVWdQr0BR5LTsWhPAiasOIw8nV6xWqr9qr2pqanw8vIyWebl5YXMzEzk5eXBzs6u1DazZ8/GW2+9Vd2lERER1RsZuYU4nHQDh85fx6HEGzhyIR35hQbj/SO7ByCsmbsitVV7GKmMadOmYcqUKca/MzMz4e/vr2BFRERElkNEkHQ9F4cSb+DQ+RuIPn8dp9KyS63XwN4GwY1dERzoikaupRsHakq1hxFvb2+kpaWZLEtLS4Ozs3OZrSIAoNVqodVqq7s0IiKiOkFXZMCxixk4fP6GMYBczS4otV4TDwcEB7giJMAVIYGuaOrhCLVapUDFpqo9jISFhWHz5s0my7Zt24awsLDqfmoiIqI6KT1Xh+jzf7d6/H3KpaDIYLKOxkqNdn7OCAl0Q3CAK4IDXOHhWDt/6JsdRrKzs3HmzBnj3wkJCYiNjYWbmxsaN26MadOmISUlBcuXLwcAPPvss5g3bx5efvllPPXUU/jjjz/w/fffY9OmTVX3KoiIiOooEUHitVwcSrxuDCBnLpc+5eJqb4PgADeEBBYHj/Z+LrC1sVKgYvOZHUYOHTqE++67z/h3Sd+OMWPGYOnSpbh06RKSkpKM9zdp0gSbNm3C5MmT8emnn6JRo0b45ptvOKyXiIioDAVFehxLyTCebjl8/gau5ehKrde0oUPx6ZYANwQHuqKphwNUKuVPuVSGSkRE6SLuJDMzEy4uLsjIyICzs7PS5RAREVWZ6zklp1yuIzrxBv5KyYDu1lMu1mp08HNBcODf4SPAFW4OGoUqrriKHr9r5WgaIiKiuiozvxA7TlzG3jNXcej8DZy7klNqHXcHTXFH079PubTzc4HW2jJOuVQGwwgREVE1S83Ix7bjafgtLhX7z11Dod70pERzT0eE/N3JNCTQDYHu9hZ7yqUyGEaIiIiqmIjg7JVsbI1Lw2/xaTiSnG5yf3NPR/Rt5YluTdzQpbErXC3glEt1YhghIiKqAgaDICY5Hb/Fp2JbXBrOXTU9/dKlcQP0a+uNB9p4oVlDR4WqrJ0YRoiIiCqpoEiPyLPX8Ft8GrbFp+FK1j8TjWms1OjR3B392ngjvLUnPJ1tFay0dmMYISIiMkNmfiF2nryC3+JSsfPkFWQXFBnvc9Ja475WnujX1gu9WzaEk62NgpVaDoYRIiKiO0jLzMe2+OL+H5Fnr5p0QPV00qJfWy/0a+ON7k3dobFWK1ipZWIYISIiKsOZy9n4LT4Vv8WlIbaMDqj92nihX1tvdPBzqRXXd7FkDCNEREQo7oAaeyEdv8Wl4bf41FLzf7ADavVhGCEionrrdh1QbaxU6NHMA/3aeuGB1l7sgFqNGEaIiKheuV0HVMeSDqhtvNAniB1QawrDCBER1Xl36oD6wN/9P7o3davT067XVgwjRERUJ92uA2qzhg7o19Yb/dp4oWOjBuyAqjCGESIiqhPu1AG1c+MG6NemuANqc092QK1NGEaIiMhi6YoMiDx3Db/FpWJbfBouswOqRWIYISIii5JV0gE1Pg07T1xGFjugWjyGESIiqvUuZ+Zj2/E0/BaXhn3sgFrnMIwQEVGtdPZKtrH/R0xSusl9TRs6IIIdUOsMhhEiIqoVDAbBkQvp+C0+Db/FpeLsLR1QO/k3MF4Dhh1Q6xaGESIiUoyI4GDiDayPTSmzA2pYMw/0a+OFB9p4wYsdUOsshhEiIqpxWfmFWBeTgu/2n8eptGzjcketNfoENUS/tt7oE9QQzuyAWi8wjBARUY2Ju5iB7/YnYX1sCnJ1egCAnY0VBnX0wYD2Pghr5s4OqPUQwwgREVWr/EI9Nh+9hO/2n8fhmzqiNvd0xMjQxnikSyO42LEFpD5jGCEiompx/loOVhxIwtpDybiRWwgAsFarENHOGyNDA9C9qRtUKo6CIYYRIiKqQkV6A/44cRnfHUjC7lNXjMt9XWzxeGhjPNbVH55O7IhKphhGiIjorl3OzMfqg8lYFZWESxn5AACVCri3RUOM7B6A+1t5wopzgVA5GEaIiKhSRASR565hxf4kbI1LRZGheFZUNwcNHg1phBHdAtDY3V7hKskSMIwQEZFZMvIK8WP0Baw4cN5kYrLgAFeM7N4Y/dv5wNaGI2Ko4hhGiIioQo5eyMB3+89j/ZEU5BcaAAAOGis83NkPI7sHoLWPs8IVkqViGCEionLl6fT45a+LWLH/PI5cyDAuD/JywsjujfFwZz9eGZfuGsMIERGVcu5KNlYcSMIP0ReQkVc8LFdjpUb/9t4Y2T0AIQGuHJZLVYZhhIiIAACFegN+j0/DdwfOY++Za8bljVztMCI0AI+GNIKHo1bBCqmuYhghIqrnLmXkYVVUMlZHJRkvVKdSAfcHeWJk9wDc27Ihh+VStWIYISKqhwwGwd6zV/Hd/vP4/fhl6P8eluvhqMHQrv4Y3q0xGrlyWC7VDIYRIqJ65EaODj/8PSw38VqucXm3Jm4Y2T0AD7b1hsZarWCFVB8xjBAR1XEigtjkdHy3Pwm//HURuqLiYbmOWmv8u4sfRnQPQEsvJ4WrpPqMYYSIqI7K1RVhfexFfLf/POIuZhqXt/FxxsjuARjSyRcOWh4GSHn8FBIR1TGn07Kw4kASfoy+gKyCIgCAxlqNhzr4YGT3AHT2b8BhuVSrMIwQEdUBuiIDtsal4rv953Eg4bpxeYC7PUaENsajwf5wddAoWCFR+RhGiIgsWEp6HlYdSMLqg8m4ml08LFetAsJbe2Fk9wDc09wDag7LpVqOYYSIyMIYDIJdp69gxf7z+OPEZfw9KhcNnbQY3tUfw7o1hm8DO2WLJDIDwwgRkYW4ll2AtX8Py02+nmdc3qOZO0Z2D8ADbbxgY8VhuWR5GEaIiGoxEUH0+Rv4bv95bD6aCp2+eFiuk601/hPcCCNCA9Dc01HhKonuDsMIEVEtlF1QhJ9jUvDd/vM4kZplXN6hkQtGhgZgUEdf2GmsFKyQqOowjBAR1SInUjPx3f7zWHc4BTk6PQBAa63G4I6+GNk9AB39GyhbIFE1YBghIlJYQZEeW46l4tvI8zh0/oZxeVMPB4zoHoD/dGkEF3sbBSskql4MI0RECkm+nosVB5Kw9lAyruXoAABWahX6tfHCqO4BCGvmzsnJqF5gGCEiqkEGg2DHycv4dv957Dp1BfL3sFxvZ1sM79YYw7r5w8vZVtkiiWoYwwgRUQ3QFRnwc2wKvt59DmcuZxuX92rhgZHdA9C3lSesOSyX6imGESKiapRdUIRVB5KwaE8CUjPzAQBOWmsM7eqPEd0D0MTDQeEKiZTHMEJEVA2uZBVg6b4EfBt5Hpn5xRer83TSYuw9TfB4aGM42bJDKlEJhhEioiqUeDUHX/95Dj9EX4CuqHiCsqYNHfDMvU3xcGc/aK05NwjRrRhGiIiqwNELGViw6yx+PXbJeK2YTv4N8GzvZujXxosXqyO6DYYRIqJKEhHsOXMVC3adxd4z14zL7wtqiGd7N0O3Jm4cmktUAQwjRERmKtIbsPlYKr7adRZxFzMBFM8PMrijL57p3RStvJ0VrpDIsjCMEBFVUH6hHmsPJWPhnwlIup4LALCzscLQrv54ulcTNHK1V7hCIsvEMEJEdAfpuTp8G3keS/clGmdKdbW3wRM9mmB0WABcHTQKV0hk2So1w878+fMRGBgIW1tbhIaGIioq6rbrz507F0FBQbCzs4O/vz8mT56M/Pz8ShVMRFRTLqbn4e2N8egx5w98tO0UruXo0MjVDm8Nbot9r/bFpPAWDCJEVcDslpE1a9ZgypQpWLBgAUJDQzF37lxERETg5MmT8PT0LLX+ypUr8eqrr2Lx4sXo0aMHTp06hSeeeAIqlQoff/xxlbwIIqKqdCotCwt2ncWG2Iso+ntoTGsfZzzbuykGtvfhTKlEVUwlUnJlhIoJDQ1F165dMW/ePACAwWCAv78/Jk6ciFdffbXU+s8//zyOHz+O7du3G5dNnToVBw4cwJ49eyr0nJmZmXBxcUFGRgacndkxjIiqx8HE61iw8yy2n7hsXBbW1B3P9G6K3i0bcmQMkZkqevw2q2VEp9MhOjoa06ZNMy5Tq9UIDw9HZGRkmdv06NED3333HaKiotCtWzecO3cOmzdvxqhRo8p9noKCAhQUFJi8GCKi6mAwCLafuIwFu84i+vwNAIBKBTzY1hvP9G6GTv4NlC2QqB4wK4xcvXoVer0eXl5eJsu9vLxw4sSJMrd5/PHHcfXqVdxzzz0QERQVFeHZZ5/Fa6+9Vu7zzJ49G2+99ZY5pRERmaWsC9dprNT4d7AfxvVqiqYNHRWukKj+qPbRNDt37sR7772HL774AqGhoThz5gwmTZqEt99+G2+88UaZ20ybNg1Tpkwx/p2ZmQl/f//qLpWI6oHyLlw3onsAnuoZCE9nW4UrJKp/zAojHh4esLKyQlpamsnytLQ0eHt7l7nNG2+8gVGjRuHpp58GALRv3x45OTkYP348pk+fDrW6dEcwrVYLrVZrTmlERLdV3oXrnvr7wnXOvHAdkWLMCiMajQbBwcHYvn07Hn74YQDFHVi3b9+O559/vsxtcnNzSwUOK6viC0WZ2XeWiMhsvHAdUe1n9mmaKVOmYMyYMQgJCUG3bt0wd+5c5OTk4MknnwQAjB49Gn5+fpg9ezYAYNCgQfj444/RuXNn42maN954A4MGDTKGEiKiqsYL1xFZDrPDyNChQ3HlyhXMmDEDqamp6NSpE7Zs2WLs1JqUlGTSEvL6669DpVLh9ddfR0pKCho2bIhBgwbh3XffrbpXQUQEXriOyFKZPc+IEjjPCBHdTpHegF+PpWIBL1xHVKtUyzwjRES1CS9cR1Q3MIwQkcXJyC3E8shEXriOqI5gGCEii3ExPQ+L9iRgVVQScnV6AEAjVzuM69UUj4X4w07DTvFElohhhIhqvdNpWViw6xzWx6YYL1zXytsJz/VpxgvXEdUBDCNEVGsdTLyOr3adxe/HeeE6orqMYYSIahVeuI6o/mEYIaJaQVdkwPq/L1x3mheuI6pXGEaISFHZBUVYHVV84bpLGbxwHVF9xDBCRIrgheuIqATDCBHVqNSMfHz+x2ms5YXriOhvDCNEVCOK9AYsizyPj387iZy/5wjhheuICGAYIaIacDjpBl5fdwzxl4qvG9OlcQO8/GArhPLCdUQEhhEiqkYZuYV4f+sJrIpKggjgYmeDV/u3wtAQf7aEEJERwwgRVTkRwbqYFLy76bjx2jH/CW6Eaf1bwd1Rq3B1RFTbMIwQUZU6czkLr/98DPvPXQcAtPB0xDsPt0NoU3eFKyOi2ophhIiqRJ5Oj3k7TuPr3edQqBfY2qjxQt8WePqeptBY89oxRFQ+hhEiums7TlzGjA3HkHw9DwDQt5Un3hzcFv5u9gpXRkSWgGGEiCrtUkYe3toQjy1xqQAAXxdbzBzcFv3aeHGUDBFVGMMIEZmtSG/A0n2J+GTbKeTo9LBSqzD2niaY1LcFHLT8WiEi8/Bbg4jMEn3+BqavO4oTqVkAgJAAV7zzSDu08nZWuDIislQMI0RUIem5Ory/5QRWRSUDABrY22Ba/1Z4NJhzhhDR3WEYIaLbEhH8eDgF720+jut/zxnyaHAjTBvQGm4OGoWrI6K6gGGEiMp1Oi0L038+hqiE4jlDWno54t1H2qNroJvClRFRXcIwQkSl5On0+OyP01i4+xyKDAI7GytMCm+Bsfc0gY0V5wwhoqrFMEJEJrYfT8PMDXG4cKN4zpDw1l54c3AbNHLlnCFEVD0YRogIAJCSnoe3NsTht/g0AIBfAzu8ObgtHmjjpXBlRFTXMYwQ1XOFegOW7E3A3N9PI1enh7VahbG9iucMsdfwK4KIqh+/aYjqsejz1zF93THjnCFdA13xzsPtEeTtpHBlRFSfMIwQ1UM3cnSY8+sJrDlUPGeIq70NpvVvjf8EN+KcIURU4xhGiOoREcHa6AuYvfk4buQWAgCGhvjj1f6t4Mo5Q4hIIQwjRPXEydQsvP7zURxMvAEACPJywruPtEMI5wwhIoUxjBDVcbm6Iny6/TQW/ZlgnDPkxfAWeIpzhhBRLcEwQlSHbYtPw5sb4pCSXjxnSL82Xpg5uC38GtgpXBkR0T8YRojqoJT0PLy5IQ7bbpoz5K3BbRHOOUOIqBZiGCGqQwr1Bizak4BPfz+NvMLiOUOe7tUUL/RtzjlDiKjW4rcTUR1xMPE6Xl93DCfTiucM6RbohnceaYeWXpwzhIhqN4YRIgt3PUeHOb8ex/eHLgAA3Bw0mNa/Ff4T3AgqFecMIaLaj2GEyEIZDIK10cmY/esJpP89Z8iwrv545UHOGUJEloVhhMgCnUjNxOvrjuHQ+eI5Q1p5F88ZEhzAOUOIyPIwjBBZkJyCIny2/TS+2ZMAvUFgr7HC5PCWeKJnIOcMISKLxTBCZCF+i0vFmxvicDEjHwAQ0dYLMwe1hS/nDCEiC8cwQlTLXbiRizc3xOH345cBAI1c7TBrSFvc34pzhhBR3cAwQlRLFekNWPhnAj7bXjxniI2VCuN6NcXE+1vATmOldHlERFWGYYSoFrpwIxeTVsci+u8OqqFN3PDOw+3QgnOGEFEdxDBCVMv8evQSXvnxL2TmF8FJa40Zg9pwzhAiqtMYRohqifxCPWZtjMfKA0kAgE7+DfD58M7wd7NXuDIiourFMEJUC5xKy8LElTHGqdyf7d0MU/u15HBdIqoXGEaIFCQiWBWVjFkb45BfaICHoxafDO2IXi0aKl0aEVGNYRghUkhGXiFe++koNh29BADo1cIDHz/WCQ2dtApXRkRUsxhGiBQQff4GXlgVg5T0PFirVXgpIgjjejWFWs1OqkRU/zCMENUgg0Hw5a6z+HjbKegNgsZu9vhseGd08m+gdGlERIphGCGqIZcz8zH5+1jsPXMNADC4oy/eeaQdnG1tFK6MiEhZDCNENWDnycuY+v0RXMvRwc7GCm8NaYtHOXcIEREAhhGiaqUrMuB/W09g4Z8JAIBW3k6Y93gXNPd0VLgyIqLag2GEqJokXs3BC6tj8NeFDADAmLAATBvQGrY2vK4MEdHNGEaIqsH62BRMX3cM2QVFaGBvgw/+3QH92norXRYRUa1Uqekd58+fj8DAQNja2iI0NBRRUVG3XT89PR0TJkyAj48PtFotWrZsic2bN1eqYKLaLKegCP9dewSTVsciu6AI3QLdsPmFXgwiRES3YXbLyJo1azBlyhQsWLAAoaGhmDt3LiIiInDy5El4enqWWl+n0+GBBx6Ap6cnfvjhB/j5+eH8+fNo0KBBVdRPVGvEXczAxFUxOHclB2oVMPH+Fph4f3NYc0p3IqLbUomImLNBaGgounbtinnz5gEADAYD/P39MXHiRLz66qul1l+wYAH+97//4cSJE7CxqdwQxszMTLi4uCAjIwPOzs6Vegyi6iIiWLYvEe9tPgGd3gBvZ1vMHdYJ3Zu6K10aEZGiKnr8Nusnm06nQ3R0NMLDw/95ALUa4eHhiIyMLHObDRs2ICwsDBMmTICXlxfatWuH9957D3q9vtznKSgoQGZmpsmNqDa6kaPDuOXRePOXeOj0BoS39sSvk3oxiBARmcGs0zRXr16FXq+Hl5eXyXIvLy+cOHGizG3OnTuHP/74AyNGjMDmzZtx5swZ/N///R8KCwsxc+bMMreZPXs23nrrLXNKI6px+89dw4urY5GamQ+NlRqvDWiFMT0COXcIEZGZqn00jcFggKenJ77++mtYWVkhODgYKSkp+N///lduGJk2bRqmTJli/DszMxP+/v7VXSpRhRTpDfj8jzP4/I/TMAjQtKEDPh/eGW19XZQujYjIIpkVRjw8PGBlZYW0tDST5WlpafD2Lnu0gI+PD2xsbGBl9c/cCq1bt0Zqaip0Oh00Gk2pbbRaLbRaXrmUap+L6Xl4cXUsohKvAwD+E9wIbw1uCwctR8kTEVWWWX1GNBoNgoODsX37duMyg8GA7du3IywsrMxtevbsiTNnzsBgMBiXnTp1Cj4+PmUGEaLa6re4VAz47E9EJV6Ho9Yanw7rhA8f7cggQkR0l8weczhlyhQsXLgQy5Ytw/Hjx/Hcc88hJycHTz75JABg9OjRmDZtmnH95557DtevX8ekSZNw6tQpbNq0Ce+99x4mTJhQda+CqBrlF+oxc/0xjP82Gum5hejQyAWbXrgHQzr5KV0aEVGdYPZPuqFDh+LKlSuYMWMGUlNT0alTJ2zZssXYqTUpKQlq9T8Zx9/fH1u3bsXkyZPRoUMH+Pn5YdKkSXjllVeq7lUQVZMzl7MxcVUMjl8qHtE1rlcTvBTRChprzh1CRFRVzJ5nRAmcZ4RqmohgbfQFzFwfh7xCPdwdNPjwsY64L6j0xH5ERFS2ih6/ebKb6BZZ+YWYvu4YNhy5CADo2dwdnzzWCZ7OtgpXRkRUNzGMEN3kSHI6Jq6KQdL1XFipVZjyQEs817sZ1GrOHUJEVF0YRogAGAyCb/acwwdbTqLIIPBrYIfPhndGcICr0qUREdV5DCNU713JKsDUtUew+9QVAMDA9j5471/t4WJXuWspERGReRhGqF778/QVTF5zBFezC6C1VmPmoLYY3s2fU7oTEdUghhGqlwr1Bny87RQW7DoLEaCllyPmPd4FLb2clC6NiKjeYRiheif5ei5eWB2DmKR0AMCI0MZ446E2sLWxuv2GRERULRhGqF6JTU7Hk0uicCO3EM621nj/3x3Qv72P0mUREdVrDCNUb+w+dQXPfheNXJ0e7f1c8OXILmjkaq90WURE9R7DCNUL62NTMPX7IygyCHq18MCCkcG8wB0RUS3Bb2Oq8xbvScCsjfEAgMEdffHhox15bRkiolqEYYTqLBHB/7aexBc7zwIAnugRiBkPteFsqkREtQzDCNVJRXoDpq87hjWHkgEAL0UE4f/6NOP8IUREtRDDCNU5+YV6PL8yBr8fT4NaBbz3SHsM69ZY6bKIiKgcDCNUp2TkFWLcskOISrwOjbUanw/vjIi23kqXRUREt8EwQnVGWmY+xiyOwonULDjZWuOb0SEIbequdFlERHQHDCNUJ5y7ko1Ri6KQkp4HTyctlj3VDa19nJUui4iIKoBhhCzeXxfS8cSSg7ieo0MTDwcsf6ob/N04mRkRkaVgGCGL9ufpK3j222jk/D2r6pInu8LDUat0WUREZAaGEbJYG45cxNTvY1GoF9zT3AMLRgXDkbOqEhFZHH5zk0VaujcBb22MhwjwUAcffPRYR2itedVdIiJLxDBCFkVE8PG2U/j8jzMAgDFhAZg5qC1nVSUismAMI2QxivQGvLH+GFZFFc+qOvWBlnj+/uacVZWIyMIxjJBFyC/U44VVMfgtvnhW1Xcebo/HQzmrKhFRXcAwQrVeRl4hxi0/hKiE4llVPxvWCQ+281G6LCIiqiIMI1SrXc7Mx+iSWVW11lg4JgTdOasqEVGdwjBCtVbC1RyMXnwAydfz4OGoxbKnuqKtr4vSZRERURVjGKFa6eiFDDyxJArXcnQIcLfHt0+ForE7Z1UlIqqLGEao1tl75irGLz+EHJ0ebX2dsfTJbmjoxFlViYjqKoYRqlU2/nURU9YcgU5vQI9m7vhqVDCcbG2ULouIiKoRwwjVGssjEzFzQxxEgAHtvfHJ0E6cVZWIqB5gGCHFiQg++f00Ptt+GgAwqnsA3hzcFlacVZWIqF5gGCFF6Q2CN9Yfw8oDSQCAF8NbYFLfFpxVlYioHmEYIcXkF+rx4upYbIlLhUoFvD2kHUZ2D1C6LCIiqmEMI6SIzPxCjF9+CPvPXYfGSo1Ph3VC//acVZWIqD5iGKEadzkrH08sPoj4S5lw1Frj69HB6NHMQ+myiIhIIQwjVKPOX8vBqEVRSLqeCw9HLZY+2RXt/DirKhFRfcYwQjXmwo1cDP1qP1Iz89HYzR7fju2GAHcHpcsiIiKFMYxQjbiaXYBRi6KQmpmPFp6OWDEuFJ5OtkqXRUREtYBa6QKo7svKL8SYxVFIuJoDvwZ2+HYsgwgREf2DYYSqVX6hHk8vO4S4i5lwd9Dg27Hd4O3CIEJERP9gGKFqU6Q3YOKqGBxIuA5HrTWWPdUNTRs6Kl0WERHVMgwjVC1EBNN+Oopt8WnQWKuxcHQIR80QEVGZGEaoWsz59QTWRl+AWgXMG94ZYc3clS6JiIhqKYYRqnILdp3FV7vPAQDm/LsD+rX1VrgiIiKqzRhGqEqtjkrCnF9PAACmD2iNx0L8Fa6IiIhqO4YRqjJbjl3Ca+uOAgCe69MM4+5tqnBFRERkCRhGqErsO3MVL6yKhUGAYV398XJEkNIlERGRhWAYobv214V0jFt+CDq9AQ+29ca7j7SHSqVSuiwiIrIQDCN0V85czsYTSw4iR6dHz+bu+HR4J1ipGUSIiKjiGEao0i6m52H0ogO4nqNDh0Yu+GpUCLTWVkqXRUREFoZhhCrleo4OoxYdwMWMfDRt6IAlT3SFo5bXXSQiIvMxjJDZsguK8OSSKJy9kgMfF1t8OzYU7o5apcsiIiILxTBCZiko0uOZbw/hyIUMuNrb4Nux3eDXwE7psoiIyIIxjFCF6Q2CyWtisffMNdhrrLD0yW5o7umkdFlERGThGEaoQkQEr/98DJuPpkJjpcbXo0LQ0b+B0mUREVEdUKkwMn/+fAQGBsLW1hahoaGIioqq0HarV6+GSqXCww8/XJmnJQV9+NtJrIpKgloFfDqsE+5p4aF0SUREVEeYHUbWrFmDKVOmYObMmTh8+DA6duyIiIgIXL58+bbbJSYm4r///S969epV6WJJGd/8eQ7zd5wFALz7SHv0b++jcEVERFSXmB1GPv74Y4wbNw5PPvkk2rRpgwULFsDe3h6LFy8udxu9Xo8RI0bgrbfeQtOmvF6JJfkh+gLe2XQcAPDyg0EY3q2xwhUREVFdY1YY0el0iI6ORnh4+D8PoFYjPDwckZGR5W43a9YseHp6YuzYsRV6noKCAmRmZprcqOZti0/DKz/+BQAY16sJnuvdTOGKiIioLjIrjFy9ehV6vR5eXl4my728vJCamlrmNnv27MGiRYuwcOHCCj/P7Nmz4eLiYrz5+/My9DVt/7lrmLDyMPQGwX+CG+G1Aa15vRkiIqoW1TqaJisrC6NGjcLChQvh4VHxDo/Tpk1DRkaG8ZacnFyNVdKtjqVkYNyyQ9AVGRDe2gtz/sUL3xERUfUxa/5uDw8PWFlZIS0tzWR5WloavL29S61/9uxZJCYmYtCgQcZlBoOh+ImtrXHy5Ek0a1a66V+r1UKr5YyeSki4moMnlkQhq6AIoU3cMO/xzrC24ghwIiKqPmYdZTQaDYKDg7F9+3bjMoPBgO3btyMsLKzU+q1atcLRo0cRGxtrvA0ePBj33XcfYmNjefqllknNyMfIbw7garYObXycsXBMCGxteOE7IiKqXmZf2WzKlCkYM2YMQkJC0K1bN8ydOxc5OTl48sknAQCjR4+Gn58fZs+eDVtbW7Rr185k+wYNGgBAqeWkrIzcQoxefAAp6XkIdLfHsqe6wdnWRumyiIioHjA7jAwdOhRXrlzBjBkzkJqaik6dOmHLli3GTq1JSUlQq9msb0l0RQY8+100TqVlw8tZi2/HhqKhE0+TERFRzVCJiChdxJ1kZmbCxcUFGRkZcHZ2VrqcOkVE8MqPf+H7QxfgoLHC2md7oI0v9zEREd29ih6/2YRRz3256yy+P3QBahUw7/EuDCJERFTjGEbqsc1HL+GDLScBADMHtcV9rTwVroiIiOojhpF6KibpBiaviQUAPNEjEGN6BCpaDxER1V8MI/VQ8vVcjFt+CAVFBtzfyhNvPNRG6ZKIiKgeYxipZzLzCzF22UFczdahtY8zPhveGVZqzq5KRETKYRipRwr1BkxYcdg4hHfxEyFw1Jo9upuIiKhKMYzUEyKCmRvi8Ofpq7CzscKiMV3h42KndFlEREQMI/XFoj0JWHkgCSoV8OmwTmjn56J0SURERAAYRuqFrXGpeHfzcQDA9AGt0a9t6YsaEhERKYVhpI47eiEDL66OhQgwsntjjL2nidIlERERmWAYqcMupudh7LKDyCvU496WDfHmoLZQqThyhoiIaheGkToqu6AITy09iMtZBQjycsL8xzvD2opvNxER1T48OtVBRXoDJq48jBOpWfBw1GLREyFwsrVRuiwiIqIyMYzUQe9sOo4dJ6/A1kaNb8aEoJGrvdIlERERlYthpI5ZujcBS/clAgA+eawTOvk3ULQeIiKiO2EYqUP+OJGGWRvjAQCv9m+F/u19FK6IiIjozhhG6oj4i5mYuDIGBgGGhvjjmXubKl0SERFRhTCM1AFpmfkYu+wgcnR69GzujnceacchvEREZDEYRixcrq4IY5cdxKWMfDRr6IAvRgTDhkN4iYjIgvCoZcH0BsGk1bE4lpIJdwcNljzRDS52HMJLRESWhWHEgn2x4wy2xadBY63G16ND0NidQ3iJiMjyMIxYqDOXs/H5H2cAALMfaY/gAFeFKyIiIqochhELZDAIXvvpKHR6A+4Laoh/dfFTuiQiIqJKYxixQKsPJiMq8TrsNVZ4+2GOnCEiIsvGMGJhLmfmY/avxwEAU/sFcap3IiKyeAwjFubNX+KQlV+EDo1c8ESPQKXLISIiumsMIxZkW3waNh9NhZVahdn/ag8rNU/PEBGR5WMYsRBZ+YWYsf4YAODpXk3Q1tdF4YqIiIiqBsOIhfhw60lcyshHYzd7vNi3pdLlEBERVRmGEQtwOOkGlu8/DwB475H2sNNYKVwRERFR1WEYqeV0RQZM+/EoRIB/dfHDPS08lC6JiIioSjGM1HJf7z6Lk2lZcHPQ4PWBbZQuh4iIqMoxjNRi565k47O/p3x/46HWcHPQKFwRERFR1WMYqaVEBK+tOwpdkQH3tmyIhztxynciIqqbGEZqqbWHLmD/ueuwtVHjXU75TkREdRjDSC10JasA724unvJ9ygMt4e/GKd+JiKjuYhiphd76JQ4ZeYVo6+uMp3o2UbocIiKiasUwUsv8cSING/+6BLUKmPOvDrC24ltERER1G490tUhOQRHe+DkOADD2niZo34hTvhMRUd3HMFKLfPTbKaSk56GRqx0mP8Ap34mIqH5gGKkljiSnY+m+BADAu4+0h73GWuGKiIiIagbDSC1QqDfglR//gkGAhzv5onfLhkqXREREVGMYRmqB1QeTcSI1Cw3sbfD6Q5zynYiI6heGEYXlF+ox/+8p3yeHt4SHo1bhioiIiGoWw4jCVh5IQmpmPnxdbDGsm7/S5RAREdU4hhEF5en0+GLnWQDA8/e3gNbaSuGKiIiIah7DiIKWRybianYB/N3s8GhII6XLISIiUgTDiEKyC4qwYFdxq8gL97eADWdaJSKieopHQIUs3ZuAG7mFaOrhgEc6+yldDhERkWIYRhSQkVeIr3efAwBMCm/B688QEVG9xqOgAhbtSUBmfhFaeDrioQ6+SpdDRESkKIaRGnYjR4fFe4qnfZ/8QEtYqVUKV0RERKQshpEa9vWf55BdUITWPs54sK230uUQEREpjmGkBl3JKsDSvYkAgCkPtISarSJEREQMIzVpwa6zyCvUo2MjF4S39lS6HCIiolqBYaSGpGXm47v95wEU9xVRqdgqQkREBFQyjMyfPx+BgYGwtbVFaGgooqKiyl134cKF6NWrF1xdXeHq6orw8PDbrl9Xzd9xBgVFBgQHuKJ3y4ZKl0NERFRrmB1G1qxZgylTpmDmzJk4fPgwOnbsiIiICFy+fLnM9Xfu3Inhw4djx44diIyMhL+/P/r164eUlJS7Lt5SpKTnYXVUMgBgKltFiIiITKhERMzZIDQ0FF27dsW8efMAAAaDAf7+/pg4cSJeffXVO26v1+vh6uqKefPmYfTo0RV6zszMTLi4uCAjIwPOzs7mlFsrTPvpL6yKSkb3pm5YPT5M6XKIiIhqREWP32a1jOh0OkRHRyM8PPyfB1CrER4ejsjIyAo9Rm5uLgoLC+Hm5lbuOgUFBcjMzDS5Waqka7lYe+gCAGBqvyCFqyEiIqp9zAojV69ehV6vh5eXl8lyLy8vpKamVugxXnnlFfj6+poEmlvNnj0bLi4uxpu/v785ZdYqn24/jSKDoFcLD3QNLD+AERER1Vc1Oppmzpw5WL16NdatWwdbW9ty15s2bRoyMjKMt+Tk5Bqssuqcu5KNdTFsFSEiIroda3NW9vDwgJWVFdLS0kyWp6Wlwdv79rOJfvjhh5gzZw5+//13dOjQ4bbrarVaaLVac0qrleb+fhoGAfq28kQn/wZKl0NERFQrmdUyotFoEBwcjO3btxuXGQwGbN++HWFh5XfM/OCDD/D2229jy5YtCAkJqXy1FuRkahZ++esigOJ5RYiIiKhsZrWMAMCUKVMwZswYhISEoFu3bpg7dy5ycnLw5JNPAgBGjx4NPz8/zJ49GwDw/vvvY8aMGVi5ciUCAwONfUscHR3h6OhYhS+ldpn7+ymIAA+29UY7PxelyyEiIqq1zA4jQ4cOxZUrVzBjxgykpqaiU6dO2LJli7FTa1JSEtTqfxpcvvzyS+h0OvznP/8xeZyZM2fizTffvLvqa6m4ixn49VgqVCq2ihAREd2J2fOMKMHS5hl5etkh/H48DYM6+uLz4Z2VLoeIiEgR1TLPCN3ZkeR0/H48DWoV8GJ4C6XLISIiqvUYRqrYx9tOAQAe7uyHZg3rbp8YIiKiqsIwUoWiz1/HrlNXYKVWYVJftooQERFVBMNIFfrot+JWkUeDGyHA3UHhaoiIiCwDw0gViTx7DfvOXoONlQrP399c6XKIiIgsBsNIFRARfLztJABgWNfGaORqr3BFREREloNhpAr8efoqDibegMZajQn3sVWEiIjIHAwjd0lE8NHfI2hGhDaGt0v5FwAkIiKi0hhG7tIfJy7jSHI6bG3UeK5PM6XLISIisjgMI3dp3o4zAIAxYYHwdGKrCBERkbkYRu7CsZQMxCSlw8ZKhad7NVW6HCIiIovEMHIXVkYlAQD6tfVGQyetwtUQERFZJoaRSsouKML6mBQAxR1XiYiIqHIYRippfWwKcnR6NPVwQFhTd6XLISIislgMI5UgIlixv/gUzeOhjaFSqRSuiIiIyHIxjFTCkQsZiL+UCY21Gv8JbqR0OURERBaNYaQSVuw/DwB4qL0PGthrFK6GiIjIsjGMmCkjtxC//HURADCiOzuuEhER3S2GETP9FHMB+YUGBHk5oUtjV6XLISIisngMI2YQEaw8UNxxdUR3dlwlIiKqCgwjZjiYeAOnL2fDzsYKD3f2U7ocIiKiOoFhxAwrDhR3XB3SyRfOtjYKV0NERFQ3MIxUUEZuIX49lgoAGN6NHVeJiIiqCsNIBf0cmwJdkQGtvJ3QoZGL0uUQERHVGQwjFbTmYDIAYGhXf3ZcJSIiqkIMIxVwLOXvGVet1Hi4EzuuEhERVSWGkQooaRXp19YLrg6ccZWIiKgqMYzcQX6hHj/HpgAAhnVlx1UiIqKqxjByB78eu4Ss/CI0crVDj2buSpdDRERU5zCM3EHJKZpHg/2hVrPjKhERUVVjGLmNxKs52H/uOlQq4D8hjZQuh4iIqE5iGLmNn2KK+4r0atEQfg3sFK6GiIiobmIYKYeIYNNfFwEA/+J1aIiIiKoNw0g5TqZl4eyVHGis1ejb2lPpcoiIiOoshpFybP7rEgCgd8uGcOJF8YiIiKoNw0gZRAQbjxaHkYHtfRSuhoiIqG5jGCnDybQsnOMpGiIiohrBMFKGTX+founDUzRERETVjmHkFsWjaP4+RdOBp2iIiIiqG8PILeIuZuLc1RxordXo29pL6XKIiIjqPIaRW2w4Ujy3SHhrLzhqrRWuhoiIqO5jGLmJwSD45e8wMqijr8LVEBER1Q8MIzc5mHgdlzLy4aS1Rp+ghkqXQ0REVC8wjNyk5BTNg+28YWtjpXA1RERE9UONdIrQ6/UoLCys9PY6nQ4BAQHQ6XTIz8+vwsr+oTcIYhMuw8/JCoPbNay25yEiIqorbGxsYGV19z/eVSIiVVBPmUQEqampSE9Pv6vHMRgMSE5Ohr+/P9Tq6mnM0RUZcDmrAGoV4ONiC5VKVS3PQ0REVJc0aNAA3t7eZR43MzMz4eLigoyMDDg7O5f7GNXaMlISRDw9PWFvb1/pA7xer0deXh4CAwOrJIGV5XJWPuCkg5PWBr6udtXyHERERHWFiCA3NxeXL18GAPj4VH5urmoLI3q93hhE3N3d7/qxAMDW1rbawkheeiFU1hq4udjD1lZTLc9BRERUl9jZFf94v3z5Mjw9PSt9jK62DqwlfUTs7e2r6ymqTEGhHgVFeqiggpMt5xYhIiKqqJLj/N30Da320TSW0Pciu6AIAGCvtYJVNfVJISIiqouq4jjPIy/+CSNOnHGViIioxtX7MCIixjDiyFM09dITTzyBhx9++Lbr7Ny5EyqV6q5HhtV1ffr0wYsvvlhnn4+Iqke9DyM5Oj30BoGVWgW7myY6i4yMhJWVFQYOHFhqm9sdmAIDAzF37lyTZTt27MCAAQPg7u4Oe3t7tGnTBlOnTkVKSkq5dQUGBkKlUkGlUsHe3h7t27fHN998U2o9vV6PTz75BO3bt4etrS1cXV3Rv39/7N27t9S6Op0OH3zwATp27Ah7e3t4eHigZ8+eWLJkyW3P9YkIvv76a4SGhsLR0RENGjRASEgI5s6di9zc3HK3sxSffvopli5davy7Og5wzzzzDKysrLB27doqfVxzlRe8anvYqu31WZKkpCQMHDgQ9vb28PT0xEsvvYSioqI7brdp0yaEhobCzs4Orq6upT5HBw8eRN++fdGgQQO4uroiIiICR44cMVlHRPDhhx+iZcuW0Gq18PPzw7vvvmuyzooVK4zfUT4+Pnjqqadw7do14/1Lly41fjeW3GxtbU0e480330SrVq3g4OAAV1dXhIeH48CBA8b7ExMTMXbsWDRp0gR2dnZo1qwZZs6cCZ1OZ1a9e/bsQc+ePeHu7g47Ozu0atUKn3zySbn7cM6cOVCpVKW+X5555hk0a9YMdnZ2aNiwIYYMGYITJ06YrFOR923+/Plo3bo17OzsEBQUhOXLl5vcHxcXh3//+9/G48utx6qK1lsd6n0YycwrPgg729qYnPdatGgRJk6ciN27d+PixYuVfvyvvvoK4eHh8Pb2xo8//oj4+HgsWLAAGRkZ+Oijj2677axZs3Dp0iUcO3YMI0eOxLhx4/Drr78a7xcRDBs2DLNmzcKkSZNw/Phx7Ny5E/7+/ujTpw9+/vln47o6nQ4RERGYM2cOxo8fj3379iEqKgoTJkzA559/jri4uHLrGDVqFF588UUMGTIEO3bsQGxsLN544w2sX78ev/32W6X3za3/8JXi4uKCBg0aVNvj5+bmYvXq1Xj55ZexePHiO65fW/aLEvR6PQwGg9JlVLna8p7q9XoMHDgQOp0O+/btw7Jly7B06VLMmDHjttv9+OOPGDVqFJ588kkcOXIEe/fuxeOPP268Pzs7Gw8++CAaN26MAwcOYM+ePXByckJERITJD51Jkybhm2++wYcffogTJ05gw4YN6Natm/H+vXv3YvTo0Rg7dizi4uKwdu1aREVFYdy4cSb1ODs749KlS8bb+fPnTe5v2bIl5s2bh6NHj2LPnj0IDAxEv379cOXKFQDAiRMnYDAY8NVXXyEuLg6ffPIJFixYgNdee83kce5Ur4ODA55//nns3r0bx48fx+uvv47XX38dX3/9dal9ePDgQXz11Vfo0KFDqfuCg4OxZMkSHD9+HFu3boWIoF+/fsaRpBV537788ktMmzYNb775JuLi4vDWW29hwoQJ+OWXX4zr5ObmomnTppgzZw68vb3LeKcrVm+1kGqSl5cn8fHxkpeXd9ePVVRUJAcPHpSioqIqqOwfBoNBjl/MkCPJNyQ9V2dcnpWVJY6OjnLixAkZOnSovPvuuybb7dixQwDIjRs3Sj1mQECAfPLJJyIikpycLBqNRl588cUyn7+s7ct6nBJubm4yefJk49+rV68WALJhw4ZS2//rX/8Sd3d3yc7OFhGR999/X9RqtRw+fLjUujqdzrjerdasWSMA5Oeffy51n8FgkPT0dBER6d27t0yaNMnk/iFDhsiYMWNMXtOsWbNk1KhR4uTkJGPGjJGwsDB5+eWXTba7fPmyWFtby65du0REJD8/X6ZOnSq+vr5ib28v3bp1kx07dpRZr4jI1KlTZeDAgca/P/nkEwEgv/76q3FZs2bNZOHChSIiMmbMGBkyZIjx/wGY3BISEozv+e+//y7BwcFiZ2cnYWFhcuLEiXLrKLF06VLp3r27pKeni729vSQlJZncX/L877zzjvj4+EhgYKCIiCQlJcmjjz4qLi4u4urqKoMHD5aEhATjdlFRURIeHi7u7u7i7Ows9957r0RHR9+2lptf681u/UzPnDlTOnbsKMuXL5eAgABxdnaWoUOHSmZmpnGb7OxsGTVqlDg4OIi3t7d8+OGHpT4Hd3rvlixZIi4uLrJ+/Xpp3bq1WFlZmbxGEZGEhIRS70nJ56p3794yceJEeemll8TV1VW8vLxk5syZJtvfuHFDxo4dKx4eHuLk5CT33XefxMbG3nY/JScny7Bhw8TV1VXs7e0lODhY9u/fX+4+nDRpkvTu3dv4d+/evWXChAkyadIkcXd3lz59+sjw4cPlscceM9lOp9OJu7u7LFu2TERE9Hq9vPfeexIYGCi2trbSoUMHWbt27W1rNcfmzZtFrVZLamqqcdmXX34pzs7OUlBQUOY2hYWF4ufnJ9988025j3vw4EEBYPLZ/uuvvwSAnD59WkRE4uPjxdra+rb/Zv73v/9J06ZNTZZ99tln4ufnZ/y75DNjjoyMDOO/3/J88MEH0qRJE+PfFam3LI888oiMHDnSZFlWVpa0aNFCtm3bVuZ35a2OHDkiAOTMmTMiUrH3LSwsTP773/+aPM6UKVOkZ8+eZT5HWceYytZ7u+N9yb7PyMi47WPUaMuIiCBXV1SpW35R5beVciaZ1RUZoNMboFKp4HhT59Xvv/8erVq1QlBQEEaOHInFixeX+xi3s3btWuh0Orz88stl3l/RX+MGgwE//vgjbty4AY3mnzlQVq5ciZYtW2LQoEGltpk6dSquXbuGbdu2AShu+gwPD0fnzp1LrWtjYwMHB4cyn3vFihUICgrCkCFDSt2nUqng4uJSoddQ4sMPP0THjh0RExODN954AyNGjMDq1atN9u+aNWvg6+uLXr16AQCef/55REZGYvXq1fjrr7/w6KOP4sEHH8Tp06fLfI7evXtjz549xl8Vu3btgoeHB3bu3AkASElJwdmzZ9GnT59S23766acICwvDuHHjjL+6/P39jfdPnz4dH330EQ4dOgRra2s89dRTd3zNixYtwsiRI+Hi4oL+/fubnBIqsX37dpw8eRLbtm3Dxo0bUVhYiIiICDg5OeHPP//E3r174ejoiAcffND4KzsrKwtjxozBnj17sH//frRo0QIDBgxAVlbWHWuqiLNnz+Lnn3/Gxo0bsXHjRuzatQtz5swx3v/SSy9h165dxhaynTt34vDhwyaPUZH3Ljc3F++//z6++eYbxMXFwdPT0+Qx/P398eOPPwIATp48iUuXLuHTTz813r9s2TI4ODjgwIED+OCDDzBr1izj5x4AHn30UVy+fBm//voroqOj0aVLF/Tt2xfXr18v83VnZ2ejd+/eSElJwYYNG3DkyBG8/PLLZrfYLFu2DBqNBnv37sWCBQswYsQI/PLLL8jOzjaus3XrVuTm5uKRRx4BAMyePRvLly/HggULEBcXh8mTJ2PkyJHYtWtXuc/z7LPPwtHR8ba3EpGRkWjfvj28vLyMyyIiIpCZmVlu6+jhw4eRkpICtVqNzp07w8fHB/3798exY8eM6wQFBcHd3R2LFi2CTqdDXl4eFi1ahNatWyMwMBAA8Msvv6Bp06bYuHEjmjRpgsDAQDz99NMm70NYWBiSk5OxefNmiAjS0tLwww8/YMCAASY1ZWdnIyAgAP7+/hgyZMhtW3Z1Oh2+/vpruLi4oGPHjuWul5GRATc3N+PfFan3VjExMdi3bx969+5tsnzChAkYOHAgwsPDy922RE5ODpYsWYImTZoYv3sq8r4VFBSUOl1lZ2eHqKgos4fcmlNvlbltVCnHvHnzJCAgQLRarXTr1k0OHDhw26R07do1OXr0qOzZHyUBr2ys8VtOQWGZr+NGToEcSb4hp9OyTJb36NFD5s6dKyLFvwo8PDxMfs1VtGXkueeeE2dn58rsYgkICBCNRiMODg5ibW0tAMTNzc34K0NEpFWrVmX+yhURuX79ugCQ999/X0RE7Ozs5IUXXjC7jtatW8vgwYPvuF5FW0Yefvhhk3VKWkF2795tXBYWFiavvPKKiIicP39erKysJCUlxWS7vn37yrRp08qs5caNG6JWq+XgwYNiMBjEzc1NZs+eLaGhoSIi8t1335n80rr1l25Zr+XmlpESmzZtEgC3bf07deqU2NjYyJUrV0REZN26ddKkSRMxGAwmz+/l5WXyy/Tbb7+VoKAgk/UKCgrEzs5Otm7dWuZz6fV6cXJykl9++aXcesxpGbG3tzdpCXnppZeM+zArK0s0Go18//33xvuvXbsmdnZ2xn1XkfduyZIlAuCOLRXl/Zvr3bu33HPPPSbLunbtavz8/Pnnn+Ls7Cz5+fkm6zRr1ky++uqrMp/rq6++EicnJ7l27VqZ91e0ZaRz584m65R8lyxfvty4bPjw4TJ06FARKW5Fsre3l3379plsN3bsWBk+fHiZtYiIpKWlyenTp297KzFu3Djp16+fyfY5OTkCQDZv3lzm469atUoASOPGjeWHH36QQ4cOyfDhw8Xd3d1kHx09elSaNWsmarVa1Gq1BAUFSWJiovH+Z555RrRarYSGhsru3btlx44d0qlTJ7nvvvtMnu/7778XR0dH4/feoEGDRKf7p+V63759smzZMomJiZGdO3fKQw89JM7OzpKcnGzyOL/88os4ODiISqUSX19fiYqKKncfnj59WpydneXrr782u14RET8/P9FoNKJWq2XWrFml9l+7du2M3xPltTTMnz9fHBwcBIAEBQUZW0VEKva+TZs2Tby9veXQoUNiMBjk4MGD4uXlJQDk4sWLpZ6vvJaRitZ7M0VaRtasWYMpU6Zg5syZOHz4MDp27IiIiAjjdLC3ysnJwblz5+Dh4YFWrVqbn5aqUUFR8S8dW+t/dsPJkycRFRWF4cOHAwCsra0xdOhQLFq0yOzHF5G7Gn/90ksvITY2Fn/88QdCQ0PxySefoHnz5qWeo6K1VEZltytPSEiIyd8NGzZEv379sGLFCgBAQkICIiMjMWLECADA0aNHodfr0bJlS5Nfert27cLZs2fLfI4GDRqgY8eO2LlzJ44ePQqNRoPx48cjJiYG2dnZ2LVrV6lfLhV18/nTkqmPy/vsA8DixYsREREBDw8PAMCAAQOQkZGBP/74w2S99u3bm7R6HTlyBGfOnIGTk5PxNbu5uSE/P9/4utPS0jBu3Di0aNECLi4ucHZ2RnZ2NpKSkir12m4VGBgIJycnk9db8lrPnj0LnU6H0NBQ4/1ubm4ICgoy/l3R906j0dzVeelbt725ziNHjiA7Oxvu7u4mNSQkJJT7+YmNjUXnzp1NfiVXRnBwsMnf1tbWeOyxx4yf9ZycHKxfv974WT9z5gxyc3PxwAMPmNS6fPnycmsFAE9PTzRv3vy2t7tR0iI0ffp0/Pvf/zb2b1CpVMYO2Xl5eRg7dix69uyJ/fv3Y+/evWjXrh0GDhyIvLw84+MUFBRg+fLl6NWrF/r06YNFixZhx44dOHnyJAAgPj4ekyZNwowZMxAdHY0tW7YgMTERzz77rLGesLAwjB49Gp06dULv3r3x008/oWHDhvjqq69M6r7vvvsQGxuLffv24cEHH8Rjjz1W5r/VlJQUPPjgg3j00UdN+qZUpN4Sf/75Jw4dOoQFCxZg7ty5WLVqFQAgOTkZkyZNwooVK0q1WtxqxIgRiImJwa5du9CyZUs89thjZl2w9Y033kD//v3RvXt32NjYYMiQIRgzZgwAVPiabubUW9XMHsv68ccfY9y4cXjyyScBAAsWLMCmTZuwePFivPrqq6XWv3btGlxcXODt7Q0RQfysCJw8cRJ29vZo3Ni/1Ppl0ev1OHLkL3Ts2KFSU83ePErmZrq/w4jNTWFk0aJFKCoqgq+vr3GZiECr1WLevHnGL32guFnv1lMt6enpxlMXLVu2REZGBi5dulSpOfs9PDyMXyZr165F+/btERISgjZt2hgf//jx42VuW7K8ZcuWxv/e2ju7Iiq6nVqtLhVcymoaLOt00IgRI/DCCy/g888/x8qVK9G+fXu0b98eQHFzrJWVFaKjo0u99zc3P9+qT58+2LlzJ7RaLXr37g03Nze0bt0ae/bswa5duzB16tQ7vqay2NjYGP+/JGiW13yv1+uxbNkypKamwtra2mT54sWL0bdvX+OyW/dLdnY2goODjQeumzVs2BAAMGbMGFy7dg2ffvopAgICoNVqERYWdtvOks7OzqU6+wHFn1srKyuTOm5+rSWv15xTFRV97+zs7O4qtN+uzuzsbPj4+BhP0d2svNOkJdNbl+duP+u9e/fG5cuXsW3bNtjZ2eHBBx801goUj1rx8/Mz2U6r1ZZbz7PPPovvvvvutjWXPLa3tzeioqJM7ktLSzPeV5aS766S752Sepo2bWoMvitXrkRiYiIiIyONB76VK1fC1dUV69evx7Bhw+Dj4wNra2vjdxIAtG5d/AM1KSkJQUFBmD17Nnr27ImXXnoJQHHQdHBwQK9evfDOO++U+T1qY2ODzp0748yZMybLHRwcjN+f3bt3R4sWLbBo0SJMmzbNuM7Fixdx3333oUePHqU6nVak3hJNmjQBUPyjIi0tDW+++SaGDx+O6OhoXL58GV26dDGuq9frsXv3bsybNw8FBQXGfxsuLi5wcXFBixYt0L17d7i6umLdunUYPnx4hd43Ozs7LF68GF999RXS0tLg4+ODr7/+Gk5OTsbvjDsxp96qZlbLiE6nQ3R0tMl5JLVajfDwcERGRpa5TV5envHgrVKpYK+xhqd7A+gLcmGvsS7zZmuthtZKZXKztVaVu/6dbuV90d3ILf7StrEq3g1FRUVYvnw5PvroI8TGxhpvR44cga+vrzHttmjRAmq1GtHR0SaPd+7cOWRkZBg/vP/5z3+g0WjwwQcflPn85gxT9Pf3x9ChQ03+IQ0bNgynT5826S1d4qOPPoK7uzseeOABAMDjjz+O33//HTExMaXWLSwsRE5OTpnP+/jjj+PUqVNYv359qftEBBkZGQCKD5CXLl0y3qfX603OKd/OkCFDkJ+fjy1btmDlypXGX4oA0LlzZ+j1ely+fLnUr73b9QYv6Teyfft2Y9+QPn36YNWqVTh16lSZ/UVKaDQaY3+Tu7F582ZkZWUhJibG5PO0atUq/PTTT7d9/7t06YLTp0+X+au3JOzu3bsXL7zwAgYMGIC2bdtCq9Xi6tWrt60pKCgIcXFxKCgoMFl++PBhNGnSpNSBvTzNmjWDjY2NyXDJGzdu4NSpU8a/K/velaWk1cjc96VLly7GMHhrDSWtVbfq0KEDYmNjy+0bcOtnHShuTamIHj16wN/fH2vWrMGKFSvw6KOPGvd5mzZtoNVqkZSUVKrWm/st3WrWrFkmn6+ybiXCwsJw9OhRkxaCbdu2wdnZ2SRs3Cw4OBhardakNaCwsBCJiYkICAgAUNzvR61Wm3zXlvxdEgx79uyJoqIik1aeks/LrY9zs5KDX3mttHq9HkePHr3jD76Slo4SKSkp6NOnj7Gl59bnrUi9d3qevn374ujRoybvRUhICEaMGIHY2NhyD+wiAhExPo4575uNjQ0aNWoEKysrrF69Gg899FCFW0YqW2+VuO1JnFukpKQIgFLnNF966SXp1q1bmeeQDh06JFevXjW5Ly0tTWJiYm77PAcPHix1q+rRNPF/j6TJyis+H7lu3TrRaDTGESI3e/nllyUkJMT49/jx4yUwMFDWr18v586dk127dkn37t2le/fuJuf558+fLyqVSp566inZuXOnJCYmyp49e2T8+PEyZcqUcmsr63xeXFycqFQqOXjwoIgUj2Z55JFHxNXVVb755htJSEiQI0eOyPjx48Xa2lrWrVtn3DY/P1969eolrq6uMm/ePImNjZWzZ8/KmjVrpEuXLuW+HwaDQYYOHSp2dnby7rvvysGDByUxMVF++eUXuf/++43PsWDBArG3t5eNGzfK8ePHZdy4ceLs7Fyqz0h5vbdHjBghHTt2FJVKJefPny91X2BgoPz4449y7tw5OXDggLz33nuycePGcvff9evXRa1Wi5WVlRw/flxEit9fKysr8fHxMVn31j4A48aNk65du0pCQoJcuXJF9Hp9mX0WYmJijKNtyjJkyBBjf4Cb6fV68fb2lnnz5pX5/CLF54NbtGghffr0kd27d8u5c+dkx44dMnHiROO58c6dO8sDDzwg8fHxsn//funVq5fY2dmVu49FivvTeHp6ymOPPSaHDh2S06dPy6JFi8TJyUm+/PJL43olo2lu9sknn0hAQIDx72effVYCAgJk+/btcvToURk8eLA4OjqanF++03tX0ZERFy5cEJVKJUuXLpXLly9LVlZxP6879VUyGAxyzz33SMeOHWXr1q2SkJAge/fulddee8347+hWBQUF0rJlS+nVq5fs2bNHzp49Kz/88IPxe2/Lli2iUqlk2bJlcurUKZkxY4Y4OzuX6jNS3nn26dOnS5s2bcTa2lr+/PPPUve5u7vL0qVL5cyZMxIdHS2fffaZLF269I77qCKKioqkXbt20q9fP4mNjZUtW7ZIw4YNTfpfHThwQIKCguTChQvGZZMmTRI/Pz/ZunWrnDhxQsaOHSuenp5y/fp1ERE5fvy4aLVaee655yQ+Pl6OHTsmI0eOFBcXF2N/Bb1eL126dJF7771XDh8+LIcOHZLQ0FB54IEHjM+zZMkSsba2li+++ELOnj0re/bskZCQEJPjy1tvvSVbt26Vs2fPSnR0tAwbNkxsbW0lLi5ORIpHeU2bNk0iIyMlMTFRDh06JE8++aRotVo5duyYiBR/npo3by59+/aVCxcuyKVLl4y3EhWpd968ebJhwwY5deqUnDp1Sr755htxcnKS6dOnl/se3PrZOHv2rLz33nty6NAhOX/+vOzdu1cGDRokbm5ukpaWVuH37eTJk/Ltt9/KqVOn5MCBAzJ06FBxc3Mz+X4qKCiQmJgYiYmJER8fH/nvf/8rMTExJv2K7lRvWaqiz0itDCN6vV6KioqMt4KCgmoJI1ez8uVqVr4xPDz00EMyYMCAMtc9cOCAAJAjR46ISPHrmzlzprRq1Urs7OykSZMmMn78eGNHxZtt27ZNIiIixNXVVWxtbaVVq1by3//+t8xORSXKO3BHRERI//79jX8XFhbK//73P2nbtq1oNBpxdnaWiIgI2bNnT6lt8/PzZfbs2dK+fXuxtbUVNzc36dmzpyxdulQKC8vu5CtS/H58+eWX0rVrV7G3txdnZ2cJDg6WTz/9VHJzc0WkeIjic889J25ubuLp6SmzZ88uswNreQfKzZs3CwC59957S92n0+lkxowZEhgYKDY2NuLj4yOPPPKI/PXXX+XWLCLSsWNH8fb2Nv597do1UalUMmzYMJP1bg0DJ0+elO7du4udnV2pob0VDSOpqalibW1t0sHzZs8995yxg2N5nUovXboko0ePFg8PD9FqtdK0aVMZN26c8R/14cOHJSQkRGxtbaVFixaydu3a2+7jm1/fI488Ir6+vuLg4CAdO3aUhQsXmoToioSRrKwsGTlypNjb24uXl5d88MEHpb647vTemTNMc9asWeLt7S0qlcpkaO+dOk5nZmbKxIkTxdfXV2xsbMTf319GjBhRaoj1zRITE+Xf//63ODs7i729vYSEhJh01J8xY4Z4eXmJi4uLTJ48WZ5//vkKh5H4+HgBIAEBASb7XKQ4PM2dO1eCgoLExsZGGjZsKBEREcZh7lUhMTFR+vfvL3Z2duLh4SFTp041+fdf8lm/+XOt0+lk6tSp4unpKU5OThIeHm48sJf47bffpGfPnsah6Pfff79ERkaarJOSkiL/+te/xNHRUby8vOSJJ54o1VH4s88+kzZt2oidnZ34+PjIiBEjTILRiy++KI0bNxaNRiNeXl4yYMAAkykL8vLyjJ9vjUYjPj4+MnjwYJMOrCUdp8u6mVPvZ599Jm3btjV+L3bu3Fm++OIL0ev15e7/Wz8bKSkp0r9/f/H09BQbGxtp1KiRPP7446WGFN/pfYuPj5dOnTqJnZ2dODs7y5AhQ0o9RlnD5AGYfHbvVG9ZqiKMqEQq3kNRp9PB3t4eP/zwg8nse2PGjEF6erpJU35+fj4SEhKg0+ng7e1tMiQpJSUF6enpaNu2bYWeV6/XIyYmBp07d67eZiIiIiIyS8nxvkmTJqU6vmZmZsLFxQUZGRnGLhtlMavPiEajQXBwMLZv325cZjAYsH37doSFhZW5jZ2dHTIzM0sVd7vOh0RERFR/mD20d8qUKVi4cCGWLVuG48eP47nnnkNOTo5xdM3o0aNNOlm6u7sjMzMTqampyMvLw8WLF5Gbm1tqYiMiIiKqn8we2jt06FBcuXIFM2bMQGpqKjp16oQtW7YYT8MkJSWZ9Nx1cHBAkyZNcPHiRaSkpMDW1hbNmze/4/A5IiIiqh/MDiNA8RTPzz//fJn3lYznv3myFjc3t7ueQIiIiIjqpnp/1V4iIiJSVrWHkbp4OXAiIiIqVhXH+UqdpqkIjUYDtVqNixcvomHDhtBoNJWe8rlk1sX8/HwO7SUiIqoFRAQ6nQ5XrlyBWq02ub6WuaotjKjVajRp0gSXLl3CxYsX7+qxDAYDrl69isTExApPa0tERETVz97eHo0bN76r43O1hRGguHWkcePGKCoquqtrfWRnZ2PgwIE4dOgQ5ychIiKqJaysrGBtXf414CqqWsMIUHxxPBsbmwpfgKssOp0O58+fh0ajqfHLGhMREVH14jkPIiIiUhTDCBERESmKYYSIiIgUVe19RqpCyYWFb73gHhEREdVeJcftkuN4eSwijGRlZQEA/P39Fa6EiIiIzJWVlQUXF5dy71fJneJKLWAwGHDx4kU4OTnd9fChm2VmZsLf3x/JyclwdnaussclU9zPNYf7umZwP9cM7ueaUZ37WUSQlZUFX1/f285DYhEtI2q1Go0aNaq2x3d2duYHvQZwP9cc7uuawf1cM7ifa0Z17efbtYiUYAdWIiIiUhTDCBERESmqXocRrVaLmTNnQqvVKl1Kncb9XHO4r2sG93PN4H6uGbVhP1tEB1YiIiKqu+p1ywgREREpj2GEiIiIFMUwQkRERIpiGCEiIiJF1fkwMn/+fAQGBsLW1hahoaGIioq67fpr165Fq1atYGtri/bt22Pz5s01VKllM2c/L1y4EL169YKrqytcXV0RHh5+x/eF/mHuZ7rE6tWroVKp8PDDD1dvgXWEufs5PT0dEyZMgI+PD7RaLVq2bMnvjwowdz/PnTsXQUFBsLOzg7+/PyZPnoz8/PwaqtYy7d69G4MGDYKvry9UKhV+/vnnO26zc+dOdOnSBVqtFs2bN8fSpUurt0ipw1avXi0ajUYWL14scXFxMm7cOGnQoIGkpaWVuf7evXvFyspKPvjgA4mPj5fXX39dbGxs5OjRozVcuWUxdz8//vjjMn/+fImJiZHjx4/LE088IS4uLnLhwoUartzymLuvSyQkJIifn5/06tVLhgwZUjPFWjBz93NBQYGEhITIgAEDZM+ePZKQkCA7d+6U2NjYGq7cspi7n1esWCFarVZWrFghCQkJsnXrVvHx8ZHJkyfXcOWWZfPmzTJ9+nT56aefBICsW7futuufO3dO7O3tZcqUKRIfHy+ff/65WFlZyZYtW6qtxjodRrp16yYTJkww/q3X68XX11dmz55d5vqPPfaYDBw40GRZaGioPPPMM9Vap6Uzdz/fqqioSJycnGTZsmXVVWKdUZl9XVRUJD169JBvvvlGxowZwzBSAebu5y+//FKaNm0qOp2upkqsE8zdzxMmTJD777/fZNmUKVOkZ8+e1VpnXVKRMPLyyy9L27ZtTZYNHTpUIiIiqq2uOnuaRqfTITo6GuHh4cZlarUa4eHhiIyMLHObyMhIk/UBICIiotz1qXL7+Va5ubkoLCyEm5tbdZVZJ1R2X8+aNQuenp4YO3ZsTZRp8Sqznzds2ICwsDBMmDABXl5eaNeuHd577z3o9fqaKtviVGY/9+jRA9HR0cZTOefOncPmzZsxYMCAGqm5vlDiWGgRF8qrjKtXr0Kv18PLy8tkuZeXF06cOFHmNqmpqWWun5qaWm11WrrK7OdbvfLKK/D19S314SdTldnXe/bswaJFixAbG1sDFdYNldnP586dwx9//IERI0Zg8+bNOHPmDP7v//4PhYWFmDlzZk2UbXEqs58ff/xxXL16Fffccw9EBEVFRXj22Wfx2muv1UTJ9UZ5x8LMzEzk5eXBzs6uyp+zzraMkGWYM2cOVq9ejXXr1sHW1lbpcuqUrKwsjBo1CgsXLoSHh4fS5dRpBoMBnp6e+PrrrxEcHIyhQ4di+vTpWLBggdKl1Sk7d+7Ee++9hy+++AKHDx/GTz/9hE2bNuHtt99WujS6S3W2ZcTDwwNWVlZIS0szWZ6WlgZvb+8yt/H29jZrfarcfi7x4YcfYs6cOfj999/RoUOH6iyzTjB3X589exaJiYkYNGiQcZnBYAAAWFtb4+TJk2jWrFn1Fm2BKvOZ9vHxgY2NDaysrIzLWrdujdTUVOh0Omg0mmqt2RJVZj+/8cYbGDVqFJ5++mkAQPv27ZGTk4Px48dj+vTpUKv5+7oqlHcsdHZ2rpZWEaAOt4xoNBoEBwdj+/btxmUGgwHbt29HWFhYmduEhYWZrA8A27ZtK3d9qtx+BoAPPvgAb7/9NrZs2YKQkJCaKNXimbuvW7VqhaNHjyI2NtZ4Gzx4MO677z7ExsbC39+/Jsu3GJX5TPfs2RNnzpwxhj0AOHXqFHx8fBhEylGZ/Zybm1sqcJQEQOFl1qqMIsfCausaWwusXr1atFqtLF26VOLj42X8+PHSoEEDSU1NFRGRUaNGyauvvmpcf+/evWJtbS0ffvihHD9+XGbOnMmhvRVg7n6eM2eOaDQa+eGHH+TSpUvGW1ZWllIvwWKYu69vxdE0FWPufk5KShInJyd5/vnn5eTJk7Jx40bx9PSUd955R6mXYBHM3c8zZ84UJycnWbVqlZw7d05+++03adasmTz22GNKvQSLkJWVJTExMRITEyMA5OOPP5aYmBg5f/68iIi8+uqrMmrUKOP6JUN7X3rpJTl+/LjMnz+fQ3vv1ueffy6NGzcWjUYj3bp1k/379xvv6927t4wZM8Zk/e+//15atmwpGo1G2rZtK5s2barhii2TOfs5ICBAAJS6zZw5s+YLt0DmfqZvxjBScebu53379kloaKhotVpp2rSpvPvuu1JUVFTDVVsec/ZzYWGhvPnmm9KsWTOxtbUVf39/+b//+z+5ceNGzRduQXbs2FHmd27Jvh0zZoz07t271DadOnUSjUYjTZs2lSVLllRrjSoRtm0RERGRcupsnxEiIiKyDAwjREREpCiGESIiIlIUwwgREREpimGEiIiIFMUwQkRERIpiGCEiIiJFMYwQERGRohhGiIiISFEMI0RERKQohhEiIiJSFMMIERERKer/AZVWoRLjoWWgAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Logistic: f1=0.004 auc=0.178\n" - ] - }, - { - "data": { - "image/png": "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ihWaOnWqnn/+ea1du1bvvvuuFi9erMcff9zq0uAF9NzUUKtWreRwOJSdne22Pzs7W3FxcR6PiYuLq1V71O08l3n66ac1bdo0ffzxxzrnnHN8WWajV9vzvHXrVu3YsUOpqanl+1wulyQpKChImzZtUqdOnXxbdCNUl7/Pbdq0UXBwsBwOR/m+s846S1lZWSosLFRISIhPa26M6nKeH374Yd1000265ZZbJEk9evRQfn6+br31Vj344IOy2/m/vzdU93swIiLCZ702Ej03NRYSEqK+ffsqMzOzfJ/L5VJmZqaSk5M9HpOcnOzWXpKWLVtWbXvU7TxL0pNPPqnHH39cS5cuVb9+/fxRaqNW2/PctWtXfffdd1q/fn35dtVVV+miiy7S+vXrlZCQ4M/yG426/H0eOHCgtmzZUh4eJWnz5s1q06YNwaYadTnPR48erRJgygKlwZKLXmPZ70GfDlcOMPPnzzecTqcxb94848cffzRuvfVWIyoqysjKyjIMwzBuuukm4/777y9vv2rVKiMoKMh4+umnjQ0bNhhTpkxhKngN1PY8T5s2zQgJCTHefvtt45dffinf8vLyrPoIjUJtz/OJmC1VM7U9zzt37jTCw8ON8ePHG5s2bTLef/99IyYmxvjLX/5i1UdoFGp7nqdMmWKEh4cb//znP41t27YZH330kdGpUyfjuuuus+ojNAp5eXnGunXrjHXr1hmSjJkzZxrr1q0zfv75Z8MwDOP+++83brrppvL2ZVPB77nnHmPDhg3G7NmzmQreED333HPG6aefboSEhBj9+/c3vvzyy/LvDRo0yBg5cqRb+7feesvo3LmzERISYnTr1s1YvHixnytunGpzntu3b29IqrJNmTLF/4U3MrX9+1wZ4abmanuev/jiCyMpKclwOp1Gx44djSeeeMIoLi72c9WNT23Oc1FRkfHII48YnTp1MkJDQ42EhATjzjvvNA4dOuT/whuRTz75xOPP27JzO3LkSGPQoEFVjunVq5cREhJidOzY0Xj11Vd9XqfNMOh/AwAAgYMxNwAAIKAQbgAAQEAh3AAAgIBCuAEAAAGFcAMAAAIK4QYAAAQUwg0AAAgohBsAABBQCDcAIMlms+m9996TJO3YsUM2m03r16+3tCYAdUO4AWC5UaNGyWazyWazKTg4WB06dNC9996r48ePW10agEYoyOoCAECSLr/8cr366qsqKirSmjVrNHLkSNlsNk2fPt3q0gA0MvTcAGgQnE6n4uLilJCQoKFDhyolJUXLli2TJLlcLqWnp6tDhw4KCwtTz5499fbbb7sd/8MPP+i3v/2tIiIiFB4ervPPP19bt26VJH399de69NJL1apVK0VGRmrQoEFau3at3z8jAP8g3ABocL7//nt98cUXCgkJkSSlp6fr9ddf15w5c/TDDz9o4sSJ+sMf/qBPP/1UkrRnzx5dcMEFcjqdWr58udasWaObb75ZxcXFkqS8vDyNHDlSK1eu1JdffqkzzzxTQ4YMUV5enmWfEYDvcFkKQIPw/vvvq0WLFiouLlZBQYHsdrtmzZqlgoICTZ06VR9//LGSk5MlSR07dtTKlSv1t7/9TYMGDdLs2bMVGRmp+fPnKzg4WJLUuXPn8te++OKL3d7rxRdfVFRUlD799FP99re/9d+HBOAXhBsADcJFF12kF154Qfn5+XrmmWcUFBSk3/3ud/rhhx909OhRXXrppW7tCwsL1bt3b0nS+vXrdf7555cHmxNlZ2froYce0ooVK7Rv3z6VlJTo6NGj2rlzp88/FwD/I9wAaBCaN2+uM844Q5I0d+5c9ezZU6+88oq6d+8uSVq8eLHi4+PdjnE6nZKksLCwk772yJEj9euvv+rZZ59V+/bt5XQ6lZycrMLCQh98EgBWI9wAaHDsdrseeOABpaWlafPmzXI6ndq5c6cGDRrksf0555yj1157TUVFRR57b1atWqXnn39eQ4YMkSTt2rVLBw4c8OlnAGAdBhQDaJCuvfZaORwO/e1vf9Pdd9+tiRMn6rXXXtPWrVu1du1aPffcc3rttdckSePHj1dubq6uv/56ffPNN/rpp5/097//XZs2bZIknXnmmfr73/+uDRs26L///a+GDx9+yt4eAI0XPTcAGqSgoCCNHz9eTz75pLZv367WrVsrPT1d27ZtU1RUlPr06aMHHnhAknTaaadp+fLluueeezRo0CA5HA716tVLAwcOlCS98soruvXWW9WnTx8lJCRo6tSpuvvuu638eAB8yGYYhmF1EQAAAN7CZSkAABBQCDcAACCgEG4AAEBAIdwAAICAQrgBAAABhXADAAACCuEGAAAEFMINAAAIKIQbAAAQUAg3AAAgoBBuAABAQPl/0AhxfU9y6WcAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "+------------------+---------------------+---------------------+\n", - "| Confusion Matrix | Positive prediction | Negative prediction |\n", - "+------------------+---------------------+---------------------+\n", - "| Positive class | True positive (TP) | False negative (FN) |\n", - "| Negative class | False positive (FP) | True negative (TN) |\n", - "+------------------+---------------------+---------------------+\n", - "+------------------+---------------------+---------------------+\n", - "| Confusion Matrix | Positive prediction | Negative prediction |\n", - "+------------------+---------------------+---------------------+\n", - "| Positive class | 9 | 4875 |\n", - "| Negative class | 3 | 56616 |\n", - "+------------------+---------------------+---------------------+\n", - "ROC AUC: 0.5008948830479588\n", - "Accuracy = 0.9206867957660602\n", - "Precision = 0.75\n", - "Recall = 0.0018427518427518428\n", - "F1 Score = 0.0036764705882352945\n", - "Fbeta Score = (0.49, 0.92, 0.91)\n", - " model tn fp fn tp FP+10*FN accuracy ROC_AUC precision \\\n", - "0 RFC 56616 3 4875 9 48753 0.920687 0.500895 0.75 \n", - "\n", - " recall F1_Score Fbeta_macro Fbeta_micro Fbeta_weighted \n", - "0 0.001843 0.003676 0.49 0.92 0.91 \n" - ] - }, - { - "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", - "
modeltnfpfntpFP+10*FNaccuracyROC_AUCprecisionrecallF1_ScoreFbeta_macroFbeta_microFbeta_weighted
0RFC56616348759487530.9206870.5008950.750.0018430.0036760.490.920.91
\n", - "
" - ], - "text/plain": [ - " model tn fp fn tp FP+10*FN accuracy ROC_AUC precision \\\n", - "0 RFC 56616 3 4875 9 48753 0.920687 0.500895 0.75 \n", - "\n", - " recall F1_Score Fbeta_macro Fbeta_micro Fbeta_weighted \n", - "0 0.001843 0.003676 0.49 0.92 0.91 " - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "generate_model_report(best_rf_classifier, \"RFC\", X_test, Y_test)" ] }, { "cell_type": "code", - "execution_count": 87, + "execution_count": null, "id": "ccf49b0d", "metadata": {}, "outputs": [], @@ -2286,47 +845,10 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": null, "id": "532c0079", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "prediction proba 61503\n", - "Y_true 61503\n", - "Series([], Name: best, dtype: object)\n", - "0 1\n", - "Name: best, dtype: object\n", - "best b score 38323 1 0.1\n", - "Name: threshold, dtype: float64\n", - " threshold tn fp fn tp FP+10*FN accuracy ROC_AUC \\\n", - "0 0.0 0 56619 0 4884 56619 0.079411 0.500000 \n", - "1 0.1 35476 21143 1718 3166 38323 0.628295 0.637407 \n", - "2 0.2 52293 4326 3650 1234 40826 0.870315 0.588128 \n", - "3 0.3 55883 736 4570 314 46436 0.913728 0.525646 \n", - "4 0.4 56537 82 4812 72 48202 0.920427 0.506647 \n", - "5 0.5 56614 5 4873 11 48735 0.920687 0.501082 \n", - "\n", - " precision recall F1_Score Fbeta_macro Fbeta_micro Fbeta_weighted \\\n", - "0 0.079411 1.000000 0.147137 0.150668 0.079411 0.023929 \n", - "1 0.130240 0.648239 0.216901 0.516890 0.628295 0.647983 \n", - "2 0.221942 0.252662 0.236308 0.585831 0.870315 0.871810 \n", - "3 0.299048 0.064292 0.105831 0.525039 0.913728 0.902537 \n", - "4 0.467532 0.014742 0.028583 0.500213 0.920427 0.905601 \n", - "5 0.687500 0.002252 0.004490 0.492911 0.920687 0.905170 \n", - "\n", - " best \n", - "0 0 \n", - "1 1 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", - "5 0 \n" - ] - } - ], + "outputs": [], "source": [ "test_metrics = find_optimal_business_score(y_pred_proba, Y_test)\n", "metrics_domain = { \"train\": metrics[\"train\"][5], \n", @@ -2460,18 +982,10 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": null, "id": "38b56318", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{\"detail\":[{\"type\":\"missing\",\"loc\":[\"body\",\"data_point\"],\"msg\":\"Field required\",\"input\":{\"inputs\":[[0,0,1,1,63000.0,310500.0,15232.5,310500.0,0.026392,16263,-214.0,-8930.0,-573,0.0,1,1,0,1,1,0,2.0,2,2,11,0,0,0,0,1,1,0.0,0.0765011930557638,0.0005272652387098,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,true,false,false,false,false,false,false,false,true,false,false,false,false,false,false,true,false,false,false,false,true,false,false,false,true,false,false,true,false,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]]},\"url\":\"https://errors.pydantic.dev/2.6/v/missing\"}]}" - ] - } - ], + "outputs": [], "source": [ "!curl http://127.0.0.1:8000/predict -H 'Content-Type: application/json' -d '{\"inputs\": [[0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, false, false, false, false, true, false, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]]}'\n", " " @@ -2479,7 +993,7 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 9, "id": "d2780b28", "metadata": {}, "outputs": [ @@ -2495,12 +1009,32 @@ "!curl http://127.0.0.1:8000/predict -H 'Content-Type: application/json' -d '{\"data_point\": [[0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, true, false, false, false, false, true, false, false, false, true, false, false, true, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]]}'\n" ] }, + { + "cell_type": "markdown", + "id": "e173c5e8", + "metadata": {}, + "source": [ + "**Conversion of type of the test data**" + ] + }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 14, "id": "16023232", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 246008 entries, 0 to 246007\n", + "Columns: 239 entries, 0 to 238\n", + "dtypes: float64(239)\n", + "memory usage: 448.6 MB\n" + ] + } + ], "source": [ "# Select columns with data type 'int64'\n", "int_columns = X_train.select_dtypes(include=['int64']).columns\n", @@ -2511,388 +1045,127 @@ "int_columns = X_train.select_dtypes(include=['bool']).columns\n", "\n", "# Convert selected columns to int\n", - "X_train[int_columns] = X_train[int_columns].astype('float')" + "X_train[int_columns] = X_train[int_columns].astype('float')\n", + "X_train.info()" + ] + }, + { + "cell_type": "markdown", + "id": "52314e2d", + "metadata": {}, + "source": [ + "**Selection of a data point for testing**" ] }, { "cell_type": "code", - "execution_count": 5, - "id": "e17ae127", + "execution_count": 15, + "id": "4718bed0", "metadata": {}, "outputs": [], - "source": [] + "source": [ + "test = X_train.copy()\n", + "test[\"ID\"] = ids_test\n", + "test.set_index(\"ID\", inplace=True)\n", + "ids_test.iloc[5]\n", + "#test.loc[100008].values.tolist()\n", + "data_for_request = test.loc[100030].values.tolist()" + ] }, { "cell_type": "code", - "execution_count": 6, - "id": "4718bed0", + "execution_count": 17, + "id": "a7a4a0ca", + "metadata": {}, + "outputs": [], + "source": [ + "#data_for_request" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "8d5b7cc8", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "[0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 99000.0,\n", - " 490495.5,\n", - " 27517.5,\n", - " 454500.0,\n", - " 0.035792,\n", - " 16941.0,\n", - " -1588.0,\n", - " -4970.0,\n", - " -477.0,\n", - " 0.0,\n", - " 1.0,\n", - " 1.0,\n", - " 1.0,\n", - " 1.0,\n", - " 1.0,\n", - " 0.0,\n", - " 2.0,\n", - " 2.0,\n", - " 2.0,\n", - " 16.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.3542247319929012,\n", - " 0.6212263380626669,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " -2536.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 1.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 1.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "URI : http://127.0.0.1:8000/predict\n", + "Predictions: {\"prediction\":0.8939533102108367,\"probability\":0.8}\n" + ] } ], "source": [ - "test = X_train.copy()\n", - "test[\"ID\"] = ids_test\n", - "test.set_index(\"ID\", inplace=True)\n", - "ids_test.iloc[5]\n", - "test.loc[100008].values.tolist()" + "import requests\n", + "\n", + "# initialised with: mlflow models serve -m model_LGBM02/ --port 8092\n", + "#http://127.0.0.1:8092\n", + "\n", + "host = '127.0.0.1'\n", + "port = '8000'\n", + "\n", + "# endpoint\n", + "url = f'http://{host}:{port}/predict'\n", + "print(\"URI : \", url)\n", + "headers = {\n", + " 'Content-Type': 'application/json',\n", + "}\n", + "\n", + "headers = {'Content-Type': 'application/json'}\n", + "\n", + "# Send the POST request with the data\n", + "response = requests.post(url, json={\"data_point\": data_for_request})\n", + "\n", + "print(f'Predictions: {response.text}')" ] }, { - "cell_type": "code", - "execution_count": 85, - "id": "4da4a8e1", + "cell_type": "markdown", + "id": "ab9329b5", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "132" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "len(int_columns)" + "**TEST with empty data set**" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "4acd112e", + "execution_count": 21, + "id": "3773827d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "RangeIndex: 246008 entries, 0 to 246007\n", - "Columns: 239 entries, 0 to 238\n", - "dtypes: float64(239)\n", - "memory usage: 448.6 MB\n" + "Predictions: {\"detail\":\"An error occurred during prediction: Found array with 0 feature(s) (shape=(1, 0)) while a minimum of 1 is required.\"}\n" ] } ], "source": [ - "# Select columns with data type 'int64'\n", - "X_train.info()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "a5ca51de", - "metadata": {}, - "outputs": [], - "source": [ - "data_for_request = test.loc[100030].values.tolist()" + "# Send the POST request with the data\n", + "response = requests.post(url, json={\"data_point\":[]})\n", + "\n", + "print(f'Predictions: {response.text}')" ] }, { - "cell_type": "code", - "execution_count": 15, - "id": "a7a4a0ca", + "cell_type": "markdown", + "id": "61c9c2b4", "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'list' object has no attribute 'info'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[15], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdata_for_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minfo\u001b[49m()\n", - "\u001b[0;31mAttributeError\u001b[0m: 'list' object has no attribute 'info'" - ] - } - ], "source": [ - "data_for_request" + "**TEST on hosting environment**" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "8d5b7cc8", + "execution_count": null, + "id": "e705243c", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "URI : http://127.0.0.1:8000/predict\n", - "Predictions: {\"prediction\":0.8939533102108367,\"probability\":0.8}\n" - ] - } - ], + "outputs": [], "source": [ - "import requests\n", - "\n", - "# initialised with: mlflow models serve -m model_LGBM02/ --port 8092\n", - "#http://127.0.0.1:8092\n", - "host = '127.0.0.1'\n", - "port = '8000'\n", - "\n", - "# endpoint\n", - "url = f'http://{host}:{port}/predict'\n", - "print(\"URI : \", url)\n", - "headers = {\n", - " 'Content-Type': 'application/json',\n", - "}\n", - "\n", - "headers = {'Content-Type': 'application/json'}\n", - "\n", + "url = 'https://fastapi-cd-webapp.azurewebsites.net/predict'\n", "# Send the POST request with the data\n", "response = requests.post(url, json={\"data_point\": data_for_request})\n", "\n", @@ -2902,7 +1175,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e705243c", + "id": "40be404e", "metadata": {}, "outputs": [], "source": [] diff --git a/3_FastAPI/__init__.py b/3_FastAPI/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/3_FastAPI/main.py b/3_FastAPI/main.py new file mode 100644 index 0000000..8b3b512 --- /dev/null +++ b/3_FastAPI/main.py @@ -0,0 +1,68 @@ +import uvicorn +from fastapi import FastAPI +import numpy as np +#import pickle # pipfile does not lock +import mlflow +import lightgbm +import os +from typing import List +from pydantic import BaseModel # for data validation + +# load environment variables +port = os.environ["PORT"] + +# initialize FastAPI +app = FastAPI(title="Automatic Credit Scoring", + description='''Obtain a credit score (0,1) for ClientID. + Visit this URL at port 8501 for the streamlit interface.''', + version="0.1.0",) + +# Pydantic model for the input data +class DataPoint(BaseModel): + data_point: List[float] + +# 3. Expose the prediction functionality, make a prediction from the passed +# JSON data and return the predicted flower species with the confidence +@app.post('/predict') +def predict_credit_score(data: DataPoint): + """ Endpoint for ML model + + Args: + list (float): one data point of 239 floats + + Returns: + float: prediction probability + int: prediction score + """ + print("predict_credit_score function") + #print(data) + print([data.data_point]) + + #if len(data) != 239: + # raise HTTPException(status_code=400, detail="Expected 239 data points") + + #data_point = {"data_point": data_point} + + #data_point = np.array(data_point) #.reshape(1, -1) + + sklearn_pyfunc = mlflow.lightgbm.load_model(model_uri="LightGBM") + #data = [[0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, True, False, False, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, True, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]] + + prediction = sklearn_pyfunc.predict_proba([data.data_point]).max() + #print(prediction) + #prediction = 0.7 + + return { + 'prediction': prediction, + 'probability': 0.8 + } + +@app.get("/") +def index(): + return {"data": "Application ran successfully - FastAPI release v4.2 with Github Actions no staging: cloudpickle try environment pipenv", + + } + #return {st.title("Hello World")} + +if __name__ == "__main__": + uvicorn.run("main:app", host="0.0.0.0", port=port, reload=False) \ No newline at end of file diff --git a/3_STREAMlit_dashboard.py b/3_STREAMlit_dashboard.py index c8fcf78..f29f39a 100644 --- a/3_STREAMlit_dashboard.py +++ b/3_STREAMlit_dashboard.py @@ -21,10 +21,8 @@ def request_prediction(model_uri, data): # def main(): - #MLFLOW_URI = 'https://fastapi-cd-webapp.azurewebsites.net/predict' - MLFLOW_URI = 'http://0.0.0.0:8000/predict' - - + MLFLOW_URI = 'https://fastapi-cd-webapp.azurewebsites.net/predict' + #MLFLOW_URI = 'http://0.0.0.0:8000/predict' api_choice = st.sidebar.selectbox( 'Quelle API souhaitez vous utiliser', diff --git a/5_unittest.py b/5_unittest.py new file mode 100644 index 0000000..bfcf896 --- /dev/null +++ b/5_unittest.py @@ -0,0 +1,84 @@ +import unittest +import requests +from fastapi.testclient import TestClient +import httpx +from main import app +import pytest + + +client = TestClient(app) + +class TestConnection(unittest.TestCase): + def test_connection_functionality(self): + """ + Test that connection is working and + """ + try: + test_location = "local" + if (test_location == "local"): + host = '127.0.0.1' + port = '8000' + # endpoint + url = f'http://{host}:{port}/predict' + else: + url = 'https://fastapi-cd-webapp.azurewebsites.net/predict' + + data_for_request = [0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, True, False, False, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, True, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, + False] + # Send the POST request with the data + response = requests.post(url, json={"data_point": data_for_request}) + assert response.status_code == 200 + except Exception as e: + pytest.fail(f"Test failed: {e}") + + def test_response(self): + """ + TEST model output with fixture test data + """ + try: + test_location = "local" + if (test_location == "local"): + host = '127.0.0.1' + port = '8000' + # endpoint + url = f'http://{host}:{port}/predict' + else: + url = 'https://fastapi-cd-webapp.azurewebsites.net/predict' + + # fixture simulation with test data + data_for_request = [0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, True, False, False, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, True, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, + False] + # Send the POST request with the data + response = requests.post(url, json={"data_point": data_for_request}) + assert response.status_code == 200 + assert response.json() == {"prediction":0.857982822560715,"probability":0.8} + # Unit tests for response status codes + except Exception as e: + pytest.fail(f"Test failed: {e}") + + def test_response(self): + """ + TEST "post" with empty data + """ + try: + test_location = "local" + if (test_location == "local"): + host = '127.0.0.1' + port = '8000' + # endpoint + url = f'http://{host}:{port}/predict' + else: + url = 'https://fastapi-cd-webapp.azurewebsites.net/predict' + + # fixture simulation with test data + data_for_request = [] + + # Send the POST request with the data + response = requests.post(url, json={"data_point": data_for_request}) + assert response.status_code == 500 + assert response.json() == {"detail":"An error occurred during prediction: Found array with 0 feature(s) (shape=(1, 0)) while a minimum of 1 is required."} + except Exception as e: + pytest.fail(f"Test failed: {e}") + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index d0de556..2e4f984 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,8 +17,9 @@ RUN pip install uvicorn RUN pip install fastapi RUN pip install mlflow RUN pip install lightgbm -#RUN pip install cloudpickle +RUN pip install pydantic RUN pip install streamlit +RUN pip install typing #RUN pipenv install --system --deploy --ignore-pipfile # expose the port that uvicorn will run the app on diff --git a/Pipfile b/Pipfile index 16ca00c..0a9456a 100644 --- a/Pipfile +++ b/Pipfile @@ -12,8 +12,12 @@ streamlit = "*" mlflow = "2.9.2" lightgbm = "4.1.0" pydantic = "*" +httpx = "*" +pytest = "*" [dev-packages] [requires] python_version = "3.8" + +[scripts] diff --git a/Pipfile.lock b/Pipfile.lock index fc324b8..8899921 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "bce76893824206d6fe663426a08bfdbd2653e0efe80fae8645da99ca5e63fcc4" + "sha256": "555b70e77b2ef18fe43665bf3ce345b8d607b14039aeeee809050536de382dcc" }, "pipfile-spec": 6, "requires": { @@ -42,11 +42,11 @@ }, "anyio": { "hashes": [ - "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee", - "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f" + "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8", + "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6" ], "markers": "python_version >= '3.8'", - "version": "==4.2.0" + "version": "==4.3.0" }, "attrs": { "hashes": [ @@ -332,51 +332,51 @@ }, "fonttools": { "hashes": [ - "sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252", - "sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea", - "sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4", - "sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e", - "sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac", - "sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61", - "sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e", - "sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d", - "sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348", - "sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee", - "sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199", - "sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01", - "sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2", - "sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81", - "sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814", - "sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070", - "sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68", - "sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5", - "sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7", - "sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f", - "sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a", - "sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1", - "sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e", - "sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a", - "sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092", - "sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31", - "sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7", - "sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48", - "sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2", - "sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec", - "sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a", - "sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f", - "sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5", - "sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0", - "sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d", - "sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a", - "sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738", - "sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95", - "sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e", - "sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124", - "sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784", - "sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703" + "sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133", + "sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828", + "sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc", + "sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2", + "sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559", + "sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42", + "sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf", + "sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c", + "sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036", + "sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942", + "sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86", + "sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22", + "sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5", + "sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75", + "sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a", + "sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd", + "sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814", + "sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b", + "sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a", + "sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844", + "sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034", + "sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc", + "sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4", + "sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18", + "sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836", + "sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9", + "sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880", + "sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb", + "sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff", + "sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7", + "sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e", + "sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29", + "sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532", + "sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be", + "sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075", + "sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717", + "sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb", + "sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321", + "sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e", + "sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e", + "sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6", + "sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb" ], "markers": "python_version >= '3.8'", - "version": "==4.48.1" + "version": "==4.49.0" }, "gitdb": { "hashes": [ @@ -388,11 +388,11 @@ }, "gitpython": { "hashes": [ - "sha256:c36b6634d069b3f719610175020a9aed919421c87552185b085e04fbbdb10b7c", - "sha256:ed66e624884f76df22c8e16066d567aaa5a37d5b5fa19db2c6df6f7156db9048" + "sha256:1bf9cd7c9e7255f77778ea54359e54ac22a72a5b51288c457c881057b7bb9ecd", + "sha256:2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb" ], "markers": "python_version >= '3.7'", - "version": "==3.1.41" + "version": "==3.1.42" }, "greenlet": { "hashes": [ @@ -474,6 +474,23 @@ "markers": "python_version >= '3.7'", "version": "==0.14.0" }, + "httpcore": { + "hashes": [ + "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73", + "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022" + ], + "markers": "python_version >= '3.8'", + "version": "==1.0.4" + }, + "httpx": { + "hashes": [ + "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5", + "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==0.27.0" + }, "idna": { "hashes": [ "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", @@ -498,6 +515,14 @@ "markers": "python_version < '3.9'", "version": "==6.1.1" }, + "iniconfig": { + "hashes": [ + "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", + "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0.0" + }, "itsdangerous": { "hashes": [ "sha256:2c2349112351b88699d8d4b6b075022c0808887cb7ad10069318a8b0bc88db44", @@ -752,56 +777,56 @@ }, "matplotlib": { "hashes": [ - "sha256:0037d066cca1f4bda626c507cddeb6f7da8283bc6a214da2db13ff2162933c52", - "sha256:0604880e4327114054199108b7390f987f4f40ee5ce728985836889e11a780ba", - "sha256:08372696b3bb45c563472a552a705bfa0942f0a8ffe084db8a4e8f9153fbdf9d", - "sha256:0c698b33f9a3f0b127a8e614c8fb4087563bb3caa9c9d95298722fa2400cdd3f", - "sha256:116ef0b43aa00ff69260b4cce39c571e4b8c6f893795b708303fa27d9b9d7548", - "sha256:1707b20b25e90538c2ce8d4409e30f0ef1df4017cc65ad0439633492a973635b", - "sha256:1e6abcde6fc52475f9d6a12b9f1792aee171ce7818ef6df5d61cb0b82816e6e8", - "sha256:24b8f28af3e766195c09b780b15aa9f6710192b415ae7866b9c03dee7ec86370", - "sha256:286332f8f45f8ffde2d2119b9fdd42153dccd5025fa9f451b4a3b5c086e26da5", - "sha256:32183d4be84189a4c52b4b8861434d427d9118db2cec32986f98ed6c02dcfbb6", - "sha256:3640f33632beb3993b698b1be9d1c262b742761d6101f3c27b87b2185d25c875", - "sha256:390920a3949906bc4b0216198d378f2a640c36c622e3584dd0c79a7c59ae9f50", - "sha256:3c557d9165320dff3c5f2bb99bfa0b6813d3e626423ff71c40d6bc23b83c3339", - "sha256:3fa193286712c3b6c3cfa5fe8a6bb563f8c52cc750006c782296e0807ce5e799", - "sha256:44856632ebce88abd8efdc0a0dceec600418dcac06b72ae77af0019d260aa243", - "sha256:55eec941a4743f0bd3e5b8ee180e36b7ea8e62f867bf2613937c9f01b9ac06a2", - "sha256:5661c8639aded7d1bbf781373a359011cb1dd09199dee49043e9e68dd16f07ba", - "sha256:568574756127791903604e315c11aef9f255151e4cfe20ec603a70f9dda8e259", - "sha256:5c9133f230945fe10652eb33e43642e933896194ef6a4f8d5e79bb722bdb2000", - "sha256:62e094d8da26294634da9e7f1856beee3978752b1b530c8e1763d2faed60cc10", - "sha256:632fc938c22117d4241411191cfb88ac264a4c0a9ac702244641ddf30f0d739c", - "sha256:798ff59022eeb276380ce9a73ba35d13c3d1499ab9b73d194fd07f1b0a41c304", - "sha256:7a7709796ac59fe8debde68272388be6ed449c8971362eb5b60d280eac8dadde", - "sha256:7a9981b2a2dd9da06eca4ab5855d09b54b8ce7377c3e0e3957767b83219d652d", - "sha256:7cd4fef8187d1dd0d9dcfdbaa06ac326d396fb8c71c647129f0bf56835d77026", - "sha256:7d479aac338195e2199a8cfc03c4f2f55914e6a120177edae79e0340a6406457", - "sha256:7dfe6821f1944cb35603ff22e21510941bbcce7ccf96095beffaac890d39ce77", - "sha256:81e1a7ac818000e8ac3ca696c3fdc501bc2d3adc89005e7b4e22ee5e9d51de98", - "sha256:83859ac26839660ecd164ee8311272074250b915ac300f9b2eccc84410f8953b", - "sha256:8e6227ca8492baeef873cdd8e169a318efb5c3a25ce94e69727e7f964995b0b1", - "sha256:ab16868714e5cc90ec8f7ff5d83d23bcd6559224d8e9cb5227c9f58748889fe8", - "sha256:b167f54cb4654b210c9624ec7b54e2b3b8de68c93a14668937e7e53df60770ec", - "sha256:b1d70bc1ea1bf110bec64f4578de3e14947909a8887df4c1fd44492eca487955", - "sha256:b71079239bd866bf56df023e5146de159cb0c7294e508830901f4d79e2d89385", - "sha256:be3493bbcb4d255cb71de1f9050ac71682fce21a56089eadbcc8e21784cb12ee", - "sha256:bf91a42f6274a64cb41189120b620c02e574535ff6671fa836cade7701b06fbd", - "sha256:c83f49e795a5de6c168876eea723f5b88355202f9603c55977f5356213aa8280", - "sha256:c90590d4b46458677d80bc3218f3f1ac11fc122baa9134e0cb5b3e8fc3714052", - "sha256:ce163be048613b9d1962273708cc97e09ca05d37312e670d166cf332b80bbaff", - "sha256:de7c07069687be64fd9d119da3122ba13a8d399eccd3f844815f0dc78a870b2c", - "sha256:e4dfee00aa4bd291e08bb9461831c26ce0da85ca9781bb8794f2025c6e925281", - "sha256:e680f49bb8052ba3b2698e370155d2b4afb49f9af1cc611a26579d5981e2852a", - "sha256:f59a70e2ec3212033ef6633ed07682da03f5249379722512a3a2a26a7d9a738e", - "sha256:f757e8b42841d6add0cb69b42497667f0d25a404dcd50bd923ec9904e38414c4", - "sha256:f8c725d1dd2901b2e7ec6cd64165e00da2978cc23d4143cb9ef745bec88e6b04", - "sha256:f8fc2df756105784e650605e024d36dc2d048d68e5c1b26df97ee25d1bd41f9f", - "sha256:ff539c4a17ecdf076ed808ee271ffae4a30dcb7e157b99ccae2c837262c07db6" + "sha256:039ad54683a814002ff37bf7981aa1faa40b91f4ff84149beb53d1eb64617980", + "sha256:068ebcc59c072781d9dcdb82f0d3f1458271c2de7ca9c78f5bd672141091e9e1", + "sha256:084f1f0f2f1010868c6f1f50b4e1c6f2fb201c58475494f1e5b66fed66093647", + "sha256:090964d0afaff9c90e4d8de7836757e72ecfb252fb02884016d809239f715651", + "sha256:0ccb830fc29442360d91be48527809f23a5dcaee8da5f4d9b2d5b867c1b087b8", + "sha256:1210b7919b4ed94b5573870f316bca26de3e3b07ffdb563e79327dc0e6bba515", + "sha256:167200ccfefd1674b60e957186dfd9baf58b324562ad1a28e5d0a6b3bea77905", + "sha256:1dbcca4508bca7847fe2d64a05b237a3dcaec1f959aedb756d5b1c67b770c5ee", + "sha256:1e4e9a868e8163abaaa8259842d85f949a919e1ead17644fb77a60427c90473c", + "sha256:1e5c971558ebc811aa07f54c7b7c677d78aa518ef4c390e14673a09e0860184a", + "sha256:20da7924a08306a861b3f2d1da0d1aa9a6678e480cf8eacffe18b565af2813e7", + "sha256:29b058738c104d0ca8806395f1c9089dfe4d4f0f78ea765c6c704469f3fffc81", + "sha256:2a9a3f4d6a7f88a62a6a18c7e6a84aedcaf4faf0708b4ca46d87b19f1b526f88", + "sha256:2b6aa62adb6c268fc87d80f963aca39c64615c31830b02697743c95590ce3fbb", + "sha256:34bceb9d8ddb142055ff27cd7135f539f2f01be2ce0bafbace4117abe58f8fe4", + "sha256:3785bfd83b05fc0e0c2ae4c4a90034fe693ef96c679634756c50fe6efcc09856", + "sha256:3b15c4c2d374f249f324f46e883340d494c01768dd5287f8bc00b65b625ab56c", + "sha256:3d028555421912307845e59e3de328260b26d055c5dac9b182cc9783854e98fb", + "sha256:4a87b69cb1cb20943010f63feb0b2901c17a3b435f75349fd9865713bfa63925", + "sha256:4cdf4ef46c2a1609a50411b66940b31778db1e4b73d4ecc2eaa40bd588979b13", + "sha256:4d742ccd1b09e863b4ca58291728db645b51dab343eebb08d5d4b31b308296ce", + "sha256:4ddf7fc0e0dc553891a117aa083039088d8a07686d4c93fb8a810adca68810af", + "sha256:53e64522934df6e1818b25fd48cf3b645b11740d78e6ef765fbb5fa5ce080d02", + "sha256:5e7cc3078b019bb863752b8b60e8b269423000f1603cb2299608231996bd9d54", + "sha256:6738c89a635ced486c8a20e20111d33f6398a9cbebce1ced59c211e12cd61455", + "sha256:6b641b48c6819726ed47c55835cdd330e53747d4efff574109fd79b2d8a13748", + "sha256:743b1c488ca6a2bc7f56079d282e44d236bf375968bfd1b7ba701fd4d0fa32d6", + "sha256:9fc6fcfbc55cd719bc0bfa60bde248eb68cf43876d4c22864603bdd23962ba25", + "sha256:a99866267da1e561c7776fe12bf4442174b79aac1a47bd7e627c7e4d077ebd83", + "sha256:b45c9798ea6bb920cb77eb7306409756a7fab9db9b463e462618e0559aecb30e", + "sha256:b9b3fd853d4a7f008a938df909b96db0b454225f935d3917520305b90680579c", + "sha256:c5a2134162273eb8cdfd320ae907bf84d171de948e62180fa372a3ca7cf0f433", + "sha256:cfff9b838531698ee40e40ea1a8a9dc2c01edb400b27d38de6ba44c1f9a8e3d2", + "sha256:d3ce45010fefb028359accebb852ca0c21bd77ec0f281952831d235228f15810", + "sha256:d3e3bc79b2d7d615067bd010caff9243ead1fc95cf735c16e4b2583173f717eb", + "sha256:e530ab6a0afd082d2e9c17eb1eb064a63c5b09bb607b2b74fa41adbe3e162286", + "sha256:ec0e1adc0ad70ba8227e957551e25a9d2995e319c29f94a97575bb90fa1d4469", + "sha256:efc6bb28178e844d1f408dd4d6341ee8a2e906fc9e0fa3dae497da4e0cab775d", + "sha256:f098ffbaab9df1e3ef04e5a5586a1e6b1791380698e84938d8640961c79b1fc0", + "sha256:f0ad550da9f160737d7890217c5eeed4337d07e83ca1b2ca6535078f354e7675", + "sha256:f0b60993ed3488b4532ec6b697059897891927cbfc2b8d458a891b60ec03d9d7", + "sha256:f65342c147572673f02a4abec2d5a23ad9c3898167df9b47c149f32ce61ca078", + "sha256:fa7ebc995a7d747dacf0a717d0eb3aa0f0c6a0e9ea88b0194d3a3cd241a1500f", + "sha256:fbea1e762b28400393d71be1a02144aa16692a3c4c676ba0178ce83fc2928fdd", + "sha256:fbf730fca3e1f23713bc1fae0a57db386e39dc81ea57dc305c67f628c1d7a342", + "sha256:fd4028d570fa4b31b7b165d4a685942ae9cdc669f33741e388c01857d9723eab", + "sha256:fe184b4625b4052fa88ef350b815559dd90cc6cc8e97b62f966e1ca84074aafa" ], "markers": "python_version >= '3.8'", - "version": "==3.7.4" + "version": "==3.7.5" }, "mdurl": { "hashes": [ @@ -983,22 +1008,30 @@ "markers": "python_version < '3.9'", "version": "==1.3.10" }, + "pluggy": { + "hashes": [ + "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981", + "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be" + ], + "markers": "python_version >= '3.8'", + "version": "==1.4.0" + }, "protobuf": { "hashes": [ - "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62", - "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d", - "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61", - "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62", - "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3", - "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9", - "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830", - "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6", - "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0", - "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020", - "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e" + "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4", + "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8", + "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c", + "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d", + "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4", + "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa", + "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c", + "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019", + "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9", + "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c", + "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2" ], "markers": "python_version >= '3.8'", - "version": "==4.25.2" + "version": "==4.25.3" }, "pyarrow": { "hashes": [ @@ -1168,6 +1201,15 @@ "markers": "python_full_version >= '3.6.8'", "version": "==3.1.1" }, + "pytest": { + "hashes": [ + "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae", + "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==8.0.1" + }, "python-dateutil": { "hashes": [ "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", @@ -1571,6 +1613,14 @@ "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==0.10.2" }, + "tomli": { + "hashes": [ + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + ], + "markers": "python_version < '3.11'", + "version": "==2.0.1" + }, "toolz": { "hashes": [ "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85", @@ -1623,11 +1673,11 @@ }, "urllib3": { "hashes": [ - "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20", - "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224" + "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d", + "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19" ], "markers": "python_version >= '3.8'", - "version": "==2.2.0" + "version": "==2.2.1" }, "uvicorn": { "hashes": [ diff --git a/README.md b/README.md index b6912a8..f6dafd6 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,33 @@ -# credit_scoring_with_MLOPS +# End-to-end machine learning using FastAPI, Streamlit, Docker, Microsoft AZURE + +Objective of the ML model is to predict a credit score. We will create a model to predict credit scores and deploy that model as a WebAPP. We use Github Actions to facilitate DevOps. -Tech Stack: +Tech Stack: **VS Code** — as the IDE of choice. -**pipenv** — to handle package dependencies, create virtual environments, and load environment variables. -**FastAPI** — Python API development framework. - **Uvicorn** — ASGI server for FastAPI app. -**Docker Desktop** — build and run Docker container images on our local machine. (MacOS 11) - Containers are an isolated environment to run any code -**Azure Container Registry** — repository for storing our container image in Azure cloud. -**Azure App Service** — PaaS service to host our FastAPI app server. -**Github Actions** — automate continuous deployment workflow of FastAPI app. -**Streamlit** - Dashboard \ No newline at end of file +**pipenv** — to handle package dependencies, create virtual environments, and load environment variables. +**FastAPI** — Python API development framework for ML deployment + **Uvicorn** — ASGI server for FastAPI app. +**Docker Desktop** — build and run Docker container images on our local machine. (MacOS 11) + Containers are an isolated environment to run any code +**Azure Container Registry** — repository for storing our container image in Azure cloud. +**Azure App Service** — PaaS service to host our FastAPI app server. +**Github Actions** — automate continuous deployment workflow of model serving through FastAPI and dashboarding through Streamlit app. +**Streamlit** - Dashboard + +We will cover in the readme the below concepts: + +1) How to create dockerfile for ML API deployment using FastAPI? +2) How to run different docker commands to build, run and debug and ? +3) How to push docker image to Github using Github Actions +4) How to test ML API endpoint which is exposed by the running ML API docker container? + +The data +credit + + +The backend + + +The frontend \ No newline at end of file diff --git a/main.py b/main.py index 3444fe7..8e51dee 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,5 @@ import uvicorn -from fastapi import FastAPI +from fastapi import FastAPI, HTTPException import numpy as np #import pickle # pipfile does not lock import mlflow @@ -25,34 +25,46 @@ class DataPoint(BaseModel): # JSON data and return the predicted flower species with the confidence @app.post('/predict') def predict_credit_score(data: DataPoint): + """ Endpoint for ML model - print("predict_credit_score function") - #print(data) - print([data.data_point]) + Args: + list (float): one data point of 239 floats + + Returns: + float: prediction probability + int: prediction score + """ + try: + print("predict_credit_score function") + #print(data) + print([data.data_point]) - #if len(data) != 239: - # raise HTTPException(status_code=400, detail="Expected 239 data points") - - #data_point = {"data_point": data_point} + if (len([data.data_point]) == 0): + print("empty data set") + return {"VALUE ERROR": "Data set is empty" + } - #data_point = np.array(data_point) #.reshape(1, -1) + # TEST data + #data_test = [[0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, True, False, False, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, True, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]] + #data = {"data_point": data_test} + #prediction = sklearn_pyfunc.predict_proba(data_test).max() + + sklearn_pyfunc = mlflow.lightgbm.load_model(model_uri="LightGBM") + - sklearn_pyfunc = mlflow.lightgbm.load_model(model_uri="LightGBM") - #data = [[0, 0, 1, 1, 63000.0, 310500.0, 15232.5, 310500.0, 0.026392, 16263, -214.0, -8930.0, -573, 0.0, 1, 1, 0, 1, 1, 0, 2.0, 2, 2, 11, 0, 0, 0, 0, 1, 1, 0.0, 0.0765011930557638, 0.0005272652387098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, True, False, False, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, True, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]] - - prediction = sklearn_pyfunc.predict_proba([data.data_point]).max() - #print(prediction) - #prediction = 0.7 + prediction = sklearn_pyfunc.predict_proba([data.data_point]).max() - return { - 'prediction': prediction, - 'probability': 0.8 - } + return { + 'prediction': prediction, + 'probability': 0.8 + } + except Exception as e: + error_msg = f"An error occurred during prediction: {str(e)}" + raise HTTPException(status_code=500, detail=error_msg) @app.get("/") def index(): - return {"data": "Application ran successfully - FastAPI release v4.2 with Github Actions no staging: cloudpickle try environment pipenv", - + return {"data": "Application ran successfully - FastAPI release v4.2 with Github Actions no staging: cloudpickle try environment pipenv" } #return {st.title("Hello World")}