{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Régression logistique et courbe ROC\n",
"\n",
"Prédire la couleur d'un vin à partir de ses composants et visualiser la performance avec une courbe ROC."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"from teachpyx.datasets import load_wines_dataset\n",
"\n",
"data = load_wines_dataset()\n",
"X = data.drop([\"quality\", \"color\"], axis=1)\n",
"y = data[\"color\"]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/xadupre/install/scikit-learn/sklearn/linear_model/_logistic.py:474: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" n_iter_i = _check_optimize_result(\n"
]
},
{
"data": {
"text/html": [
"
LogisticRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
LogisticRegression()
"
],
"text/plain": [
"LogisticRegression()"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"\n",
"clr = LogisticRegression()\n",
"clr.fit(X_train, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La première façon de vérifier que le modèle a marché consiste à regarder la matrice de confusion."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 384, 18],\n",
" [ 12, 1211]])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import confusion_matrix\n",
"\n",
"conf = confusion_matrix(y_test, clr.predict(X_test))\n",
"conf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les coefficients sur la diagonale indique les éléments bien classés, les coefficients en dehors de ceux que le classifieur a mis dans la mauvaise classe."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
prédit red
\n",
"
prédit white
\n",
"
\n",
" \n",
" \n",
"
\n",
"
vrai red
\n",
"
384
\n",
"
18
\n",
"
\n",
"
\n",
"
vrai white
\n",
"
12
\n",
"
1211
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" prédit red prédit white\n",
"vrai red 384 18\n",
"vrai white 12 1211"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas\n",
"\n",
"cf = pandas.DataFrame(conf, columns=[\"prédit \" + _ for _ in clr.classes_])\n",
"cf.index = [\"vrai \" + _ for _ in clr.classes_]\n",
"cf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Un classifieur construit une frontière entre deux classes, la distance d'un point à la frontière constitue une information importante. Plus elle est grande, plus le modèle est confiant. Cette distance est souvent appelée *score*."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 3.1389208 , -2.0757083 , 7.6765228 , ..., 2.53844502,\n",
" 2.62378271, 3.71080774])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clr.decision_function(X_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mais on préfère les probabilités quand elles sont disponibles :"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[4.15300558e-02, 9.58469944e-01],\n",
" [8.88519638e-01, 1.11480362e-01],\n",
" [4.63369265e-04, 9.99536631e-01],\n",
" ...,\n",
" [7.32066047e-02, 9.26793395e-01],\n",
" [6.76234016e-02, 9.32376598e-01],\n",
" [2.38738587e-02, 9.76126141e-01]])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clr.predict_proba(X_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Voyons comment le score est distribué :"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
score
\n",
"
color
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
3.138921
\n",
"
red
\n",
"
\n",
"
\n",
"
1
\n",
"
-2.075708
\n",
"
NaN
\n",
"
\n",
"
\n",
"
2
\n",
"
7.676523
\n",
"
NaN
\n",
"
\n",
"
\n",
"
3
\n",
"
7.914141
\n",
"
NaN
\n",
"
\n",
"
\n",
"
4
\n",
"
2.994176
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" score color\n",
"0 3.138921 red\n",
"1 -2.075708 NaN\n",
"2 7.676523 NaN\n",
"3 7.914141 NaN\n",
"4 2.994176 NaN"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"score = clr.decision_function(X_test)\n",
"dfsc = pandas.DataFrame(score, columns=[\"score\"])\n",
"dfsc[\"color\"] = y_test\n",
"dfsc.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Visiblement, pandas n'a pas compris ce que je voulais qu'il fasse. Il a utilisé les indices de la série *y_test* et a utilisé *y_test.index* comme indice de tableau. Changeons cela."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = dfsc[\"score\"].hist(bins=50, figsize=(6, 3))\n",
"ax.set_title(\"Distribution des scores de classification couleur\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Deux modes, probablement les deux classes. Pour en être sûr :"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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24ZvrVOr1WXfJbdvw8zMrOoFfln3eBt8OlLvRT45+ode5cP7tdZ7Gw97tE7u378PABBC6L8yUcv++usvAUD88ssvWtNnz54tevToUe4yCxYsEAD44IMPPvjggw8DPW7cuKH3b3i9GD0xb948REdHS69LS0tx584dNG3aFApF/RuInpOTgxYtWuDGjRuws7Mzdjh1AutEF+tEF+tEG+tDF+tE16N1IoTA/fv34e7urve6aj1pcHJyglKpxM2bN7Wm37x5E66uruUuo1KpoFKptKY5ODjUVIi1xs7Ojgf1I1gnulgnulgn2lgfulgnuh6uE3t7+2qto9aHXJqbm8PPzw+HDh2SppWWluLQoUPw9/ev7XCIiIhIJqOcnoiOjsa4cePw5JNPokePHli9ejXy8vKk0RRERERU9xglaXjxxRfx999/Y/78+cjMzETXrl2xf/9+NGvWzBjh1DqVSoUFCxbonHJpzFgnulgnulgn2lgfulgnugxZJwohqjPmgoiIiBob3rCKiIiIZGHSQERERLIwaSAiIiJZmDQQERGRLEwaatmSJUvw9NNPw8rKqsILVKWlpWH48OGwsrKCi4sLZs+ejeLimr3PQV3SqlUrKBQKrcd7771n7LBqFW8d/z8xMTE6x0O7du2MHVatOnr0KEaMGAF3d3coFArs2rVLa74QAvPnz4ebmxssLS0xePBgXLlyxTjB1pKq6iQsLEznuBk6dKhxgq0FsbGxeOqpp2BrawsXFxeMGjUKly5d0ipTUFCAiIgING3aFDY2NggJCdG50GJVmDTUsqKiIrzwwguYMmVKufNLSkowfPhwFBUV4ZdffsHWrVuxZcsWzJ8/v5YjNa5FixYhIyNDekybNs3YIdUaza3jFyxYgN9++w1dunRBUFAQsrKyjB2a0XTo0EHreDh27JixQ6pVeXl56NKlC9avX1/u/OXLl+PDDz/Exo0bceLECVhbWyMoKAgFBQW1HGntqapOAGDo0KFax82//vWvWoywdh05cgQRERE4fvw44uPjoVarMWTIEOTl5UllZsyYgT179mD79u04cuQI0tPTMXr0aP02pPfdKsggNm/eLOzt7XWm79u3T5iYmIjMzExp2oYNG4SdnZ0oLCysxQiNx8PDQ6xatcrYYRhNjx49REREhPS6pKREuLu7i9jYWCNGZTwLFiwQXbp0MXYYdQYAsXPnTul1aWmpcHV1FStWrJCmZWdnC5VKJf71r38ZIcLa92idCCHEuHHjxMiRI40ST12QlZUlAIgjR44IIcqOCTMzM7F9+3apzIULFwQAkZSUJHu9bGmoY5KSktCpUyetC10FBQUhJycH586dM2Jkteu9995D06ZN0a1bN6xYsaLRnJ7R3Dp+8ODB0rSqbh3fGFy5cgXu7u5o3bo1Xn75ZaSlpRk7pDrj6tWryMzM1Dpm7O3t0bNnz0Z9zABAYmIiXFxc0LZtW0yZMqVGbsVdV927dw8A4OjoCAA4ffo01Gq11nHSrl07tGzZUq/jpF7c5bIxyczM1LkypuZ1ZmamMUKqddOnT0f37t3h6OiIX375BfPmzUNGRgY++OADY4dW427duoWSkpJyj4GLFy8aKSrj6tmzJ7Zs2YK2bdsiIyMDCxcuRN++fXH27FnY2toaOzyj03wvlHfMNJbvjPIMHToUo0ePhqenJ1JTU/H2228jODgYSUlJUCqVxg6vRpWWliIqKgq9e/dGx44dAZQdJ+bm5jp96fQ9Tpg0GMDcuXOxbNmySstcuHCh0XXeepg+dfTwbdA7d+4Mc3NzTJ48GbGxsbw0bCMUHBwsPe/cuTN69uwJDw8PfPvtt5g4caIRI6O6LDQ0VHreqVMndO7cGV5eXkhMTMSgQYOMGFnNi4iIwNmzZ2uk7w+TBgOYOXMmwsLCKi3TunVrWetydXXV6Smv6d1a0a3D64PHqaOePXuiuLgY165dQ9u2bWsgurqjOreOb2wcHBzQpk0bpKSkGDuUOkFzXNy8eRNubm7S9Js3b6Jr165Giqruad26NZycnJCSktKgk4bIyEjs3bsXR48exRNPPCFNd3V1RVFREbKzs7VaG/T9bmHSYADOzs5wdnY2yLr8/f2xZMkSZGVlwcXFBQAQHx8POzs7+Pr6GmQbxvA4dZScnAwTExOpPhqyh28dP2rUKAD/u3V8ZGSkcYOrI3Jzc5GamopXX33V2KHUCZ6ennB1dcWhQ4ekJCEnJwcnTpyocJRWY/Tnn3/i9u3bWolVQyKEwLRp07Bz504kJibC09NTa76fnx/MzMxw6NAhhISEAAAuXbqEtLQ0+Pv7y94Ok4ZalpaWhjt37iAtLQ0lJSVITk4GAHh7e8PGxgZDhgyBr68vXn31VSxfvhyZmZl45513EBER0Sia5pOSknDixAkMGDAAtra2SEpKwowZM/DKK6+gSZMmxg6vVvDW8dpmzZqFESNGwMPDA+np6ViwYAGUSiXGjh1r7NBqTW5urlbLytWrV5GcnAxHR0e0bNkSUVFRWLx4MXx8fODp6Yl3330X7u7uUuLZEFVWJ46Ojli4cCFCQkLg6uqK1NRUvPXWW/D29kZQUJARo645ERER+Prrr7F7927Y2tpK/RTs7e1haWkJe3t7TJw4EdHR0XB0dISdnR2mTZsGf39/9OrVS/6GDD3Mgyo3btw4AUDnkZCQIJW5du2aCA4OFpaWlsLJyUnMnDlTqNVq4wVdi06fPi169uwp7O3thYWFhWjfvr1YunSpKCgoMHZotWrt2rWiZcuWwtzcXPTo0UMcP37c2CEZzYsvvijc3NyEubm5aN68uXjxxRdFSkqKscOqVQkJCeV+b4wbN04IUTbs8t133xXNmjUTKpVKDBo0SFy6dMm4QdewyuokPz9fDBkyRDg7OwszMzPh4eEhwsPDtYayNzTl1QUAsXnzZqnMgwcPxNSpU0WTJk2ElZWVeO6550RGRoZe2+GtsYmIiEgWXqeBiIiIZGHSQERERLIwaSAiIiJZmDQQERGRLEwaiIiISBYmDURERCQLkwYiIiKShUkDERERycKkgYiIiGRh0kBERESyMGkgIiIiWZg0EBERkSz/H1BPX+J3N+ZQAAAAAElFTkSuQmCC",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = dfsc[dfsc[\"color\"] == \"white\"][\"score\"].hist(\n",
" bins=25, figsize=(6, 3), label=\"white\", alpha=0.5\n",
")\n",
"dfsc[dfsc[\"color\"] == \"red\"][\"score\"].hist(bins=25, ax=ax, label=\"red\", alpha=0.5)\n",
"ax.set_title(\"Distribution des scores pour les deux classes\")\n",
"ax.plot([1, 1], [0, 100], \"g--\", label=\"frontière ?\")\n",
"ax.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il y a quelques confusions autour de 0 mais le modèle est pertinent au sens où la frontière entre les deux classes est assez nette : les deux cloches ne se superposent pas. Voyons avec les probabilités :"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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9m24urrCyclJGkJdJpPB398fu3btyraP/AcffIDHjx9j7969kMvl6NChA4YNG4ZZs2ahe/fuuR6js2fPRlRUFAIDAzFixAjUqFEDDx48wJYtW3DkyJFsuxNWr14d/v7+GDduHO7duwdHR0f8+OOPer+y5mff5mebF/X+I8rLF198gQMHDqBx48YYPnw4AgIC8OTJE5w9exZ79+6VfmAdOHAgvvnmG0RERODkyZNo2bIlUlJSsHfvXowePTrPAWWyioyMRIsWLfDGG29g+PDheO211xAfH49jx47hn3/+0Xu+U27y+znKrzp16iA0NBSrV6+WuqefPHkSGzZsQI8ePaReFx4eHvjggw+wcOFCqQ49f/689P346tWkLl26YMaMGRg8eDCaNWuGCxcuYNOmTTpXdIxRv359fP/994iIiEDDhg1hb2+Prl27FmiZBWVIvdG+fXtUqlQJQ4cOxfjx4yGXy/H1119LdaqWo6NjvupdKqGKcQRCo2mHqtT+UygUwtPTU7Rr104sWbJEZ0hzrazDXu7bt090795deHt7C4VCIby9vUXfvn31hlPeuXOnCAgIEJaWljrDcAYGBoqaNWtmG19Ow63/73//E5MmTRLu7u7CxsZGdO7cWRri+FULFy4UFSpUEEqlUjRv3lycPn1ab5m5xZZ1uFYhXg7n+eGHHwpvb29hZWUlqlatKubPn68zXKgQL4cez25485yGgc/qzp07olu3bsLW1la4urqKDz74QBoWNusQ1OfOnRNvv/22KF++vFAqlcLX11f07t1b7Nu3Twjxcnjx8ePHizp16ggHBwdhZ2cn6tSpI1asWJFnHNr9HRsbK3r16iUcHBxEuXLlRHh4uHjx4kW+chZCiLNnz4qQkBBhb28vbG1tRevWrcUff/yhU0Z7PB46dEiMGDFClCtXTtjb24v+/fuLx48f65Q9evSoaNKkibCxsRHe3t5iwoQJ0hCvr24f7fF1+vRp0bRpU2FtbS18fX3F8uXLdZZn7HDrQgixZs0a8dprrwm5XK63/gMHDoiQkBDh5OQkrK2thb+/vxg0aJA4ffq0EEKIR48eibCwMFG9enVhZ2cnnJycROPGjXWG2s/Njz/+KGrUqCGUSqUICAgQ27Zty/a4FUKI1atXi/r16wsbGxvh4OAg3njjDTFhwgRx//59IcTLfdS3b19RqVIloVQq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",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"proba = clr.predict_proba(X_test)[:, 1]\n",
"dfpr = pandas.DataFrame(proba, columns=[\"proba\"])\n",
"dfpr[\"color\"] = y_test.values\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"fig, ax = plt.subplots(1, 2, figsize=(10, 3))\n",
"dfpr[dfpr[\"color\"] == \"white\"][\"proba\"].hist(\n",
" bins=25, label=\"white\", alpha=0.5, ax=ax[0]\n",
")\n",
"dfpr[dfpr[\"color\"] == \"red\"][\"proba\"].hist(bins=25, label=\"red\", alpha=0.5, ax=ax[0])\n",
"ax[0].set_title(\"Distribution des probabilités des deux classes\")\n",
"ax[0].legend()\n",
"dfpr[dfpr[\"color\"] == \"white\"][\"proba\"].hist(\n",
" bins=25, label=\"white\", alpha=0.5, ax=ax[1]\n",
")\n",
"dfpr[dfpr[\"color\"] == \"red\"][\"proba\"].hist(bins=25, label=\"red\", alpha=0.5, ax=ax[1])\n",
"ax[0].plot([0.5, 0.5], [0, 1000], \"g--\", label=\"frontière ?\")\n",
"ax[1].plot([0.5, 0.5], [0, 1000], \"g--\", label=\"frontière ?\")\n",
"ax[1].set_yscale(\"log\")\n",
"ax[1].set_title(\"Distribution des probabilités des deux classes\\néchelle logarithmique\")\n",
"ax[1].legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plus l'aire commune aux deux distributions est petite, plus le modèle est confiant. Cette aire commune est reliée à la courbe [ROC](https://fr.wikipedia.org/wiki/Courbe_ROC)."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1528,)"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.metrics import roc_auc_score, roc_curve, auc\n",
"\n",
"probas = clr.predict_proba(X_test)\n",
"fpr0, tpr0, thresholds0 = roc_curve(\n",
" y_test, probas[:, 0], pos_label=clr.classes_[0], drop_intermediate=False\n",
")\n",
"fpr0.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*fpr* désigne le [False Positive Rate](https://en.wikipedia.org/wiki/Precision_and_recall) autrement dit le taux de faux positive, si la tâche est déterminer si un vin est blanc, le taux désigne la proportion de vins rouges classés par le classifieur parmi les vins blancs. C'est l'erreur de classification. *tpr* désigne le nombre de [True Positive Rate](https://en.wikipedia.org/wiki/Precision_and_recall). C'est... A vrai dire, cette dénomination est toujours aussi absconce pour moi. Je leur préfère les formules mathématiques. On souhaite toujours classer les vins blancs. *True* et *False* ne sont pas vrai ou faux mais le nom de deux classes.\n",
"\n",
"$$\n",
"\\begin{array}{rcl}FPR(s) &=& \\sum_{i=1}^n \\mathbb{1}_{score(X_i) \\geqslant s}\\mathbb{1}_{y_i == red}\\\\ TPR(s) &=& \\sum_{i=1}^n \\mathbb{1}_{score(X_i) \\geqslant s}\\mathbb{1}_{y_i == blanc}\\end{array}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = dftp.plot(x=\"threshold\", y=[\"fpr\", \"tpr\"], figsize=(4, 4))\n",
"ax.set_title(\n",
" \"Evolution de FPR, TPR\\nen fonction du seuil au delà duquel\\n\"\n",
" + \"la réponse du classifieur est validée\"\n",
");"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n",
"ax.plot([0, 1], [0, 1], \"k--\")\n",
"# aucf = roc_auc_score(y_test == clr.classes_[0], probas[:, 0]) # première façon\n",
"aucf = auc(fpr0, tpr0) # seconde façon\n",
"ax.plot(fpr0, tpr0, label=clr.classes_[0] + \" auc=%1.5f\" % aucf)\n",
"ax.set_title(\"Courbe ROC - classifieur couleur des vins\")\n",
"ax.text(0.5, 0.3, \"plus mauvais que\\nle hasard dans\\ncette zone\")\n",
"ax.set_xlabel(\"FPR\")\n",
"ax.set_ylabel(\"TPR\")\n",
"ax.legend();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La mesure [AUC](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve) ou Area Under the Curve est l'aire sous la courbe. Elle est égale à la probabilité que le score d'un exemple classé rouge à raison soit inférieur à un exemple classé rouge à tort. On vérifie."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9922904817101114\n"
]
}
],
"source": [
"from random import randint\n",
"\n",
"n1, n2 = 0, 0\n",
"yt = y_test.values\n",
"\n",
"for n in range(0, 100000):\n",
" i = randint(0, len(yt) - 1)\n",
" j = randint(0, len(yt) - 1)\n",
" s1, p1 = probas[i, 0], yt[i] == clr.classes_[0]\n",
" s2, p2 = probas[j, 0], yt[j] == clr.classes_[0]\n",
" if p1 != p2:\n",
" if p1:\n",
" if s1 < s2:\n",
" n1 += 1\n",
" else:\n",
" n2 += 1\n",
" else:\n",
" if s1 > s2:\n",
" n1 += 1\n",
" else:\n",
" n2 += 1\n",
"print(n2 * 1.0 / (n1 + n2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Presque cela, la fonction [auc](https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve) utilise la fontion [trapz](https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.trapz.html) et qui calcule une aire et non pas une probabilité comme-ci dessus. Ce [théorème](https://sdpython.github.io/doc/mlstatpy/dev/c_metric/roc.html) qui démontre que cette aire a un lien direct avec les scores de classification. Deux autres métriques sont très utilisées, la [précision](https://en.wikipedia.org/wiki/Precision_and_recall) et le [rappel](https://en.wikipedia.org/wiki/Precision_and_recall). Pour chaque classifieur, on peut déterminer un seuil *s* au delà duquel la réponse est validée avec une bonne confiance. Parmi toutes les réponses validées, la précision est le nombre de réponses correctes rapporté au nombre de réponses validées, le rappel est le nombre de réponses correctes rapportées à toutes qui aurait dû être validées. On calcule aussi la métrique *F1* qui est une sorte de moyenne entre les deux."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import precision_recall_curve\n",
"\n",
"precision, recall, thresholds = precision_recall_curve(\n",
" y_test, probas[:, 0], pos_label=clr.classes_[0]\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"