{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "yivcdyf68Bd9"
      },
      "source": [
        "\n",
        "# **TPRSM1 - REGRESSION LOGISTIQUE 2026-2027 SUR LES IRIS DE FISHER**"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Première partie du TP où l'on s'entraîne sur la base de données des iris de Fisher. Elle est constituée de $n=150$ fleurs caractérisées par la longueur et la largeur des sépales, la longueur et la largeur des pétales (en cm). Les trois classes d'iris sont setosa, virginica, versicolor.\n",
        "On veut effectuer une classification à partir des deux premières caractéristiques (largeur et longueur des sépales)."
      ],
      "metadata": {
        "id": "6o94lepLQxxV"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Librairies l'environnement\n",
        "%matplotlib inline\n",
        "!pip install pandas\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import statsmodels.api as sm\n",
        "import seaborn as sns\n",
        "import pandas as pd\n",
        "from sklearn import datasets\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.datasets import load_iris\n",
        "from sklearn.preprocessing import LabelBinarizer\n",
        "from scipy.stats import chi2\n",
        "from scipy import stats"
      ],
      "metadata": {
        "collapsed": true,
        "id": "L06Kv1wJ-__h"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "On commence par effectuer quelques statistiques descriptives et visualisations des données. Le dataset est stocké sous la forme d'un dictionnaire qui contient des attributs. iris.data contient la matrices des données de taille 150x4, iris.target le vecteur des classes de dimension 150, iris.feature_names le nom des variables explicatives et iris.target_names le nom des trois espèces. $X_i\\in\\mathbb{R}^4$, $Y_i=0,1,2$."
      ],
      "metadata": {
        "id": "kePyCxG4bWFL"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Chargement de base de données iris\n",
        "iris = datasets.load_iris()"
      ],
      "metadata": {
        "id": "gLJKtUfZ-7W0"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "print(iris.keys())"
      ],
      "metadata": {
        "id": "dRgIgWSA89RZ"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# A quoi ressemble les 5 premières lignes de la matrice de données ?\n",
        "iris.data[:5]"
      ],
      "metadata": {
        "id": "eZLXcN2xcrJP",
        "collapsed": true
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "type(iris.data)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "collapsed": true,
        "id": "gNTGD3cP_5rm",
        "outputId": "d66f9601-77f5-4a4f-be1d-83ea728d5590"
      },
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "numpy.ndarray"
            ]
          },
          "metadata": {},
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "1JnU4OIySJf3",
        "collapsed": true
      },
      "outputs": [],
      "source": [
        "# Affichage de chacune des 3 classes selon deux dimensions (les 2 premières variables sur 4)\n",
        "_, ax = plt.subplots()\n",
        "scatter = ax.scatter(iris.data[:, 0], iris.data[:, 1], c=iris.target)\n",
        "ax.set(xlabel=iris.feature_names[0], ylabel=iris.feature_names[1])\n",
        "_ = ax.legend(scatter.legend_elements()[0], iris.target_names, loc=\"lower right\", title=\"Classes\")"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Setosa est facilement identifiable à cause de ses pétales. Les deux autres sont un peu plus mélangées. On convertit sous la forme d'un dataframe (équivalent d'un tableau excel à deux dimensions, hétérogène, bien plus pratique pour manipuler les données."
      ],
      "metadata": {
        "id": "BbYM6g7T96GV"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Quelques statistiques descriptives.\n",
        "# On commence par transformer iris en un dataframe appelé dfiris.\n",
        "# Il va contenir 6 colonnes : 4 pour les variables, 1 pour le numéro d'espèce et 1 pour le nom de l'espèce.\n",
        "dfiris = pd.DataFrame(data=np.c_[iris['data'], iris['target']],columns= iris['feature_names'] + ['target']).astype({'target': int}) \\\n",
        "       .assign(species=lambda x: x['target'].map(dict(enumerate(iris['target_names']))))\n",
        "dfiris.info()\n",
        "print(dfiris.shape)\n",
        "list(iris.target_names)\n",
        "print(dfiris.shape)\n",
        "# Effectif de chaque classe.\n",
        "print(dfiris['species'].value_counts())\n",
        "sns.countplot(dfiris['species'])"
      ],
      "metadata": {
        "id": "ZZ41QdoYTJ1q",
        "collapsed": true
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "dfiris.head()"
      ],
      "metadata": {
        "id": "MpvdgGCU-Ywr"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# Matrice de corrélation entre les variables.\n",
        "plt.figure(figsize=(8,4))\n",
        "sns.heatmap(dfiris.drop('species', axis=1).corr(),annot=True,fmt=\".0%\")\n",
        "plt.show()"
      ],
      "metadata": {
        "id": "sbQPAmIeT4yf",
        "collapsed": true
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# On effectue une ACP pour visualiser autrement le nuage de dimension 4.\n",
        "from sklearn.decomposition import PCA\n",
        "fig = plt.figure(1, figsize=(8, 6))\n",
        "ax = fig.add_subplot(111, projection=\"3d\", elev=-150, azim=110)\n",
        "X_reduced = PCA(n_components=3).fit_transform(iris.data)\n",
        "ax.scatter(X_reduced[:, 0],X_reduced[:, 1],X_reduced[:, 2],c=iris.target,s=40,)\n",
        "ax.set_title(\"ACP en 3 dimensions\")\n",
        "ax.set_xlabel(\"1er vecteur propre\")\n",
        "ax.xaxis.set_ticklabels([])\n",
        "ax.set_ylabel(\"2e vecteur propre\")\n",
        "ax.yaxis.set_ticklabels([])\n",
        "ax.set_zlabel(\"3e vecteur propre\")\n",
        "ax.zaxis.set_ticklabels([])\n",
        "plt.show()"
      ],
      "metadata": {
        "id": "Y_l7LKckWA7s",
        "collapsed": true
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "5iYvIICAB2as",
        "collapsed": true
      },
      "outputs": [],
      "source": [
        "iris = sns.load_dataset(\"iris\")\n",
        "# sns.pairplot trace le nuage selon toutes les paires de dimensions possibles.\n",
        "# Sur la diagonale, on trouve l'histogramme des valeurs de la variable considérée,\n",
        "# pour chaque classe.\n",
        "sns.pairplot(iris, hue=\"species\")"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "Sur la diagonale, on voit la distribution empirique des trois espèces selon les caractéristiques choisies, puis hors diagonale, la répartition des données. Trois observations importantes :\n",
        "\n",
        "1. Iris setosa est facilement séparable des deux autres espèces grâce aux dimensions de ses pétales.\n",
        "2. Iris versicolor et Iris virginica sont moins facilement séparables, car leurs caractéristiques se chevauchent.\n",
        "3. La longueur et la largeur des pétales sont fortement corrélées : les fleurs ayant de longs pétales ont généralement des pétales plus larges.\n",
        "\n",
        "Ce graphique permet d'explorer les données avant de construire un modèle de classification, par exemple une régression logistique ou un algorithme k-NN."
      ],
      "metadata": {
        "id": "B0sq4qlo_jQE"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Régression logistique binaire effectuée en fusionnant deux des trois espèces."
      ],
      "metadata": {
        "id": "ArJ2-dyOq-Uz"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "zxj8j20JxdWf",
        "collapsed": true
      },
      "outputs": [],
      "source": [
        "# Exemple de régression logistique sur une variable qualitative binaire\n",
        "# Chargement de base de données iris\n",
        "iris = datasets.load_iris()\n",
        "# Choix de deux variables parmi les quatre:\n",
        "# on utilise les deux premières colonnes.\n",
        "X = iris.data[:, 0:2] # Longueur et largeur du sépale.\n",
        "## X = iris.data[:, 2:4] # Longueur et largeur du pétale.\n",
        "# Re-étiquetage des fleurs (on fusionne les classes 1 et 2)\n",
        "y = (iris.target != 0) * 1 # 0 si Setosa, 1 si Versicolor ou Virginica\n",
        "#y = (iris.target != 2).astype(int) # 0 si Virginica, 1 si Versicolor ou Setosa\n",
        "# Visualisation des données\n",
        "plt.figure(figsize=(10, 6))\n",
        "plt.scatter(X[y == 0][:, 0], X[y == 0][:, 1], color='g', label='0')\n",
        "plt.scatter(X[y == 1][:, 0], X[y == 1][:, 1], color='y', label='1')\n",
        "plt.legend();\n",
        "# Construction d'un objet \"régression logistique\"\n",
        "model = LogisticRegression()\n",
        "# Entrainement du modèle sur les données\n",
        "model.fit(X, y)\n",
        "# On veut prédire les classes de 4 points du nuage\n",
        "testpred = [[5.5, 2.5],[7, 3],[3,2],[5,3]]\n",
        "ypred = model.predict(testpred)\n",
        "print(ypred)"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "L'instruction iris.data[:, 0:2] sélectionne toutes les lignes (:), mais uniquement les colonnes 0 et 1 (0:2, la borne supérieure étant exclue).\n",
        "On conserve ainsi :\n",
        "\n",
        "- $X_1$ : longueur du sépale, en centimètres ;\n",
        "- $X_2$ : largeur du sépale, en centimètres.\n",
        "\n",
        "La matrice explicative est donc $X\\in\\mathbb R^{150\\times 2}$. Chaque ligne $X_i=(x_{i1},x_{i2})$ correspond à une fleur, représentée par un point du plan.\n",
        "\n",
        "L'expression iris.target != 0 crée un tableau de booléens :\n",
        "\n",
        "- False si l'espèce est Setosa ;\n",
        "- True dans les deux autres cas.\n",
        "\n",
        "La multiplication par 1 transforme False en 0 et True en 1.\n",
        "On obtient donc une variable réponse binaire :\n",
        "$Y_i=\n",
        "\\begin{cases}\n",
        "0 & \\text{si la fleur est Setosa},\\\\\n",
        "1 & \\text{sinon}.\n",
        "\\end{cases}\n",
        "$\n",
        "\n",
        "L'instruction X[y == 0] sélectionne uniquement les observations dont l'étiquette est 0. Ensuite, [:, 0] récupère leurs abscisses et [:, 1] leurs ordonnées.\n",
        "\n",
        "La première instruction crée un modèle de régression logistique.\n",
        "La seconde, model.fit(X, y), entraîne le modèle sur les 150 observations dont les classes sont connues.\n",
        "Mathématiquement, la régression logistique suppose que :\n",
        "\n",
        "$P[Y=1\\mid X=x]=\\frac{1}{1+\\exp(-(\\beta_0+\\beta_1x_1+\\beta_2x_2))}$\n",
        "\n",
        "où $\\beta_0,\\beta_1,\\beta_2$ sont les coefficients inconnus du modèle.\n",
        "Ces coefficients sont estimés à partir des données, par optimisation de la log-vraisemblance pénalisée avec les paramètres par défaut de scikit-learn.\n",
        "\n",
        "On peut aussi demander au modèle les probabilités de chaque classe :"
      ],
      "metadata": {
        "id": "1bJ-UeDFAFSi"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(model.predict_proba(testpred))"
      ],
      "metadata": {
        "id": "-xQgnu91BTOK"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4ff6e48a"
      },
      "source": [
        "# Construction d'un tableau récapitulatif du modèle\n",
        "lr = sm.Logit(y, sm.add_constant(X)).fit(disp=False)\n",
        "result = zip(['(Intercept)'] + list(iris.feature_names), lr.params, lr.bse, lr.tvalues)\n",
        "print('               Coefficient   Std. Error   Z Score')\n",
        "print('-------------------------------------------------')\n",
        "for term, coefficient, std_err, z_score in result:\n",
        "    print(f'{term:>12}{coefficient:>14.3f}{std_err:>13.3f}{z_score:>10.3f}')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Le problème vient d'un phénomène de séparation complète ou quasi complète.\n",
        "Lorsque les deux classes peuvent être séparées par une droite, le modèle logistique non régularisé peut augmenter indéfiniment la vraisemblance en faisant croître la norme des coefficients."
      ],
      "metadata": {
        "id": "lJPoDODPCCyc"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(lr.summary())"
      ],
      "metadata": {
        "id": "lcU--k6C1OES",
        "collapsed": true
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "1. La statistique z :\n",
        "elle mesure combien d'erreurs standards séparent le coefficient estimé de zéro :\n",
        "$z_j=\\widehat{\\beta}_j/\\widehat{\\mathrm{se}}(\\widehat{\\beta}_j)$\n",
        "\n",
        "Elle sert à tester les hypothèses :\n",
        "\n",
        "$H_0:\\beta_j=0\\ \\text{contre}\\ H_1:\\beta_j\\neq 0.$\n",
        "\n",
        "Par exemple, si $\\widehat\\beta_j=2$ et que son erreur standard vaut $0{,}5$, alors : $z_j=\\frac{2}{0{,}5}=4$.\n",
        "\n",
        "Le coefficient estimé est donc situé à quatre erreurs standards de zéro.\n",
        "\n",
        "2. La colonne $\\mathbb{P}>|z|$ :\n",
        "\n",
        "C'est la p-valeur qui mesure, sous l'hypothèse $H_0$, la probabilité d'obtenir une statistique de test au moins aussi extrême, en valeur absolue, que celle observée. Sous les hypothèses usuelles de régularité, la statistique de Wald suit approximativement une loi normale centrée réduite sous $H_0$."
      ],
      "metadata": {
        "id": "aqVrb6AMEIbp"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Cas de la fusion des deux premières classes. Analyse de la régression.**\n",
        "\n",
        "1. Interprétation des coefficients. Le signe des coefficients indique, toutes choses égales par ailleurs, le sens de l'association entre chaque variable explicative et la probabilité d'appartenir à la classe codée (1). Un coefficient positif indique que cette probabilité augmente avec la variable considérée, tandis qu'un coefficient négatif indique qu'elle diminue. Ici, les signes suggèrent :\n",
        "- Longueur du sépale : effet positif (plus la longueur augmente, plus la probabilité d'appartenir à une classe augmente).\n",
        "- Largeur du sépale : effet négatif.\n",
        "Mais ces indications sont peu fiables ici car…\n",
        "\n",
        "2. Problème : erreurs écarts types gigantesques. Les écarts types sont de l'ordre de $10^5$, alors que les coefficients sont de l'ordre de $10^2$. Cela donne des Z-valeurs nulles, donc aucune variable n'est significativement différente de 0. Le modèle n'arrive pas à estimer correctement les coefficients.\n",
        "\n",
        "3. Explications : c'est une situation caractéristique de la séparation parfaite ou quasi-parfaite : une variable (ou une combinaison) sépare parfaitement les classes. Dans ce cas, la régression logistique ne converge pas car l'estimateur du max de vraisemblance tend vers l'infini en cas de séparation parfaite (l'estimation asymptotique standard n'est plus fiable). Dans le jeu de données Iris, ce phénomène peut notamment apparaître lorsque l'on oppose l'espèce Setosa aux deux autres espèces. Les mesures des pétales, en particulier, permettent une séparation très nette de ces deux groupes.\n",
        "\n",
        "Dans le jeu de données iris, si l'on regroupe deux espèces et l'on compare contre la troisième, il y a souvent une séparation nette sur certaines variables (par exemples les pétales).\n",
        "\n",
        "En l'état, le modèle n'est pas interprétable : les estimations sont instables.\n",
        "\n",
        "4. Que faire ? Il vérifier et/ou changer les variables utilisées : les pétales (longueur/largeur) sont beaucoup plus discriminants que les sépales.\n"
      ],
      "metadata": {
        "id": "SQ3r35tj_hUw"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "\n",
        "\n",
        "**Cas de la fusion Setosa et Versicolor versus Virginica. Analyse de la régression.**\n",
        "\n",
        "1. Qualité globale du modèle.\n",
        "\n",
        "- Pseudo R² = 0.3931. Cela indique ici une amélioration substantielle du modèle par rapport au modèle nul. Mais on ne peut pas dire que le modèle explique 39 % de la variance, car ce n'est pas le $R^2$ classique de la régression linéaire.\n",
        "\n",
        "- LLR p-value = $5.10^{-17}$. Le modèle global est très significatif (au moins une variable explicative est utile). Le test compare $H_0: \\beta_1=\\beta_2=0$ au modèle comportant deux variables. La très petite $p$-valeur conduit à rejeter $H_0$: au moins une des deux variables apporte de l'information pour expliquer $Y$.\n",
        "\n",
        "2. Interprétation des coefficients :\n",
        "\n",
        "- $x_1$\tcoef: -2.60\tp-valeur < 0.001.\tTrès significatif. Quand $x_1$ augmente d'une unité (1cm), le log-odds de la classe y=1 diminue de 2.6. Autrement dit, $x_1$ est fortement négatif : plus $x_1$ est grand, moins l'observation a de chances d'être dans la classe.\n",
        "\n",
        "- $x_2$\tcoef: +0.75\tp-valeur: 0.245.\tNon significatif (p > 0.05). L'effet estimé est positif, mais l'intervalle de confiance contient 0 donc pas de preuve d'un effet réel.\n",
        "\n",
        "3. En termes de probabilités :\n",
        "\n",
        "- Pour $x_1$ : Odds ratio = exp(-2.6025) ≈ 0.074.\n",
        "Une augmentation de 1 unité de x1 réduit les odds de la classe y=1 d'environ 92.6 % $(0.926=1-0.074)$.\n",
        "\n",
        "- Pour $x_2$ : Odds ratio = exp(0.7458) ≈ 2.11. Comme la $p$-valeur est non significative, on ne peut pas conclure qu'il influence réellement l'appartenance à la classe. L'intervalle de confiance du coefficient contient zéro ; on ne peut donc pas conclure que la largeur du sépale exerce un effet propre sur l'appartenance à la classe $Y=1$, une fois la longueur du sépale prise en compte."
      ],
      "metadata": {
        "id": "60avju0cAo4u"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Quelques mots sur la p-valeur....\n",
        "\n",
        "La p-valeur est une notion fondamentale des tests statistiques. On peut en donner plusieurs définitions équivalentes, allant de la plus intuitive à la plus rigoureuse.\n",
        "\n",
        "1. Définition intuitive\n",
        "\n",
        "La p-valeur mesure à quel point les données observées sont surprenantes si l'hypothèse nulle $H_0$ est vraie.\n",
        "- Une p-valeur faible signifie que les observations sont peu compatibles avec $H_0$, au regard de la statistique de test choisie.\n",
        "- Une p-valeur élevée signifie que les observations ne fournissent pas suffisamment d'éléments pour rejeter $H_0$.\n",
        "Attention : une grande p-valeur ne prouve pas que $H_0$ est vraie.\n",
        "\n",
        "2. Définition probabiliste\n",
        "Soit $T(X)$ une statistique de test, calculée sur l'échantillon $X$, et $t$ sa valeur observée. Dans le cas d'un test unilatéral à droite, si la distribution de $T$ sous $H_0$ est entièrement spécifiée, la p-valeur est :\n",
        "$p=P_{H_0}\\left(T(X)\\geq t\\right)$\n",
        "\n",
        "C'est donc la probabilité, en supposant $H_0$ vraie, d'obtenir une statistique au moins aussi grande que celle observée. Cette dernière expression dépend du choix de la statistique et de la définition des valeurs « au moins aussi extrêmes ». Elle n'est donc pas la formule universelle de tous les tests bilatéraux.\n",
        "\n",
        "3. Définition à partir du niveau de significativité\n",
        "\n",
        "Une autre définition est : La p-valeur est le plus petit niveau de significativité $\\alpha$ pour lequel le test rejetterait $H_0$, compte tenu des observations. Par exemple, si $p=0{,}03$ :\n",
        "\n",
        "- Au seuil $\\alpha=5\\%$, on rejette $H_0$.\n",
        "- Au seuil $\\alpha=1\\%$, on ne rejette pas $H_0$.\n",
        "\n",
        "Cette définition suppose une famille cohérente de tests dont les régions de rejet sont emboîtées lorsque $\\alpha$ augmente.\n",
        "\n",
        "4. Exemple : test de Wald dans une régression logistique. On souhaite tester :\n",
        "\n",
        "$H_0:\\beta_j=0\\ \\text{contre}\\ H_1:\\beta_j\\neq0.$\n",
        "\n",
        "La statistique de Wald est :\n",
        "\n",
        "$Z_j=\\widehat\\beta_j/\\widehat{\\mathrm{se}}(\\widehat\\beta_j)$\n",
        "\n",
        "Sous $H_0$ et les conditions asymptotiques habituelles $Z_j\\overset{\\mathcal D}{\\rightsquigarrow}\\mathcal N(0,1)$.\n",
        "\n",
        "Si on observe $z=2{,}5$, alors\n",
        "\n",
        "$\\begin{aligned}\n",
        "p&=\\mathbb{P}[|Z|\\geq 2{,}5]=2\\bigl(1-\\Phi(2{,}5)\\bigr)\\approx 0{,}0124.\n",
        "\\end{aligned}\n",
        "$\n",
        "\n",
        "On rejette donc $H_0$ au seuil de 5 %, mais pas au seuil de 1 %.\n",
        "\n",
        "5. Ce que la p-valeur ne signifie pas. Il faut distinguer les affirmations suivantes : Affirmation\tCorrecte ?\n",
        "\n",
        "- La p-valeur est calculée sous l'hypothèse $H_0$.\tOui\n",
        "- Une faible p-valeur fournit des éléments contre $H_0$.\tOui\n",
        "- La p-valeur est la probabilité que $H_0$ soit vraie.\tNon\n",
        "- Une p-valeur élevée prouve que $H_0$ est vraie.\tNon\n",
        "- Une faible p-valeur signifie que l'effet observé est important en pratique.\tNon\n",
        "- Une p-valeur de 0,03 implique un rejet au seuil de 5 %.\tOui, pour le test considéré\n",
        "\n",
        "6. Définition mathématique plus générale pour un test d'hypothèse nulle composite $H_0:\\theta\\in\\Theta_0$, on peut définir une p-valeur valide comme une statistique $p(X)\\in[0,1]$ vérifiant :\n",
        "\n",
        "$$\n",
        "\\forall\\theta\\in\\Theta_0,\\quad\n",
        "\\forall\\alpha\\in[0,1],\\qquad\n",
        "P_\\theta(p(X)\\leq\\alpha)\\leq\\alpha.\n",
        "$$\n",
        "\n",
        "Cette propriété garantit que le test qui rejette $H_0$ lorsque $p(X)\\leq\\alpha$ est de niveau au plus $\\alpha$. Dans le cas d'un test continu exact sous une hypothèse nulle simple, la p-valeur suit une loi uniforme sur $[0,1]$ sous $H_0$.\n"
      ],
      "metadata": {
        "id": "HJU9E-t6FMzA"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Régression logistiquepolytomique et prévision de 5 valeurs. Les données d'entrainement corerspondent à 25% de la base et on régresse ici sur toutes les variables."
      ],
      "metadata": {
        "id": "Yy2VatvAqrWq"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "X_train, X_test, Y_train, Y_test = train_test_split(iris.data, iris.target, test_size=0.25,random_state=0)\n",
        "LogR=LogisticRegression()\n",
        "LogR.fit(X_train, Y_train)\n",
        "ypred=LogR.predict(X_test)\n",
        "print(\"Train Shape\",X_train.shape)\n",
        "print(\"Test Shape\",X_test.shape)\n",
        "# Prévision de 5 valeurs.\n",
        "print (ypred [0:5])\n",
        "print (Y_test [0:5])"
      ],
      "metadata": {
        "id": "IW2SKNlwqc_U",
        "collapsed": true
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Le modèle estime des probabilités de la forme\n",
        "\n",
        "$$\n",
        "\\mathbb{P}[Y=k\\mid X=x]=\\frac{\\exp(\\beta_{k0}+\\beta_k^\\top x)}{\\displaystyle\\sum_{j=0}^{2}\n",
        "\\exp(\\beta_{j0}+\\beta_j^\\top x)},\\ k=0,1,2.\n",
        "$$\n",
        "\n",
        "La classe prédite est celle qui possède la probabilité estimée la plus élevée."
      ],
      "metadata": {
        "id": "uflobzn3K_PR"
      }
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "64328495"
      },
      "source": [
        "from sklearn.preprocessing import StandardScaler\n",
        "# Mise à l'échelle\n",
        "scaler = StandardScaler()\n",
        "X_scaled = scaler.fit_transform(iris.data[:, 0:4])\n",
        "y = iris.target\n",
        "# Ajout d'une constante\n",
        "X_scaled = sm.add_constant(X_scaled, prepend=False)\n",
        "# Apprentissage des coefficients de la régression multinomiale.\n",
        "mnl_scaled = sm.MNLogit(y, X_scaled).fit(disp=False)\n",
        "# Résumé et résultats.\n",
        "print(mnl_scaled.summary())"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Ce code réalise une régression logistique multinomiale sur le dataset Iris, après avoir standardisé les quatre variables explicatives.\n",
        "Il comporte trois étapes principales : la standardisation des variables, l'estimation des coefficients du modèle multinomial et l'affichage des résultats statistiques.\n",
        "Contrairement à l'exemple précédent de régression logistique binaire, on cherche ici à distinguer les trois espèces d'iris simultanément."
      ],
      "metadata": {
        "id": "bQZHfRW1L0Rv"
      }
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "PzFlyeVuCg8w",
        "collapsed": true
      },
      "outputs": [],
      "source": [
        "# Qualité de la régression (vite fait)\n",
        "from sklearn import metrics\n",
        "print('Performance:', metrics.accuracy_score(Y_test, ypred)* 100,'%')\n",
        "from sklearn.metrics import classification_report\n",
        "print(classification_report(Y_test, ypred))\n",
        "print('Taux de réussite:',metrics.accuracy_score(ypred,Y_test))\n"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Analyse de la régression.**\n",
        "\n",
        "- Performance (taux d'accuracy) : 97.4%.\n",
        "- Classe 0 (Setosa) : parfaitement distinguée. Setosa est très différente des deux autres (pétales courts et étroits).\n",
        "- Classe 1 (Versicolor) : un peu de confusion. recall = 0.94 signifie qu'une petite fraction de versicolor a été classée ailleurs (probablement en virginica).\n",
        "- Classe 2 (Virginica) : recall parfait (1.00), mais précision = 0.90. Quelques versicolor ont été classées à tort comme virginica.\n"
      ],
      "metadata": {
        "id": "TpzcTAj8CScK"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import confusion_matrix\n",
        "cm = confusion_matrix(Y_test, ypred)\n",
        "print(cm)\n",
        "ax = plt.axes()\n",
        "df_cm = cm\n",
        "sns.heatmap(df_cm, annot=True, annot_kws={\"size\": 30}, fmt='d',cmap=\"Blues\", ax = ax )\n",
        "ax.set_title('Matrice de confusion')\n",
        "plt.show()"
      ],
      "metadata": {
        "id": "y_pvUNwBU1gU",
        "collapsed": true
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "af91c90d"
      },
      "source": [
        "print(lr.summary())"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Propositions de Chat-GPT"
      ],
      "metadata": {
        "id": "3v4qEfIwDAk-"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Multinomial Logistic Regression (sklearn) sur Iris ===\n",
        "from sklearn.datasets import load_iris\n",
        "from sklearn.preprocessing import StandardScaler\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.pipeline import Pipeline\n",
        "from sklearn.metrics import classification_report, confusion_matrix\n",
        "from sklearn.model_selection import cross_val_score, StratifiedKFold\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "# Données\n",
        "iris = load_iris()\n",
        "X = iris.data              # 4 variables (sepal length/width, petal length/width)\n",
        "y = iris.target            # 0=setosa, 1=versicolor, 2=virginica\n",
        "feature_names = iris.feature_names\n",
        "class_names = iris.target_names\n",
        "# Pipeline : standardisation + régression logistique multinomiale pénalisée (L2)\n",
        "pipe = Pipeline(steps=[\n",
        "    (\"scaler\", StandardScaler()),\n",
        "    (\"logreg\", LogisticRegression(\n",
        "        multi_class=\"multinomial\",\n",
        "        solver=\"lbfgs\",\n",
        "        penalty=\"l2\",        # régularisation ridge par défaut\n",
        "        C=1.0,               # force de régularisation\n",
        "        max_iter=2000,\n",
        "        n_jobs=None,\n",
        "        random_state=42\n",
        "    ))\n",
        "])\n",
        "# Entraînement sur toutes les données\n",
        "pipe.fit(X, y)\n",
        "# Evaluation simple (sur le même jeu — pour démo)\n",
        "y_pred = pipe.predict(X)\n",
        "print(\"=== Rapport de classification (in-sample) ===\")\n",
        "print(classification_report(y, y_pred, target_names=class_names))\n",
        "print(\"Matrice de confusion :\")\n",
        "print(confusion_matrix(y, y_pred))\n",
        "# Validation croisée stratifiée (plus réaliste)\n",
        "cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)\n",
        "cv_scores = cross_val_score(pipe, X, y, cv=cv, scoring=\"accuracy\")\n",
        "print(\"\\n=== Validation croisée (5-fold) ===\")\n",
        "print(f\"Accuracy (moyenne ± écart-type) : {cv_scores.mean():.3f} ± {cv_scores.std():.3f}\")\n",
        "# Interprétation des coefficients (par classe)\n",
        "# On relance l'apprentissage pour récupérer les coefs déjà mis à l'échelle\n",
        "pipe.fit(X, y)\n",
        "logreg = pipe.named_steps[\"logreg\"]\n",
        "# Forme des coefficients : (n_classes, n_features)\n",
        "coefs = pd.DataFrame(logreg.coef_, columns=feature_names, index=class_names)\n",
        "odds_ratios = np.exp(coefs)\n",
        "print(\"Coefficients (log-odds) par classe de référence one-vs-rest multinomial\")\n",
        "print(coefs.round(3))\n",
        "print(\"Odds Ratios (exp(coef))\")\n",
        "print(odds_ratios.round(3))"
      ],
      "metadata": {
        "collapsed": true,
        "id": "47HSWvzAUluo"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# Matrice de confusion, coefficients (OR) et courbe ROC\n",
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "from sklearn.datasets import load_iris\n",
        "from sklearn.preprocessing import StandardScaler, label_binarize\n",
        "from sklearn.pipeline import Pipeline\n",
        "from sklearn.linear_model import LogisticRegression\n",
        "from sklearn.metrics import confusion_matrix, classification_report, roc_curve, auc\n",
        "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
        "\n",
        "iris = load_iris()\n",
        "X = iris.data\n",
        "y = iris.target\n",
        "feature_names = iris.feature_names\n",
        "class_names = iris.target_names\n",
        "pipe = Pipeline([\n",
        "    (\"scaler\", StandardScaler()),\n",
        "    (\"logreg\", LogisticRegression(multi_class=\"multinomial\", solver=\"lbfgs\", penalty=\"l2\", C=1.0, max_iter=2000, random_state=42))\n",
        "])\n",
        "pipe.fit(X, y)\n",
        "y_pred = pipe.predict(X)\n",
        "y_proba = pipe.predict_proba(X)\n",
        "\n",
        "# Classification et matrice de confusion\n",
        "report = classification_report(y, y_pred, target_names=class_names, output_dict=True)\n",
        "report_df = pd.DataFrame(report).transpose()\n",
        "print(\"Classification Report (in-sample)\")\n",
        "display(report_df)\n",
        "cm = confusion_matrix(y, y_pred)\n",
        "\n",
        "# Matrice de confusion\n",
        "fig = plt.figure()\n",
        "plt.imshow(cm, interpolation='nearest')\n",
        "plt.title('Confusion Matrix (in-sample)')\n",
        "plt.xlabel('Predicted label')\n",
        "plt.ylabel('True label')\n",
        "plt.xticks(ticks=np.arange(len(class_names)), labels=class_names, rotation=45, ha='right')\n",
        "plt.yticks(ticks=np.arange(len(class_names)), labels=class_names)\n",
        "for i in range(cm.shape[0]):\n",
        "    for j in range(cm.shape[1]):\n",
        "        plt.text(j, i, cm[i, j], ha=\"center\", va=\"center\")\n",
        "plt.tight_layout()\n",
        "plt.show()\n",
        "\n",
        "# Coefficients et Odds Ratios\n",
        "logreg = pipe.named_steps[\"logreg\"]\n",
        "coefs = pd.DataFrame(logreg.coef_, columns=feature_names, index=class_names)\n",
        "odds_ratios = np.exp(coefs)\n",
        "print(\"Coefficients (log-odds) by class\")\n",
        "display(coefs.round(3))\n",
        "print(\"Odds Ratios (exp(coef)) by class\")\n",
        "display(odds_ratios.round(3))\n",
        "\n",
        "for cls_idx, cls_name in enumerate(class_names):\n",
        "    fig = plt.figure()\n",
        "    values = odds_ratios.loc[cls_name].values\n",
        "    x = np.arange(len(feature_names))\n",
        "    plt.bar(x, values)\n",
        "    plt.title(f'Odds Ratios for class: {cls_name}')\n",
        "    plt.xticks(ticks=x, labels=feature_names, rotation=45, ha='right')\n",
        "    plt.ylabel('Odds Ratio')\n",
        "    plt.tight_layout()\n",
        "    plt.show()\n",
        "\n",
        "# 5) ROC\n",
        "y_bin = label_binarize(y, classes=np.arange(len(class_names)))\n",
        "fpr = dict()\n",
        "tpr = dict()\n",
        "roc_auc = dict()\n",
        "for i in range(len(class_names)):\n",
        "    fpr[i], tpr[i], _ = roc_curve(y_bin[:, i], y_proba[:, i])\n",
        "    roc_auc[i] = auc(fpr[i], tpr[i])\n",
        "\n",
        "fpr[\"micro\"], tpr[\"micro\"], _ = roc_curve(y_bin.ravel(), y_proba.ravel())\n",
        "roc_auc[\"micro\"] = auc(fpr[\"micro\"], tpr[\"micro\"])\n",
        "\n",
        "roc_auc[\"macro\"] = np.mean([roc_auc[i] for i in range(len(class_names))])\n",
        "\n",
        "# --- Plot 5: ROC curves (all classes one-vs-rest + micro) ---\n",
        "fig = plt.figure()\n",
        "# Individual class ROC curves\n",
        "for i in range(len(class_names)):\n",
        "    plt.plot(fpr[i], tpr[i], label=f'ROC class {class_names[i]} (AUC = {roc_auc[i]:.3f})')\n",
        "# Micro-average\n",
        "plt.plot(fpr[\"micro\"], tpr[\"micro\"], linestyle='--', label=f'micro-average (AUC = {roc_auc[\"micro\"]:.3f})')\n",
        "# Chance line\n",
        "plt.plot([0, 1], [0, 1], linestyle=':')\n",
        "plt.xlabel('False Positive Rate')\n",
        "plt.ylabel('True Positive Rate')\n",
        "plt.title('ROC Curves (One-vs-Rest)')\n",
        "plt.legend(loc='lower right')\n",
        "plt.tight_layout()\n",
        "plt.show()\n",
        "\n",
        "# 6) Cross-validated accuracy for context\n",
        "cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)\n",
        "cv_scores = cross_val_score(pipe, X, y, cv=cv, scoring=\"accuracy\")\n",
        "cv_summary = pd.DataFrame({\"fold\": np.arange(1, 6), \"accuracy\": cv_scores})\n",
        "cv_summary.loc[\"mean\"] = [\"mean\", cv_scores.mean()]\n",
        "cv_summary.loc[\"std\"] = [\"std\", cv_scores.std()]\n",
        "# display_dataframe_to_user(\"5-fold CV Accuracy\", cv_summary) # Replaced with display()\n",
        "print(\"5-fold CV Accuracy\")\n",
        "display(cv_summary)"
      ],
      "metadata": {
        "collapsed": true,
        "id": "yPzr9P6nVwrl"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "Nouvelle proposition de corrigé un an plus tard..."
      ],
      "metadata": {
        "id": "ofVJSERSDKt_"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "# import statsmodels.api as sm # No longer needed for model fitting\n",
        "\n",
        "from sklearn.datasets import load_iris\n",
        "from sklearn.model_selection import train_test_split\n",
        "from sklearn.preprocessing import StandardScaler, label_binarize\n",
        "from sklearn.metrics import (\n",
        "    accuracy_score,\n",
        "    classification_report,\n",
        "    roc_curve,\n",
        "    auc\n",
        ")\n",
        "from sklearn.linear_model import LogisticRegression # Import LogisticRegression\n",
        "from sklearn.pipeline import Pipeline # Useful for chaining scaler and model\n",
        "\n",
        "# ---------------------------------------------------------\n",
        "# 1. Données\n",
        "# ---------------------------------------------------------\n",
        "\n",
        "iris = load_iris()\n",
        "\n",
        "X = iris.data\n",
        "y = iris.target       # 0 = Setosa, 1 = Versicolor, 2 = Virginica\n",
        "\n",
        "# Séparation apprentissage / test\n",
        "X_train, X_test, y_train, y_test = train_test_split(\n",
        "    X, y,\n",
        "    test_size=0.30,\n",
        "    random_state=42,\n",
        "    stratify=y\n",
        ")\n",
        "\n",
        "# ---------------------------------------------------------\n",
        "# 2. Standardisation et Modèle (using Pipeline)\n",
        "# ---------------------------------------------------------\n",
        "\n",
        "# Create a pipeline that first scales the data and then applies Logistic Regression\n",
        "pipe = Pipeline(steps=[\n",
        "    (\"scaler\", StandardScaler()),\n",
        "    (\"logreg\", LogisticRegression(\n",
        "        multi_class=\"multinomial\", # For multinomial logistic regression\n",
        "        solver=\"lbfgs\",            # Good solver for multinomial\n",
        "        penalty=\"l2\",              # Default regularization\n",
        "        C=1.0,                     # Regularization strength\n",
        "        max_iter=2000,             # Increased max_iter for convergence\n",
        "        random_state=42,\n",
        "        n_jobs=-1 # Use all available cores\n",
        "    ))\n",
        "])\n",
        "\n",
        "# Fit the pipeline on the training data\n",
        "pipe.fit(X_train, y_train)\n",
        "\n",
        "# There is no direct equivalent to statsmodels summary with p-values for coefficients in sklearn.\n",
        "# We will skip printing result.summary() but will still get performance metrics.\n",
        "\n",
        "# ---------------------------------------------------------\n",
        "# 3. Probabilités et classes prédites\n",
        "# ---------------------------------------------------------\n",
        "\n",
        "# Predict probabilities on the scaled test set\n",
        "y_prob = pipe.predict_proba(X_test)\n",
        "\n",
        "# Predict classes on the scaled test set\n",
        "y_pred = pipe.predict(X_test)\n",
        "\n",
        "print(\"\\nAccuracy :\", accuracy_score(y_test, y_pred))\n",
        "\n",
        "print(\"\\nRapport de classification :\")\n",
        "print(classification_report(\n",
        "    y_test,\n",
        "    y_pred,\n",
        "    target_names=iris.target_names\n",
        "))\n",
        "\n",
        "# ---------------------------------------------------------\n",
        "# 4. Courbes ROC One-vs-Rest\n",
        "# ---------------------------------------------------------\n",
        "\n",
        "# Transformation de y_test :\n",
        "# 0 -> [1,0,0]\n",
        "# 1 -> [0,1,0]\n",
        "# 2 -> [0,0,1]\n",
        "\n",
        "y_test_bin = label_binarize(y_test, classes=[0, 1, 2])\n",
        "\n",
        "plt.figure(figsize=(9, 7))\n",
        "\n",
        "for i in range(3):\n",
        "\n",
        "    fpr, tpr, thresholds = roc_curve(\n",
        "        y_test_bin[:, i],\n",
        "        y_prob[:, i]\n",
        "    )\n",
        "\n",
        "    roc_auc = auc(fpr, tpr)\n",
        "\n",
        "    plt.plot(\n",
        "        fpr,\n",
        "        tpr,\n",
        "        linewidth=2,\n",
        "        label=f\"{iris.target_names[i]} (AUC = {roc_auc:.3f})\"\n",
        "    )\n",
        "\n",
        "# Performance d'un classifieur aléatoire\n",
        "plt.plot(\n",
        "    [0, 1],\n",
        "    [0, 1],\n",
        "    '--',\n",
        "    label='Classification aléatoire'\n",
        ")\n",
        "\n",
        "plt.xlabel('Taux de faux positifs')\n",
        "plt.ylabel('Taux de vrais positifs')\n",
        "plt.title('Régression logistique multinomiale — courbes ROC One-vs-Rest')\n",
        "plt.legend()\n",
        "plt.grid(alpha=0.3)\n",
        "\n",
        "plt.show()"
      ],
      "metadata": {
        "id": "22vkduPrDORc"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 499
        },
        "id": "9cd08217",
        "outputId": "f7526215-7fc8-4a62-e7e3-2c2335f12498"
      },
      "source": [
        "plt.figure(figsize=(8,4))\n",
        "sns.heatmap(dfiris.drop('species', axis=1).corr(),annot=True,fmt=\".0%\")\n",
        "plt.title('Matrice de corrélation du DataFrame dfiris')\n",
        "plt.show()"
      ],
      "execution_count": 26,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 800x400 with 2 Axes>"
            ],
            "image/png": "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8+rz3mejIXzGDcGGkINYsGoLrKqaYYnPBDjVKeazsWM/ti37c2y+g111DPiqM0bP9IexkQHmTS56zsRKld8jT5w4EQMHDoSzszMaNWqEZcuWISsrC15eheu3DxgwAFWqVJEPaRk/fjxatGiBgIAAdO7cGSEhIYiIiMC6deuUllEi+y+V4l+4u7ujfv36WLZs2ed6StGSyWRo3LgxJkyYAA8PD6W9zpEjRzBp0iRER0dDQ+Pjr8lyfl+jtEz071TpEfDPO5FKpN7eI3QEekuiqy90BHqPLCtd6Aj0lpalk2CvPd6q7ycfG3j/39/PZMWKFVi0aBFSU1NRv359BAUFyRfZcHd3h5WVlcKKcbt378bMmTNx//591KhRA/7+/ujUSXkdbyXutvVUSCKRYN26dUq/bX1WVhY2b978rwpwIiIiopLu3Q0ki/PuPjHv6927N3r3LrqAgLKw8irB6tevj/r16yv1Nb766qt/3omIiIjoP5KpdEBKyfdZi/DiriqIiIiIiLhGjCL2hBMRERGR0qnqjplfChbhRERERKR0LMEVsQgnIiIiIqVjT7gi3maOiIiIiEjF2BNORERERErHiZmKWIQTERERkdJxiUJFLMKJiIiISOnYE66IRTgRERERKR17whWxCCciIiIipWNPuCKujkJEREREpGLsCSciIiIipZPKOBzlfSzCiYiIiEjpWIIrYhFORERERErHO2YqYhFORERERErH1VEUsQgnIiIiIqXj6iiKuDoKEREREZGKsSeciIiIiJSOY8IVsQgnIiIiIqXjmHBFLMKJiIiISOk4JlwRi3AiIiIiUjoZb9ajgBMziYiIiIhUjD3hRERERKR0nJipiEU4ERERESkdx4QrYhFOnyY7U+gE9FZGbrbQEeidvFyhE9BbMmmB0BHoPZIyRkJHoBKAq6MoYhFORERERErH4SiKWIQTERERkdJxdRRFXB2FiIiIiEjF2BNORERERErHiZmKWIQTERERkdJxYqYiFuFEREREpHScmKmIRTgRERERKR0nZirixEwiIiIiUjopZJ/8UJa0tDT069cPBgYGMDIywpAhQ5CZ+eF7oaSlpWHs2LGwtbWFrq4uLCwsMG7cOLx8+fJfvzaLcCIiIiISpX79+uHWrVs4ceIEDh06hDNnzmD48OEf3P/Ro0d49OgRFi9ejJs3byI4OBhHjx7F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\n"
          },
          "metadata": {}
        }
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}