diff --git a/notebooks/Feature Selection - Selection feature - Comparing Methods .ipynb b/notebooks/Feature Selection - Selection feature - Comparing Methods .ipynb new file mode 100644 index 0000000..3e48c81 --- /dev/null +++ b/notebooks/Feature Selection - Selection feature - Comparing Methods .ipynb @@ -0,0 +1,828 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Comparaisons méthodes de sélection de features " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans ce notebook on essaye de sélectionner des features qui semblent signifiant pour une étude avec des modèles plus poussés.\n", + "\n", + "On utilise :\n", + "\n", + " -La fonction SelectKBest utilisé avec une chi2\n", + " -Une méthode de Recursive Feature Elimination essayée avec 5 modèles " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Librairies " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.feature_selection import SelectKBest\n", + "from sklearn.feature_selection import chi2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "from transplant.data.learningset import Learningset\n", + "\n", + "learningset = Learningset()\n", + "\n", + "X_train, X_test = learningset.get_data_merged_dynamic_flatten_full(full_df=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "X=X_train.drop(['target','id_patient'],axis=1).apply(np.absolute)\n", + "# Il y a des valeurs négatives mais je ne sais pas où encore\n", + "Y=X_train['target']\n", + "\n", + "X_col=X.columns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selection Avec SelectKBest et test chi-2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Je ne sais pas encore bien ce que cela fait." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "nombre_de_feature=30 # ici on chosit le nombre de variable à \"shortlister\"\n", + "\n", + "selection_best_feature = SelectKBest(score_func=chi2, k=nombre_de_feature)\n", + "selected_feat_fit = selection_best_feature.fit(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Donneur_CPT', 'LAS', 'PAPS', 'PF_donor', 'Poids',\n", + " 'start_operation_day', 'ends_operation_day', 'B.I.S_mean',\n", + " 'BIS SR_mean', 'PNIs_mean', 'Temp_mean', 'VT_mean', 'B.I.S_std',\n", + " 'BIS SR_std', 'PNIs_std', 'B.I.S_max', 'BIS SR_max', 'PNId_max',\n", + " 'PNIm_max', 'PNIs_max', 'SvO2 (m)_max', 'VT_max', 'FC_min',\n", + " 'PAPdia_min', 'PAPmoy_min', 'PAPsys_min', 'PASd_min', 'PASm_min',\n", + " 'Pmax_min', 'SpO2_min'],\n", + " dtype='object')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selection_featur_selectKbest=X_col[selected_feat_fit.get_support()]\n", + "selection_featur_selectKbest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Selection avec Recursive Feature Elimination" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "from sklearn.feature_selection import RFE\n", + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "from sklearn.ensemble import (RandomForestClassifier, AdaBoostClassifier,\n", + " GradientBoostingClassifier, ExtraTreesClassifier)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "nombre_de_feature=30 # ici on chosit le nombre de variable à \"shortlister\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RFE with Logistic Regression" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "log_reg = LogisticRegression()\n", + "rfe_log_reg = RFE(log_reg, nombre_de_feature)\n", + "fit_log_reg = rfe_log_reg.fit(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Aspirations_donor', 'Insuffisance_renale', 'PFO', 'RX_donor',\n", + " 'body_mass_index', 'pathologie', 'plasmapherese', 'preoperative_ECMO',\n", + " 'preoperative_ICU', 'preoperative_mechanical_ventilation',\n", + " 'super_urgence', 'start_operation_month', 'ETCO2_mean',\n", + " 'PEEPtotal_mean', 'Pmax_mean', 'Pmean_mean', 'SvO2 (m)_mean',\n", + " 'declampage_cote1_done_mean', 'declampage_cote2_done_mean',\n", + " 'BIS SR_std', 'FiO2_std', 'Pmax_std', 'Pmean_std', 'SvO2 (m)_std',\n", + " 'declampage_cote1_done_std', 'DC_max', 'ETCO2_max', 'FR_min',\n", + " 'Pmean_min', 'SpO2_min'],\n", + " dtype='object')" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selection_featur_logreg=X_col[fit_log_reg.support_]\n", + "selection_featur_logreg" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RFE with Random Forest" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "rf = RandomForestClassifier()\n", + "rfe_rf = RFE(rf, nombre_de_feature)\n", + "fit_rf = rfe_rf.fit(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['LAS', 'PF_donor', 'Poids', 'Poids_donor', 'body_mass_index',\n", + " 'start_operation_day', 'ends_operation_day', 'ETCO2_mean', 'FR_mean',\n", + " 'FiO2_mean', 'PASd_mean', 'PEEPtotal_mean', 'Pmax_mean', 'SpO2_mean',\n", + " 'Temp_mean', 'declampage_cote1_done_mean', 'PASd_std', 'PASs_std',\n", + " 'PEEPtotal_std', 'PNIs_std', 'SpO2_std', 'Temp_std',\n", + " 'declampage_cote2_done_std', 'ETCO2_max', 'PAPdia_max', 'PAPsys_max',\n", + " 'PASd_max', 'PASm_max', 'PASs_max', 'Pmean_max'],\n", + " dtype='object')" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selection_featur_rf=X_col[fit_rf.support_]\n", + "selection_featur_rf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RFE with AdaBoost" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "ada = AdaBoostClassifier()\n", + "rfe_ada = RFE(ada, nombre_de_feature)\n", + "fit_ada = rfe_ada.fit(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['LAS', 'Poids', 'RX_donor', 'age', 'body_mass_index', 'oto_score',\n", + " 'time_on_waiting_liste', 'ends_operation_year', 'ends_operation_day',\n", + " 'ETCO2_mean', 'FC_mean', 'FiO2_mean', 'PASd_mean', 'PASm_mean',\n", + " 'PASs_mean', 'PEEPtotal_mean', 'Pmean_mean', 'Temp_mean', 'B.I.S_std',\n", + " 'FR_std', 'FiO2_std', 'PEEPtotal_std', 'PNId_std', 'SpO2_std',\n", + " 'SvO2 (m)_std', 'VT_std', 'declampage_cote2_done_std', 'PAPsys_max',\n", + " 'PASm_max', 'VT_max'],\n", + " dtype='object')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selection_featur_ada=X_col[fit_ada.support_]\n", + "selection_featur_ada" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RFE with Gradient Boosting" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "gb = GradientBoostingClassifier()\n", + "rfe_gb = RFE(gb, nombre_de_feature)\n", + "fit_gb = rfe_gb.fit(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['BMI_donor', 'LAS', 'Poids', 'body_mass_index', 'oto_score',\n", + " 'time_on_waiting_liste', 'ETCO2_mean', 'FR_mean', 'FiO2_mean',\n", + " 'PASs_mean', 'PEEPtotal_mean', 'PNId_mean', 'Pmean_mean', 'SpO2_mean',\n", + " 'Temp_mean', 'VT_mean', 'declampage_cote2_done_mean', 'FC_std',\n", + " 'PASm_std', 'PASs_std', 'PEEPtotal_std', 'PNId_std', 'SpO2_std',\n", + " 'Temp_std', 'VT_std', 'FR_max', 'PAPdia_max', 'PASm_max', 'Temp_max',\n", + " 'PASm_min'],\n", + " dtype='object')" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selection_featur_gb=X_col[fit_gb.support_]\n", + "selection_featur_gb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RFE with Extra Trees " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "et = ExtraTreesClassifier()\n", + "rfe_et = RFE(et, nombre_de_feature)\n", + "fit_et = rfe_et.fit(X, Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Age_donor', 'Donneur_CPT', 'LAS', 'PF_donor', 'Poids',\n", + " 'body_mass_index', 'oto_score', 'ends_operation_month', 'ETCO2_mean',\n", + " 'FiO2_mean', 'PASm_mean', 'PASs_mean', 'PEEPtotal_mean', 'PNId_mean',\n", + " 'PNIm_mean', 'Pmean_mean', 'Temp_mean', 'VT_mean',\n", + " 'declampage_cote2_done_mean', 'FiO2_std', 'PASd_std', 'PEEPtotal_std',\n", + " 'Pmean_std', 'SpO2_std', 'VT_std', 'declampage_cote2_done_std',\n", + " 'BIS SR_max', 'PAPsys_max', 'PASd_max', 'Pmax_max'],\n", + " dtype='object')" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selection_featur_et=X_col[fit_et.support_]\n", + "selection_featur_et" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparaison des RFE " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Principe du vote :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ces features sont dans toutes les listes des méthodes d'ensembles" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ETCO2_mean',\n", + " 'FiO2_mean',\n", + " 'LAS',\n", + " 'PEEPtotal_mean',\n", + " 'PEEPtotal_std',\n", + " 'Poids',\n", + " 'SpO2_std',\n", + " 'Temp_mean',\n", + " 'body_mass_index'}" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vote_features_ensembles=set(selection_featur_et) & set(selection_featur_rf) & set(selection_featur_ada) & set(selection_featur_gb)\n", + "vote_features_ensembles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ces features sont dans toutes les méthodes ensemblistes et dans le modèle linéaire" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ETCO2_mean', 'PEEPtotal_mean', 'body_mass_index'}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set(selection_featur_logreg) & vote_features_ensembles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ces features sont dans toutes les méthodes ensemblistes et le résultat des tests du chi2" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'LAS', 'Poids', 'Temp_mean'}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vote_features_best_ensemble=set(selection_featur_selectKbest) & vote_features_ensembles\n", + "vote_features_best_ensemble" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ces features sont dans le modèle linéaire et le résultat des tests du chi2" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'BIS SR_std', 'SpO2_min'}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vote_features_best_lineaire=set(selection_featur_logreg) & set(selection_featur_selectKbest)\n", + "vote_features_best_lineaire" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Idées de choix de features" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On peut par exemple utiliser la liste :" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ETCO2_mean',\n", + " 'FiO2_mean',\n", + " 'PEEPtotal_std',\n", + " 'PEEPtotal_mean',\n", + " 'SpO2_std',\n", + " 'Temp_mean',\n", + " 'Poids',\n", + " 'body_mass_index',\n", + " 'LAS',\n", + " 'BIS SR_std',\n", + " 'SpO2_min']" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(vote_features_ensembles)+list(vote_features_best_lineaire)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ou pourquoi pas :" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['ETCO2_mean',\n", + " 'FiO2_mean',\n", + " 'PEEPtotal_std',\n", + " 'PEEPtotal_mean',\n", + " 'SpO2_std',\n", + " 'Temp_mean',\n", + " 'Poids',\n", + " 'body_mass_index',\n", + " 'LAS',\n", + " 'Donneur_CPT',\n", + " 'LAS',\n", + " 'PAPS',\n", + " 'PF_donor',\n", + " 'Poids',\n", + " 'start_operation_day',\n", + " 'ends_operation_day',\n", + " 'B.I.S_mean',\n", + " 'BIS SR_mean',\n", + " 'PNIs_mean',\n", + " 'Temp_mean',\n", + " 'VT_mean',\n", + " 'B.I.S_std',\n", + " 'BIS SR_std',\n", + " 'PNIs_std',\n", + " 'B.I.S_max',\n", + " 'BIS SR_max',\n", + " 'PNId_max',\n", + " 'PNIm_max',\n", + " 'PNIs_max',\n", + " 'SvO2 (m)_max',\n", + " 'VT_max',\n", + " 'FC_min',\n", + " 'PAPdia_min',\n", + " 'PAPmoy_min',\n", + " 'PAPsys_min',\n", + " 'PASd_min',\n", + " 'PASm_min',\n", + " 'Pmax_min',\n", + " 'SpO2_min']" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(vote_features_ensembles)+list(selection_featur_selectKbest)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/Feature Selection _ t test.ipynb b/notebooks/Feature Selection _ t test.ipynb index 292cc79..0473555 100644 --- a/notebooks/Feature Selection _ t test.ipynb +++ b/notebooks/Feature Selection _ t test.ipynb @@ -181,13 +181,6 @@ "Notre target est binaire -> quelles implications ?" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, @@ -202,7 +195,7 @@ "outputs": [], "source": [ "import numpy as np\n", - "import statsmodels.api as sm" + "import statsmodels.formula.api as smf" ] }, { @@ -214,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -228,22 +221,13 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "#X_train.dtypes" ] }, - { - "cell_type": "code", - "execution_count": 103, - "metadata": {}, - "outputs": [], - "source": [ - "X_col= X_train.columns.drop('target')" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -253,7 +237,7 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -263,6 +247,15 @@ " 'BIS SR_min':'BIS_SR_min','B.I.S_min':'BIS_min','SvO2 (m)_min':'SvO2m_min'})" ] }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "X_col= X_train.columns.drop('target')" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -279,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -288,170 +281,170 @@ "text": [ " OLS Regression Results \n", "==============================================================================\n", - "Dep. Variable: target R-squared: 0.601\n", - "Model: OLS Adj. R-squared: 0.159\n", - "Method: Least Squares F-statistic: 1.361\n", - "Date: Sat, 26 Jan 2019 Prob (F-statistic): 0.0474\n", - "Time: 10:53:55 Log-Likelihood: -62.036\n", - "No. Observations: 241 AIC: 378.1\n", - "Df Residuals: 114 BIC: 820.6\n", - "Df Model: 126 \n", + "Dep. Variable: target R-squared: 0.634\n", + "Model: OLS Adj. R-squared: 0.193\n", + "Method: Least Squares F-statistic: 1.439\n", + "Date: Tue, 29 Jan 2019 Prob (F-statistic): 0.0284\n", + "Time: 19:10:16 Log-Likelihood: -48.619\n", + "No. Observations: 228 AIC: 347.2\n", + "Df Residuals: 103 BIC: 775.9\n", + "Df Model: 124 \n", "Covariance Type: nonrobust \n", "==========================================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "----------------------------------------------------------------------------------------------------------\n", - "Intercept -444.1663 780.739 -0.569 0.571 -1990.804 1102.472\n", - "Age_donor -0.0032 0.004 -0.842 0.401 -0.011 0.004\n", - "Aspirations_donor -0.0664 0.052 -1.283 0.202 -0.169 0.036\n", - "BMI_donor 0.0142 0.081 0.174 0.862 -0.147 0.175\n", - "Donneur_CPT -2.201e-05 9.1e-05 -0.242 0.809 -0.000 0.000\n", - "Insuffisance_renale -0.3220 0.455 -0.708 0.480 -1.223 0.579\n", - "LAS -0.0034 0.006 -0.551 0.583 -0.016 0.009\n", - "PAPS -0.0009 0.005 -0.169 0.866 -0.011 0.010\n", - "PFO -0.1043 0.156 -0.669 0.505 -0.413 0.205\n", - "PF_donor 0.0004 0.001 0.549 0.584 -0.001 0.002\n", - "Poids -0.0167 0.028 -0.591 0.556 -0.073 0.039\n", - "Poids_donor -0.0056 0.029 -0.193 0.847 -0.063 0.052\n", - "RX_donor -0.0492 0.049 -1.004 0.318 -0.146 0.048\n", - "Sex_donor 0.0239 0.159 0.150 0.881 -0.291 0.339\n", - "Tabagisme_donor -0.0024 0.004 -0.602 0.548 -0.010 0.005\n", - "Taille 0.0168 0.021 0.801 0.425 -0.025 0.058\n", - "Taille_donor 0.0115 0.028 0.406 0.686 -0.045 0.068\n", - "age 0.0059 0.005 1.293 0.199 -0.003 0.015\n", - "body_mass_index 0.0259 0.079 0.330 0.742 -0.130 0.182\n", - "diabetes -0.0158 0.106 -0.148 0.882 -0.226 0.195\n", - "id_patient -0.0089 0.012 -0.724 0.471 -0.033 0.015\n", - "other_organ_transplantation 0.0749 0.437 0.172 0.864 -0.790 0.940\n", - "oto_score 0.0060 0.035 0.173 0.863 -0.063 0.074\n", - "pathologie -0.0009 0.035 -0.025 0.980 -0.071 0.069\n", - "plasmapherese 0.0946 0.094 1.003 0.318 -0.092 0.281\n", - "preoperative_ECMO 0.0847 0.351 0.242 0.810 -0.610 0.779\n", - "preoperative_ICU -0.2635 0.247 -1.067 0.288 -0.753 0.226\n", - "preoperative_mechanical_ventilation 0.0782 0.297 0.263 0.793 -0.510 0.666\n", - "preoperative_pulmonary_hypertension -0.0694 0.089 -0.781 0.437 -0.246 0.107\n", - "preoperative_vasopressor -0.3241 0.299 -1.086 0.280 -0.915 0.267\n", - "retransplant 0.2266 0.402 0.564 0.574 -0.569 1.022\n", - "sexe -0.1636 0.124 -1.315 0.191 -0.410 0.083\n", - "super_urgence 0.3104 0.296 1.049 0.297 -0.276 0.897\n", - "thoracic_surgery_history -0.1526 0.105 -1.454 0.149 -0.361 0.055\n", - "time_on_waiting_liste -0.0011 0.001 -1.290 0.200 -0.003 0.001\n", - "transplanted_twice_during_study_period -0.3556 0.464 -0.766 0.445 -1.275 0.564\n", - "start_operation_year 0.2339 0.387 0.604 0.547 -0.533 1.001\n", - "start_operation_month -0.1330 0.069 -1.941 0.055 -0.269 0.003\n", - "start_operation_day 0.1060 0.143 0.740 0.461 -0.178 0.390\n", - "ends_operation_year 0.2339 0.387 0.604 0.547 -0.533 1.001\n", - "ends_operation_month -0.1330 0.069 -1.941 0.055 -0.269 0.003\n", - "ends_operation_day -0.0959 0.143 -0.669 0.505 -0.380 0.188\n", - "BIS_mean -0.0038 0.008 -0.466 0.642 -0.020 0.012\n", - "BIS_SR_mean 0.0521 0.069 0.755 0.452 -0.085 0.189\n", - "DC_mean -0.0177 0.076 -0.234 0.815 -0.167 0.132\n", - "ETCO2_mean 0.0779 0.077 1.010 0.315 -0.075 0.231\n", - "FC_mean 0.0004 0.004 0.113 0.910 -0.007 0.008\n", - "FR_mean -0.0261 0.027 -0.973 0.332 -0.079 0.027\n", - "FiO2_mean -0.0056 0.005 -1.099 0.274 -0.016 0.004\n", - "PAPdia_mean -0.0657 0.056 -1.172 0.244 -0.177 0.045\n", - "PAPmoy_mean 0.1670 0.103 1.618 0.109 -0.038 0.371\n", - "PAPsys_mean -0.1033 0.051 -2.019 0.046 -0.205 -0.002\n", - "PASd_mean -0.0284 0.028 -1.031 0.305 -0.083 0.026\n", - "PASm_mean 0.0219 0.027 0.810 0.419 -0.032 0.076\n", - "PASs_mean 0.0060 0.012 0.494 0.622 -0.018 0.030\n", - "PEEPtotal_mean -0.0616 0.072 -0.851 0.397 -0.205 0.082\n", - "PNId_mean -0.0922 0.362 -0.255 0.799 -0.809 0.624\n", - "PNIm_mean -0.1378 0.291 -0.474 0.636 -0.713 0.438\n", - "PNIs_mean 0.1673 0.218 0.769 0.443 -0.264 0.598\n", - "Pmax_mean -0.0266 0.021 -1.251 0.214 -0.069 0.016\n", - "Pmean_mean 0.0612 0.058 1.049 0.296 -0.054 0.177\n", - "SpO2_mean 0.0100 0.017 0.606 0.546 -0.023 0.043\n", - "SvO2m_mean 0.0022 0.005 0.461 0.646 -0.007 0.011\n", - "Temp_mean -0.0129 0.006 -2.293 0.024 -0.024 -0.002\n", - "VT_mean 0.0006 0.002 0.422 0.673 -0.002 0.004\n", - "declampage_cote1_done_mean -0.8098 1.005 -0.806 0.422 -2.801 1.182\n", - "declampage_cote2_done_mean -1.3563 2.539 -0.534 0.594 -6.385 3.673\n", - "BIS_std -0.0411 0.022 -1.887 0.062 -0.084 0.002\n", - "BIS_SR_std 0.0056 0.108 0.052 0.959 -0.208 0.219\n", - "DC_std -0.0404 0.143 -0.283 0.777 -0.323 0.242\n", - "ETCO2_std -0.1798 0.203 -0.886 0.378 -0.582 0.222\n", - "FC_std -0.0059 0.007 -0.785 0.434 -0.021 0.009\n", - "FR_std 0.0088 0.056 0.155 0.877 -0.103 0.121\n", - "FiO2_std 0.0025 0.011 0.230 0.818 -0.019 0.024\n", - "PAPdia_std 0.1247 0.075 1.671 0.098 -0.023 0.273\n", - "PAPmoy_std -0.2443 0.132 -1.844 0.068 -0.507 0.018\n", - "PAPsys_std 0.1261 0.064 1.985 0.050 0.000 0.252\n", - "PASd_std -0.0022 0.037 -0.058 0.953 -0.076 0.071\n", - "PASm_std 0.0195 0.023 0.866 0.388 -0.025 0.064\n", - "PASs_std -0.0191 0.022 -0.850 0.397 -0.064 0.025\n", - "PEEPtotal_std 0.0004 0.093 0.004 0.997 -0.184 0.185\n", - "PNId_std 0.0692 0.141 0.490 0.625 -0.211 0.349\n", - "PNIm_std 0.0017 0.155 0.011 0.991 -0.306 0.309\n", - "PNIs_std -0.0430 0.084 -0.513 0.609 -0.209 0.123\n", - "Pmax_std 0.0368 0.041 0.906 0.367 -0.044 0.117\n", - "Pmean_std -0.0564 0.106 -0.530 0.597 -0.267 0.154\n", - "SpO2_std -0.0005 0.012 -0.040 0.969 -0.024 0.023\n", - "SvO2m_std 0.0125 0.010 1.266 0.208 -0.007 0.032\n", - "Temp_std 0.0124 0.016 0.801 0.425 -0.018 0.043\n", - "VT_std -0.0040 0.003 -1.414 0.160 -0.010 0.002\n", - "declampage_cote1_done_std -3.8580 4.789 -0.806 0.422 -13.344 5.628\n", - "declampage_cote2_done_std 1.6754 3.243 0.517 0.606 -4.749 8.100\n", - "BIS_max 0.0105 0.004 2.340 0.021 0.002 0.019\n", - "BIS_SR_max -0.0082 0.011 -0.773 0.441 -0.029 0.013\n", - "DC_max 0.0339 0.028 1.209 0.229 -0.022 0.090\n", - "ETCO2_max 0.0002 0.039 0.005 0.996 -0.077 0.078\n", - "FC_max 0.0018 0.001 1.446 0.151 -0.001 0.004\n", - "FR_max 0.0062 0.004 1.502 0.136 -0.002 0.014\n", - "FiO2_max 0.0151 0.012 1.298 0.197 -0.008 0.038\n", - "PAPdia_max -0.0027 0.002 -1.253 0.213 -0.007 0.002\n", - "PAPmoy_max 0.0058 0.003 2.088 0.039 0.000 0.011\n", - "PAPsys_max -0.0030 0.001 -2.157 0.033 -0.006 -0.000\n", - "PASd_max -0.0008 0.001 -0.690 0.491 -0.003 0.002\n", - "PASm_max 0.0008 0.001 0.631 0.529 -0.002 0.003\n", - "PASs_max 0.0006 0.002 0.363 0.717 -0.003 0.004\n", - "PEEPtotal_max -0.0029 0.006 -0.484 0.629 -0.015 0.009\n", - "PNId_max -0.0001 0.009 -0.016 0.987 -0.019 0.018\n", - "PNIm_max 0.0019 0.011 0.169 0.866 -0.020 0.024\n", - "PNIs_max -0.0010 0.005 -0.191 0.849 -0.011 0.009\n", - "Pmax_max 0.0032 0.007 0.480 0.632 -0.010 0.016\n", - "Pmean_max 0.0069 0.010 0.713 0.478 -0.012 0.026\n", - "SpO2_max -0.5526 0.587 -0.942 0.348 -1.715 0.610\n", - "SvO2m_max -0.0057 0.003 -1.853 0.066 -0.012 0.000\n", - "Temp_max -0.0075 0.009 -0.825 0.411 -0.026 0.011\n", - "VT_max 0.0001 0.000 1.150 0.253 -8.93e-05 0.000\n", - "declampage_cote1_done_max -444.1663 780.739 -0.569 0.571 -1990.804 1102.472\n", - "declampage_cote2_done_max -0.6944 0.875 -0.793 0.429 -2.428 1.039\n", - "BIS_min 9.492e-12 1.67e-11 0.569 0.571 -2.36e-11 4.25e-11\n", - "BIS_SR_min 6.469e-12 1.14e-11 0.569 0.570 -1.6e-11 2.9e-11\n", - "DC_min -8.297e-12 1.46e-11 -0.569 0.570 -3.72e-11 2.06e-11\n", - "ETCO2_min 1.656e-12 2.91e-12 0.570 0.570 -4.1e-12 7.42e-12\n", - "FC_min -0.0028 0.002 -1.541 0.126 -0.007 0.001\n", - "FR_min -0.0488 0.154 -0.318 0.751 -0.353 0.255\n", - "FiO2_min -0.0019 0.003 -0.590 0.556 -0.008 0.005\n", - "PAPdia_min 0.0070 0.005 1.520 0.131 -0.002 0.016\n", - "PAPmoy_min -0.0089 0.005 -1.679 0.096 -0.019 0.002\n", - "PAPsys_min 0.0030 0.002 2.011 0.047 4.46e-05 0.006\n", - "PASd_min -6.992e-05 0.001 -0.064 0.949 -0.002 0.002\n", - "PASm_min 0.0008 0.001 1.291 0.199 -0.000 0.002\n", - "PASs_min 6.164e-06 0.001 0.005 0.996 -0.002 0.002\n", - "PEEPtotal_min -0.0157 0.174 -0.091 0.928 -0.360 0.329\n", + "Intercept -0.0545 0.137 -0.399 0.691 -0.325 0.216\n", + "Age_donor -0.0079 0.004 -2.185 0.031 -0.015 -0.001\n", + "Aspirations_donor -0.0834 0.053 -1.562 0.121 -0.189 0.022\n", + "BMI_donor 0.0101 0.099 0.102 0.919 -0.186 0.206\n", + "Donneur_CPT 4.636e-05 8.3e-05 0.558 0.578 -0.000 0.000\n", + "Insuffisance_renale -0.4774 0.396 -1.205 0.231 -1.263 0.308\n", + "LAS -0.0149 0.005 -2.816 0.006 -0.025 -0.004\n", + "PAPS 0.0002 0.000 0.853 0.396 -0.000 0.001\n", + "PFO -0.1962 0.154 -1.277 0.205 -0.501 0.109\n", + "PF_donor 0.0009 0.001 1.323 0.189 -0.000 0.002\n", + "Poids -0.0158 0.029 -0.547 0.586 -0.073 0.042\n", + "Poids_donor -0.0037 0.035 -0.105 0.917 -0.073 0.066\n", + "RX_donor -0.1440 0.048 -3.018 0.003 -0.239 -0.049\n", + "Sex_donor -0.2017 0.150 -1.341 0.183 -0.500 0.097\n", + "Tabagisme_donor -0.0016 0.004 -0.373 0.710 -0.010 0.007\n", + "Taille 0.0128 0.022 0.578 0.565 -0.031 0.057\n", + "Taille_donor 0.0134 0.033 0.407 0.685 -0.052 0.079\n", + "age 0.0028 0.005 0.607 0.545 -0.006 0.012\n", + "body_mass_index 0.0573 0.081 0.704 0.483 -0.104 0.219\n", + "diabetes -0.0720 0.107 -0.673 0.502 -0.284 0.140\n", + "id_patient -0.0052 0.011 -0.486 0.628 -0.027 0.016\n", + "other_organ_transplantation -3.752e-13 7.52e-12 -0.050 0.960 -1.53e-11 1.45e-11\n", + "oto_score 0.0229 0.034 0.666 0.507 -0.045 0.091\n", + "pathologie -0.0733 0.039 -1.861 0.066 -0.151 0.005\n", + "plasmapherese -0.0364 0.088 -0.413 0.680 -0.211 0.139\n", + "preoperative_ECMO -0.2869 0.319 -0.898 0.371 -0.920 0.347\n", + "preoperative_ICU -0.4539 0.223 -2.038 0.044 -0.896 -0.012\n", + "preoperative_mechanical_ventilation -0.1288 0.326 -0.395 0.693 -0.775 0.517\n", + "preoperative_pulmonary_hypertension -0.0770 0.086 -0.899 0.371 -0.247 0.093\n", + "preoperative_vasopressor -0.2262 0.341 -0.663 0.509 -0.903 0.451\n", + "retransplant 0.0965 0.263 0.367 0.714 -0.425 0.618\n", + "sexe -0.2089 0.118 -1.777 0.078 -0.442 0.024\n", + "super_urgence 0.6626 0.286 2.320 0.022 0.096 1.229\n", + "thoracic_surgery_history -0.1224 0.116 -1.053 0.295 -0.353 0.108\n", + "time_on_waiting_liste -0.0015 0.001 -1.498 0.137 -0.003 0.000\n", + "transplanted_twice_during_study_period 0.1884 0.421 0.448 0.655 -0.646 1.023\n", + "start_operation_year 0.1347 0.340 0.396 0.693 -0.539 0.809\n", + "start_operation_month -0.8249 0.629 -1.311 0.193 -2.073 0.423\n", + "start_operation_day -0.0078 0.140 -0.056 0.956 -0.285 0.269\n", + "ends_operation_year 0.1347 0.340 0.396 0.693 -0.539 0.809\n", + "ends_operation_month 0.5630 0.626 0.899 0.371 -0.679 1.805\n", + "ends_operation_day 0.0168 0.140 0.120 0.905 -0.261 0.294\n", + "BIS_mean 0.0010 0.007 0.141 0.888 -0.013 0.015\n", + "BIS_SR_mean 0.0020 0.071 0.028 0.977 -0.138 0.142\n", + "DC_mean -0.0380 0.079 -0.479 0.633 -0.195 0.119\n", + "ETCO2_mean 0.0611 0.093 0.660 0.511 -0.122 0.245\n", + "FC_mean 0.0063 0.004 1.695 0.093 -0.001 0.014\n", + "FR_mean -0.0546 0.028 -1.957 0.053 -0.110 0.001\n", + "FiO2_mean -0.0064 0.006 -1.143 0.256 -0.018 0.005\n", + "PAPdia_mean 0.0134 0.055 0.243 0.809 -0.096 0.123\n", + "PAPmoy_mean 0.0163 0.100 0.163 0.870 -0.182 0.214\n", + "PAPsys_mean -0.0413 0.049 -0.845 0.400 -0.138 0.056\n", + "PASd_mean -0.0283 0.028 -1.019 0.311 -0.083 0.027\n", + "PASm_mean 0.0249 0.029 0.860 0.392 -0.033 0.083\n", + "PASs_mean 0.0002 0.012 0.020 0.984 -0.024 0.024\n", + "PEEPtotal_mean -0.1447 0.077 -1.876 0.064 -0.298 0.008\n", + "PNId_mean -0.6793 0.655 -1.037 0.302 -1.979 0.620\n", + "PNIm_mean 1.0845 0.911 1.190 0.237 -0.723 2.892\n", + "PNIs_mean -0.3746 0.391 -0.958 0.340 -1.150 0.401\n", + "Pmax_mean -0.0287 0.022 -1.303 0.196 -0.072 0.015\n", + "Pmean_mean 0.1095 0.064 1.713 0.090 -0.017 0.236\n", + "SpO2_mean 0.0082 0.018 0.451 0.653 -0.028 0.044\n", + "SvO2m_mean -0.0094 0.005 -1.854 0.067 -0.019 0.001\n", + "Temp_mean -0.0077 0.006 -1.283 0.202 -0.020 0.004\n", + "VT_mean 0.0048 0.002 2.766 0.007 0.001 0.008\n", + "declampage_cote1_done_mean 0.3276 1.108 0.296 0.768 -1.870 2.526\n", + "declampage_cote2_done_mean -7.9804 3.351 -2.381 0.019 -14.627 -1.334\n", + "BIS_std -0.0427 0.020 -2.157 0.033 -0.082 -0.003\n", + "BIS_SR_std 0.0027 0.078 0.034 0.973 -0.153 0.158\n", + "DC_std -0.1662 0.165 -1.008 0.316 -0.493 0.161\n", + "ETCO2_std -0.0528 0.199 -0.265 0.792 -0.448 0.343\n", + "FC_std -0.0017 0.009 -0.200 0.842 -0.019 0.015\n", + "FR_std 0.1824 0.066 2.760 0.007 0.051 0.313\n", + "FiO2_std 0.0126 0.012 1.065 0.290 -0.011 0.036\n", + "PAPdia_std -0.0362 0.072 -0.504 0.616 -0.179 0.106\n", + "PAPmoy_std 0.0018 0.124 0.014 0.989 -0.244 0.247\n", + "PAPsys_std 0.0414 0.060 0.692 0.490 -0.077 0.160\n", + "PASd_std -0.0095 0.032 -0.297 0.767 -0.073 0.054\n", + "PASm_std -0.0133 0.023 -0.568 0.572 -0.060 0.033\n", + "PASs_std 0.0089 0.020 0.450 0.654 -0.030 0.048\n", + "PEEPtotal_std 0.1413 0.097 1.460 0.147 -0.051 0.333\n", + "PNId_std 0.0002 0.186 0.001 0.999 -0.369 0.370\n", + "PNIm_std 0.0016 0.220 0.007 0.994 -0.434 0.437\n", + "PNIs_std -0.0249 0.105 -0.237 0.813 -0.234 0.184\n", + "Pmax_std 0.0331 0.043 0.775 0.440 -0.052 0.118\n", + "Pmean_std -0.2212 0.120 -1.844 0.068 -0.459 0.017\n", + "SpO2_std 0.0082 0.013 0.610 0.543 -0.018 0.035\n", + "SvO2m_std 0.0289 0.011 2.724 0.008 0.008 0.050\n", + "Temp_std 0.0139 0.015 0.951 0.344 -0.015 0.043\n", + "VT_std -0.0103 0.003 -2.988 0.004 -0.017 -0.003\n", + "declampage_cote1_done_std -7.0639 6.127 -1.153 0.252 -19.215 5.087\n", + "declampage_cote2_done_std 9.9370 4.422 2.247 0.027 1.168 18.706\n", + "BIS_max 0.0096 0.004 2.451 0.016 0.002 0.017\n", + "BIS_SR_max -0.0058 0.007 -0.842 0.402 -0.020 0.008\n", + "DC_max 0.0900 0.037 2.428 0.017 0.016 0.163\n", + "ETCO2_max -0.0416 0.043 -0.961 0.339 -0.128 0.044\n", + "FC_max 0.0010 0.001 0.795 0.429 -0.002 0.004\n", + "FR_max -0.0020 0.004 -0.436 0.664 -0.011 0.007\n", + "FiO2_max 0.0057 0.016 0.360 0.720 -0.026 0.037\n", + "PAPdia_max 0.0013 0.002 0.596 0.553 -0.003 0.006\n", + "PAPmoy_max 0.0008 0.003 0.287 0.775 -0.005 0.007\n", + "PAPsys_max -0.0011 0.001 -0.817 0.416 -0.004 0.002\n", + "PASd_max -0.0012 0.001 -1.023 0.309 -0.003 0.001\n", + "PASm_max 0.0002 0.001 0.184 0.854 -0.002 0.003\n", + "PASs_max 0.0027 0.002 1.624 0.108 -0.001 0.006\n", + "PEEPtotal_max -0.0097 0.007 -1.482 0.141 -0.023 0.003\n", + "PNId_max 0.0232 0.012 1.897 0.061 -0.001 0.047\n", + "PNIm_max -0.0139 0.016 -0.889 0.376 -0.045 0.017\n", + "PNIs_max -0.0011 0.007 -0.158 0.875 -0.015 0.013\n", + "Pmax_max 0.0007 0.006 0.122 0.903 -0.010 0.012\n", + "Pmean_max 0.0082 0.010 0.854 0.395 -0.011 0.027\n", + "SpO2_max -5.4499 13.661 -0.399 0.691 -32.544 21.644\n", + "SvO2m_max -0.0074 0.003 -2.414 0.018 -0.014 -0.001\n", + "Temp_max -0.0175 0.009 -1.930 0.056 -0.035 0.000\n", + "VT_max 0.0002 0.000 1.604 0.112 -4.05e-05 0.000\n", + "declampage_cote1_done_max -0.0545 0.137 -0.399 0.691 -0.325 0.216\n", + "declampage_cote2_done_max -0.0545 0.137 -0.399 0.691 -0.325 0.216\n", + "BIS_min -1.124e-14 7.84e-15 -1.434 0.155 -2.68e-14 4.3e-15\n", + "BIS_SR_min 1.992e-15 9.76e-16 2.040 0.044 5.58e-17 3.93e-15\n", + "DC_min 7.084e-15 6.77e-15 1.047 0.298 -6.34e-15 2.05e-14\n", + "ETCO2_min 2.036e-15 3.06e-15 0.665 0.508 -4.04e-15 8.11e-15\n", + "FC_min -0.0023 0.002 -1.173 0.243 -0.006 0.002\n", + "FR_min -0.0981 0.217 -0.451 0.653 -0.529 0.333\n", + "FiO2_min 0.0075 0.003 2.380 0.019 0.001 0.014\n", + "PAPdia_min 0.0072 0.005 1.409 0.162 -0.003 0.017\n", + "PAPmoy_min -0.0088 0.006 -1.555 0.123 -0.020 0.002\n", + "PAPsys_min 0.0022 0.001 1.529 0.129 -0.001 0.005\n", + "PASd_min -0.0016 0.001 -1.311 0.193 -0.004 0.001\n", + "PASm_min -0.0007 0.001 -1.020 0.310 -0.002 0.001\n", + "PASs_min 0.0006 0.002 0.401 0.689 -0.002 0.004\n", + "PEEPtotal_min -0.0687 0.194 -0.354 0.724 -0.453 0.316\n", "PNId_min 0 0 nan nan 0 0\n", "PNIm_min 0 0 nan nan 0 0\n", "PNIs_min 0 0 nan nan 0 0\n", - "Pmax_min 0.0368 0.128 0.287 0.775 -0.218 0.291\n", - "Pmean_min -0.0593 0.293 -0.203 0.840 -0.639 0.521\n", - "SpO2_min 0.0027 0.004 0.617 0.539 -0.006 0.011\n", + "Pmax_min 0.0642 0.158 0.405 0.686 -0.250 0.378\n", + "Pmean_min -0.6384 0.321 -1.988 0.050 -1.275 -0.001\n", + "SpO2_min -0.0006 0.005 -0.123 0.902 -0.011 0.010\n", "SvO2m_min 0 0 nan nan 0 0\n", "Temp_min 0 0 nan nan 0 0\n", "VT_min 0 0 nan nan 0 0\n", "declampage_cote1_done_min 0 0 nan nan 0 0\n", "declampage_cote2_done_min 0 0 nan nan 0 0\n", "==============================================================================\n", - "Omnibus: 1.169 Durbin-Watson: 1.931\n", - "Prob(Omnibus): 0.557 Jarque-Bera (JB): 1.028\n", - "Skew: 0.159 Prob(JB): 0.598\n", - "Kurtosis: 3.030 Cond. No. 1.01e+16\n", + "Omnibus: 1.863 Durbin-Watson: 1.933\n", + "Prob(Omnibus): 0.394 Jarque-Bera (JB): 1.817\n", + "Skew: 0.217 Prob(JB): 0.403\n", + "Kurtosis: 2.946 Cond. No. 2.25e+17\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", - "[2] The smallest eigenvalue is 1.14e-22. This might indicate that there are\n", + "[2] The smallest eigenvalue is 2.2e-25. This might indicate that there are\n", "strong multicollinearity problems or that the design matrix is singular.\n" ] } @@ -465,15 +458,6 @@ "print(results.summary())" ] }, - { - "cell_type": "code", - "execution_count": 95, - "metadata": {}, - "outputs": [], - "source": [ - "#dir(results) # to see all attributes" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -485,30 +469,44 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "start_operation_month 0.054758\n", - "ends_operation_month 0.054758\n", - "PAPsys_mean 0.045796\n", - "Temp_mean 0.023702\n", - "BIS_std 0.061687\n", - "PAPdia_std 0.097504\n", - "PAPmoy_std 0.067849\n", - "PAPsys_std 0.049600\n", - "BIS_max 0.021007\n", - "PAPmoy_max 0.039046\n", - "PAPsys_max 0.033081\n", - "SvO2m_max 0.066449\n", - "PAPmoy_min 0.095809\n", - "PAPsys_min 0.046720\n", + "Age_donor 0.031160\n", + "LAS 0.005837\n", + "RX_donor 0.003209\n", + "pathologie 0.065601\n", + "preoperative_ICU 0.044134\n", + "sexe 0.078474\n", + "super_urgence 0.022341\n", + "FC_mean 0.093040\n", + "FR_mean 0.053042\n", + "PEEPtotal_mean 0.063501\n", + "Pmean_mean 0.089701\n", + "SvO2m_mean 0.066594\n", + "VT_mean 0.006718\n", + "declampage_cote2_done_mean 0.019091\n", + "BIS_std 0.033348\n", + "FR_std 0.006837\n", + "Pmean_std 0.068101\n", + "SvO2m_std 0.007582\n", + "VT_std 0.003509\n", + "declampage_cote2_done_std 0.026748\n", + "BIS_max 0.015943\n", + "DC_max 0.016897\n", + "PNId_max 0.060610\n", + "SvO2m_max 0.017522\n", + "Temp_max 0.056340\n", + "BIS_SR_min 0.043868\n", + "FiO2_min 0.019142\n", + "Pmean_min 0.049506\n", "dtype: float64" ] }, - "execution_count": 108, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -533,7 +531,7 @@ }, { "cell_type": "code", - "execution_count": 109, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -542,7 +540,7 @@ "'Age_donor + Aspirations_donor + BMI_donor + Donneur_CPT + Insuffisance_renale + LAS + PAPS + PFO + PF_donor + Poids'" ] }, - "execution_count": 109, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -556,7 +554,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -565,39 +563,39 @@ "text": [ " OLS Regression Results \n", "==============================================================================\n", - "Dep. Variable: target R-squared: 0.112\n", - "Model: OLS Adj. R-squared: 0.073\n", - "Method: Least Squares F-statistic: 2.891\n", - "Date: Sat, 26 Jan 2019 Prob (F-statistic): 0.00202\n", - "Time: 10:56:34 Log-Likelihood: -158.37\n", - "No. Observations: 241 AIC: 338.7\n", - "Df Residuals: 230 BIC: 377.1\n", + "Dep. Variable: target R-squared: 0.091\n", + "Model: OLS Adj. R-squared: 0.049\n", + "Method: Least Squares F-statistic: 2.160\n", + "Date: Tue, 29 Jan 2019 Prob (F-statistic): 0.0214\n", + "Time: 19:10:16 Log-Likelihood: -152.40\n", + "No. Observations: 228 AIC: 326.8\n", + "Df Residuals: 217 BIC: 364.5\n", "Df Model: 10 \n", "Covariance Type: nonrobust \n", "=======================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "---------------------------------------------------------------------------------------\n", - "Intercept 1.0422 0.410 2.542 0.012 0.234 1.850\n", - "Age_donor -0.0028 0.002 -1.352 0.178 -0.007 0.001\n", - "Aspirations_donor -0.0602 0.032 -1.852 0.065 -0.124 0.004\n", - "BMI_donor 0.0058 0.008 0.690 0.491 -0.011 0.022\n", - "Donneur_CPT 1.54e-05 2.84e-05 0.542 0.588 -4.05e-05 7.13e-05\n", - "Insuffisance_renale -0.1270 0.281 -0.451 0.652 -0.682 0.427\n", - "LAS -0.0105 0.003 -3.249 0.001 -0.017 -0.004\n", - "PAPS -0.0002 0.004 -0.053 0.958 -0.007 0.007\n", - "PFO -0.1749 0.117 -1.498 0.135 -0.405 0.055\n", - "PF_donor 0.0005 0.000 1.394 0.165 -0.000 0.001\n", - "Poids -0.0061 0.002 -2.958 0.003 -0.010 -0.002\n", + "Intercept 0.7855 0.414 1.896 0.059 -0.031 1.602\n", + "Age_donor -0.0015 0.002 -0.688 0.492 -0.006 0.003\n", + "Aspirations_donor -0.0490 0.034 -1.451 0.148 -0.116 0.018\n", + "BMI_donor 0.0059 0.008 0.692 0.489 -0.011 0.023\n", + "Donneur_CPT 3.077e-05 3.07e-05 1.002 0.317 -2.97e-05 9.13e-05\n", + "Insuffisance_renale -0.0724 0.286 -0.253 0.800 -0.636 0.491\n", + "LAS -0.0102 0.003 -3.281 0.001 -0.016 -0.004\n", + "PAPS -0.0001 0.000 -0.947 0.345 -0.000 0.000\n", + "PFO -0.0918 0.120 -0.766 0.445 -0.328 0.144\n", + "PF_donor 0.0006 0.000 1.447 0.149 -0.000 0.001\n", + "Poids -0.0054 0.002 -2.458 0.015 -0.010 -0.001\n", "==============================================================================\n", - "Omnibus: 1.011 Durbin-Watson: 2.004\n", - "Prob(Omnibus): 0.603 Jarque-Bera (JB): 27.651\n", - "Skew: 0.155 Prob(JB): 9.90e-07\n", - "Kurtosis: 1.370 Cond. No. 8.36e+04\n", + "Omnibus: 1664.713 Durbin-Watson: 1.918\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 28.554\n", + "Skew: 0.189 Prob(JB): 6.30e-07\n", + "Kurtosis: 1.308 Cond. No. 8.19e+04\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", - "[2] The condition number is large, 8.36e+04. This might indicate that there are\n", + "[2] The condition number is large, 8.19e+04. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n" ] } @@ -632,7 +630,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.1" + "version": "3.6.8" } }, "nbformat": 4, diff --git a/notebooks/Modeling - Comparing Machine Learning Methods .ipynb b/notebooks/Modeling - Comparing Machine Learning Methods .ipynb index 889f1b4..a5cef3e 100644 --- a/notebooks/Modeling - Comparing Machine Learning Methods .ipynb +++ b/notebooks/Modeling - Comparing Machine Learning Methods .ipynb @@ -337,19 +337,9 @@ "execution_count": 6, "metadata": {}, "outputs": [], - "source": [ - "from transplant.data.dataset import Dataset\n", - "dataset=Dataset()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], "source": [ "from transplant.data.learningset import Learningset\n", - "from transplant.config import *\n", + "#from transplant.config import *\n", "learningset = Learningset()\n", "\n", "#X_train, X_test, y_train, y_test, X_col = learningset.get_static_filled(to_train=True)\n", @@ -368,7 +358,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -393,16 +383,87 @@ " 'FC_std'\n", " ]\n", "\n", - "choix_features_5=set(choix_features_4 + choix_features_1)" + "choix_features_5=set(choix_features_4 + choix_features_1)\n", + "\n", + "\n", + "choix_features_6=['B.I.S_std',\n", + " 'ETCO2_max',\n", + " 'ETCO2_mean',\n", + " 'FC_mean',\n", + " 'FR_max',\n", + " 'FR_mean',\n", + " 'FiO2_mean',\n", + " 'FiO2_std',\n", + " 'LAS',\n", + " 'PAPmoy_mean',\n", + " 'PAPsys_max',\n", + " 'PASd_mean',\n", + " 'PASs_mean',\n", + " 'PEEPtotal_mean',\n", + " 'PEEPtotal_std',\n", + " 'PF_donor',\n", + " 'Poids',\n", + " 'SpO2_std',\n", + " 'Temp_mean',\n", + " 'VT_max',\n", + " 'VT_std',\n", + " 'body_mass_index',\n", + " 'declampage_cote2_done_std',\n", + " 'oto_score']\n", + "\n", + "choix_features_7=set(choix_features_4 + choix_features_6)\n", + "\n", + "choix_features_8=['BMI_donor', 'LAS', 'PF_donor', 'Poids', 'Poids_donor', 'Taille', 'age',\n", + " 'body_mass_index', 'oto_score', 'start_operation_month',\n", + " 'start_operation_day', 'ends_operation_day', 'ETCO2_mean', 'FC_mean',\n", + " 'FR_mean', 'FiO2_mean', 'PAPdia_mean', 'PAPmoy_mean', 'PASd_mean',\n", + " 'PASs_mean', 'PEEPtotal_mean', 'PNIm_mean', 'PNIs_mean', 'Pmax_mean',\n", + " 'Pmean_mean', 'SpO2_mean', 'Temp_mean', 'VT_mean',\n", + " 'declampage_cote2_done_mean', 'B.I.S_std', 'ETCO2_std', 'FC_std',\n", + " 'FiO2_std', 'PAPmoy_std', 'PASd_std', 'PASm_std', 'PASs_std',\n", + " 'PEEPtotal_std', 'PNIs_std', 'Pmax_std', 'Pmean_std', 'SpO2_std',\n", + " 'SvO2 (m)_std', 'Temp_std', 'VT_std', 'declampage_cote2_done_std',\n", + " 'ETCO2_max', 'FR_max', 'PAPmoy_max', 'PAPsys_max', 'PASd_max',\n", + " 'PASm_max', 'PASs_max', 'PEEPtotal_max', 'PNId_max', 'PNIm_max',\n", + " 'Pmax_max', 'Pmean_max', 'Temp_max', 'VT_max']\n", + "\n", + "choix_features_9=set(choix_features_4 + choix_features_8)\n", + "\n", + "choix_features_10=['Poids', 'ends_operation_day', 'ETCO2_mean', 'PASs_mean',\n", + " 'PEEPtotal_mean', 'Pmax_mean', 'Pmean_mean', 'SpO2_mean', 'Temp_mean',\n", + " 'VT_mean', 'declampage_cote2_done_mean', 'PASd_std', 'VT_std',\n", + " 'PASm_max', 'Temp_max']\n", + "\n", + "choix_features_11=set(choix_features_4 + choix_features_10)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ - "Choix_Features=choix_features_5" + "Choix_Features=choix_features_8" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "60" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(Choix_Features)" ] }, { @@ -434,7 +495,7 @@ { "data": { "text/plain": [ - "((241, 16), (101, 16), (241,), (101,))" + "((228, 60), (102, 60), (228,), (102,))" ] }, "execution_count": 12, @@ -459,7 +520,7 @@ "metadata": {}, "outputs": [], "source": [ - "y_train, y_test = y_train.reshape(-1, 1), y_test.reshape(-1, 1)" + "y_train, y_test = y_train.reshape(-1, 1).ravel() , y_test.reshape(-1, 1).ravel()" ] }, { @@ -470,7 +531,7 @@ { "data": { "text/plain": [ - "((241, 16), (101, 16), (241, 1), (101, 1))" + "((228, 60), (102, 60), (228,), (102,))" ] }, "execution_count": 14, @@ -513,7 +574,7 @@ { "data": { "text/plain": [ - "(241, 101)" + "(228, 102)" ] }, "execution_count": 16, @@ -587,7 +648,7 @@ "rf_params = {\n", " 'n_jobs': -1,\n", " 'n_estimators': 500,\n", - " 'warm_start': True,\n", + " #'warm_start': True,\n", " # 'max_features': 0.2,\n", " 'max_depth': 6,\n", " 'min_samples_leaf': 2,\n", @@ -660,7 +721,7 @@ { "data": { "text/plain": [ - "((241, 16), (241, 1), (101, 16))" + "((228, 60), (228,), (102, 60))" ] }, "execution_count": 24, @@ -684,114 +745,12 @@ "execution_count": 25, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\ensemble\\forest.py:308: UserWarning:\n", - "\n", - "Warm-start fitting without increasing n_estimators does not fit new trees.\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\ensemble\\forest.py:308: UserWarning:\n", - "\n", - "Warm-start fitting without increasing n_estimators does not fit new trees.\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\ensemble\\forest.py:308: UserWarning:\n", - "\n", - "Warm-start fitting without increasing n_estimators does not fit new trees.\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:7: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\ensemble\\forest.py:308: UserWarning:\n", - "\n", - "Warm-start fitting without increasing n_estimators does not fit new trees.\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ "I am done learning :D\n", - "Wall time: 25.1 s\n" + "Wall time: 31.8 s\n" ] } ], @@ -813,34 +772,7 @@ "cell_type": "code", "execution_count": 26, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:16: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\ensemble\\forest.py:308: UserWarning:\n", - "\n", - "Warm-start fitting without increasing n_estimators does not fit new trees.\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\ipykernel_launcher.py:16: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n", - "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\utils\\validation.py:761: DataConversionWarning:\n", - "\n", - "A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "rf_feature = rf.feature_importances(X_train, y_train)\n", "et_feature = et.feature_importances(X_train, y_train)\n", @@ -868,6 +800,35 @@ "gb_pred = gb.predict(X_test)" ] }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "accu_comparaison={} ## To compare performances at the end" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_comparaison" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -910,26 +871,50 @@ }, { "cell_type": "code", - "execution_count": 28, - "metadata": {}, + "execution_count": 30, + "metadata": { + "scrolled": false + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy :\n", - "0.6435643564356436\n" + "0.7058823529411765\n" ] } ], "source": [ "print(\"Accuracy :\")\n", - "print(metrics.accuracy_score(rf_pred, y_test))" + "rf_accu=metrics.accuracy_score(y_test,rf_pred)\n", + "accu_comparaison['Random Forest']=rf_accu\n", + "print(rf_accu)" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Random Forest': 0.7058823529411765}" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_comparaison" + ] + }, + { + "cell_type": "code", + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -938,12 +923,12 @@ "text": [ " precision recall f1-score support\n", "\n", - " 0 0.71 0.69 0.70 61\n", - " 1 0.55 0.57 0.56 40\n", + " 0 0.86 0.70 0.77 73\n", + " 1 0.49 0.72 0.58 29\n", "\n", - " micro avg 0.64 0.64 0.64 101\n", - " macro avg 0.63 0.63 0.63 101\n", - "weighted avg 0.65 0.64 0.64 101\n", + " micro avg 0.71 0.71 0.71 102\n", + " macro avg 0.68 0.71 0.68 102\n", + "weighted avg 0.76 0.71 0.72 102\n", "\n" ] } @@ -954,7 +939,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 33, "metadata": { "scrolled": false }, @@ -962,16 +947,16 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 30, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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zjrrB2y00UBuvvk3/PrXl3HaaWez5ZZb8cUvfo8NN9yQV199hfPO+zR77LEfgwZt3Yd7tH6za0td8thjDzNs2PZss812DBiwIfvvfwh//vNtq5UZOnRbRo16+xpPqieffJxddtmLpqYmBg7chFGj3sZ9983szearYubPf4ShQ7djyJDhDBiwIe9+9/u47747Viuz8857sdFGAwHYccddWLZsEQADBmzIhhtuCMCKFW+QUurdxvdDEcWnvmAg6WVLlixi662HrpofPHgoS5cu6tJjR416O/feexevvfYqy5c/z4MP3svixV36SWX1U8u6sW7iAAAHa0lEQVSWLWarrYasmh80aAjLli1ut/xtt/2OXXcds2p+6dLnOO+8z/C1r53KEUccbzaihta5aysi/jGldHl3Nqa/6mo6u+eeY5g3bw6TJ3+OLbbYktGjd6WpqamHW6dqWzOLaO/pdtddN/LEE49yxhnnr1q21VZD+epXp7Bs2WKam7/NPvu8hy222KqnGtvvVbRnq1BG8s32VkTEhIiYFRGzmpubC2xi/TN48BAWL35u1fySJc+t1bu8D37wZL7znWbOOedCUkpsu+2Inmim1hODBg1ZLeNdtmwRW2655vPt4Yfv5rrrruL00yet6s5avZ6tGT58FHPnzu7R9vZ3EVF46gsdBpKIuK+d6X5gWHuPSyk1p5TGpJTGTJgwodsbXWVve9suPPPMkyxc+DQrVrzBHXf8kXe/+2+69NjW1pUsX/48AE888RgLFsxjjz3GdPIo9WdvfevOLFz4JIsWPcOKFW/w5z/fzB577LdamQULHuPKK3/E6adPYvPNB61avnTpIl5//TUAXn55OfPmPciwYb5x6UlVHSPprGtrGPB+YGnd8gBuW7O4OtPU1MSpp36W888/i9bWVg466AOMGLEDV199OTvu+A7e/e6/4bHHHubii7/Byy+/yN13384vf/kfXHDBZaxYsZJzzz0DgE02eQuf+tQ5dm2pQ01NTZxwwqeYMuXrtLa2csABR7Dddm/l2mt/xqhRo9lzz/255pqf8tprr/KTn3wHyMbtTj/9GzzzzAJ+9aufEBGklDjssOPYfvsd+naH1nNVvWsrOroTIyJ+ClyeUrqlwborUkondWEbadaslgJNlLpuzJgR/OEPc/u6GeonDj98J+jGbzZ59NFFhW+NGz16SK9How4zkpTSaR2s60oQkSSt5/xAoiSVRFW7tgwkklQSFY0jfiBRklSMgUSSVIhdW5JUElXt2jKQSFJJREV/I9FAIkllUc044hiJJKkYMxJJKgnHSCRJhThGIkkqpppxxEAiSWVR0TjiYLskqRgzEkkqCb+0UZJUTDXjiIFEksqionHEQCJJZVHVri0H2yVJhRhIJEmF2LUlSSVR0Z4tA4kklYVjJJKkfslAIkn9SEQcFRFzImJuRJzdYP37IuIvEbEiIo7vSp0GEkkqiYjiU8f1RxMwBfgAsCtwYkTsWlfsCeBU4IquttsxEkkqiV74GvmxwNyU0jyAiJgGHAs82FYgpTQ/X9fa1UrNSCSpLKL4FBETImJWzTShZgvbAwtq5lvyZYWYkUjSeiSl1Aw0t7O6UcqTim7TQCJJJdELd/+2ACNr5kcATxWt1K4tSSqJbujZ6sxMYHRE7BgRGwHjgelF220gkaSy6OHbtlJKK4CJwPXAQ8DPU0qzI+LciBiXNSH2jYgW4MPAJRExu7Nm27UlSSXRG59rTynNAGbULZtU8/9Msi6vLjMjkSQVYkYiSSVR0a/aMpBIUmlUNJIYSCSpJKoZRhwjkSQVZEYiSSVR0Z4tA4kklUc1I4mBRJJKoqoZiWMkkqRCDCSSpELs2pKkkqhq15aBRJJKo5qRxEAiSSVR1YzEMRJJUiEGEklSIXZtSVJZVLRry0AiSSURFY0kdm1JkgoxkEiSCrFrS5JKwtt/JUn9khmJJJVFRVMSA4kklUQ1w4hdW5KkgsxIJKksKpqSGEgkqSQqGkcMJJJUGhUdbHeMRJJUiIFEklSIXVuSVBLV7NgykEhSeVQ0khhIJKkk/Bp5SVK/ZEYiSWVRzYTEQCJJZVHROGIgkaTSqGgkMZBIUmlUM5I42C5JKsSMRJJKopr5iIFEksqjopHEQCJJJVHROEKklHp6Gz2+AUnqQ912/X/j9ZWFr5cbbtTU6/GoNzKSqgbZPhURE1JKzX3dDvUfPue0rrxrq7wm9HUD1O/4nNM6cYxEkkqioj+QaEYiSf1JRBwVEXMiYm5EnN1g/cYRcVW+/s6I2KGzOg0k5WVftXqbz7n1XEQ0AVOADwC7AidGxK51xU4DlqaUdgIuBs7vtN5euGtLktQFK1e0Fr4gNw3YoN0Osog4AJicUnp/Pn8OQErpOzVlrs/L3B4RA4BngKGpg2BhRiJJ/cf2wIKa+ZZ8WcMyKaUVwPPA1h1VaiApoc76MKXuEhGXRcTCiHigr9uiLJsoOkXEhIiYVTPV3o3XKFupzzS6UmY1BpKS6WIfptRdpgJH9XUj1H1SSs0ppTE1U+3YVwswsmZ+BPBUXRWryuRdW1sCSzrapoGkfMYCc1NK81JKrwPTgGP7uE1aT6WUbqaTi4TWKzOB0RGxY0RsBIwHpteVmQ58LP//eODGjsZHwEBSRl3pw5SktZaPeUwErgceAn6eUpodEedGxLi82E+BrSNiLnAm0Gn3uh9ILJ+17p+UpK5KKc0AZtQtm1Tz/6vAh9emTjOS8ulKH6YklYaBpHy60ocpSaVhICmZ9vow+7ZVWl9FxJXA7cA7IqIlIk7r6zapevxkuySpEDMSSVIhBhJJUiEGEklSIQYSSVIhBhJJUiEGEklSIQYSSVIhBhJJUiH/H9VmXnTZe0z9AAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -993,7 +978,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1008,22 +993,66 @@ { "marker": { "color": [ - 0.06233491786391007, - 0.07526432779941447, - 0.08695093229979224, - 0.04963147038518512, - 0.05583701780218163, - 0.08058249460718507, - 0.09114374693036643, - 0.06572718795141519, - 0.05968665883201925, - 0.05445571776233195, - 0.055376163222076315, - 0.042607811423576454, - 0.0518342000448445, - 0.05459014510147319, - 0.01917707123895738, - 0.09480013673527063 + 0.012558962975209231, + 0.017537599479512108, + 0.016881150203723203, + 0.028738527878757303, + 0.009099740278189994, + 0.01155700428443913, + 0.01195901954352661, + 0.03098341951723969, + 0.014850454127648306, + 0.0080870274712622, + 0.014914806466358782, + 0.016391207723401222, + 0.041333148596938804, + 0.011566531139236976, + 0.017780021161448514, + 0.026310063609788405, + 0.010718167519254272, + 0.011612559465381625, + 0.016331616893431763, + 0.032185289827667114, + 0.016970821165275346, + 0.012774867854519107, + 0.012462944207922742, + 0.014183569941856869, + 0.018726438896279844, + 0.025712920980472648, + 0.03395286256314199, + 0.02224493325677133, + 0.01985041569010113, + 0.014164200887380077, + 0.012741450751245711, + 0.014042746984648663, + 0.015558924521670792, + 0.01158669494385531, + 0.0125574656626801, + 0.014315280682543683, + 0.020563263130985256, + 0.025161177761478234, + 0.015573979545912237, + 0.012819851031532244, + 0.012762817825622993, + 0.020675597716582575, + 0.014468353699388403, + 0.016530161260772093, + 0.02211032018259162, + 0.018524518515393263, + 0.018325609566432435, + 0.010287441597369908, + 0.010185801724929885, + 0.01711177951886284, + 0.014803383591472534, + 0.017135042490893728, + 0.015771411680141147, + 0.010213311551067014, + 0.010195892511133507, + 0.012456297082961688, + 0.011840114504870958, + 0.010354021475166422, + 0.016209376054735877, + 0.012677618826922497 ], "colorscale": "Portland", "showscale": true, @@ -1033,60 +1062,192 @@ }, "mode": "markers", "text": [ - "FiO2_std", - "ETCO2_mean", + "BMI_donor", "LAS", - "PASm_max", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", "PEEPtotal_mean", - "PEEPtotal_std", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", "Temp_mean", - "Poids", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", "PAPsys_max", - "PAPsys_std", - "FiO2_mean", - "SpO2_mean", - "BIS SR_std", - "PASs_mean" + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" ], "type": "scatter", - "uid": "df7780df-5f57-40fc-ae13-9f30a8e2f61f", + "uid": "7ad4f3ab-2a1e-4f52-8160-c4974f54b72e", "x": [ - "FiO2_std", - "ETCO2_mean", + "BMI_donor", "LAS", - "PASm_max", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", "PEEPtotal_mean", - "PEEPtotal_std", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", "Temp_mean", - "Poids", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", "PAPsys_max", - "PAPsys_std", - "FiO2_mean", - "SpO2_mean", - "BIS SR_std", - "PASs_mean" + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" ], "y": [ - 0.06233491786391007, - 0.07526432779941447, - 0.08695093229979224, - 0.04963147038518512, - 0.05583701780218163, - 0.08058249460718507, - 0.09114374693036643, - 0.06572718795141519, - 0.05968665883201925, - 0.05445571776233195, - 0.055376163222076315, - 0.042607811423576454, - 0.0518342000448445, - 0.05459014510147319, - 0.01917707123895738, - 0.09480013673527063 + 0.012558962975209231, + 0.017537599479512108, + 0.016881150203723203, + 0.028738527878757303, + 0.009099740278189994, + 0.01155700428443913, + 0.01195901954352661, + 0.03098341951723969, + 0.014850454127648306, + 0.0080870274712622, + 0.014914806466358782, + 0.016391207723401222, + 0.041333148596938804, + 0.011566531139236976, + 0.017780021161448514, + 0.026310063609788405, + 0.010718167519254272, + 0.011612559465381625, + 0.016331616893431763, + 0.032185289827667114, + 0.016970821165275346, + 0.012774867854519107, + 0.012462944207922742, + 0.014183569941856869, + 0.018726438896279844, + 0.025712920980472648, + 0.03395286256314199, + 0.02224493325677133, + 0.01985041569010113, + 0.014164200887380077, + 0.012741450751245711, + 0.014042746984648663, + 0.015558924521670792, + 0.01158669494385531, + 0.0125574656626801, + 0.014315280682543683, + 0.020563263130985256, + 0.025161177761478234, + 0.015573979545912237, + 0.012819851031532244, + 0.012762817825622993, + 0.020675597716582575, + 0.014468353699388403, + 0.016530161260772093, + 0.02211032018259162, + 0.018524518515393263, + 0.018325609566432435, + 0.010287441597369908, + 0.010185801724929885, + 0.01711177951886284, + 0.014803383591472534, + 0.017135042490893728, + 0.015771411680141147, + 0.010213311551067014, + 0.010195892511133507, + 0.012456297082961688, + 0.011840114504870958, + 0.010354021475166422, + 0.016209376054735877, + 0.012677618826922497 ] } ], @@ -1107,10 +1268,10 @@ } }, "text/html": [ - "
" + "
" ], "text/vnd.plotly.v1+html": [ - "
" + "
" ] }, "metadata": {}, @@ -1162,7 +1323,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1170,18 +1331,20 @@ "output_type": "stream", "text": [ "Accuracy :\n", - "0.6534653465346535\n" + "0.6470588235294118\n" ] } ], "source": [ "print(\"Accuracy :\")\n", - "print(metrics.accuracy_score(et_pred, y_test))" + "et_accu=metrics.accuracy_score(y_test,et_pred)\n", + "accu_comparaison['Extra Tree']=et_accu\n", + "print(et_accu)" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1190,12 +1353,12 @@ "text": [ " precision recall f1-score support\n", "\n", - " 0 0.81 0.67 0.73 72\n", - " 1 0.43 0.62 0.51 29\n", + " 0 0.90 0.64 0.75 83\n", + " 1 0.30 0.68 0.42 19\n", "\n", - " micro avg 0.65 0.65 0.65 101\n", - " macro avg 0.62 0.64 0.62 101\n", - "weighted avg 0.70 0.65 0.67 101\n", + " micro avg 0.65 0.65 0.65 102\n", + " macro avg 0.60 0.66 0.58 102\n", + "weighted avg 0.79 0.65 0.69 102\n", "\n" ] } @@ -1206,7 +1369,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 37, "metadata": { "scrolled": true }, @@ -1214,16 +1377,16 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 34, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1245,7 +1408,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1260,22 +1423,66 @@ { "marker": { "color": [ - 0.05598863549844229, - 0.07803294218413095, - 0.08034542362886657, - 0.05452488696298623, - 0.04997541620024726, - 0.06257172246205175, - 0.07351088240548811, - 0.1042160622663054, - 0.05264776585529489, - 0.051196955991512555, - 0.05956015958113374, - 0.039430839695329206, - 0.07598885028085174, - 0.058721253295898966, - 0.04452597724624765, - 0.05876222644521265 + 0.015497103059579458, + 0.03276124631779871, + 0.014836810474768057, + 0.02628340567925162, + 0.013461843883269797, + 0.013425916259265893, + 0.012490767843703404, + 0.029366251770136513, + 0.020755405741138558, + 0.01904083396840451, + 0.01915877064034347, + 0.0172798721054234, + 0.02907051296206054, + 0.012626196606345405, + 0.01615731268516695, + 0.020443745921147786, + 0.01210009315952742, + 0.011090642986858934, + 0.013317543470921891, + 0.02104134060878663, + 0.018862051839705463, + 0.013595802247940717, + 0.013862355478199542, + 0.013555211416351558, + 0.019833675027620328, + 0.018682082621384658, + 0.026073067034342857, + 0.021356158512100324, + 0.02054416469637544, + 0.02490311726674872, + 0.012448121989318202, + 0.015437274098003191, + 0.01576395153857026, + 0.009826876866633529, + 0.01278573156146453, + 0.012105496173728436, + 0.012848184707561024, + 0.02364837799261723, + 0.013285996292233598, + 0.012726797481949942, + 0.014600806006022506, + 0.0193609934524745, + 0.018479127517677635, + 0.0166548069969912, + 0.01826633437026334, + 0.02013933536221683, + 0.01637939421462692, + 0.01125417690959109, + 0.013443150635851567, + 0.016483184365544478, + 0.013902070267264975, + 0.015331938954299438, + 0.015375468336869296, + 0.014975314092294096, + 0.012174292296464807, + 0.01034640078979455, + 0.01278942009343867, + 0.016373016721607767, + 0.012434238746522011, + 0.008886418883435799 ], "colorscale": "Portland", "showscale": true, @@ -1285,60 +1492,192 @@ }, "mode": "markers", "text": [ - "FiO2_std", - "ETCO2_mean", + "BMI_donor", "LAS", - "PASm_max", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", "PEEPtotal_mean", - "PEEPtotal_std", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", "Temp_mean", - "Poids", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", "PAPsys_max", - "PAPsys_std", - "FiO2_mean", - "SpO2_mean", - "BIS SR_std", - "PASs_mean" + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" ], "type": "scatter", - "uid": "f31b6314-69e1-46d7-aee2-79d28e1d6664", + "uid": "6cd7adb9-67ec-478a-a807-57e38604b07b", "x": [ - "FiO2_std", - "ETCO2_mean", + "BMI_donor", "LAS", - "PASm_max", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", "PEEPtotal_mean", - "PEEPtotal_std", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", "Temp_mean", - "Poids", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", "PAPsys_max", - "PAPsys_std", - "FiO2_mean", - "SpO2_mean", - "BIS SR_std", - "PASs_mean" + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" ], "y": [ - 0.05598863549844229, - 0.07803294218413095, - 0.08034542362886657, - 0.05452488696298623, - 0.04997541620024726, - 0.06257172246205175, - 0.07351088240548811, - 0.1042160622663054, - 0.05264776585529489, - 0.051196955991512555, - 0.05956015958113374, - 0.039430839695329206, - 0.07598885028085174, - 0.058721253295898966, - 0.04452597724624765, - 0.05876222644521265 + 0.015497103059579458, + 0.03276124631779871, + 0.014836810474768057, + 0.02628340567925162, + 0.013461843883269797, + 0.013425916259265893, + 0.012490767843703404, + 0.029366251770136513, + 0.020755405741138558, + 0.01904083396840451, + 0.01915877064034347, + 0.0172798721054234, + 0.02907051296206054, + 0.012626196606345405, + 0.01615731268516695, + 0.020443745921147786, + 0.01210009315952742, + 0.011090642986858934, + 0.013317543470921891, + 0.02104134060878663, + 0.018862051839705463, + 0.013595802247940717, + 0.013862355478199542, + 0.013555211416351558, + 0.019833675027620328, + 0.018682082621384658, + 0.026073067034342857, + 0.021356158512100324, + 0.02054416469637544, + 0.02490311726674872, + 0.012448121989318202, + 0.015437274098003191, + 0.01576395153857026, + 0.009826876866633529, + 0.01278573156146453, + 0.012105496173728436, + 0.012848184707561024, + 0.02364837799261723, + 0.013285996292233598, + 0.012726797481949942, + 0.014600806006022506, + 0.0193609934524745, + 0.018479127517677635, + 0.0166548069969912, + 0.01826633437026334, + 0.02013933536221683, + 0.01637939421462692, + 0.01125417690959109, + 0.013443150635851567, + 0.016483184365544478, + 0.013902070267264975, + 0.015331938954299438, + 0.015375468336869296, + 0.014975314092294096, + 0.012174292296464807, + 0.01034640078979455, + 0.01278942009343867, + 0.016373016721607767, + 0.012434238746522011, + 0.008886418883435799 ] } ], @@ -1359,10 +1698,10 @@ } }, "text/html": [ - "
" + "
" ], "text/vnd.plotly.v1+html": [ - "
" + "
" ] }, "metadata": {}, @@ -1411,7 +1750,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1419,18 +1758,20 @@ "output_type": "stream", "text": [ "Accuracy :\n", - "0.5148514851485149\n" + "0.6176470588235294\n" ] } ], "source": [ "print(\"Accuracy :\")\n", - "print(metrics.accuracy_score(ada_pred, y_test))" + "ada_accu=metrics.accuracy_score(y_test,ada_pred)\n", + "accu_comparaison['Ada Boost']=ada_accu\n", + "print(ada_accu)" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1439,12 +1780,12 @@ "text": [ " precision recall f1-score support\n", "\n", - " 0 0.56 0.59 0.57 56\n", - " 1 0.45 0.42 0.44 45\n", + " 0 0.66 0.67 0.67 58\n", + " 1 0.56 0.55 0.55 44\n", "\n", - " micro avg 0.51 0.51 0.51 101\n", - " macro avg 0.51 0.51 0.51 101\n", - "weighted avg 0.51 0.51 0.51 101\n", + " micro avg 0.62 0.62 0.62 102\n", + " macro avg 0.61 0.61 0.61 102\n", + "weighted avg 0.62 0.62 0.62 102\n", "\n" ] } @@ -1455,7 +1796,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 41, "metadata": { "scrolled": true }, @@ -1463,16 +1804,16 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 38, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1494,7 +1835,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -1509,22 +1850,66 @@ { "marker": { "color": [ - 0.074, - 0.056, + 0.028, + 0.06, + 0.024, + 0.024, + 0.008, + 0, + 0.02, + 0.02, + 0.022, + 0.002, + 0.008, + 0.006, + 0.046, + 0.018, + 0.006, + 0.014, + 0.006, + 0.03, + 0.012, 0.054, - 0.09, - 0.058, - 0.092, - 0.07, - 0.058, - 0.062, - 0.034, - 0.032, - 0.1, - 0.048, - 0.032, + 0.008, + 0.026, + 0.004, + 0.016, + 0.014, + 0.024, + 0.026, + 0.02, + 0.006, + 0.012, + 0.008, 0.024, - 0.116 + 0.012, + 0.012, + 0.01, + 0.01, + 0.012, + 0.026, + 0.022, + 0.02, + 0.018, + 0.028, + 0.024, + 0.018, + 0.026, + 0.02, + 0.002, + 0.008, + 0.006, + 0.014, + 0.008, + 0.038, + 0.018, + 0, + 0.006, + 0, + 0.002, + 0.01, + 0.01, + 0.024 ], "colorscale": "Portland", "showscale": true, @@ -1534,60 +1919,192 @@ }, "mode": "markers", "text": [ - "FiO2_std", - "ETCO2_mean", + "BMI_donor", "LAS", - "PASm_max", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", "PEEPtotal_mean", - "PEEPtotal_std", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", "Temp_mean", - "Poids", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", "PAPsys_max", - "PAPsys_std", - "FiO2_mean", - "SpO2_mean", - "BIS SR_std", - "PASs_mean" + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" ], "type": "scatter", - "uid": "1dc4fe57-e50c-4d63-af0c-3f13b24b0b8e", + "uid": "77444ee8-6489-478a-8d6e-c952873f95ba", "x": [ - "FiO2_std", - "ETCO2_mean", + "BMI_donor", "LAS", - "PASm_max", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", "PEEPtotal_mean", - "PEEPtotal_std", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", "Temp_mean", - "Poids", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", "PAPsys_max", - "PAPsys_std", - "FiO2_mean", - "SpO2_mean", - "BIS SR_std", - "PASs_mean" + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" ], "y": [ - 0.074, - 0.056, + 0.028, + 0.06, + 0.024, + 0.024, + 0.008, + 0, + 0.02, + 0.02, + 0.022, + 0.002, + 0.008, + 0.006, + 0.046, + 0.018, + 0.006, + 0.014, + 0.006, + 0.03, + 0.012, 0.054, - 0.09, - 0.058, - 0.092, - 0.07, - 0.058, - 0.062, - 0.034, - 0.032, - 0.1, - 0.048, - 0.032, + 0.008, + 0.026, + 0.004, + 0.016, + 0.014, + 0.024, + 0.026, + 0.02, + 0.006, + 0.012, + 0.008, 0.024, - 0.116 + 0.012, + 0.012, + 0.01, + 0.01, + 0.012, + 0.026, + 0.022, + 0.02, + 0.018, + 0.028, + 0.024, + 0.018, + 0.026, + 0.02, + 0.002, + 0.008, + 0.006, + 0.014, + 0.008, + 0.038, + 0.018, + 0, + 0.006, + 0, + 0.002, + 0.01, + 0.01, + 0.024 ] } ], @@ -1608,10 +2125,10 @@ } }, "text/html": [ - "
" + "
" ], "text/vnd.plotly.v1+html": [ - "
" + "
" ] }, "metadata": {}, @@ -1659,7 +2176,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1667,18 +2184,20 @@ "output_type": "stream", "text": [ "Accuracy :\n", - "0.5742574257425742\n" + "0.6470588235294118\n" ] } ], "source": [ "print(\"Accuracy :\")\n", - "print(metrics.accuracy_score(gb_pred, y_test))" + "gb_accu=metrics.accuracy_score(y_test,gb_pred)\n", + "accu_comparaison['Gradient Boost']=gb_accu\n", + "print(gb_accu)" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1687,12 +2206,12 @@ "text": [ " precision recall f1-score support\n", "\n", - " 0 0.66 0.63 0.64 62\n", - " 1 0.45 0.49 0.47 39\n", + " 0 0.71 0.69 0.70 61\n", + " 1 0.56 0.59 0.57 41\n", "\n", - " micro avg 0.57 0.57 0.57 101\n", - " macro avg 0.56 0.56 0.56 101\n", - "weighted avg 0.58 0.57 0.58 101\n", + " micro avg 0.65 0.65 0.65 102\n", + " macro avg 0.64 0.64 0.64 102\n", + "weighted avg 0.65 0.65 0.65 102\n", "\n" ] } @@ -1703,7 +2222,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 45, "metadata": { "scrolled": true }, @@ -1711,16 +2230,16 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 42, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -1742,7 +2261,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1757,22 +2276,66 @@ { "marker": { "color": [ - 0.07467276371007249, - 0.08260852216193229, - 0.05919655799729524, - 0.04229542784339454, - 0.04527652497377164, - 0.08158907675233171, - 0.108607645422558, - 0.07467527024597924, - 0.0606110600450391, - 0.047836126864144075, - 0.042242155123392265, - 0.027478633680962723, - 0.0605503514073184, - 0.06782644915311045, - 0.01295613897997066, - 0.11157729563872724 + 0.021624774813776178, + 0.045951297236316226, + 0.0032107215328767355, + 0.02767917138457869, + 0.013884962566422705, + 0.0013384203806492008, + 0.017120192254476745, + 0.054892251008105755, + 0.038099051597905845, + 8.071995260211823e-06, + 0.0038776923433244815, + 0.006860435255701536, + 0.05723568552310294, + 0.0058249528141455465, + 0.02053990266628814, + 0.04310580248279041, + 0.008058003756373704, + 0.01994392259851442, + 0.00806024887367836, + 0.057433967696633705, + 0.009002799879604301, + 0.008430519944219112, + 0.002541454242710505, + 0.009948373837099353, + 0.0070544021898244005, + 0.027685778582729744, + 0.03919876568452454, + 0.023637102545276734, + 0.012915875289178622, + 0.007354237541427852, + 0.016495105041870104, + 0.009885307661633409, + 0.00839043058575581, + 0.0011942181505538718, + 0.0050952905856316835, + 0.016754522276539296, + 0.058463369179265784, + 0.053770079773812804, + 0.00541721102784985, + 0.010307595605770098, + 0.00899127250912973, + 0.012631753352211056, + 0.007051861711016695, + 0.023950246608751998, + 0.011855077603817423, + 0.012389088318177074, + 0.0012789451017434924, + 0.004315460735817264, + 0.006596619515099712, + 0.005490334317440806, + 0.010144801329010883, + 0.03186610023226667, + 0.003940997956068047, + 0.008829156600993714, + 0.007254945658384009, + 0.0016096186416023962, + 0.007492097735423468, + 0.009489135388562065, + 0.018276303720415676, + 0.018254214557868423 ], "colorscale": "Portland", "showscale": true, @@ -1782,60 +2345,192 @@ }, "mode": "markers", "text": [ - "FiO2_std", - "ETCO2_mean", + "BMI_donor", "LAS", - "PASm_max", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", "PEEPtotal_mean", - "PEEPtotal_std", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", "Temp_mean", - "Poids", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", "PAPsys_max", - "PAPsys_std", - "FiO2_mean", - "SpO2_mean", - "BIS SR_std", - "PASs_mean" + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" ], "type": "scatter", - "uid": "35a47e53-c298-4156-b83b-949f1dec34c2", + "uid": "ae6ac1fc-e395-423e-8161-71071ca6278c", "x": [ - "FiO2_std", - "ETCO2_mean", + "BMI_donor", "LAS", - "PASm_max", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", "PEEPtotal_mean", - "PEEPtotal_std", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", "Temp_mean", - "Poids", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", "PAPsys_max", - "PAPsys_std", - "FiO2_mean", - "SpO2_mean", - "BIS SR_std", - "PASs_mean" + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" ], "y": [ - 0.07467276371007249, - 0.08260852216193229, - 0.05919655799729524, - 0.04229542784339454, - 0.04527652497377164, - 0.08158907675233171, - 0.108607645422558, - 0.07467527024597924, - 0.0606110600450391, - 0.047836126864144075, - 0.042242155123392265, - 0.027478633680962723, - 0.0605503514073184, - 0.06782644915311045, - 0.01295613897997066, - 0.11157729563872724 + 0.021624774813776178, + 0.045951297236316226, + 0.0032107215328767355, + 0.02767917138457869, + 0.013884962566422705, + 0.0013384203806492008, + 0.017120192254476745, + 0.054892251008105755, + 0.038099051597905845, + 8.071995260211823e-06, + 0.0038776923433244815, + 0.006860435255701536, + 0.05723568552310294, + 0.0058249528141455465, + 0.02053990266628814, + 0.04310580248279041, + 0.008058003756373704, + 0.01994392259851442, + 0.00806024887367836, + 0.057433967696633705, + 0.009002799879604301, + 0.008430519944219112, + 0.002541454242710505, + 0.009948373837099353, + 0.0070544021898244005, + 0.027685778582729744, + 0.03919876568452454, + 0.023637102545276734, + 0.012915875289178622, + 0.007354237541427852, + 0.016495105041870104, + 0.009885307661633409, + 0.00839043058575581, + 0.0011942181505538718, + 0.0050952905856316835, + 0.016754522276539296, + 0.058463369179265784, + 0.053770079773812804, + 0.00541721102784985, + 0.010307595605770098, + 0.00899127250912973, + 0.012631753352211056, + 0.007051861711016695, + 0.023950246608751998, + 0.011855077603817423, + 0.012389088318177074, + 0.0012789451017434924, + 0.004315460735817264, + 0.006596619515099712, + 0.005490334317440806, + 0.010144801329010883, + 0.03186610023226667, + 0.003940997956068047, + 0.008829156600993714, + 0.007254945658384009, + 0.0016096186416023962, + 0.007492097735423468, + 0.009489135388562065, + 0.018276303720415676, + 0.018254214557868423 ] } ], @@ -1856,10 +2551,10 @@ } }, "text/html": [ - "
" + "
" ], "text/vnd.plotly.v1+html": [ - "
" + "
" ] }, "metadata": {}, @@ -1897,6 +2592,1001 @@ "fig = go.Figure(data=data, layout=layout)\n", "py.iplot(fig, filename='scatter2010')" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stacking " + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
featuresRandom Forest Importance des featuresExtra Trees Importance des featuresAdaBoost Importance des featuresGradient Boost Importance des featuresmoyenne
0BMI_donor0.0125590.0154970.0280.0216250.019420
1LAS0.0175380.0327610.0600.0459510.039063
2PF_donor0.0168810.0148370.0240.0032110.014732
3Poids0.0287390.0262830.0240.0276790.026675
4Poids_donor0.0091000.0134620.0080.0138850.011112
\n", + "
" + ], + "text/plain": [ + " features Random Forest Importance des features \\\n", + "0 BMI_donor 0.012559 \n", + "1 LAS 0.017538 \n", + "2 PF_donor 0.016881 \n", + "3 Poids 0.028739 \n", + "4 Poids_donor 0.009100 \n", + "\n", + " Extra Trees Importance des features AdaBoost Importance des features \\\n", + "0 0.015497 0.028 \n", + "1 0.032761 0.060 \n", + "2 0.014837 0.024 \n", + "3 0.026283 0.024 \n", + "4 0.013462 0.008 \n", + "\n", + " Gradient Boost Importance des features moyenne \n", + "0 0.021625 0.019420 \n", + "1 0.045951 0.039063 \n", + "2 0.003211 0.014732 \n", + "3 0.027679 0.026675 \n", + "4 0.013885 0.011112 " + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feature_dataframe['moyenne'] = feature_dataframe.mean(axis= 1) \n", + "feature_dataframe.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "linkText": "Export to plot.ly", + "plotlyServerURL": "https://plot.ly", + "showLink": false + }, + "data": [ + { + "marker": { + "color": [ + 0.019420210212141215, + 0.03906253575840676, + 0.014732170552841999, + 0.026675276235646906, + 0.011111636681970623, + 0.006580335231088556, + 0.01539249491042669, + 0.03381048057387049, + 0.02392622786667318, + 0.007283983358731731, + 0.011487817362506684, + 0.01163287877113154, + 0.04340983677052557, + 0.012004420139931981, + 0.015119309128225901, + 0.02596490300343165, + 0.009219066108788847, + 0.018161781262688744, + 0.012427352309508002, + 0.04116514953327186, + 0.013208918221146278, + 0.015200297511669734, + 0.008216688482208197, + 0.013421788798826944, + 0.014903629028431143, + 0.02402019554614676, + 0.031306173820502346, + 0.021809548578537098, + 0.014827613918913799, + 0.014605388923889162, + 0.012421169445608504, + 0.015841332186071314, + 0.012928326661499213, + 0.008651947490260678, + 0.01010962195244408, + 0.013293824783202852, + 0.025968704254453016, + 0.03214490888197707, + 0.014069296716498921, + 0.01396356102981307, + 0.013588724085193807, + 0.020167086130317032, + 0.015999835732020684, + 0.018783803716628824, + 0.019557933039168095, + 0.017763235548946793, + 0.009495987220700712, + 0.008464269810694565, + 0.009056392968970291, + 0.013271324550462031, + 0.011712563796937098, + 0.02558327041936496, + 0.013271969493269621, + 0.008504445561088706, + 0.008906282616495582, + 0.006103079128589659, + 0.008530408083433274, + 0.011554043396334064, + 0.014229979630418391, + 0.015954563067056678 + ], + "colorscale": "Portland", + "showscale": true, + "size": 25, + "sizemode": "diameter", + "sizeref": 1 + }, + "mode": "markers", + "text": [ + "BMI_donor", + "LAS", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", + "PEEPtotal_mean", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", + "Temp_mean", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", + "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", + "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", + "PAPsys_max", + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" + ], + "type": "scatter", + "uid": "893c33aa-286c-408c-8fe6-4f2cc29bdc49", + "x": [ + "BMI_donor", + "LAS", + "PF_donor", + "Poids", + "Poids_donor", + "Taille", + "age", + "body_mass_index", + "oto_score", + "start_operation_month", + "start_operation_day", + "ends_operation_day", + "ETCO2_mean", + "FC_mean", + "FR_mean", + "FiO2_mean", + "PAPdia_mean", + "PAPmoy_mean", + "PASd_mean", + "PASs_mean", + "PEEPtotal_mean", + "PNIm_mean", + "PNIs_mean", + "Pmax_mean", + "Pmean_mean", + "SpO2_mean", + "Temp_mean", + "VT_mean", + "declampage_cote2_done_mean", + "B.I.S_std", + "ETCO2_std", + "FC_std", + "FiO2_std", + "PAPmoy_std", + "PASd_std", + "PASm_std", + "PASs_std", + "PEEPtotal_std", + "PNIs_std", + "Pmax_std", + "Pmean_std", + "SpO2_std", + "SvO2 (m)_std", + "Temp_std", + "VT_std", + "declampage_cote2_done_std", + "ETCO2_max", + "FR_max", + "PAPmoy_max", + "PAPsys_max", + "PASd_max", + "PASm_max", + "PASs_max", + "PEEPtotal_max", + "PNId_max", + "PNIm_max", + "Pmax_max", + "Pmean_max", + "Temp_max", + "VT_max" + ], + "y": [ + 0.019420210212141215, + 0.03906253575840676, + 0.014732170552841999, + 0.026675276235646906, + 0.011111636681970623, + 0.006580335231088556, + 0.01539249491042669, + 0.03381048057387049, + 0.02392622786667318, + 0.007283983358731731, + 0.011487817362506684, + 0.01163287877113154, + 0.04340983677052557, + 0.012004420139931981, + 0.015119309128225901, + 0.02596490300343165, + 0.009219066108788847, + 0.018161781262688744, + 0.012427352309508002, + 0.04116514953327186, + 0.013208918221146278, + 0.015200297511669734, + 0.008216688482208197, + 0.013421788798826944, + 0.014903629028431143, + 0.02402019554614676, + 0.031306173820502346, + 0.021809548578537098, + 0.014827613918913799, + 0.014605388923889162, + 0.012421169445608504, + 0.015841332186071314, + 0.012928326661499213, + 0.008651947490260678, + 0.01010962195244408, + 0.013293824783202852, + 0.025968704254453016, + 0.03214490888197707, + 0.014069296716498921, + 0.01396356102981307, + 0.013588724085193807, + 0.020167086130317032, + 0.015999835732020684, + 0.018783803716628824, + 0.019557933039168095, + 0.017763235548946793, + 0.009495987220700712, + 0.008464269810694565, + 0.009056392968970291, + 0.013271324550462031, + 0.011712563796937098, + 0.02558327041936496, + 0.013271969493269621, + 0.008504445561088706, + 0.008906282616495582, + 0.006103079128589659, + 0.008530408083433274, + 0.011554043396334064, + 0.014229979630418391, + 0.015954563067056678 + ] + } + ], + "layout": { + "autosize": true, + "hovermode": "closest", + "showlegend": false, + "title": { + "text": "Moyenne de l'importance des features" + }, + "yaxis": { + "gridwidth": 2, + "ticklen": 5, + "title": { + "text": "Importance des features" + } + } + } + }, + "text/html": [ + "
" + ], + "text/vnd.plotly.v1+html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "trace = go.Scatter(\n", + " y=feature_dataframe['moyenne'].values,\n", + " x=feature_dataframe['features'].values,\n", + " mode='markers',\n", + " marker=dict(\n", + " sizemode='diameter',\n", + " sizeref=1,\n", + " size=25,\n", + " color=feature_dataframe['moyenne'].values,\n", + " colorscale='Portland',\n", + " showscale=True\n", + " ),\n", + " text=feature_dataframe['features'].values\n", + ")\n", + "data = [trace]\n", + "\n", + "layout = go.Layout(\n", + " autosize=True,\n", + " title=\"Moyenne de l'importance des features\",\n", + " hovermode='closest',\n", + " yaxis=dict(\n", + " title='Importance des features',\n", + " ticklen=5,\n", + " gridwidth=2\n", + " ),\n", + " showlegend=False\n", + ")\n", + "fig = go.Figure(data=data, layout=layout)\n", + "py.iplot(fig, filename='scatter2010')" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RandomForestExtraTreesAdaBoostGradientBoost
01.01.00.01.0
10.00.00.00.0
20.00.01.00.0
30.00.00.00.0
40.00.00.00.0
\n", + "
" + ], + "text/plain": [ + " RandomForest ExtraTrees AdaBoost GradientBoost\n", + "0 1.0 1.0 0.0 1.0\n", + "1 0.0 0.0 0.0 0.0\n", + "2 0.0 0.0 1.0 0.0\n", + "3 0.0 0.0 0.0 0.0\n", + "4 0.0 0.0 0.0 0.0" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "premieres_predictions_train = pd.DataFrame( {'RandomForest': rf_oof_train.ravel(),\n", + " 'ExtraTrees': et_oof_train.ravel(),\n", + " 'AdaBoost': ada_oof_train.ravel(),\n", + " 'GradientBoost': gb_oof_train.ravel()\n", + " })\n", + "premieres_predictions_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.YlOrRd\n", + "plt.figure(figsize=(10,10))\n", + "plt.title('Corrélation des prédictions des modèles', y=1.05, size=15)\n", + "sns.heatmap(premieres_predictions_train.astype(float).corr().values, linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=1,\n", + " xticklabels=premieres_predictions_train.columns.values, yticklabels=premieres_predictions_train.columns.values)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "x_train_stack = np.concatenate(( et_oof_train, rf_oof_train, ada_oof_train, gb_oof_train), axis=1)\n", + "x_test_stack = np.concatenate(( et_oof_test, rf_oof_test, ada_oof_test, gb_oof_test), axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GradientBoosting Stack" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "GBC_stck=GradientBoostingClassifier()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "GBC_stck.fit(x_train_stack,y_train)\n", + "y_test_GBC_stack=GBC_stck.predict(x_test_stack)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.7254901960784313\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "GBC_stack_accu=metrics.accuracy_score(y_test,y_test_GBC_stack)\n", + "accu_comparaison['Gradient Boosting Stacked']=GBC_stack_accu\n", + "print(GBC_stack_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.70 0.93 0.80 59\n", + " 1 0.83 0.44 0.58 43\n", + "\n", + " micro avg 0.73 0.73 0.73 102\n", + " macro avg 0.76 0.69 0.69 102\n", + "weighted avg 0.75 0.73 0.70 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(y_test,y_test_GBC_stack))" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAacAAAF5CAYAAAA72+XHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XucFXX9x/HXZ3dF7iqXBQQUQUzRUksx84JpJpY/8JY/vJT8srALZZmV5s979stL2o0K8kL9ykgtCxVvaegPKwONVFAUuciCXAQEQXC5fH5/fGfX2eHsnrPsbWb2/Xw8zmN3Zr7nO985M2c+8/nO95xj7o6IiEialLV1A0RERJIUnEREJHUUnEREJHUUnEREJHUUnEREJHUUnEREJHWKBiczu9rM3MxerWf5/Gj51Y1ZsZkNb8xzzOy4aD0HNWY9zcXMTonWP6gt1r+zzKyfmU0zs3VR+49rpnpbdX/E1lfzWGtmM8zshGZcxyIzu7m56qtnHYPNbFK0rnej/fK0mX3ezDq18LrvNbPpsemrzezNFlpXye9vM5uc2Ldvm9lMMzu9JdpWQns6RK/NISWWP9rMHjOzVWa20cxejbZpQKzMt5rrvVdg/S25H7tG+2RsS9TfkFIzp83APmZ2WHymmR0O7B0tb6zhwFWNKP8ccCTw2k6sqz27HDgYOJvw+j3XTPW21f44N1rveYTj7uFSTyJtzcyOBmYDhwHXAx8HzgH+AfwA+E4rN+k24KQWqrux7++XCfv1SOAM4FXgnug1a20dCG0velxF7ZsOrAMuAE4FfgLsTzg31vgWcFwztzPXKkost5FwMhoDzIrNHwM8AXyomdtVy8wM2NXd1xPexNI4+wPPuPu05qy0DffH8+7+IoCZPQksAT4PfLlQYTPr6O47c/HUrKKs6PeE1+yT7r4ltvjBKGM7vIHnlwPl7l7dXG1y9yqgqrnqa6KN7l57PJnZX4CPAqOAGW3WquK+CLwEfMrf+0aDx4AfR+cu2UmNuec0BTir5gWP/p4Vza/DzI40s6lmtixKc2eb2bmx5WMJVxfEUvnp0fTVZvZmlCrPJFwdf6pQN5KZlZvZZWb2StRFUmVmkxNtGW1ms8xss5ktN7MbzWyXhjbUgqvNbGXUxfBroHuBch2j+pZE6/+3mX2i2AtpZp2i5y2OnrfQzP4nsV1Xm9nr0fI5ZnZOoo7J0XadaGbPR6/zDDM7MFbGgROA06LXblE0f7qZ3Zuor9Dre5mFbtvNZrbCzB42s74NlO9sZj+OXufNUdfMxxPrmW6he+mcqO71ZvZQvAukVO6+AXgFGBTVPTZq0/BoPZuAb0bLepnZr8xstZm9Ey0/rFC9ZnZFtA0bzOy3ZrZbbFkXM/upmc2L6lloZhPMbIfjI+EsYE/g64nAVLMtb7j71Nh6avbvqWY2h/A+OMJCN+0dZrbAzDZFx/53zaxDYhsGWujO3WShC/FzBbZzh+4gM+thZhOj/b3ZzP5mZkckyriZXWRm37PQlbUyeg12rdkP1PP+LpW7bwfeAeq8V83sEDN7PHrt10b7p0+iTNF9bWajzOzZ6H2z1syeMbMR0eK3o793xto/qJ6m7g6s9AJftVMzL3rf9QSuitV3XLTsG9H7ZF30mt9vZvsm6zKz08zsn9H+XB3t272T5aKyZmY/ibbriNj8oudCMzsjOqY2mdlThIvbtuHuDT6Aq4E3CTvhXeCYaP6xhDfM7tHyq2PPGQN8G/gEcDxwBVANnB0t7w3cDDjw4egxLLa+dwjdRRcSrp7eR0iJHTgotp7bonq/C5wI/CdwT2z5WcA24GeELpQvAm8BNxfZ5ouA7VG9JwETCVeYDgyKlXsAWBnV+/GoPVuBQxqo24BHCW+AbxGCx2eAX8bKXA9sAf47Wv+kaN1nx8pMjtY9O9ruUYQT9RzAojIfJmS8T0T/HxrNnw7cm2hXndc3atPbwJeAEcDpwE+BIYXKR/N+Gz3nK8DJwB+j7Tg6VmY6Idv5GzA6OlZWANOK7JNC6ysHlgG3R9NjozKvAZdEx07NNs8AlgP/BfwH8FTU1n1j9S0ClgJPRmXGRcdL/JjqDfwcODN6Xc4jXDk/UqT9twNVxd5vif37ZrRPzyMc3wOA9xPeO6dG6/981OaJiWPsOeB1Qrfh6cALUbnpyfd2bHrX6HkLov0/Evhz9Dr1jZXzqO7JhOPzm4Tj/lvF3t8NbOssQk9OBdAj2n/bgOMSr/1bwN+j7T+P8L58HugQK9fgvgaGEM4bNxHOT58gnKNOi5Z/NGr7dbH271pP268jnCuuAAbXU+bQqN23xerrHi27FTifcHyPAqYR3g+7xZ7/6ag9v4u2ZxTwQ+Cw5H4kJBy/BFYRHfulnguBD0b78R7C+/eS6FhwYGypx25zPUoOTtH/fwYmRP//DPhT9H+d4JR4vkUH3ETgidj88UQXFwXW58Dohk5OhIjuwFcbWO9i4M7E/M8Cm4Ce9Tyv5oT388T8x4gFJ0JQcWBEotxTxE5mBeo/KXreqHqW9yB0o16VmD8NmJd4Q28FhsbmnRrVvX9s3nR2DESF5iVf358Cf2hgO5LlDyC8Sc+PlSkDXiR24ua9/vk9YvO+FtXVqYT1HRwdT5XAj6J5p0RlxkbTFyWeOzK5r4AuhDdw/KS+CFgDdI3NOzfargPqaVcFcFRU/14NtP8h4O/1PL/mUZ7Yv04DFzqx559DuFDsEM37RPTcI2Ll9o6Ol+mJ91o8OF1AOGkPTdT/GnBTbJ4DTyXa8SfgH7Hpgu/verahZlvjj23ANxLlvk84oXaPzRtO7MKtlH1NuLBY3UB7ulLiCZnQo/JErN3LgF8A+yXK1XuOjJUpBzoRAulnYu+hpcAfG3je1VH95cD/EgLzgbHlJZ0LgbuBuUQXt9G8y0t9LZr70dih5FOAM6P0/UwKdOkBmNkeUffOYsKV8xbCVeh+Ja7HCW/mhnw0+ju5nuX7AXsBd5tZRc2DcCB1BOobZTYQ6EcIxHF/TEx/jHAQPJ2o/3HCDe/6HA+s8VgXTsJBQGfC1Uvc74H9zKwyNm+Ru8dHUc6N/ja6i6yA2cAnzOyaqJusvEj5wwlvgtp2e+iauQdI3tSe6e5rY9M17e5fYru2EK4uLwC+7e4PJMo8mJgeDqxy9ydjbdtIyHyTbXvMQ3dhjT8Stqv2fpCZfdrM/mVmG6K21NwTaej4NsJx/d4Ms1689/7YAjyTeM5Sd5+deI6Z2dfMbK6FbssthIx1V8LxXrO9K9y9tj53Xww820D7IBzTzwILY8czhEwyeUw/mpieS9OOu5cIr/HhhIzwSuB6qztKbDjwqIf7nQC4+z8JFxVHx8oU29cvALtFXX8fN7MuO9voqC0nAB8BvkcI5J8DnjOzDxZ7vpl92MJIv9WEi4d3CMGx5lh6H6E7+M4iVZUTzsfHAce6+5zYslLPhcOBqR5FpUjyvNdqSh0QUWMqITW9nnA1cn895SYTUtfrCAftekIaObrE9az14jd+exJuoq6vZ3mv6G99AwEG1jO/b/R3ZWJ+crpXVHaH+weEq7769ATeaGB5v+jvisT8muk9Ym15K1Gm5jXr2ED9pboD6Ea4qLgSWG1mPydc/RXavn7ABnd/JzF/BdDZzHZ193ebod1jCCeAtcBid99aoEzytetXYF5NuR6JeXX2s7tvioJQPwh9/8CvCV173yFkWv2A+4q0fykwLDHvLd4Lelfx3r6vbzsgZJk3E7KIJwmvw+HAhNj6+ya3I7Zt3RpoYy/C+7bQMZ0clVloHzbluHvH3eODrZ6ycH/zRjP7VXTC7Efotk6K78ei+9rd55nZaOBSwvlhi5ndR8i4VzW24VHb/h49sDB69CmirsL6nmdmexGC/D8JtzCWEV7HB3nvtewZ/W3onAHhgvZkQm/HK4llpZ4LCx03hY6jVtGo4OTuG83sAeDrhK6rjckyZtYR+CQw3t1/EZvfmCzNixdhNdDFzLrXE6DWRH/HAf8qsHxhPfUuj/5WJuYnp9cQTjinltDWuNXseBKKqzkIK6OyNWpu+q6h6TYThsvG1TlJR1nPrcCtZjaQ0L11PWGbf8GO3gC6mlnnRIDqQzjxvFvgOTtjjkej9RqQPH7eYMf9B6FtydezTjkLo+y68t5++RRh9OOXYmVGFGs04WT1WTM7wN1fAogC66yojkLHRaH3wacI773LY+tPBr3lye2IVBK6ceqzJmrPFwssa6791xhzCfeZehG65RrajzVZYUn72t0fJIyS3I1wvvohYRDHmKY22t1nm9lj7HgxkjSSEFRG15xLo4wm/l6sOQc0dM6A0BX4n4RtesPdL40tK/VcWOi4KfRatoqd+YaInxMypkInKAjdC+XEDmYz60a4iRdXHS3b2autJ6K/n6ln+TzCiXSQu88q8Fhdz/OWEHZSMstLfiDwccKVxoZC9TfQ7seBHmZ2Sj3LXySk9p9KzD8LeGVnruwKqGLHUTgn1lfY3Ze4+/eB+dT/hptJOJmeWTPDzCyabuuhwM8AlWZ2bM0MM+tMOCkl23aimXWNTZ9O2K6afdqJHU/U51Lc3YQr41uTI6QaqZT1zwT6JEZq7UW44d2Qx4F9gdcLHNMvNLKdTX1/Q+hu2sR7J+hngJOi8wlR/YcTRmvOiJUpdV/j7uvc/S5C5ltzbJecySe62WvmGWHQRTyDK5RZdiLcz4xn/2dRN2moOY+dX6wt7v444bzxDTO7PLao1HPhTGBU1P4abfJBaGh8tx7uPp1wU7u+5essDAG/0szWE178Swk3wePDbV+O/l5kZk8A6919XiPaMc/MJgE/iA6QpwgjB8909zHuvt3MvgH8r4Vhvg8RDpDBhGznzAJdULj7NjO7EbjZwjDb/yN8KPCARNHHgEeAx8zsBkJ3Q3fCB/c6uvtl9TS95nl3mdm1hNFR/Qj9xBe6+xoz+yHw32ZWc2V9OuEm99mlvj5F3AdcYGa3EroQPkriw5hmNpFwxfUPwr77KDCUMApzB+7+kpn9Dvhp9HrPJ4wk25/CV+Ktxt0fMbOngd+b2aWEk90lhJPDTYnimwhXnzcR9stNwH3uXnNf7DFgQvTmf4awX4p+S0XUPTiG8Hr/w8x+QThpdCSMwDuB0j7Q/BjwVTN7Jip/LiGgxE0D/k34EOu3CZnytRTvovk18AVguoXPXS0gdCsNB5a7+60ltK9GY9/fXczsw9H/nYBjCMfPz6IsHuAWwrH0SPSe60ro3nwB+AOUtq/N7ELCh30fJlwwDCWc1H8d1VFtZgsJH515kfD6PV/PrYbbol6hPxD2xx6EUYIHU/cC82Xgk2b2MLCBsO+fIFzI32lmtwMHRm2t7TKNzmPfAn5rZr8ljNhzwr3r3yUvhN39fjP7dFR+vbv/pBHnwhsIx/TdUXsOItzXbRvFRkyQGNFTT5nkUPJ9CS/8RsKQ028l6yHcIL6RcHBsJxpFVN/6qH8o8XcIb6JqQkZwZ+J5JxMCzEbCva/ZhCHiFQ1sjxHul60ipMu/JYyIqh2tF5XbFbiGcCKuJmRcDxM+ZNnQ69WJcN+ginAVvBC4PrFd1xCyuGpC98a5iTomA7MS8wYRG70WzZtOYmReNP+yqP63gd8QMtv46LuxwNOEAPUOYbjuBUX2R2dC18iKaLtmAScl1rtDewrVVcr+L1BmbFSma4FlvQknn7WEAPQkcHiizCLCNzVcHW3DRsLJYPfEvrmZcKJfTzgpHZF83Rto4xDCUN/F0b5dRxhWfwl1RwnusH+j+V0JN8fXRI/bgFMK7Iu9omNxU7SuC4F7aWC0XjRvN8IoyJpjr4pwU/yoWBkndNvXe56gnvd3Pa/JZOqO1NtEOOYvJTZEPCp7KOHc8g7hJH4X0Kcx+5oQmB6M2raZ8P67gdhwccJw6+ej5XXe94l1jSQMRFgYlV1OyEA/nij3IcKF3saovuOi+Z8hBLVN0fIjCMfhzYnnn07outxMCLgPAns3sB8vINz7HtuYcyEhoM6P1jODcD+zTUbr1XweRkREJDX0reQiIpI6Ck4iIpI6Ck4iIpI6Ck4iIpI6Ck4iIpI6Ck4iIpI6Ck4iIpI6Ck4iIpI6Ck4iIpI6Ck4iIpI6Ck4iItIkZjbSzOaZ2fzoC3cLlTkr+pHMOWZ2V9E69d16IiKys6JfyX6F8LM7VYSf3jjb3/smf8xsKOFnY45397VmVunuDX5LvjInERFpiuHAfHdf4OFnRaaw4+/hfR6Y4O5rAYoFJtiJ33MSEZHs+IINanL32EQWX0j4Jd0ak9x9UvR/f8JPrNSoIvz0R9x+ANFvbZUTfmLp4YbWqeAkIiINigLRpHoWW4F5yYBYQfhRx+OAAcD/mdlB7v5W8onxJ4iISE6VFYwdzaoKGBibHkD4IcdkmX+4+xZgoZnNIwSrmfVVqntOIiLSFDOBoWa2j5l1AMYAUxNl/gR8FMDMehG6+RY0VKkyJxGRHLMWzpzcfauZjQceIdxPusPd55jZtcAsd58aLfu4mc0l/Hz8N919dYPt1lByEZH8+ooNafJJ/if+Wov3DSYpcxIRyTHL6N2brAYnpXsikmfNlqm0woCIFpHV4MQtdnRbN0HaiYt9Bm+t2tjWzZB2YvfeXdq6CamQ2eAkIiLFtfSAiJai4CQikmPq1hMRkdRR5iQiIqmT1cwpm2MMRUQk15Q5iYjkmLr1REQkdbLarafgJCKSY1n9hohstlpERHJNmZOISI6pW09ERFJHwUlERFJHo/VERCR1spo5aUCEiIikjjInEZEcU7eeiIikTla79RScRERyTJmTiIikTllGhxZks9UiIpJrypxERHJM3XoiIpI6GhAhIiKpk9XMSfecREQkdZQ5iYjkmLr1REQkdbLarafgJCKSY8qcREQkdbIanDQgQkREUkeZk4hIjllGcxAFJxGRHMtqt56Ck4hIjmm0noiIpE5WM6dsdkaKiEiuKXMSEckxdeuJiEjqlJmCk4iIpExW791ktd0iIpJjypxERHLM1K0nIiJpk9XuMQUnEZEc04AIERFJnawOJc9qxiciIjmm4CQikmNl1vRHMWY20szmmdl8M7u0wPKxZrbKzGZHj88Vq1PdeiIiOdbS95zMrByYAJwIVAEzzWyqu89NFP29u48vtV5lTiIiOWbN8ChiODDf3Re4ezUwBRjd1HYrOImI5FiZWZMfRfQHlsSmq6J5SWeY2fNmdq+ZDSza7tI3UURE2iMzG2dms2KPcfHFBZ7iien7gUHu/gHgL8Cviq1T95xERHKsOX7Pyd0nAZPqWVwFxDOhAcCyxPNXxyZ/CdxQbJ3KnEREcqwVRuvNBIaa2T5m1gEYA0yNFzCzfrHJUcBLxSpV5iQikmMt/SFcd99qZuOBR4By4A53n2Nm1wKz3H0q8FUzGwVsBdYAY4vVq+AkIiJN4u7TgGmJeVfG/r8MuKwxdSo4iYjkWCkfok0jBScRkRzTF7+KiEjqZPWLXxWcRERyLKvdehpKLiIiqaPMSUQkx5rjQ7htQcFJRCTHMjoeQsFJRCTPspo56Z6TiIikjjInEZEc0+ecREQkdbIZmhScRERyTZmTiIikjj6EKyIi0kyUOYmI5FhWh5IrOImI5JjpnpOIiKRNVu/dKDiJiORYVkfrZTWoiohIjilzEhHJsWzmTQpOIiK5ltVuPQWnnBh00hEc96OLKCsv44XbHmDmDb+ps3zY+Sdz7E1fYsPSNwGY/dM/8OLtD9Qu79CtM2Nf+i3z73uKJ75ya6u2XbLh7/94mlt+dDPbt29j1Cmncf6n/6vO8urqaq757hW8PO8lduu+O9+99vvs2W9P5sx9kf+58bsAuDuf/+yFHDfieACm3H0Xf77/Ptyd0aNO4+yzzm317co7BSdpM1ZWxvETLuYPJ36dt6tWcu7M23ht6gzWvLSoTrlXfv9EvYHnI9d9nqonZ7dCayWLtm3bxk233MBPbv0ZlZV9GPu58zjm6BEM3mdwbZmpD/yJbt2684ffT+XRvzzChJ//iOuvvYEhg4cw+bbfUFFRwZtvruK8sWM4+qhjWfz6Iv58/33c+ctfU1GxC1/7xniOOvIY9hq4VxtuqaRFmwyIMLP9zezbZvZjM/tR9P8BbdGWPOg7/ADeml/FuoXL2L5lKy9P+QtDRh9d8vMrP/g+OvfZg0WP/rMFWylZNvelFxkwYAD9+w9gl1124cSPncRTM6bXKfPUjOl88uRTADj+uBOY+exM3J2OHTtRURGug6urq2t//W7RooUcdOD7a5cfeuiHePKpJ1p1u9oDa4ZHW2j14GRm3wamELb5n8DM6P/fmdmlrd2ePOjavzdvL1lZO72hahXd+vfeody+Z4zg0/+ezCn3XEfXAZVhphkjfjCep775s9ZqrmTQylWr6FPZt3a6snclq1atrFNm1apVVEZlKioq6NqlK+vWvQXAi3NeYMx5Z3LO+Wdx6SXfoaKigsGDh/Cv2c+xbt1bbN68ib/9fQYrVq5ovY1qJ8zKmvxoC23RrXcBcKC7b4nPNLNbgDnA9ws9yczGAeMAJk6c2NJtzJYCfcruXmd6wf1PM+93f2Fb9RY+cOFoRv7qcu494SIO+dJpLJz2dzZUrdyhDpFaieMJdvzmgeQxFy9z0IHvZ8pv7mXhogVce/1VHPnho9hn0GA+c95YvvL1L9GpUyeG7rsf5eXlLdP+dqytgktTtUVw2g7sCSxOzO8XLSvI3ScBk2omb7nw1y3TugzaULWSbgMra6e7DujNhmVv1imzec362v9f+OX9HHPDFwHod+RB9D/mYA7+0ml06NqJsg67UL1hEzMu+0XrNF4yobKykhUrl9dOr1y1kl69eu9QZuXK5fSp7MPWrVvZsHED3bvvVqfMPoMG07FjJxYsfI0D9h/GqFNOZdQppwLws4k/obJ3n5bfmHbGMjqYvC2C09eAx83sVWBJNG8vYF9gfBu0J/OWz3yZ3YcOpPugfmxYuor9x3yMaedcU6dMl7492bh8NQBDRh3NmpfCtcFD511bW2bY+SfT97D9FZhkBwfsfyBLlixh2bKl9O5dyWN/eYTrrvpenTLHHDWCBx96gPcfdDBPTH+cwz54OGbGsmVLqazsQ0VFBW8sX8brry+iX99+AKxZu4Yee/Rg+fI3mP7kX7ntF5PbYOskjVo9OLn7w2a2HzAc6E+431QFzHT3ba3dnjzwbdv46/hbOOORW7DyMl6840FWz13IR665gOWzXmbB/U9z6FfPZPCoo/Gt29i8Zj0Pj72+rZstGVJRUcElF3+br178ZbZv385/fHIUgwcPYeJtP+eA/Ydx7NEjGHXKqVx93RWc8Z+j6N59N7579f8AMPv5f/Hr30ymoqKCsrIyvvWNy9h99z0AuPTyS1i3fh0V5RV88+Jv071797bczHzKaLeeFeonzgC/xUofjSbSFBf7DN5atbGtmyHtxO69u0AzDpJ7oc/YJp/k379icqv3DepzTiIiOaafzBARkdSxjH6/dzZbLSIiuabMSUQkz9StJyIiaaMP4YqISOronpOIiEgzUeYkIpJjGkouIiKpo3tOIiKSPgpOIiKSNln9VvJshlQREck1ZU4iIjmme04iIpI6Ck4iIpI6Wb3npOAkIpJnGc2cstlqERFJDTMbaWbzzGy+mV3aQLkzzczN7LBidSpzEhHJsZb+hggzKwcmACcCVcBMM5vq7nMT5boBXwWeKaVeZU4iIjlmVtbkRxHDgfnuvsDdq4EpwOgC5a4DbgQ2l9JuBScRkRwzypr+MBtnZrNij3GxVfQHlsSmq6J577XB7FBgoLs/UGq71a0nIiINcvdJwKR6FhfqN/TahSH1uhUY25h1KjiJiORZy38reRUwMDY9AFgWm+4GHARMj+5/9QWmmtkod59VX6UKTiIiOdYKH8KdCQw1s32ApcAY4Jyahe6+Duj1XntsOnBJQ4EJFJxERHKtpX8J1923mtl44BGgHLjD3eeY2bXALHefujP1KjiJiORYa/zYoLtPA6Yl5l1ZT9njSqlTo/VERCR1lDmJiOSYvvhVRETSpxW69VqCgpOISI619ICIlqLgJCKSY1nt1stmq0VEJNeUOYmI5FhrDCVvCQpOIiI5ltVuPQUnEZE8y2jmlM2QKiIiuabMSUQkz8qymYMoOImI5JhntFtPwUlEJM/KFJxERCRtMhqcstkZKSIiuabMSUQkzzKaOSk4iYjkmGu0noiIpI4yJxERSZ2MBqds5nsiIpJrypxERPIso5mTgpOISI65gpOIiKRORn8yI5utFhGRXFPmJCKSZ+rWExGR1FFwEhGRtNGACBERSZ+MBicNiBARkdRR5iQikmf64lcREUmdjHbrKTiJiOSYBkSIiEj6WDaDUzY7I0VEJNeUOYmI5Jm69UREJHUUnEREJG08o0PJs9lqERHJNWVOIiJ5pm49ERFJHQUnERFJHQUnERFJm6x+Q4QGRIiISOoocxIRybOMDiVXcBIRyTN9t56IiKROmTX9UYSZjTSzeWY238wuLbD8C2b2gpnNNrMZZjasaLN3cnNFREQws3JgAnAyMAw4u0Dwucvd3+/uhwA3ArcUq1fdeiIiOdYKo/WGA/PdfQGAmU0BRgNza9vgvj5WvgvgxSrNbHC62Ge0dROkHdm9d5e2boLIzmn54NQfWBKbrgKOSBYysy8DFwMdgOOLVZrZ4PTsrU+3dROknfjQ149i9pTn27oZ0k4cMuYDzVthMwQnMxsHjIvNmuTuk2oWF3jKDpmRu08AJpjZOcB/A+c3tM7MBicRESnOm2G0XhSIJtWzuAoYGJseACxroLopwM+LrVMDIkREpClmAkPNbB8z6wCMAabGC5jZ0NjkJ4FXi1WqzElEJMdaekCEu281s/HAI0A5cIe7zzGza4FZ7j4VGG9mHwO2AGsp0qUHCk4iIvnWCh/CdfdpwLTEvCtj/1/U2DoVnEREcswzevNGwUlEJMeaY0BEW8hoTBURkTxT5iQikmcZ/T0nBScRkRzzbMYmBScRkTzTL+GKiIg0E2VOIiI5ltXRegpOIiJ5puAkIiJpow/hiohI6mS1Wy+jMVVERPJMmZOISJ5ldCi5gpOISI7pQ7giIpI6Wf0QroKTiEieaUCEiIhI81DmJCIB9Q+MAAALt0lEQVSSY+rWExGR1NGACBERSZ+MZk665yQiIqmjzElEJMey+vVFCk4iIjmmAREiIpI6GhAhIiLpk9HMSQMiREQkdZQ5iYjkmAZEiIhI6uiXcEVEJH2UOYmISNpkdSh5RhM+ERHJM2VOIiI5pgERIiKSPtmMTQpOIiJ5pntOIiIizUSZk4hIjumek4iIpE9G+8cUnEREcsyUOYmISOpkNDhlNOETEZE8U+YkIpJn2UycFJxERPJM95xERCR9MnrzRsFJRCTPMpo5ZTSmiohInik4iYjkmJk1+VHCOkaa2Twzm29mlxZYfrGZzTWz583scTPbu1idCk4iInlmzfBoqHqzcmACcDIwDDjbzIYliv0LOMzdPwDcC9xYrNkKTiIieWbW9EfDhgPz3X2Bu1cDU4DR8QLu/ld3fyea/AcwoFilCk4iItIU/YElsemqaF59LgAeKlapRuuJiORYcwzWM7NxwLjYrEnuPqlmcYGneD31nAccBowotk4FJxGRPGuG6BQFokn1LK4CBsamBwDLdmyGfQy4HBjh7u8WW6eCk4hInrX8L+HOBIaa2T7AUmAMcE68gJkdCkwERrr7ylIqVXASEcmxlv4MrrtvNbPxwCNAOXCHu88xs2uBWe4+FbgJ6ArcEw1Nf93dRzVUr4KTiIg0ibtPA6Yl5l0Z+/9jja1TwUlEJM8y+vVFCk4iInmWzdik4CQikmf6yQwREUmfjAYnfUOEiIikjjInEZE8y2gKouAkIpJjuuckIiLpk83YlNWET0RE8kyZk4hInqlbT0RE0iajsUnBSUQk1zIanRScRETyrOV/MqNFaECEiIikjjKnnOi+9+4MPG4wlMGbL65gxcyldZZXfnBPeh3UB9/ubN20hcWPzqf67fd+jLKsQzkHnn8ob81fw5K/Lmjt5kvGzH71X0x+6E62+3aO/+AJnHrMaXWWz100l189PJnXVyzmojO/xocPPLJ22W8f/Q3PvfocAGeMOIOPHHRUq7a9vclor56CUy4Y7HX8YF754xy2vF3N/ucczLrX1rB5zabaIu+s3MhLd/0b37qdXh/oS/9jBrFw2rza5Xt+ZC82VK1vi9ZLxmzfvo07Hrydyz9zBT279+CySZdx2PsOY0Dle7/U3Wu3Xnzp1C9z/9+m1nnuc688y8I3FnDjF25iy7YtXHPnVRyy76F07ti5tTej/chodFK3Xg506duNzW9tpnrdu/h2Z+28Vew+pEedMhuq1uFbtwOw8Y236dCtQ+2yzpVd2KXzLqxf/Fartluyaf7S+fTp0Zc+PfpQUbELHznoKGa+PKtOmco9Ktm7796UJU6MVSurOGDQgZSXl9OxQ0f27rM3/54/uzWb3+6YNf3RFhSccmCXrh3Y8nZ17XT1hmp26bprveV7HdSHdQvX1k4POHYfqp5a1JJNlBxZs34NPXfrWTvdc7cerH17dUnP3bvvIGa/+i/erX6X9RvXM2fRHN5cV9pzpX1JVbeemf2Xu9/Z1u3IBfeCs3vs35vOfbryyj0vAND74L6sW7SWLRuqC5YXSSp8ZJV2eX3wvgfz2tL5XHH75XTv3J2hA/ajvEzXyC0qo916qQpOwDVAweBkZuOAcQATJ07kQxzYmu1KtS0bqtkl1k3XoWsHtmzcMdh022s3+g4fwCv3vIhvC6eYLv26061/d3p/oC/lHcqxMmP7lm0snbG41dov2dKzew9Wx7Kd1evWsEe3Hg08o67TR5zB6SPOAODH9/6Qfj37NXsbJUbBqTRm9nx9i4A+9T3P3ScBk2omn7316eZuWmZtXP42HffoRIfuu7JlQzV7vK83Cx+aV6dMp95d2PuEIbx631y2btpSO3/Rw6/U/t9zWCWd+3RVYJIGDdlzX5aveYOVa1fQo1sP/vbi03z1zItKeu727dvYuPkdunXuxuLli1m84nW+POTgFm5x+2YZTUzbInPqA5wErE3MN+Bvrd+cHHB4/YkFDD39QMzgzTkr2bx6E/2O3It3Vmxg3YI1DDh2EGW7lDP4k+8DoPrtal6b+lIbN1yyqLy8nM9+4gK+97/Xs337do479KMMrBzI3U9MYfCeQzhs/8OZv3Q+P5hyExs3beTZec9yz1/v5gfjb2Xrtm1cdccVAHTatTNfOf0rlJeXt/EW5VxGMyfzeu5NtNgKzW4H7nT3GQWW3eXu55RQjTInaTUf+vpRzJ5SX8Iv0rwOGfMBaMYfupjz6KtNPskf+PGhrR7hWj1zcvcLGlhWSmASEZFSZTNxSt2ACBERaUb6JVwREUkdBScREUmfjI7Wy2izRUQkz5Q5iYjkmLr1REQkfRScREQkbTIam3TPSURE0keZk4hIjllZNlMnBScRkTzLaL+egpOISI5lNDYpOImI5FpGo5MGRIiISOoocxIRyTENiBARkdTJaK+egpOISK5lNDopOImI5FhWu/U0IEJERFJHmZOISJ5lM3FScBIRyTP9ZIaIiKROVoOT7jmJiEjqKDiJiORZWTM8ijCzkWY2z8zmm9mlBZYfa2bPmdlWMzuz1GaLiEhOmVmTH0XqLwcmACcDw4CzzWxYotjrwFjgrlLbrXtOIiJ51vL3nIYD8919QVidTQFGA3NrCrj7omjZ9lIrVeYkIpJjZs3xsHFmNiv2GBdbRX9gSWy6KprXJMqcRESkQe4+CZhUz+JCqZk3dZ0KTiIiOdYKX19UBQyMTQ8AljW1UgUnEZE8a/l7TjOBoWa2D7AUGAOc09RKdc9JRCTHmuOeU0PcfSswHngEeAm4293nmNm1ZjYqtMEON7Mq4FPARDObU6zdypxERPKsFb4hwt2nAdMS866M/T+T0N1XMmVOIiKSOsqcRERyLKu/56TgJCKSYxn93lcFJxGRXMtodNI9JxERSR1lTiIiOZbV33NScBIRybOM9o8pOImI5JgyJxERSZ9sxqasJnwiIpJnypxERHLMMpo6KTiJiORZNmOTgpOISJ5lNDYpOImI5FpGR+tpQISIiKSOMicRkRzLaOKkzElERNJHmZOISI4pcxIREWkmypxERHItm6mTgpOISI6pW09ERKSZKHMSEcmxrP5khjInERFJHWVOIiJ5ls3EScFJRCTPMhqbFJxERHIto/ecFJxERHIsm6FJAyJERCSFlDmJiORZRlMnBScRkRzT55xERESaiYKTiIikjrr1RERyLKO9egpOIiL5ls3opOAkIpJjypxERCR9MhqcNCBCRERSR5mTiEiOZTRxUnASEcm1jN50UnASEcmxbIYmMHdv6zbsjEw2WkSkRM0WUzau39zk82WX7h1bPcZlNXPK6sVAmzKzce4+qa3bIe2HjjnZWRqt176Ma+sGSLujY66NmVmTH21BwUlERFJHwUlEJMfMmv4ovg4baWbzzGy+mV1aYPmuZvb7aPkzZjaoWJ0KTu2L+v6ltemYyzkzKwcmACcDw4CzzWxYotgFwFp33xe4FbihWL0KTu2IbkxLa9MxlwbWDI8GDQfmu/sCd68GpgCjE2VGA7+K/r8XOMGK3MxScBIRybFW6NbrDyyJTVdF8wqWcfetwDqgZ0OVZnUouTSSmY0EfgSUA7e5+/fbuEmSY2Z2B3AKsNLdD2rr9rRnHbt0aPJwOzMbR92Rl5NiWXGh+pOfrSqlTB3KnNqBEvuERZrTZGBkWzdCmoe7T3L3w2KPeHdtFTAwNj0AWJaooraMmVUAuwFrGlqnglP7UEqfsEizcfenKHLykdyYCQw1s33MrAMwBpiaKDMVOD/6/0zgCS/y9UQKTu1DKX3CIiKNFt1DGg88ArwE3O3uc8zsWjMbFRW7HehpZvOBi4Edhpsn6Z5T+9Do/l4RkVK5+zRgWmLelbH/NwOfakydypzah1L6hEVEUkPBqX0opU9YRCQ1FJzagfr6hNu2VZJnZvY74O/A+8ysyswuaOs2SbZk9fecREQkx5Q5iYhI6ig4iYhI6ig4iYhI6ig4iYhI6ig4iYhI6ig4iYhI6ig4iYhI6ig4iYhI6vw/OBAtK2u4+PgAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.PuRd\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Gradient Boost Stacked', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test,y_test_GBC_stack)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Random Forest Stack" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "RF_stck=RandomForestClassifier()" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "RF_stck.fit(x_train_stack,y_train)\n", + "y_test_RF_stack=RF_stck.predict(x_test_stack)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.6568627450980392\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "RF_stack_accu=metrics.accuracy_score(y_test,y_test_RF_stack)\n", + "accu_comparaison['Random Forest Stacked']=RF_stack_accu\n", + "print(RF_stack_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.68 0.78 0.72 59\n", + " 1 0.62 0.49 0.55 43\n", + "\n", + " micro avg 0.66 0.66 0.66 102\n", + " macro avg 0.65 0.63 0.63 102\n", + "weighted avg 0.65 0.66 0.65 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(y_test,y_test_RF_stack))" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.PuRd\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Random Forest Stacked', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test,y_test_RF_stack)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparaison Résultats" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Random Forest': 0.7058823529411765,\n", + " 'Extra Tree': 0.6470588235294118,\n", + " 'Ada Boost': 0.6176470588235294,\n", + " 'Gradient Boost': 0.6470588235294118,\n", + " 'Gradient Boosting Stacked': 0.7254901960784313,\n", + " 'Random Forest Stacked': 0.6568627450980392}" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_comparaison" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "accu_comparaison_df=pd.DataFrame(accu_comparaison,index=[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([4, 1, 0, 2, 5, 3], dtype=int64)" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "index_asc=accu_comparaison_df.values.ravel().argsort().argsort()\n", + "index_asc" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(7,6))\n", + "plt.title('Comparing performances', y=1.05, size=20)\n", + "sns.barplot(accu_comparaison_df.values.ravel(),\n", + " accu_comparaison_df.columns,\n", + " palette=np.array((sns.color_palette(\"Reds\", n_colors=len(index_asc))))[list(index_asc)])" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Random ForestExtra TreeAda BoostGradient BoostGradient Boosting StackedRandom Forest Stacked
00.7058820.6470590.6176470.6470590.725490.656863
\n", + "
" + ], + "text/plain": [ + " Random Forest Extra Tree Ada Boost Gradient Boost \\\n", + "0 0.705882 0.647059 0.617647 0.647059 \n", + "\n", + " Gradient Boosting Stacked Random Forest Stacked \n", + "0 0.72549 0.656863 " + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_comparaison_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -1915,11 +3605,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" - - - }, "varInspector": { "cols": { diff --git a/notebooks/Modeling - Stacking - Satck Best Models .ipynb b/notebooks/Modeling - Stacking - Satck Best Models .ipynb new file mode 100644 index 0000000..3a1f897 --- /dev/null +++ b/notebooks/Modeling - Stacking - Satck Best Models .ipynb @@ -0,0 +1,2494 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
run previous cell, wait for 2 seconds
\n", + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from jyquickhelper import add_notebook_menu\n", + "add_notebook_menu()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Let's try to do our best with a few ML model" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/vnd.plotly.v1+html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Using TensorFlow backend.\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import sklearn\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn import metrics\n", + "from sklearn.metrics import confusion_matrix\n", + "\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "import plotly.offline as py\n", + "py.init_notebook_mode(connected=True)\n", + "import plotly.graph_objs as go\n", + "import plotly.tools as tls\n", + "\n", + "import tensorflow as tf\n", + "import keras\n", + "from keras.models import Sequential\n", + "from keras.layers import Dense, Dropout, Activation\n", + "from keras.optimizers import SGD\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.20.2'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sklearn.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import (RandomForestClassifier, AdaBoostClassifier,\n", + " GradientBoostingClassifier, ExtraTreesClassifier)\n", + "\n", + "from sklearn.model_selection import KFold" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data Preparation" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from transplant.data.learningset import Learningset\n", + "#from transplant.config import *\n", + "learningset = Learningset()\n", + "\n", + "#X_train, X_test, y_train, y_test, X_col = learningset.get_static_filled(to_train=True)\n", + "#X_train, X_test, y_train, y_test, X_col = learningset.get_data_merged_dynamic_flatten_full(\"cls\", False)\n", + "#X_train, X_test, y_train, y_test, X_col = armand_funct()\n", + "\n", + "train, test = learningset.get_data_merged_dynamic_flatten_full(full_df=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Choix des features : " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "## RFE avec 4 modèles d'ensemble\n", + "choix_features_1=['PEEPtotal_std',\n", + " 'Temp_mean',\n", + " 'ETCO2_mean',\n", + " 'FiO2_std',\n", + " 'LAS',\n", + " 'Poids',\n", + " 'SpO2_mean',\n", + " 'BIS SR_std']\n", + "\n", + "## Variables Antoine avec perspective résultats RFE\n", + "choix_features_4=['FiO2_std','FiO2_mean',\n", + " 'SpO2_mean','SpO2_std',\n", + " 'PEEPtotal_mean',\n", + " 'BIS SR_std',\n", + " 'PAPsys_max','PAPsys_std',\n", + " 'PASs_mean','PASm_max',\n", + " 'LAS',\n", + " 'FC_std'\n", + " ]\n", + "\n", + "choix_features_5=set(choix_features_4 + choix_features_1)\n", + "\n", + "\n", + "choix_features_6=['B.I.S_std',\n", + " 'ETCO2_max',\n", + " 'ETCO2_mean',\n", + " 'FC_mean',\n", + " 'FR_max',\n", + " 'FR_mean',\n", + " 'FiO2_mean',\n", + " 'FiO2_std',\n", + " 'LAS',\n", + " 'PAPmoy_mean',\n", + " 'PAPsys_max',\n", + " 'PASd_mean',\n", + " 'PASs_mean',\n", + " 'PEEPtotal_mean',\n", + " 'PEEPtotal_std',\n", + " 'PF_donor',\n", + " 'Poids',\n", + " 'SpO2_std',\n", + " 'Temp_mean',\n", + " 'VT_max',\n", + " 'VT_std',\n", + " 'body_mass_index',\n", + " 'declampage_cote2_done_std',\n", + " 'oto_score']\n", + "\n", + "choix_features_7=set(choix_features_4 + choix_features_6)\n", + "\n", + "choix_features_8=['BMI_donor', 'LAS', 'PF_donor', 'Poids', 'Poids_donor', 'Taille', 'age',\n", + " 'body_mass_index', 'oto_score', 'start_operation_month',\n", + " 'start_operation_day', 'ends_operation_day', 'ETCO2_mean', 'FC_mean',\n", + " 'FR_mean', 'FiO2_mean', 'PAPdia_mean', 'PAPmoy_mean', 'PASd_mean',\n", + " 'PASs_mean', 'PEEPtotal_mean', 'PNIm_mean', 'PNIs_mean', 'Pmax_mean',\n", + " 'Pmean_mean', 'SpO2_mean', 'Temp_mean', 'VT_mean',\n", + " 'declampage_cote2_done_mean', 'B.I.S_std', 'ETCO2_std', 'FC_std',\n", + " 'FiO2_std', 'PAPmoy_std', 'PASd_std', 'PASm_std', 'PASs_std',\n", + " 'PEEPtotal_std', 'PNIs_std', 'Pmax_std', 'Pmean_std', 'SpO2_std',\n", + " 'SvO2 (m)_std', 'Temp_std', 'VT_std', 'declampage_cote2_done_std',\n", + " 'ETCO2_max', 'FR_max', 'PAPmoy_max', 'PAPsys_max', 'PASd_max',\n", + " 'PASm_max', 'PASs_max', 'PEEPtotal_max', 'PNId_max', 'PNIm_max',\n", + " 'Pmax_max', 'Pmean_max', 'Temp_max', 'VT_max']\n", + "\n", + "choix_features_9=set(choix_features_4 + choix_features_8)\n", + "\n", + "choix_features_10=['Poids', 'ends_operation_day', 'ETCO2_mean', 'PASs_mean',\n", + " 'PEEPtotal_mean', 'Pmax_mean', 'Pmean_mean', 'SpO2_mean', 'Temp_mean',\n", + " 'VT_mean', 'declampage_cote2_done_mean', 'PASd_std', 'VT_std',\n", + " 'PASm_max', 'Temp_max']\n", + "\n", + "choix_features_11=set(choix_features_4 + choix_features_10)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "Choix_Features=choix_features_4" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "num_feat=len(Choix_Features)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "X_train=train[Choix_Features].values \n", + "X_test=test[Choix_Features].values\n", + "y_train=train['target'].values\n", + "y_test=test['target'].values" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "X_col=train[Choix_Features].columns" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((228, 12), (102, 12), (228,), (102,))" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape, y_train.shape, y_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We need to change the y format in order to make our models work" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "y_train, y_test = y_train.reshape(-1, 1).ravel() , y_test.reshape(-1, 1).ravel()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((228, 12), (102, 12), (228,), (102,))" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, X_test.shape, y_train.shape, y_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Models d'Ensembles" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "cols = X_col # On a besoin des colonnes pour plus tard\n", + "# On observe le grand X et pas le petit x ...\n", + "\n", + "ntrain = X_train.shape[0]\n", + "\n", + "ntest = X_test.shape[0]\n", + "\n", + "seed = 5 # Pour reproduire les résultats" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(228, 102)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ntrain, ntest" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "class SklearnHelper(object):\n", + " def __init__(self, clf, seed=0, params=None):\n", + " params['random_state'] = seed\n", + " self.clf = clf(**params)\n", + "\n", + " def train(self, x_train, y_train):\n", + " self.clf.fit(x_train, y_train)\n", + "\n", + " def predict(self, x):\n", + " return self.clf.predict(x)\n", + "\n", + " def fit(self, x, y):\n", + " return self.clf.fit(x, y)\n", + "\n", + " def feature_importances(self, x, y):\n", + " return self.clf.fit(x, y).feature_importances_" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "NFOLDS = 5\n", + "kf = KFold(n_splits=NFOLDS, random_state=seed)\n", + "\n", + "\n", + "def get_oof(clf, x_train, y_train, x_test):\n", + " oof_train = np.zeros((ntrain,))\n", + " oof_test = np.zeros((ntest,))\n", + " oof_test_skf = np.empty((NFOLDS, ntest))\n", + "\n", + " for i, (train_index, test_index) in enumerate(kf.split(x_train)):\n", + " x_tr = x_train[train_index]\n", + " y_tr = y_train[train_index]\n", + " x_te = x_train[test_index]\n", + "\n", + " clf.train(x_tr, y_tr)\n", + "\n", + " oof_train[test_index] = clf.predict(x_te)\n", + " oof_test_skf[i, :] = clf.predict(x_test)\n", + "\n", + " oof_test[:] = oof_test_skf.mean(axis=0)\n", + " return oof_train.reshape(-1, 1), oof_test.reshape(-1, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "rf_params = {\n", + " 'n_jobs': -1,\n", + " 'n_estimators': 500,\n", + " #'warm_start': True,\n", + " # 'max_features': 0.2,\n", + " 'max_depth': 6,\n", + " 'min_samples_leaf': 2,\n", + " 'max_features': 'sqrt',\n", + " 'verbose': 0\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "et_params = {\n", + " 'n_jobs': -1,\n", + " 'n_estimators': 500,\n", + " # 'max_features': 0.5,\n", + " 'max_depth': 8,\n", + " 'min_samples_leaf': 2,\n", + " 'verbose': 0\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "ada_params = {\n", + " 'n_estimators': 500,\n", + " 'learning_rate': 0.75\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "gb_params = {\n", + " 'n_estimators': 500,\n", + " # 'max_features': 0.2,\n", + " 'max_depth': 5,\n", + " 'min_samples_leaf': 2,\n", + " 'verbose': 0\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "rf = SklearnHelper(clf=RandomForestClassifier, seed=seed, params=rf_params)\n", + "et = SklearnHelper(clf=ExtraTreesClassifier, seed=seed, params=et_params)\n", + "ada = SklearnHelper(clf=AdaBoostClassifier, seed=seed, params=ada_params)\n", + "gb = SklearnHelper(clf=GradientBoostingClassifier,\n", + " seed=seed, params=gb_params)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((228, 12), (228,), (102, 12))" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, y_train.shape, X_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ensemble Learning zone" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I am done learning :D\n", + "Wall time: 27 s\n" + ] + } + ], + "source": [ + "%%time\n", + "np.random.seed(seed)\n", + "et_oof_train, et_oof_test = get_oof(\n", + " et, X_train, y_train, X_test) # Extra Trees\n", + "rf_oof_train, rf_oof_test = get_oof(\n", + " rf, X_train, y_train, X_test) # Random Forest\n", + "ada_oof_train, ada_oof_test = get_oof(\n", + " ada, X_train, y_train, X_test) # AdaBoost\n", + "gb_oof_train, gb_oof_test = get_oof(\n", + " gb, X_train, y_train, X_test) # Gradient Boost\n", + "\n", + "print(\"I am done learning :D\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "rf_feature = rf.feature_importances(X_train, y_train)\n", + "et_feature = et.feature_importances(X_train, y_train)\n", + "ada_feature = ada.feature_importances(X_train, y_train)\n", + "gb_feature = gb.feature_importances(X_train, y_train)\n", + "\n", + "# On met plutot dans un dataFrame\n", + "feature_dataframe = pd.DataFrame({'features': cols,\n", + " 'Random Forest Importance des features': rf_feature,\n", + " 'Extra Trees Importance des features': et_feature,\n", + " 'AdaBoost Importance des features': ada_feature,\n", + " 'Gradient Boost Importance des features': gb_feature\n", + " })" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "rf_pred = rf.predict(X_test)\n", + "et_pred = et.predict(X_test)\n", + "ada_pred = ada.predict(X_test)\n", + "gb_pred = gb.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "accu_comparaison={} ## To compare performances at the end\n", + "accu_comparaison_train={}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Résultats" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### For the ones who forgot : \n", + "\n", + "##### Compute the precision\n", + "\n", + "The precision is the ratio tp / (tp + fp) where tp is the number of true positives and fp the number of false positives. The precision is intuitively the ability of the classifier not to label as positive a sample that is negative.\n", + "\n", + "The best value is 1 and the worst value is 0.\n", + "\n", + "##### Compute the recall\n", + "\n", + "The recall is the ratio tp / (tp + fn) where tp is the number of true positives and fn the number of false negatives. The recall is intuitively the ability of the classifier to find all the positive samples.\n", + "\n", + "The best value is 1 and the worst value is 0.\n", + "\n", + "##### F1 score\n", + "The F1 score can be interpreted as a weighted average of the precision and recall, where an F1 score reaches its best value at 1 and worst score at 0. The relative contribution of precision and recall to the F1 score are equal. The formula for the F1 score is:\n", + "\n", + "F1 = 2 (precision recall) / (precision + recall)\n", + "\n", + "The support is the number of occurrences of each class in y_true" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Random Forest" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.6764705882352942\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "rf_accu=metrics.accuracy_score(y_test,rf_pred)\n", + "accu_comparaison['Random Forest']=rf_accu\n", + "accu_comparaison_train['Random Forest']=metrics.accuracy_score(y_train,rf_oof_train)\n", + "print(rf_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Random Forest': 0.6764705882352942}" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_comparaison" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.75 0.71 0.73 62\n", + " 1 0.58 0.62 0.60 40\n", + "\n", + " micro avg 0.68 0.68 0.68 102\n", + " macro avg 0.66 0.67 0.66 102\n", + "weighted avg 0.68 0.68 0.68 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(rf_pred, y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.Purples\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Random Forest', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test, rf_pred)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Extra Tree" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.6666666666666666\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "et_accu=metrics.accuracy_score(y_test,et_pred)\n", + "accu_comparaison['Extra Tree']=et_accu\n", + "accu_comparaison_train['Extra Tree']=metrics.accuracy_score(y_train,et_oof_train)\n", + "print(et_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.85 0.67 0.75 75\n", + " 1 0.42 0.67 0.51 27\n", + "\n", + " micro avg 0.67 0.67 0.67 102\n", + " macro avg 0.63 0.67 0.63 102\n", + "weighted avg 0.73 0.67 0.68 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(et_pred, y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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GDbc8F1Lywwbtglf//rZ9O27OnfddSPXX38xRxzxLQBWW60vxx33455qviqmuXkJF17wE0486SwGDBjECSd8kdGjd2H48JFLywwcOJgvfel4rrvuimUuO3v2g8ye/SA/POsCAE45+SvMnHk/22yzQ3dehVVKVUPaoa1u9uSTjzBw4IYMGLAhffqsxg47fIgHH/zrMmVGjXoPffuuDsDGG2/Byy8v6ImmaiUwZ84shmw4jCFDNqJPn9X4wAf2YNq0u5YpM3jwUDbe+N30qnsRiwgWL1pEU1MTixcvZsmSJvr126A7m7/KiSi+9AR7JN3Pw812AAAHsklEQVTslVcWsP76A5eur7/+AJ544uFWy99zz81stdX7lq43NS3i7LOPpVev3uy558fZbrudu7S9qrYXX5zPgAGDlq4PGDCIOY/M7NBlN998G7bZZnuOHn8QKcG++36M4cM37qqmqsLecZBExOdSShd1ZmNWBSktv6217uz06VN56qk5TJjwvaXbTj75V/TrN4AFC57j5z8/maFDN2bgwKFd1VxVXKPHW0fftj733FyefvpJzvvFVQD89+nHMXPmA2y99Xs7sYWqVdGRrUJDW99tbUdEjI+I6RExfeLEiQUOsfJZf/0BvPzyC0vXX355Aeutt/xwwcMP388tt1zFUUedSJ8+qy3d3q/fAAAGDNiQzTbblqeffrTrG63KGjBgEAsWzF+6vmDBfPr3H9jGJd7217/eyahRW7PGGmuxxhprsf0OO/FIB3szemciovDSE9oMkoj4eyvLP4AhrV0upTQxpTQ6pTR6/Pjxnd7oKhsxYhTz5z/LggXzaGpazH333cG2245ZpszcuY9y1VXncdRRJ7Luuusv3f6vf71OU9NiAF5//VUee+whhgwZ0a3tV7W8+91b8Nyzc3n++WdpalrMn/98G6NHf6BDlx04cDAzH7qfJUuaaGpq4qGZDzB8mENbXWllnSMZAuwDvFS3PYA/d0mLVnK9e/fmoIPGM3HiqTQ3NzNmzJ5suOG7uPHGSxkxYjO23XYnrrvuIt566w0uueRM4O3TfOfNe4qrrjqPiCClxB57fHyZs72ker179+Hznz+G753xTZqbm9lt9/0YMWITrrziQjZ99xaMHr0Lc+bM4kdnncTCha/zt7/9hauuvJgfnX0xO++8Kw8+eB/HHfd5gmD77cfwvg6GkN6Zqp61FanhIGq+M+IC4KKU0p0N9l2WUjqsA8dIN9wwq0ATpY4bO3ZL7n/g2Z5uhlYR2793KHTiN5s88sgLrb8gd9CoUQO7PY3a7JGklI5qY19HQkSStJLz9F9JKomqDm0ZJJJUEhXNET/ZLkkqxiCRJBXi0JYklURVh7YMEkkqiajobyQaJJJUFtXMEedIJEnF2CORpJJwjkSSVIhzJJKkYqqZIwaJJJVFRXPEyXZJUjH2SCSpJPzSRklSMdXMEYNEksqiojlikEhSWVR1aMvJdklSIQaJJKkQh7YkqSQqOrJlkEhSWThHIklaJRkkkrQKiYh9I2J2RMyJiOMb7P9wRNwbEU0RcXBH6jRIJKkkIoovbdcfvYFzgf2ArYFDI2LrumJPAkcCl3W03c6RSFJJdMPXyI8B5qSUHgWIiMuBA4GZLQVSSo/n+5o7Wqk9Ekkqiyi+RMT4iJhes4yvOcIw4Kma9bn5tkLskUjSSiSlNBGY2MruRl2eVPSYBokklUQ3nP07FxhRsz4ceKZopQ5tSVJJdMLIVnumAaMiYpOI6AscAkwq2m6DRJLKootP20opNQETgCnAQ8CVKaUZEXFaRIzLmhA7RsRc4BPA+RExo71mO7QlSSXRHZ9rTylNBibXbTul5v9pZENeHWaPRJJUiD0SSSqJin7VlkEiSaVR0SQxSCSpJKoZI86RSJIKskciSSVR0ZEtg0SSyqOaSWKQSFJJVLVH4hyJJKkQg0SSVIhDW5JUElUd2jJIJKk0qpkkBokklURVeyTOkUiSCjFIJEmFOLQlSWVR0aEtg0SSSiIqmiQObUmSCjFIJEmFOLQlSSXh6b+SpFWSPRJJKouKdkkMEkkqiWrGiENbkqSC7JFIUllUtEtikEhSSVQ0RwwSSSqNik62O0ciSSrEIJEkFeLQliSVRDUHtgwSSSqPiiaJQSJJJeHXyEuSVkn2SCSpLKrZITFIJKksKpojBokklUZFk8QgkaTSqGaSONkuSSrEHokklUQ1+yMGiSSVR0WTxCCRpJKoaI4QKaWuPkaXH0CSelCnvf4vXrSk8Ovlan17d3sedUePpKoh26MiYnxKaWJPt0OrDh9zeqc8a6u8xvd0A7TK8TGnd8Q5EkkqiYr+QKI9EklalUTEvhExOyLmRMTxDfavHhFX5PvviYiR7dVpkJSXY9Xqbj7mVnIR0Rs4F9gP2Bo4NCK2rit2FPBSSmkz4BzgB+3W2w1nbUmSOmBJU3PhF+TefXq1OkAWEe8HTk0p7ZOvnwCQUvqfmjJT8jJ/iYg+wHPAoNRGWNgjkaRVxzDgqZr1ufm2hmVSSk3AK8CAtio1SEqovTFMqbNExIUR8XxEPNjTbVHWmyi6RMT4iJhes9Sejdeot1Lf0+hImWUYJCXTwTFMqbNcDOzb041Q50kpTUwpja5Zaue+5gIjataHA8/UVbG0TD601Q94sa1jGiTlMwaYk1J6NKW0CLgcOLCH26SVVErpT7TzIqGVyjRgVERsEhF9gUOASXVlJgGfzf8/GLitrfkRMEjKqCNjmJK0wvI5jwnAFOAh4MqU0oyIOC0ixuXFLgAGRMQc4Fig3eF1P5BYPis8PilJHZVSmgxMrtt2Ss3/bwKfWJE67ZGUT0fGMCWpNAyS8unIGKYklYZBUjKtjWH2bKu0soqI3wF/AbaIiLkRcVRPt0nV4yfbJUmF2CORJBVikEiSCjFIJEmFGCSSpEIMEklSIQaJJKkQg0SSVIhBIkkq5P8Dih46YCIBpYcAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.Purples\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Extra Tree', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test, et_pred)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ada Boost" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.5686274509803921\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "ada_accu=metrics.accuracy_score(y_test,ada_pred)\n", + "accu_comparaison['Ada Boost']=ada_accu\n", + "accu_comparaison_train['Ada Boost']=metrics.accuracy_score(y_train,ada_oof_train)\n", + "print(ada_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.59 0.64 0.61 55\n", + " 1 0.53 0.49 0.51 47\n", + "\n", + " micro avg 0.57 0.57 0.57 102\n", + " macro avg 0.56 0.56 0.56 102\n", + "weighted avg 0.57 0.57 0.57 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(ada_pred, y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAF5CAYAAAC1Aay7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XmYHVWZ+PHvS2cBJZCQBA0JYQ1LxAgIYdEBRBBwIS6AAR1F0cwwZlAcF5hRCKDjiCgzPwWHqMg4DkYE1KiRiCAgDGQSEYEAgRACiWHNAmHJ2uf3R1U3NzfdfTupXqrS38/z1NNdVeeeOnert95zzr03UkpIkrS5turtBkiSqs1AIkkqxEAiSSrEQCJJKsRAIkkqxEAiSSqktIEkIqZERIqIR9rZPz/fP2UT6x2/KbeJiKPy4+y3KcfpKhHx7vz4u/bG8TdXRIyIiBkR8Xze/qO6qN4efT5qjteyLI+I2yPi7V14jIURcUlX1dfBcS7I78NFm3CbSyJiYRccu/5xXBsRCyLi4oh4bdH6N7NNp0TE6b1x7C1NaQNJbhWwW0QcVLsxIg4Gdsn3b6rxwPmbUP5u4DDg0c04Vl/2L8CbgFPJHr+7u6je3no+PpQf98Nkr7sbImL/Hm5DURPzv6f2YhtaHsejgf8A/gG4tJfacgpwei8de4vSr7cb0MBLZCeOicCcmu0TgZuBN3fXgSMigIEppReAu7rrOFuwfYBZKaUZXVlpLz4f96aU7geIiFuBRcAngU+1VTgitk4pbc6FTreIiDcDewE3AW+PiINTSrN7oSmtjyPwx4gYSXYyn9QLbVEXKXtGAjANOCU/sbec4E/Jt28gIg6LiOkRsSQiXoqIeyLiQzX7Twe+nf/fkmLfkq9PiYjnIuKtETGb7Krz5La6UiKiKSLOjYiHI2J1RCyOiKvq2jIhIuZExKqIeCpP4ft3dEcjMyUinomIlRHxI2C7Nsptnde3KD/+XyLinY0eyIjYJr/d4/ntHouIr9XdrykR8US+f25EnFZXx1X5/To2Iu7NH+fbI+INNWUS8HbgffljtzDffktEXFtXX1uP77mRdV2uioinI+KGiHh9B+VfExH/L3+cV0XE7Ih4R91xbomIayPitLzuFyLitxExqtHjVi+l9CLwMLBrXvfpeZvG58d5Bfh8vm9YRPxXRCyNiJfz/Qe1VW9EfDm/Dy9GxP9ExPY1+14bEd+JiHl5PY9FxGURsdHrox2nAquBj5G9tjfKSiJicERcnT+nT0bEv7RRZkREXBlZt9Qr+XvgKxExoJPtqLcS2OB90ZnnMy83OSIeyV+r8yPi7Lr9oyLimvz99EpEPBp5t17+fv0AcGS8ei6Yspn3QSmlUi7AFOA5YDDZG+Bv8u1HkL0RBuf7p9TcZiLwReCdZKnzl4E1wKn5/uHAJUACDs2XsTXHe5msy+TvgLcBewNH5eX3qznO9/N6vwIcC3wQ+FnN/lOA9cDlwDuAM4EVwCUN7vOngea83uOAK4DF+fF3rSn3a+CZvN535O1ZB+zfQd0B/I7sjfsFshP9R4Dv1ZT5KrAW+FJ+/Kn5sU+tKXNVfux78vt9ItlJdS4QeZlDyTLJm/P/D8i33wJcW9euDR7fvE0rybo8jgTeD3wH2KOt8vm2/8lv84/ACcD1+f14a02ZW8iyiP8FJuSvlaeBGQ2ek7aO1wQsAX6Qr5+el3kU+Fz+2mm5z7cDT5GdwN8D3Ja3dc+a+hYCfwVuzctMyl8vta+p4cB3gZPyx+XDwIPAzE68lyK/79fn69flx9uqrtzPgeVkmdZ78vYsBhbWlHkj2XvovXk7PpnXdUUnH8c3kfWEbAO8Ja//yrqynXk+P5nX902y98DXyN4759SUuRm4M2/rUcDHgYvzfXvk++/m1XPBqN4+71V16fUGdPDCmwI8l///S+Cy/P/LgV/k/28QSOpuH/kL9grg5prtk4HUzvESMKFue8sboOVEt0++flYHx30c+GHd9o8DrwBD27ldy8npu3Xbb6QmkJAFgAQcWVfuNmpOPG3Uf1x+uxPb2b8DWVfi+XXbZwDzatavIgtaY2q2vTeve5+abbewcdBoa1v94/sd4LoO7kd9+X3zE8hHa8psBdxPzUk2P/bzwJCabZ/J69qmE8drOQHuSNa3n4B352VOz9c/XXfb4+ufK+C1wLPUnHjJAskyYNuabR/K79e+7bSrH9mJOAGjG7yXjsjLnZKvn5yvH1VT5g35tg/WbNs2b9fCDuruB5xGdnE3oBOPY/3yR2BQTbmGz2e+/lc2fo9dnj/HW+frLwLv6aBN1wK3dPTYuXRuqULXFmTdWCdFxECyK7KNurUAImJInhI/TnYFs5bs6m6vTh4nAb9tUOZt+d+r2tm/FzAauCYi+rUsZFc/WwPtzTbaGRhBFjRrXV+3fgzZFe4ddfXfBLTZZZI7GliWUprezv79gNcAP6vb/lNgr4jYsWbbwpRS7Wy6B/K/m9xN1IZ7gHdGNsNofEQ0NSh/MFnwbm13Sqk5X39rXdnZKaXlNest7R7ZyXatJctizgC+mFL6dV2Z39StjweeTSndWtO2l8gyyvq23ZiyLrMW15Pdr4NbNkTE30bEnyPixbwtt+e7Gr2+TyW7SGhp76/Jrvhru7dajtP6+sjbc2NtRZH5TEQ8kHfhrSXLIAaSve4bmZgf65D8+MOAX0REy7moM8/nKGAn2n6tbkeWNUH2nH0t73rsTNu0maoSSKaTXR19leyK7lftlLuKrLvlG2Tp7sHAlWQn8M5YnlJa06DMUOCllA36tmVY/ncGrwaztcBj+fad27nd6/O/z9Rtr18flpddW7dM6aDulnY/2cH+Efnfp+u2t6wPqdm2oq5My2PW2ce5I1cC/0zWPTgLeDoiLuogoIwAXkwpvVy3/WngNfnFR4si7W45Ae4JDE4pXdxGmfrHbkQb21rK7VC3bYPnOaX0CtkV9QiAiHgf8COyrpqTybpi3teo/flFxklk3ZoDImIw2Ul/JtnFWcv4xOuBlflx220XWRb3TbJusAlkwbJlwkFnHse5KaU5KaX/SylNI+uiO5qsOxo693w2eq22PLYfJJukcynweGRjpl02bVuvKvusLSC7iouIXwNnk3XfvFRfJiK2Bt4FTE4p/WfN9k0Jlp35Tv2lwGsjYrt2gsmy/O8k4M9t7H+sjW2QZRmQdZ3Uql9fRpbWv7cTba21lFffgG1pCTI75mVbvK7muEWtAuoHZTc4oeZXn5cCl0bEzmRdPF8lu8//ycaeBLaNiNfUnXxeB7ycUlrdBe2G7AR4f4My9a+fJ9n4+YOsbfWP5wblImIbsounluflZLJZcP9QU+bIRo0mG8MbRhZ03tfG/neQZVJPAYMiYpu6YFLf/pPJ3oOtA/ERMbYT7WhPS1a4L1mm1PD5jIja1yp1ZSB/bFNKfwVOz88B48kutqZHxOiU0lLUZaqSkUA20Pgr2j6ZQHaV1UQ2MA9ARAwiGwyutSbft7lXzzfnfz/Szv55ZCe9XfMrr/qlvRfwIrI384S67e+vW7+J7Orxxbbq76DdNwE7RMS729l/P9lkg5Prtp8CPJxSeraDujtrMdkYU61j2yucUlqUUvo3YD7Q3slqNtkJ/KSWDRER+frt7dymp8wCdoyII1o2RMRryC546tt2bERsW7P+frL71fKcbkPNazv3IRo7lWwA/W1tLM/wavdWy1Tg1vdL3p7652dz29Gelq7eRTXtaPR8LiYbT2zrtfoCcF/txpRSc0rpLuACsu7bXfJda+iaLLrPq0RGApBSuoVswLS9/c9HNm33vIh4gXwGB9ngW+0UyYfyv5+OiJuBF1JK8zahHfMiYirwzXzc4DayGWQnpZQmppSaI+KfgP/Op2b+luwFuztZFnFSG2k7KaX1EXExcElEPEc2CPkBsiu1WjeSdUvcGBFfJ5sttR2wP9kg47ntNL3ldldHxIVks1VGAEeklP4upbQsIv4d+FJErCM7gb2frMuhqz7A9nPgjIi4lOwq+G1kkwBaRcQVZFeUd5E9d28DxpDNxttISunBiPgJ8J388Z5PNqNnH7JZbb0mpTQzIu4AfhoR55Blep8jOxl/o674K8BvIuIbZM/LN4Cfp5RarthvBC7Lp+TOInteOuymyS+W3gv8T/7+qd//U+Bj+dX/3IiYDnw3fxyfJJvCXP9avRE4KyJmkc1S+xBZd19njcsD1FZk74kvA0+Qj0125vnM32NTgCsiYmnepiPz/f+cUloV2dTpmWTdgQ+TXWj+E9nF2oN5Wx4CJkTEe8mDU0ppySbcF7Xo7dH+9hZqZm11UKZ++u+eZBnDS2Qvzi/U10M2kHcx2RVNM/msjfaOR/vTP/8ZWEAWJBaz8QySE8iCwUtkV0n3kE3r7dfB/QngIrJZPSvJBjFPY+PpvwPJrq7m58d/CrgBeFeDx2sbsqmbi8muKh8Dvlp3vy4guzpcQ9bt8KG6Oq4C5tRt25WaWUz5tluom6GVbz83r38l8GOyK+DaWVinA3eQBZOXgXuBMxo8H68h+3zQ0/n9mgMcV3fcjdrTVl2def7bKHN6XmbbNvYNJzuZLScLFrcCB9eVWUg27jAlvw8vAT8hG4upfW4uIcsiXiCbwntI/eNeV+9J+f7D29k/npqZWmTjYNPy4z8NnJcfc2HNbbYFfpg/P8vIpp6/exMex5almex1+BPyqd2b8nzm5Sbz6ntgAXB23Xvke2Q9BC+TnSt+DbyxpswwsoubZXmbprTXfpeOl5Z5/5IkbZYqjZFIkkrIQCJJKsRAIkkqxEAiSSrEQCJJKsRAIkkqxEAiSSrEQCJJKsRAIkkqxEAiSSrEQCJJfUhEHB8R8/LfuT+nnTKn5D9eNjcirm5Yp9+1JUl9Q/4DcQ+T/TzAYrKv7T81vfot00TEGOAa4OiU0vKI2DGlVP8DZxswI5GkvmM8MD+ltCBlvwY7jY1/A+mTwGUp/1nqRkEEKvR7JJK0pTsqzivcRXQrF/0d2S+0tpiaUpqa/z+SV39EDLKs5JC6KvYCyH9Lp4ns6/Vv6OiYBhJJ2oLkQWNqO7ujrZvUrfcj+zG5o4BRwB8jYr+U0or2jmkgkaSSyH5VuFstBnauWR9F9iN/9WXuSimtBR6LiHlkgWU27XCMRJL6jtnAmIjYLSIGABOB6XVlfkH2E9dExDCyrq4FHVVqIJGksoguWDqQUlpH9hPFM8l+u/6alNLciLgwIk7Mi80ElkbEA8AfgM+nlJZ22Gyn/0pSORzdf0rhE/LNa6d0e/9YPcdIJKkkun+IpHv0RCAx5ZG0Jeu6039FI0mPZCTfuvjWnjiMxGe/cCQzZz7c281QH3HccXv1dhNKwa4tSSqJiiYkBhJJKovYqpqRxEAiSWVR0ZTEQCJJJVHROOIHEiVJxZiRSFJJ9MB3bXULA4kklUU144iBRJLKoqqzthwjkSQVYkYiSSVR0SESA4kklUZFI4mBRJJKoqJxxEAiSWXhYLskqU8yI5Gksqho35aBRJJKoqJxxEAiSWXhV6RIkoqpZhxxsF2SVIwZiSSVRFWn/xpIJKksqhlHDCSSVBZVHWx3jESSVIgZiSSVRFUzEgOJJJVFRfuIDCSSVBJmJJKkQioaR6qaSEmSysKMRJLKoqIpiYFEkkqionHEQCJJZeFXpEiSiqloSuJguySpEDMSSSqJiiYkBhJJKgs/kChJKqaigw0VbbYkqSzMSCSpJOzakiQVYiCRJBUSFR1sMJBIUllUNCOpaPyTJJWFgUSSSiKi+NL4GHF8RMyLiPkRcU4b+0+PiGcj4p58+USjOu3akqSS6O4vbYyIJuAy4FhgMTA7IqanlB6oK/rTlNLkztZrRiJJZdH9Kcl4YH5KaUFKaQ0wDZhQtNkGEkkqiR7o2hoJLKpZX5xvq/eBiLg3Iq6NiJ0bVWogkaQtSERMiog5Ncuk2t1t3CTVrf8K2DWlNA74PfBfjY7pGIkklURXjJGklKYCU9vZvRiozTBGAUvqbr+0ZvV7wNcbHdOMRJLKovv7tmYDYyJit4gYAEwEpm/YhBhRs3oi8GCjSs1IJKkkuvvziCmldRExGZgJNAFXppTmRsSFwJyU0nTgrIg4EVgHLANOb1SvgUSS+pCU0gxgRt2282r+Pxc4d1PqNJBIUkl09+dIuouBRJLKoppxxEAiSWXh18hLkgqpateW038lSYWYkUhSSVS0Z8tAIkmlUdFIYiCRpJJwjESS1CeZkUhSSVS0Z8tAIkmlUdFIYiCRpJLwA4mSpEKioqPWFW22JKkszEgkqSzs2pIkFVHROGIgkaSyqOoHEg0kklQWFU1JHGyXJBViRiJJJVHRhMRAIkll4RiJOm3X3YZw1Nv3ZKsI7rv3SWbPWrTB/nH7j2D/A3aiuRnWrl3PjTMfZtnSl1v3Dxo0kI+ecTB33rGQP81e3NPNV8U88MCfuP7679Hc3Mxhhx3LsceevMH+m2/+BXfe+TuamprYdtvtOO20T7PDDju27n/llZf51389k3HjDuPkk/++p5vft1Q0JTGQ9LAIOPqYMVx3zb2sXLmaD33kQB6dv3SDQPHQA89w7z1PArD7nkM56m17cP2197XuP+roPVi4YFmPt13V09y8np/97D/51KcuYvDgoVxyyWfZb79DGDFidGuZUaN25/Of/xYDBmzNH/84g1/+8od87GNfbN0/Y8aP2XPP/Xqj+aqIhoEkIvYBJgAjgQQsAaanlB7s5rZtkV4/YjtWrHiF559fBcBDDz7DHnsO3SCQrFmzvvX//v23ItXcfo89h/L886tYu3Y9UiOPP/4Iw4ePYNiw1wNw4IFHcN99szYIJHvtNa71/1133Zs5c25pXX/iifmsXLmCffc9kCeemN9j7e6rKpqQdDxrKyK+CEwDAvg/YHb+/08i4pzub96WZ9ttB7By5erW9RdXrmbQoIEblXvTATvx8U+O54gjd+cPN2Vv4H79t+LgQ0Zz5x0Le6q5qrgVK5YyePCw1vXBg4fy/PNL2y1/1103MnbsmwFobm7mF7/4ARMmfKzb26lMbBWFl97QKCM5A3hDSmlt7caI+BYwF/i3tm4UEZOASQBXXHEFsHfxlm4p2nieU9p421/+vIS//HkJ++y7I4ccNpqZM+Zx+Ft25e45i1m7trn726ktxMYvrva+YXb27D/wxBPzOeusrwFw++0zGDv2IIYMGd6tLdSrttRv/20GdgIer9s+It/XppTSVGBqy+q3Lr51sxu4pXlx5ZoNMpBtBw3kxRdXt1v+oQef4e3vGMNM5vH6EdsxZu/h/M1RuzNwYD9IifXrmrnnz0t6oumqoMGDh7FixXOt6ytWLGW77XbYqNy8effwu99dw1lnfY3+/fsD8NhjD7FgwVxuv30Gq1e/wrp16xg4cGtOPPH0nmp+31PNONIwkHwGuCkiHgFaphaNBvYEJndnw7ZUTz35AoOHbMN222/NiytXs8++OzLjVxsONw0esg0rlr8CwO57DGV5/v81P7mntcxhb9mFNWvWG0TUodGjx/Dss0tYuvQptt9+KHfffRsf/ejnNiizaNGjTJt2GWeeeQGDBg1u3V5bbtas3/PEE/MNImpTh4EkpXRDROwFjCcbbA9gMTA7peRo72ZICf7w+/l84OQ3EhHcf99TLF36Moe/dVeeemolC+YvZf8DdmL0rkNoXp9YvXodM3/zUG83WxXV1NTESSf9PZdffj7Nzc0ceugxjBixC7/5zY8ZPXoMb3zjIfzylz9kzZpV/PCHWU/1kCHDmTTpy73c8r6pqp8jidRWB33XsmtLPeazXziSmTMf7u1mqI847ri9oAs7pD596rTCJ+T/+MnEHo9Gfo5EksqiohmJgUSSSqKik7b89l9JUjFmJJJUElvq50gkST3FMRJJUhEVTUgcI5EkFWNGIkklUdUPJBpIJKksKtq3ZSCRpJJw1pYkqZCo6Kh1RZstSSoLMxJJKgm7tiRJxRhIJElFVHWMxEAiSSVR1a6tisY/SdLmiIjjI2JeRMyPiHM6KHdSRKSIOKhRnWYkklQW3fzJ9ohoAi4DjiX/2fSImJ5SeqCu3CDgLGBWZ+o1I5GkkoiIwksD44H5KaUFKaU1wDRgQhvlLgIuBlZ1pt0GEkkqiYiuWGJSRMypWSbVHGIksKhmfXG+raYNcQCwc0rp151tt11bkrQFSSlNBaa2s7utlCW17ozYCrgUOH1TjmkgkaSy6P5v/10M7FyzPgpYUrM+CNgPuCXvJns9MD0iTkwpzWmvUgOJJJVED0z/nQ2MiYjdgL8CE4HTWnamlJ4HhtW05xbgcx0FETCQSFJpdHccSSmti4jJwEygCbgypTQ3Ii4E5qSUpm9OvQYSSSqLHvhhq5TSDGBG3bbz2il7VGfqdNaWJKkQMxJJKomqfkWKgUSSSsLfbJckFVPNOGIgkaSyqGrXloPtkqRCzEgkqSQcI5EkFVLVri0DiSSVRTXjiGMkkqRizEgkqSTs2pIkFVLROGIgkaSyMJBIkgqpateWg+2SpELMSCSpJCqakBhIJKksqtq1ZSCRpJKoaBwxkEhSWVQ1I3GwXZJUiBmJJJVERRMSA4kklUVU9FsbDSSSVBJVzUgcI5EkFWJGIkklUdWMxEAiSSVR1em/BhJJKomKxhEDiSSVRkUjiYPtkqRCzEgkqSQqmpAYSCSpLBxslyQVUtE4YiCRpLKoakbiYLskqRAzEkkqiYomJAYSSSqLisYRA4kklYVjJJKkPsmMRJJKoqIJiYFEksqiql1bBhJJKomKxhEDiSSVRVUzEgfbJUmFmJFIUklUNCExkEhSWVQ1kNi1JUklERGFl04c4/iImBcR8yPinDb2/31E3BcR90TE7RExtlGdBhJJ6iMiogm4DDgBGAuc2kaguDql9MaU0v7AxcC3GtVrIJGkkogovjQwHpifUlqQUloDTAMm1BZIKb1Qs/paIDWqtEfGSD77hSN74jASAMcdt1dvN0HaLD0w/XcksKhmfTFwSBvt+BTwWWAAcHSjSnskkMyatahxIakLHHLIztx086O93Qz1EW8/eo+urbAL4khETAIm1WyamlKa2sERNso4UkqXAZdFxGnAl4CPdnRMZ21JUkl0RUaSB42p7exeDOxcsz4KWNJBddOA7zY6pmMkktR3zAbGRMRuETEAmAhMry0QEWNqVt8FPNKoUjMSSSqJ7h4jSSmti4jJwEygCbgypTQ3Ii4E5qSUpgOTI+IYYC2wnAbdWmAgkaTS6IkPJKaUZgAz6radV/P/pze1TgOJJJVEVb+00UAiSSVR0TjiYLskqRgzEkkqCbu2JEmFGEgkSYVUNI44RiJJKsaMRJJKwq4tSVIhsZWBRJJUQEUTEgOJJJVFVbu2HGyXJBViRiJJJVHRhMRAIkllUdWuLQOJJJWEgUSSVEhF44iD7ZKkYsxIJKksKpqSGEgkqSQcI5EkFVLROOIYiSSpGDMSSSoJv7RRklRIVbu2DCSSVBIOtkuSCqlqIHGwXZJUiBmJJJVERRMSA4kklUVVu7YMJJJUEgYSSVIhFY0jDrZLkooxI5GkkrBrS5JUiIFEklRIReOIYySSpGLMSCSpJPz2X0lSIVXt2jKQSFJJBNWMJAYSSSqLasYRB9slScWYkUhSSfg5EklSIRWNIwYSSSoLMxJJUiEVjSMOtkuSijGQSFJJREThpRPHOD4i5kXE/Ig4p439n42IByLi3oi4KSJ2aVSngUSSSiKi+NJx/dEEXAacAIwFTo2IsXXF/gwclFIaB1wLXNyo3QYSSSqJHshIxgPzU0oLUkprgGnAhNoCKaU/pJRezlfvAkY1qtRAIkl9x0hgUc364nxbe84AftuoUmdtSVJJdMWsrYiYBEyq2TQ1pTS1ZXcbN0nt1PNh4CDgyEbHNJBIUkl0RSDJg8bUdnYvBnauWR8FLNm4HXEM8C/AkSml1Y2OaSCRpJLogW//nQ2MiYjdgL8CE4HTNmhDxAHAFcDxKaVnOlOpgUSSSqK7P5CYUloXEZOBmUATcGVKaW5EXAjMSSlNB74BbAv8LB+8fyKldGJH9RpIJKkPSSnNAGbUbTuv5v9jNrVOA4kklYTftSVJKqSiccRAIkllYUYiSSqkonHET7ZLkooxI5GkkrBrS5JUTDXjiIFEksqiqhmJYySSpELMSCSpJCqakBhIJKksqtq1ZSCRpJKoZhgxkEhSaVQ1I3GwXZJUiBlJL7v33v/jxz++nObmZo488gTe855TN9j/299ey623zqCpqYlBgwbziU98jmHDXtdLrVUVzZ07h59dcwUpNXP4W47juONO2WD/Tb+/njvumMlWTU0M2nZ7Pvy3n2Ho0NexdOnTTL3iq6TUzPr16zjyqPdwxBHv6qV70TdUNCExkPSm5ub1/OhH3+YLX/g6O+wwnPPP/xQHHng4I0fu0lpml1325IILLmfgwK256abpTJs2lcmTv9yLrVaVNDev56fTLuess77K4CHD+Pq/fYZx4w5lxIjRrWVG7bwH55z7HwwYsDW33fobfv7zK/nEJ85l++134HOf/yb9+/dn1apX+MpFZzJu3KEMHjy0F+/Rls2uLW2yRx+dx4477sSOO+5Ev379OfTQo7j77js2KDN27P4MHLg1AHvssS/Llz/XG01VRS1c+DDDh+/EsOEj6NevP28+6Aj+8pc7Nyiz995vYsCA7DW22+77sCJ/jfXr15/+/fsDsG7dWlJKPdv4Piii+NIbzEh60fLlzzF06I6t6zvsMJxHH32o3fK33XYD48Yd3BNN0xZixYqlDBkyrHV9yJBhLHxsXrvl//eOmbzhDQe1ri9b9iyXX34+zz7zJO9//8fNRtSmzc5IIuJjXdmQvqnzV3h33PF7HntsHu985ymNC0st2soi2rlsnTXrZh5//BGOOfak1m077DCcL33pci648PvcdddNvPDC8u5qqahuRlKka+uC9nZExKSImBMRc6ZOnVrgEFu2IUOGs3TpM63ry5Y9y5AhG1/x3X//n5g+/WrOPvsi+vcf0JNNVMUNHjJsg+7Q5cufY/vtd9io3EMP/pkbbvgpZ555fmt31gb1DB7KiJ1GM3/+3G5tb18XEYWX3tBhIImIe9tZ7gOzqO3rAAAGSElEQVTanTqUUpqaUjoopXTQpEmTurzRW4rdd9+bp5/+K88++yTr1q3lrrtu4YADDt+gzMKFj3DVVf/O2WdfyHbbDemllqqqdtllL555ZgnPPfcU69at5U9zbmPcuEM3KLNo0aNcffW3OfPM8xi03eDW7cuXP8eaNasBePmllSx49AFe97qRPdr+vqaqGUmjMZLXAccB9flsAP/bLS3qQ5qamvjIR/6Riy8+h5SaOeKI4xk1aleuu+4qdtttLw488HCmTZvKqlWv8J3vXATA0KE7cvbZF/Vyy1UVTU1NfHDimXzn21+iubmZww5/BzvttAu/+tV/s8voMYx706Fcf90PWL16Fd//3teALFM+8x/O56mnnuC6675PECQSxxzzAUaO3K2X79GWraqztqKjmRgR8QPghyml29vYd3VK6bROHCPNmrWoQBOlzjvkkJ256eZHe7sZ6iPefvQe0IXfbPLII88Vnho3ZsywHo9GHWYkKaUzOtjXmSAiSdrCOf1Xkkqiql1bBhJJKomKxhE/2S5JKsZAIkkqxK4tSSqJqnZtGUgkqSSior+RaCCRpLKoZhxxjESSVIwZiSSVhGMkkqRCHCORJBVTzThiIJGksqhoHHGwXZJUjBmJJJWEX9ooSSqmmnHEQCJJZVHROGIgkaSyqGrXloPtkqRCDCSSpELs2pKkkqhoz5aBRJLKwjESSVKfZCCRpD4kIo6PiHkRMT8izmlj/xERcXdErIuIkzpTp4FEkkoiovjScf3RBFwGnACMBU6NiLF1xZ4ATgeu7my7HSORpJLoga+RHw/MTyktAIiIacAE4IGWAimlhfm+5s5WakYiSWURxZeImBQRc2qWSTVHGAksqllfnG8rxIxEkrYgKaWpwNR2dreV8qSixzSQSFJJ9MDs38XAzjXro4AlRSu1a0uSSqILerYamQ2MiYjdImIAMBGYXrTdBhJJKotunraVUloHTAZmAg8C16SU5kbEhRFxYtaEODgiFgMnA1dExNxGzbZrS5JKoic+155SmgHMqNt2Xs3/s8m6vDrNjESSVIgZiSSVREW/astAIkmlUdFIYiCRpJKoZhhxjESSVJAZiSSVREV7tgwkklQe1YwkBhJJKomqZiSOkUiSCjGQSJIKsWtLkkqiql1bBhJJKo1qRhIDiSSVRFUzEsdIJEmFGEgkSYXYtSVJZVHRri0DiSSVRFQ0kti1JUkqxEAiSSrEri1JKgmn/0qS+iQzEkkqi4qmJAYSSSqJaoYRu7YkSQWZkUhSWVQ0JTGQSFJJVDSOGEgkqTQqOtjuGIkkqRADiSSpELu2JKkkqtmxZSCRpPKoaCQxkEhSSfg18pKkPsmMRJLKopoJiYFEksqionHEQCJJpVHRSGIgkaTSqGYkcbBdklSIGYkklUQ18xEDiSSVR0UjiYFEkkqionGESCl19zG6/QCS1Iu67Py/ds36wufL/gOaejwe9URGUtUg26siYlJKaWpvt0N9h685bS5nbZXXpN5ugPocX3PaLI6RSFJJVPQHEs1IJKkviYjjI2JeRMyPiHPa2D8wIn6a758VEbs2qtNAUl72Vaun+ZrbwkVEE3AZcAIwFjg1IsbWFTsDWJ5S2hO4FPh6w3p7YNaWJKkT1q9rLnxCbuq3VbsdZBFxGDAlpXRcvn4uQErpazVlZuZl7oyIfsBTwPDUQbAwI5GkvmMksKhmfXG+rc0yKaV1wPPA0I4qNZCUUKM+TKmrRMSVEfFMRNzf221Rlk0UXSJiUkTMqVlqZ+O1la3UZxqdKbMBA0nJdLIPU+oqVwHH93Yj1HVSSlNTSgfVLLVjX4uBnWvWRwFL6qpoLZN3bW0PLOvomAaS8hkPzE8pLUgprQGmARN6uU3aQqWUbqPBSUJblNnAmIjYLSIGABOB6XVlpgMfzf8/Cbi5o/ERMJCUUWf6MCVpk+VjHpOBmcCDwDUppbkRcWFEnJgX+wEwNCLmA58FGnav+4HE8tnk/klJ6qyU0gxgRt2282r+XwWcvCl1mpGUT2f6MCWpNAwk5dOZPkxJKg0DScm014fZu63SlioifgLcCewdEYsj4ozebpOqx0+2S5IKMSORJBViIJEkFWIgkSQVYiCRJBViIJEkFWIgkSQVYiCRJBViIJEkFfL/AQcEifIOcBP9AAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.Purples\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Ada Boost', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test, ada_pred)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gradient Boost" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.6274509803921569\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "gb_accu=metrics.accuracy_score(y_test,gb_pred)\n", + "accu_comparaison['Gradient Boost']=gb_accu\n", + "accu_comparaison_train['Gradient Boost']=metrics.accuracy_score(y_train,gb_oof_train)\n", + "print(gb_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.68 0.68 0.68 59\n", + " 1 0.56 0.56 0.56 43\n", + "\n", + " micro avg 0.63 0.63 0.63 102\n", + " macro avg 0.62 0.62 0.62 102\n", + "weighted avg 0.63 0.63 0.63 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(gb_pred, y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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0sJRRx3P2LFtfleGhx66j5/+dBILFszn7LO/zKGHvvZLl1dfPZl77rkTgA996G8YM+aoPm276ufBB2fzq1/9iJaWFsaMOZqjjz65zfabb76eO+74PU1NTWy77faceuq5DBq0y7rtK1a8wj//85kcdNAYTj75jL5ufr9S04TEjKSvtbSsZcqU7/H5z1/CpZdO4fbbb6a5+fE2ZQYPHsoZZ5zHO9/53jbr77nnTh577BEuvvhHXHTRJG644ee88sryPmy96qalZS3XXvtDzjhjIl/4wiRmz76VZ55Z0KbM8OFv4HOf+y7nn/+vvPWth/Nm2H+fAAAIJElEQVSb30xps33atP/gjW88sC+b3W9FROnbxmAg6WPz5j3M0KHDGDp0dzbbbHPGjHkPs2ff3qbMkCG7suee+zJgQNvD09z8OAcccBBNTU1sueVW7LXXvtx//8y+bL5q5oknHmHIkN0YPHhXNttsc97xjnfzwAMz2pTZb7+DGDhwSwD23vtNLFmycN22BQvm8dJLS9h//7f3abv7q4jyt43BQNLHFi9+kZ13fq3bYNCgwSxa9EK37rvXXvty33138eqrK1m2bClz5tzLwoXd+kll9VNLlixkxx0Hr1veccedWbp0YYfl77zzD4wcOQqAlpYWrr/+x5xwwt/1ejtVb697jCQi/i6lNKXrkipKKa23rrvp6EEHHcL8+XOZOPFstttuR0aMGMmAAU093URtUrp/vs2c+T8sWDCPc865GIDbbpvGyJEHs9NOQ3q1hXpNXcdIygy2fxVoN5BExARgAsAVV1zBqFEfKLGbTcugQUPaZBGLFr3ITjsN7uQebZ144mmceOJpAFx++dfZdddhPd5GbTp23HEwS5a8uG55yZKFbL/9oPXKzZ17L7///S8455yL2XzzzQF47LGHmT9/DrfdNo1XX13BmjVr2GKLLRk7dnxfNb/fqev0304DSUTc39EmYGhH90spTQYmty7Onv3U62vdJmjffffn2Wef4vnnn2HQoMHcccfNnHXWF7t135aWtSxf/jLbbbcDCxY8yoIF8znzzEN6ucWqsz33HMELLzzNwoXPssMOO3P33bfysY99tk2ZJ598lGuumcSZZ36V7bbbcd36YrkZM/6bBQvmGUR6WU3jSJcZyVDgGGBxw/oAbl+/uLrS1NTE+PFnc8kl59HSspYjjzyO4cP34dprp/CGN+zHqFGH8+ijD3PZZReyfPnL3H33HVx33ZVceukU1qxZy0UXfQqArbbamk9+8gs0Ndm1pY41NTVx0kln8P3vf4WWlhYOO+x97LbbXtx443+w554jeMtbDuU3v5nCqlUrmTLlEgB22mkIEyZ8eSO3vH+qa0YS7fXZr9sY8WNgSkrptna2/SyldGo7d2tkRqI+M2rUMKZP/8vGbob6iWOO2Q968JtNHnnkxY4vyN00YsTgPo9GnWYkKaXTO9nWnSAiSdrE+cl2SaqIunZtGUgkqSJqGkf8QKIkqRwDiSSpFLu2JKki6tq1ZSCRpIqImv5GooFEkqqinnHEMRJJUjlmJJJUEY6RSJJKcYxEklROPeOIgUSSqqKmccTBdklSOWYkklQRfmmjJKmcesYRA4kkVUVN44iBRJKqoq5dWw62S5JKMZBIkkqxa0uSKqKmPVsGEkmqCsdIJEn9koFEkvqRiDg2IuZGxLyIOL+d7e+OiLsjYk1EnNSdOg0kklQREeVvndcfTcAk4DhgJHBKRIxsKLYAGA/8rLvtdoxEkiqiD75GfjQwL6U0HyAirgFOAB5sLZBSejzf1tLdSs1IJKkqovwtIiZExKzCbUJhD8OAJwvLzfm6UsxIJGkTklKaDEzuYHN7KU8qu08DiSRVRB/M/m0G9igsDweeLlupXVuSVBE90LPVlZnAiIjYJyIGAuOAqWXbbSCRpKro5WlbKaU1wFnAdOAh4BcppTkRcVFEjM2aEIdERDNwMnBFRMzpqtl2bUlSRfTF59pTStOAaQ3rLiz8P5Osy6vbzEgkSaWYkUhSRdT0q7YMJJJUGTWNJAYSSaqIeoYRx0gkSSWZkUhSRdS0Z8tAIknVUc9IYiCRpIqoa0biGIkkqRQDiSSpFLu2JKki6tq1ZSCRpMqoZyQxkEhSRdQ1I3GMRJJUioFEklSKXVuSVBU17doykEhSRURNI4ldW5KkUgwkkqRS7NqSpIpw+q8kqV8yI5GkqqhpSmIgkaSKqGcYsWtLklSSGYkkVUVNUxIDiSRVRE3jiIFEkiqjpoPtjpFIkkoxkEiSSrFrS5Iqop4dWwYSSaqOmkYSA4kkVYRfIy9J6pfMSCSpKuqZkBhIJKkqahpHDCSSVBk1jSQGEkmqjHpGEgfbJUmlmJFIUkXUMx8xkEhSddQ0khhIJKkiahpHiJRSb++j13cgSRtRj13/V69aW/p6ufnApj6PR32RkdQ1yG5UETEhpTR5Y7dD/YfnnF4vZ21V14SN3QD1O55zel0cI5GkiqjpDySakUhSfxIRx0bE3IiYFxHnt7N9i4j4eb59RkTs3VWdBpLqsq9afc1zbhMXEU3AJOA4YCRwSkSMbCh2OrA4pfRG4DLgm13W2weztiRJ3bB2TUvpC3LTZgM67CCLiDHAxJTSMfnyBQAppYsLZabnZe6IiM2AZ4EhqZNgYUYiSf3HMODJwnJzvq7dMimlNcBSYOfOKjWQVFBXfZhST4mIn0TE8xHx543dFmXZRNlbREyIiFmFW3E2XnvZSmOm0Z0ybRhIKqabfZhST7kSOHZjN0I9J6U0OaV0cOFWHPtqBvYoLA8Hnm6oYl2ZvGtrB2BRZ/s0kFTPaGBeSml+SmkVcA1wwkZukzZRKaVb6eIioU3KTGBEROwTEQOBccDUhjJTgY/l/58E3NzZ+AgYSKqoO32YkrTB8jGPs4DpwEPAL1JKcyLioogYmxf7MbBzRMwDPg102b3uBxKrZ4P7JyWpu1JK04BpDesuLPy/Ejh5Q+o0I6me7vRhSlJlGEiqpzt9mJJUGQaSiumoD3Pjtkqbqoi4GrgDeFNENEfE6Ru7TaofP9kuSSrFjESSVIqBRJJUioFEklSKgUSSVIqBRJJUioFEklSKgUSSVIqBRJJUyv8HNxiQHgCRM0cAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.Purples\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Gradient Boost', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test, gb_pred)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Réseaux de Neuronnes " + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "reduire_centrer=True\n", + "\n", + "\n", + "if reduire_centrer :\n", + " scaler = StandardScaler()\n", + " scaler.fit(X_train)\n", + "\n", + " X_train=scaler.transform(X_train)\n", + " X_test=scaler.transform(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "model = Sequential()\n", + "model.add(Dense(num_feat//2, input_dim=num_feat, kernel_initializer='normal', activation='relu'))\n", + "model.add(Dropout(0.5)) #Très efficacee contre overfitting \n", + "model.add(Dense(num_feat//8, kernel_initializer='normal', activation='relu'))\n", + "model.add(Dropout(0.5))\n", + "model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))\n", + "model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "102/102 [==============================] - 0s 784us/step\n" + ] + } + ], + "source": [ + "np.random.seed(seed)\n", + "\n", + "model.fit(X_train, y_train,\n", + " epochs=100,\n", + " batch_size=5,\n", + " verbose=0)\n", + "\n", + "score = model.evaluate(X_test, y_test, batch_size=50)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "dl_y_train_pred=(model.predict(X_train)>0.5)*1\n", + "dl_y_test_pred=(model.predict(X_test)>0.5)*1" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.5784313707959419\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "nn_accu=score[1]\n", + "accu_comparaison['Neural Network']=nn_accu\n", + "accu_comparaison_train['Neural Network']=metrics.accuracy_score(y_train,dl_y_train_pred)\n", + "print(nn_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.58 1.00 0.73 59\n", + " 1 0.00 0.00 0.00 43\n", + "\n", + " micro avg 0.58 0.58 0.58 102\n", + " macro avg 0.29 0.50 0.37 102\n", + "weighted avg 0.33 0.58 0.42 102\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\metrics\\classification.py:1143: UndefinedMetricWarning:\n", + "\n", + "Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n", + "\n", + "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\metrics\\classification.py:1143: UndefinedMetricWarning:\n", + "\n", + "Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n", + "\n", + "C:\\Users\\Delanoue\\Anaconda3\\envs\\env_py36\\lib\\site-packages\\sklearn\\metrics\\classification.py:1143: UndefinedMetricWarning:\n", + "\n", + "Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples.\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(y_test,dl_y_test_pred))" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.Purples\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Réseaux de Neuronnes', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test,dl_y_test_pred)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## SVM " + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.svm import SVC\n", + "SVC_clf = SVC(gamma='auto')\n", + "SVC_clf.fit(X_train, y_train)\n", + "\n", + "\n", + "svc_pred=SVC_clf.predict(X_test)\n", + "svc_y_train_pred=SVC_clf.predict(X_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.6274509803921569\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "svc_accu=metrics.accuracy_score(y_test,svc_pred)\n", + "accu_comparaison['SVM']=svc_accu\n", + "accu_comparaison_train['SVM']=metrics.accuracy_score(y_train,svc_y_train_pred)\n", + "print(svc_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.75 0.66 0.70 67\n", + " 1 0.47 0.57 0.51 35\n", + "\n", + " micro avg 0.63 0.63 0.63 102\n", + " macro avg 0.61 0.61 0.61 102\n", + "weighted avg 0.65 0.63 0.63 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(svc_pred, y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.Purples\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba SVM', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test, svc_pred)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Logistic Regression" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "\n", + "logreg_clf=LogisticRegression()\n", + "logreg_clf.fit(X_train,y_train)\n", + "\n", + "logreg_pred=logreg_clf.predict(X_test)\n", + "logreg_y_train_pred=logreg_clf.predict(X_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.5784313725490197\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "logreg_accu=metrics.accuracy_score(y_test,logreg_pred)\n", + "accu_comparaison['Logistic Regression']=logreg_accu\n", + "accu_comparaison_train['Logistic Regression']=metrics.accuracy_score(y_train,logreg_y_train_pred)\n", + "print(logreg_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.68 0.62 0.65 64\n", + " 1 0.44 0.50 0.47 38\n", + "\n", + " micro avg 0.58 0.58 0.58 102\n", + " macro avg 0.56 0.56 0.56 102\n", + "weighted avg 0.59 0.58 0.58 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(logreg_pred, y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.Purples\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Log Reg', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test, logreg_pred)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stacking " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ### Prédictions des différents modèles " + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RandomForestExtraTreesAdaBoostGradientBoostNeural NetworkSVMLogistic Regression
00100000
10110011
20010000
30001000
40000000
\n", + "
" + ], + "text/plain": [ + " RandomForest ExtraTrees AdaBoost GradientBoost Neural Network SVM \\\n", + "0 0 1 0 0 0 0 \n", + "1 0 1 1 0 0 1 \n", + "2 0 0 1 0 0 0 \n", + "3 0 0 0 1 0 0 \n", + "4 0 0 0 0 0 0 \n", + "\n", + " Logistic Regression \n", + "0 0 \n", + "1 1 \n", + "2 0 \n", + "3 0 \n", + "4 0 " + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "premieres_predictions_train = pd.DataFrame( {'RandomForest': rf_oof_train.ravel(),\n", + " 'ExtraTrees': et_oof_train.ravel(),\n", + " 'AdaBoost': ada_oof_train.ravel(),\n", + " 'GradientBoost': gb_oof_train.ravel(),\n", + " 'Neural Network' : dl_y_train_pred.ravel(),\n", + " 'SVM': svc_y_train_pred.ravel() ,\n", + " 'Logistic Regression':logreg_y_train_pred.ravel()\n", + " }).astype(int)\n", + "premieres_predictions_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RandomForestExtraTreesAdaBoostGradientBoostNeural NetworkSVMLogistic Regression
01010000
11111011
20000000
30001010
40000000
\n", + "
" + ], + "text/plain": [ + " RandomForest ExtraTrees AdaBoost GradientBoost Neural Network SVM \\\n", + "0 1 0 1 0 0 0 \n", + "1 1 1 1 1 0 1 \n", + "2 0 0 0 0 0 0 \n", + "3 0 0 0 1 0 1 \n", + "4 0 0 0 0 0 0 \n", + "\n", + " Logistic Regression \n", + "0 0 \n", + "1 1 \n", + "2 0 \n", + "3 0 \n", + "4 0 " + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "premieres_predictions_test = pd.DataFrame( {'RandomForest': rf_oof_test.ravel(),\n", + " 'ExtraTrees': et_oof_test.ravel(),\n", + " 'AdaBoost': ada_oof_test.ravel(),\n", + " 'GradientBoost': gb_oof_test.ravel(),\n", + " 'Neural Network' : dl_y_test_pred.ravel(),\n", + " 'SVM': svc_pred.ravel() ,\n", + " 'Logistic Regression':logreg_pred.ravel()\n", + " }).astype(int)\n", + "premieres_predictions_test.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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hFTIlqVCG0VEREQkgjKCIiIiIhFSIVuWCm0UERERkQgKBEVERERSlLqGRURERCKkQrYsFdooIiIiIhGUERQRERGJkArZslRoo4iIiIhEUEZQREREJIIluwL1QBlBERERkRSljKCIiIhIhFTIlqVCG0VEREQkgjKCIiIiIhFSIVuWCm0UERERkQjKCIqIiIhESIVsWSq0UUREREQiKCMoIiIiEiEVsmWp0EYRERERiaCMYCM20vp4suuQLDf7AsovPyTZ1UiatL9+TPy+Y5JdjaSJXTeF/EP2SXY1kqLdx58nuwpJF//zccmuQtLEfj6Z+OgTk12NpIld8p96/bKPVMiWpUIbRURERCSCAkERERGRFKWuYREREZEIqZAtS4U2ioiIiEgEZQRFREREIqRCtiwV2igiIiIiEZQRFBEREYmQCtmyVGijiIiIiERQRlBEREQkQipky1KhjSIiIiISQRlBERERkQipkC1LhTaKiIiISARlBEVEREQiWLIrUA+UERQRERFJUcoIioiIiERIhWxZKrRRRERERCIoIygiIiISIRWyZanQRhERERGJoIygiIiISIRUyJalQhtFREREJIICQREREZEUpa5hERERkQiWAneUVkZQREREJEUpIygiIiISIWae7CrsdsoIioiIiKQoZQRFREREIqTCGEEFgrLDTnviTnqfMphNeWt5tN+pya7OrnfgkcTO+yXE0vD3xuLjR1dZbYNOxc6+BtbnAeDvPIdPfTlYd9bVWL+jwWL4Zx/gz/2xvmu/a/U4DBtyddCeOa/Cf5+uuv7A72LHXgEbVwPgM1+C2a8moaK7TvqRx9LylzdBWhrFY5+jePRfa5TJOPFkWlx+FbhTvnA+m353LQAtrvoVGUcPAWDz4w9R+tZr9Vp32TlTlhVz55RC4g7nHNCC4YdmRZYbv3gL17y5nhfObU/f3AxKy52bJhYwb3UZ5e6c3qcFIwZGb9uQTfl8M3e+nU88Ducc3Irhg9pElhs/v4hrxq7hhUty6du52dblXxeUcerfVvCzY9rw48Oz66vaspOSHgiaWTkwO6zLF8AP3H39LthvD+BVd++7C/Y1GjgOKAgXjXL3B3d2v7UcazBQ4u7v74797wozR7/Efx96ijP/eXeyq7LrWYzYhTcQf+AKyF9F7DdP4bMmw4ovqhTzGW/hY6q1f++DsH36E7/1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9+Jw94VUHZsoIiIiSaDvGhYRERGRJkuBoIiIiEiKSnrXsIiIiEhDlAJzRZQRFBEREUlVygiKiIiIREiF28coIygiIiKSopQRFBEREYmgjKCIiIiINFnKCIqIiIhEMN1QWkRERESaKmUERURERCLENEZQRERERJoqZQRFREREImjWsIiIiIg0WcoIioiIiEQwNGtYRERERJooZQRFREREImiMoIiIiIg0WQoERURERFKUAkERERGRCGb197N99bGTzGyBmS02s19HrO9mZu+Y2SdmNsvMTq5rnwoERURERBo4M0sDHga+CxwAXGhmB1RFwROLAAAgAElEQVQrdiPwvLsPAC4AHqlrv5osIiIiIhIhZg3q9jGHAYvdfQmAmY0BTgfmJZRxIDv8uw3wdV07VSAoIiIi0vDtBXyZ8Hg5cHi1MrcAb5nZz4FWwAl17VRdwyIiIiIR6nOMoJmNMLMZCT8jqlcnoorVU5YXAqPdvQtwMvCkmW0z1lNGUERERCTJ3P0x4LFtFFkOdE143IWaXb+XAieF+5tmZs2BDkBebTtVRlBEREQkgtXjz3aYDvQys55mlkkwGWRctTL/A44HMLP9gebA6m220b1BDYSUHaMnT0REUkm9ftfHvHY96+199oD8L+psW3g7mAeANGCUu99hZrcCM9x9XDiL+G9AFkGM8Ct3f2ub+1Qg2HiVX35Iyj55aX/9mJHWJ9nVSJqbfQE+5qRkVyNp7II3iT80ONnVSIrYlZOSXYWk87HDkl2FpLEzX8PfPj/Z1UgaO+G5eg0EP9ujR729z+6/bmlSvtBOXcMiIiIiKUqTRUREREQibO83fjRmygiKiIiIpChlBEVEREQixJQRFBEREZGmShlBERERkQjWsL5reLdQRlBEREQkRSkQFBEREUlR6hoWERERiZACc0WUERQRERFJVcoIioiIiETQDaVFREREpMlSRlBEREQkgm4fIyIiIiJNljKCIiIiIhH0FXMiIiIi0mQpIygiIiISQbOGRURERKTJUkZQREREJIIygiIiIiLSZCkjKCIiIhLB0H0ERURERKSJUkZQREREJILGCIqIiIhIk6VAUERERCRFqWtYajrwSGLn/RJiafh7Y/Hxo6ustkGnYmdfA+vzAPB3nsOnvhysO+tqrN/RYDH8sw/w5/5Y37Xf7U574k56nzKYTXlrebTfqcmu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eGwbRbbjOzBJB3oBg4EuwBQz6+vu62vbqQJBERERkSgNq990OdA14XEX4OuIMh+4eynwhZktIAgMp9e204bVRBERERGJMh3oZWY9zSyT4EsvxlUr8zLBt6RhZh0IuoqXbGunygiKiIiIRGlAs4bdvczMrgTGA2nAKHefa2a3AjPcfVy47ttmNo/gm9Oud/e129qvAkERERGRRsDdXwder7bs9wl/O/CL8Ge7qGtYREREJEUpIygiIiISJQXSZSnQRBERERGJooygiIiISJQGNFlkd1FGUERERCRFKSMoIiIiEqXpJwSVERQRERFJVcoIioiIiETRGEERERERaaqUERQRERGJooygiIiIiDRVygiKiIiIREmBdFkKNFFEREREoigjKCIiIhJFYwRFREREpKlSRlBEREQkgqVAuszcPdl1kG9OT56IiKSSeu2rjV89sN7eZ2N/mpGUfmhlBEVERESipMAYQQWCjVj+IfskuwpJ0+7jz4k/NDjZ1Uia2JWTiI8clOxqJE3s5mmMtD7JrkZS3OwLkl2FpIvffXSyq5A0sRvew185NdnVSBo79ZVkV6HJSYHebxERERGJooygiIiISJQUSJelQBNFREREJIoygiIiIiJRUmCyiDKCIiIiIilKGUERERGRKMoIioiIiEhTpYygiIiISJQUSJelQBNFREREJIoygiIiIiJRNEZQRERERJoqZQRFREREoqRAuiwFmigiIiIiUZQRFBEREYmiMYIiIiIi0lQpIygiIiISJQXSZSnQRBERERGJokBQREREJEWpa1hEREQkiiaLiIiIiEhTpYygiIiISJQUSJelQBNFREREJIoygiIiIiJRNEZQRERERJoqZQRFREREoqRARlCBoNSQfuSxtPzlTZCWRvHY5yge/dcaZTJOPJkWl18F7pQvnM+m310LQIurfkXG0UMA2Pz4Q5S+9Vq91n1XmLJsC3e+W0jc4ZwDWjJ8YFZkufGLN3PNG+t54bz29M3NpLTcuWliAfNWl1Ied07fryUjatm2QdvnCOykayCWhn88DqY+WXV9/5OxE6+E/2fvzsOjKs//j7/vScKeALIEZFcQFzYBt4qKuLQV0Iq7thW1Uuu3/amtrW2tWrFW3Frr2lpFat2rYgWtqCiLiAsqIOCGCAICYU3Ys8z9++McyCRM2EzmJDOf13XNxZxznjNzP5lh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SBMen7aO6V9sIjvLyGsYY9S5bQA4/+hm/P7p5Qy9YxHuMOywPLrvW38Xz1hHJB0uk17Mkw2KikA4aeOvwBHASoIs4N+BhlQco9eSIAuXA8wEjga+7+4Lzexa4MfAImAJMC9cPmYMMN7dnw2XZ7mboEGZDdzl7v80s0nA1e4+I3yOGe7e2cz2ASaEz3dLGM+25WNi4fMMd/cCM+sMjAZahnW4yN2/3sn+54FuBJnKicCVQPPE53P3p6v6m63tu3/tePEi0PzDL4nfOzDqMCIT+/kk4jceFXUYkYndMJ0bLX265fbEDf5Z1CFELn7rHszmTTOxa97Cx2XuGpY2dFxKW2bxu45N2fds7MopkbQ6a0tGEHdfRpA1S2ZMQrlVBGPukj3GzQSTPyrvH55wfyZJunLdfWCl5+gc3l8DHFZVPJUeYyHBDOjd3T8sycMkez4RERGRaldrGoIiIiIitUr69wzXmskiIiIiIpJiygiKiIiIJJMBk0WUERQRERHJUMoIioiIiCST/glBZQRFREREMpUygiIiIiLJaIygiIiIiKQrZQRFREREksmAdFkGVFFEREREklFGUERERCQZjREUERERkXSljKCIiIhIMumfEFRGUERERCRTKSMoIiIikozGCIqIiIhIulJDUERERCRDqWtYREREJJn07xlWRlBEREQkUykjKCIiIpKMJouIiIiISLpSRlBEREQkmQxIl2VAFUVEREQkGWUERURERJLRGEERERERSVfKCIqIiIgkk/4JQczdo45B9p5ePBERySQpbZrFHzkxZd+zsYtej6TZqYygiIiISDIaIygiIiIi6UoZQREREZEkMiAhqIygiIiISKZSRlBEREQkmQxICSojKCIiIpKh1BAUERERyVDqGhYRERFJJv17hpURFBEREclUygiKiIiIJBNL/5SgMoIiIiIiGUoZQREREZFk0j8hqIygiIiISKZSRlBEREQkGS0oLSIiIiLpShlBERERkWTSPyGojKCIiIhIplJGUERERCQZjREUERERkdrAzL5nZp+Z2Xwz++1Oyp1pZm5m/Xf1mGoIioiIiCRjKbztKhSzLOA+4PvAwcB5ZnZwknK5wP8D3t2dKqohKCIiIlL7HQ7Md/cF7l4MPAWclqTcTcBtwJbdeVA1BEVERESSiVnqbrvWDlicsL0k3LedmR0KdHD38btdxd0tKCIiIiI1w8xGmNmMhNuIykWSnOYJ58eAvwK/2pPn1axhERERkYi5+4PAgzspsgTokLDdHvgmYTsX6AFMsmC2cxvgRTM71d1nVPWgagiKiIiIJFO7Vo95H+hmZl2ApcC5wPnbDrp7IdBy27aZTQKu3lkjENQ1LCIiIlLruXsp8HNgAvAJ8Iy7zzWzkWZ26t4+rrn7rktJbaUXT0REMklKc3T+/OCUfc/asJciyT8qIygiIiKSoVLaEAxXub4zYftqM/tjCp53UrLVtcP9MxK2+4d96jt7rM5mdv7OyuxljJ3NbE51P66IiIjspVq0oHRNSXVGcCswzMxa7rLkHrDA3taltZl9fw/KdyZhcGZ1CFcLFxEREUmpVDcESwmmRl9V+YCZtTKz58zs/fB2dLj/j2Z2dUK5OWH2rLOZfWJm9wMfAh3M7IFw7Z25ZnbjbsZ0O/CHJPFkmdntYSyzzeyn4aFRwDFmNtPMrjKzl82sV3jOR2Z2fXj/JjP7SdhIvT2M+2MzOyc8PtDM3jSzJ4CPKz33fuFjHbabdRAREZHqZpa6W0SiWD7mPmC2md1Waf/fgL+6+1tm1pFgVsxBu3is7sBF7n45gJld6+5rwgzbRDPr5e6zd/EY04HTzex4YH3C/kuAQnc/zMzqA9PM7FXgtwTTsYeEz1mfoGG4kKChe3R4/gDgMWAY0AfoTTCt+30zmxKWORzo4e5fmVnn8PG6E1w25iJ3n7mL2EVERET2Wsoni7h7EfAowQWRE50I3GtmM4EXgbzwwsk7s8jd30nYPtvMPgQ+Ag4huCjz7vgTO2YFTwZ+HMbzLtAC6Jbk3KnAsQQNv5eAJmbWCOjs7p+F+5909zJ3XwFMBrZl+t5z968SHqsV8F/gh1U1AhNXHn/wwZ2tOykiIiLfSgaMEYxqQem7CLpzH0nYFwOOcvfNiQXNrJSKDdYGCfc3JpTrAlwNHObua81sTKWyVXL3N8zsJuDIxKcGfuHuEyrFM7DS6e8D/YEFwGsEWb9LgQ8SHqcqGyttFxJcR/BoYG4VsSauPK7lY0RERGSvRbJ8jLuvAZ4h6H7d5lWChRIBMLM+4d2FQN9wX1+gSxUPm0fQsCo0s3xgTyaAANwM/CZhewLwMzPLCZ/7ADNrTNB9vD1T6e7FBI23s4F3CDKEV4f/AkwBzgnHHLYiyB6+V0UMxcAPCDKR1T4zWURERPZAzFJ3i6qKkT0z3EnCpVAIuor7hxMz5gGXhfufA/YJu2h/Bnye7MHcfRZBl/BcYDQwbU+CcfeXgZUJux4C5gEfhsu6/IMggzobKDWzWWa2bdLLVGCFu28K77envCE4NjxnFvAG8Bt3X76TODYCQ4CrzOy0PamDiIiIyJ7QlUXqNr14IiKSSVJ7ZZHxp6buyiJDXtSVRUREREQkdaKaLCIiIiJSu0W4vl+qKCMoIiIikqHUEBQRERHJUOoaFhEREUlGXcMiIiIikq6UERQRERFJxtI/X5b+NRQRERGRpJQRFBEREUkmwku/pYoygiIiIiIZShlBERERkWQ0a1hERERE0pUygiIiIiLJaNawiIiIiKQrZQRFREREktEYQRERERFJV8oIioiIiCSjdQRFREREJF0pIygiIiKSjGYNi4iIiEi6UkNQREREJEOpa1hEREQkGS0fIyIiIiLpShlBERERkWSUERQRERGRdKWMoIiIiEgyWj5GRERERNKVMoJ1WPye46IOITKxX0zGxw6OOozI2Okv4eNPjTqMyNiQF4nfOiDqMCIRu+atqEOI3I3WPeoQInODf0bZT/tGHUZksv7xYWqfUJeYExEREZF0pYygiIiISDKaNSwiIiIi6UoZQREREZFkNGtYRERERNKVMoIiIiIiyWiMoIiIiIikK2UERURERJLROoIiIiIikq7UEBQRERHJUOoaFhEREUlGy8eIiIiISLpSRlBEREQkGS0fIyIiIiLpShlBERERkWSUERQRERGRdKWMoIiIiEgyygiKiIiISLpSRlBEREQkmVj658vSv4YiIiIikpQygiIiIiLJaIygiIiIiKQrZQRFREREklFGUERERETSlTKCIiIiIslY+ufL0r+GIiIiIpKUMoKyg6mLtvLnqUXEHc48uCGX9muStNyE+Vu48pV1/OesFvTIz6GkzLnujULmrSylzJ3TujdkRP/k59ZmUz/byM3jVgX1PyyPEQObVzj+1DuFPD69kKwYNKoXY+Sw1nTNr0dxqXPD2ALmLNlKzOD3Q1tyxP6NIqrF3pv66UZufmEF8TiceURTRpzQosLxp95ex+PT1pIVs6D+Z+XTtU19xn1QxMOT1mwv99myrTx/VScOatcg1VX4drocgZ1wBcRi+Kzx8O5jFY/3+D52/OWwfhUA/uFzMHs8AHbWnbDvwbBk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X9VNFS36raQjgDcDr23u/V7FPDFi2TUcERFTkvRxYCmwEtjF9skpAnvnLcC+wCm275S0E/CFyplihDI1HBERU5K0hrJbehVrHzOWtcERHZFCMCIiItaSs4b7I4VgRERErCVnDfdHCsGIiIiInsqu4YiIiJiSpJU8eWr4AWAZ8F7bd7SfKkYphWBERERM5xPAz4AvUTYJzQf+APgh8BngwGrJYiQyNRwRERFTknSD7b0n3bve9j6SbrW9a61sMRrpIxgRERHTWSPpcEkbNY/DB17LSFIHZEQwIiIipiTpOcDplKbSANcB7wH+B5hj+5pa2WI0UghGRERE9FSmhiMiImJKkraXdJGkeyXdI+lCSdvXzhWjk0IwIiIipvNZ4BJgW2A74N+be9ERmRqOiIiIKUm6xfZu67sXG66MCEZERMR07pP0JkkbN483AffXDhWjkxHBiIiImJKkHYAzKbuGDXwHONb2T6oGi5FJIRgREREzJundtv+5do4YjRSCERERMWOSfmJ7h9o5YjSyRjAiIiKGodoBYnRSCEZERMQwMpXYIU+pHSAiIiJ+t0haydQFn4CntRwnxihrBCMiIiJ6KlPDERERET2VQjAiIiKip1IIRkRERPRUCsGIiIiInkohGBEREdFTKQQjIiIieur/AGjIf3Uyj/QzAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.YlOrRd\n", + "plt.figure(figsize=(10,10))\n", + "plt.title('Corrélation des prédictions des modèles', y=1.05, size=15)\n", + "sns.heatmap(premieres_predictions_train.astype(float).corr().values, linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=1,\n", + " xticklabels=premieres_predictions_train.columns.values, yticklabels=premieres_predictions_train.columns.values)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3, 0, 5, 2, 1, 6, 4], dtype=int64)" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_train_comparaison_df=pd.DataFrame(accu_comparaison_train,index=[0])\n", + "\n", + "index_asc_train=accu_train_comparaison_df.values.ravel().argsort().argsort()\n", + "index_asc_train" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(7,6))\n", + "plt.title('Comparing performances : Accuracy on train set', y=1.05, size=20)\n", + "sns.barplot(accu_train_comparaison_df.values.ravel(),\n", + " accu_train_comparaison_df.columns,\n", + " palette=np.array((sns.color_palette(\"YlOrRd\", n_colors=len(index_asc_train))))[list(index_asc_train)])" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Random ForestExtra TreeAda BoostGradient BoostNeural NetworkSVMLogistic Regression
00.6140350.5657890.6535090.6052630.5701750.7456140.649123
\n", + "
" + ], + "text/plain": [ + " Random Forest Extra Tree Ada Boost Gradient Boost Neural Network \\\n", + "0 0.614035 0.565789 0.653509 0.605263 0.570175 \n", + "\n", + " SVM Logistic Regression \n", + "0 0.745614 0.649123 " + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_train_comparaison_df" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [], + "source": [ + "Choix_Stacking=['RandomForest','ExtraTrees','AdaBoost','GradientBoost']" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "x_stack_train =premieres_predictions_train[Choix_Stacking].values\n", + "x_stack_test = premieres_predictions_test[Choix_Stacking].values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### GradientBoosting Stack" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "GBC_stck=GradientBoostingClassifier()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "GBC_stck.fit(x_stack_train,y_train)\n", + "y_test_GBC_stack=GBC_stck.predict(x_stack_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.07649079, 0.10705214, 0.70663434, 0.10982274])" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GBC_stck.feature_importances_" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.6862745098039216\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "GBC_stack_accu=metrics.accuracy_score(y_test,y_test_GBC_stack)\n", + "accu_comparaison['Gradient Boosting Stacked']=GBC_stack_accu\n", + "print(GBC_stack_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.68 0.88 0.76 59\n", + " 1 0.72 0.42 0.53 43\n", + "\n", + " micro avg 0.69 0.69 0.69 102\n", + " macro avg 0.70 0.65 0.65 102\n", + "weighted avg 0.69 0.69 0.67 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(y_test,y_test_GBC_stack))" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.PuRd\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Gradient Boost Stacked', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test,y_test_GBC_stack)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Random Forest Stack" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "RF_stck=RandomForestClassifier()" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [], + "source": [ + "RF_stck.fit(x_stack_train,y_train)\n", + "y_test_RF_stack=RF_stck.predict(x_stack_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.21931412, 0.20629733, 0.42478048, 0.14960807])" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "RF_stck.feature_importances_" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy :\n", + "0.6862745098039216\n" + ] + } + ], + "source": [ + "print(\"Accuracy :\")\n", + "RF_stack_accu=metrics.accuracy_score(y_test,y_test_RF_stack)\n", + "accu_comparaison['Random Forest Stacked']=RF_stack_accu\n", + "print(RF_stack_accu)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 0 0.68 0.88 0.76 59\n", + " 1 0.72 0.42 0.53 43\n", + "\n", + " micro avg 0.69 0.69 0.69 102\n", + " macro avg 0.70 0.65 0.65 102\n", + "weighted avg 0.69 0.69 0.67 102\n", + "\n" + ] + } + ], + "source": [ + "print(metrics.classification_report(y_test,y_test_RF_stack))" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colormap = plt.cm.PuRd\n", + "plt.figure(figsize=(7,6))\n", + "plt.title('Matrice de confusion Proba Random Forest Stacked', y=1.05, size=15)\n", + "sns.heatmap(confusion_matrix(y_test,y_test_RF_stack)/ntest,linewidths=0.1, \n", + " square=True, cmap=colormap, linecolor='white', annot=True,\n", + " vmin=0, vmax=0.6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparaison Résultats" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Random Forest': 0.6764705882352942,\n", + " 'Extra Tree': 0.6666666666666666,\n", + " 'Ada Boost': 0.5686274509803921,\n", + " 'Gradient Boost': 0.6274509803921569,\n", + " 'Neural Network': 0.5784313707959419,\n", + " 'SVM': 0.6274509803921569,\n", + " 'Logistic Regression': 0.5784313725490197,\n", + " 'Gradient Boosting Stacked': 0.6862745098039216,\n", + " 'Random Forest Stacked': 0.6862745098039216}" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_comparaison" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "accu_comparaison_df=pd.DataFrame(accu_comparaison,index=[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([6, 5, 0, 3, 1, 4, 2, 7, 8], dtype=int64)" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "index_asc=accu_comparaison_df.values.ravel().argsort().argsort()\n", + "index_asc" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(7,6))\n", + "plt.title('Comparing performances : Accuracy on test set', y=1.05, size=20)\n", + "sns.barplot(accu_comparaison_df.values.ravel(),\n", + " accu_comparaison_df.columns,\n", + " palette=np.array((sns.color_palette(\"Reds\", n_colors=len(index_asc))))[list(index_asc)])" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Random ForestExtra TreeAda BoostGradient BoostNeural NetworkSVMLogistic RegressionGradient Boosting StackedRandom Forest Stacked
00.6764710.6666670.5686270.6274510.5784310.6274510.5784310.6862750.686275
\n", + "
" + ], + "text/plain": [ + " Random Forest Extra Tree Ada Boost Gradient Boost Neural Network \\\n", + "0 0.676471 0.666667 0.568627 0.627451 0.578431 \n", + "\n", + " SVM Logistic Regression Gradient Boosting Stacked \\\n", + "0 0.627451 0.578431 0.686275 \n", + "\n", + " Random Forest Stacked \n", + "0 0.686275 " + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "accu_comparaison_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.8" + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "position": { + "height": "650px", + "left": "574.924px", + "right": "20px", + "top": "65.9848px", + "width": "690px" + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/transplant/data/learningset.py b/transplant/data/learningset.py index b84f798..0ca8895 100644 --- a/transplant/data/learningset.py +++ b/transplant/data/learningset.py @@ -130,8 +130,8 @@ def get_data_merged_dynamic_flatten_full(self, target_format="cls", centered_red test_dynamic_0 = test_dynamic_0.fillna(0) def add_start_end_length_op_to_static(X_stat, X_dyn): - X_dyn.index.names=['index',None] - X_stat.index.names=['index'] + #X_dyn.index.names=['index',None] + #X_stat.index.names=['index'] grouped_time = X_dyn.groupby(['id_patient'])['time'] time_start_df = grouped_time.first().to_frame()