diff --git a/notebooks/machine-learning/21.a-linear-model-by-hand.ipynb b/notebooks/machine-learning/21.a-linear-model-by-hand.ipynb index 9a7946d20329f3df125f2ddcc64b6121309eeddf..b8746b8d5904392e78a51c47a97f820b74050c9a 100644 --- a/notebooks/machine-learning/21.a-linear-model-by-hand.ipynb +++ b/notebooks/machine-learning/21.a-linear-model-by-hand.ipynb @@ -572,7 +572,7 @@ "\n", "b = intercept(m, data)\n", "\n", - "print(f\"L’ordonnée à l’origine vaut : {m}\")" + "print(f\"L’ordonnée à l’origine vaut : {b}\")" ] }, { diff --git a/notebooks/machine-learning/answers/21.straight-line-equation.ipynb b/notebooks/machine-learning/answers/21.straight-line-equation.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..c9560c58495bae566a750746353fa70edee1215f --- /dev/null +++ b/notebooks/machine-learning/answers/21.straight-line-equation.ipynb @@ -0,0 +1,268 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1ffc41af-64bc-4816-9712-7e1c309ce303", + "metadata": {}, + "source": [ + "# L’équation réduite d’une droite" + ] + }, + { + "cell_type": "markdown", + "id": "96863e53-700d-4eb3-87a6-5ab659eb391a", + "metadata": {}, + "source": [ + "L’objectif de cet exercice est de simplement calculer l’équation réduite d’une droite à partir de deux points connus." + ] + }, + { + "cell_type": "markdown", + "id": "8ee244f7-e0ae-493c-88b4-c35b9edc200a", + "metadata": {}, + "source": [ + "## Les formules à connaître" + ] + }, + { + "cell_type": "markdown", + "id": "70d4797a-53c7-4e19-9560-4f89723a1721", + "metadata": {}, + "source": [ + "**L’équation réduite d’une droite :**\n", + "$$y = b + mx$$\n", + "\n", + "**Le calcul du coefficient directeur :**\n", + "$$m = \\frac{\\Delta y}{\\Delta x}$$\n", + "\n", + "**Le calcul de l’ordonnée à l’origine :**\n", + "$$b = y - mx$$" + ] + }, + { + "cell_type": "markdown", + "id": "aaba8c55-4864-4034-9eff-5a35662975dc", + "metadata": {}, + "source": [ + "## Visualisation du problème" + ] + }, + { + "cell_type": "markdown", + "id": "284863a0-9d22-405e-b6d9-42f0fa0b6d10", + "metadata": {}, + "source": [ + "Avant de commencer, chargez les librairies nécessaires :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "312ef59e-94fc-4149-a672-ee52b165b8ce", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "markdown", + "id": "9ada3d82-9e66-4fa3-8623-944f7ce8a4ab", + "metadata": {}, + "source": [ + "Soient deux points $P$ et $P'$ de coordonnées $(9;-2)$ et $(-4;5)$. Définissez-les dans deux variables `X` et `Y` :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2b76a11-633b-494d-8829-4635c03768ce", + "metadata": {}, + "outputs": [], + "source": [ + "# your code here\n", + "\n", + "X = [9, -4]\n", + "Y = [-2, 5]" + ] + }, + { + "cell_type": "markdown", + "id": "c6b252e9-6119-4d32-9782-3b59c5bf3ad0", + "metadata": {}, + "source": [ + "Affichons-les dans un repère puis traçons une droite pour les relier :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a274f99-5dc2-4951-aafe-ffd9458f0890", + "metadata": {}, + "outputs": [], + "source": [ + "# two plots\n", + "fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12,5))\n", + "\n", + "# spines first ax\n", + "ax1.set_xlim([-5, 10])\n", + "ax1.set_ylim([-5, 10])\n", + "\n", + "# spines second ax\n", + "ax2.set_xlim([-5, 10])\n", + "ax2.set_ylim([-5, 10])\n", + "\n", + "# plots\n", + "sns.scatterplot(x=X, y=Y, ax=ax1)\n", + "sns.lineplot(x=X, y=Y, ax=ax2)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "b5d6f4ec-d5a9-4e22-975e-d17ec23cd63d", + "metadata": {}, + "source": [ + "## Calcul de l’équation" + ] + }, + { + "cell_type": "markdown", + "id": "6d1d450f-315e-4088-8424-bf236f6caf29", + "metadata": {}, + "source": [ + "### Le coefficient directeur" + ] + }, + { + "cell_type": "markdown", + "id": "2dcc2b3e-51e5-4898-9656-dfcd9f6ec849", + "metadata": {}, + "source": [ + "Instanciez une variable `m` à laquelle vous affecterez le coefficient directeur de la droite :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b64a7eb5-336e-48fe-8352-dd6b0ffa9268", + "metadata": {}, + "outputs": [], + "source": [ + "# your code here\n", + "\n", + "m = (Y[0] - Y[1]) / (X[0] - X[1])" + ] + }, + { + "cell_type": "markdown", + "id": "b3a2d31a-5fcf-41a4-96d1-05b750a59327", + "metadata": {}, + "source": [ + "### L’ordonnée à l’origine" + ] + }, + { + "cell_type": "markdown", + "id": "eaf041d3-8361-4142-bfda-00991abaed73", + "metadata": {}, + "source": [ + "Procédez de la même manière pour l’ordonnée à l’origine avec une variable `b` :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4afad24b-1f63-49e8-9918-f1196cf2bd01", + "metadata": {}, + "outputs": [], + "source": [ + "# your code here\n", + "\n", + "b = Y[0] - m * X[0]" + ] + }, + { + "cell_type": "markdown", + "id": "8a920f84-31a9-46b4-9937-8dc8b0e638ec", + "metadata": {}, + "source": [ + "## Vérification de la solution" + ] + }, + { + "cell_type": "markdown", + "id": "cbe2d953-ae80-4b28-b89c-0f98afd67e9b", + "metadata": {}, + "source": [ + "Prenez maintenant une valeur de $x$ dans un intervalle $[-3;8]$ et ajoutez-la à la liste `X`. Calculez ensuite $y$ pour cette valeur de $x$ et ajoutez-la à la liste `Y`.\n", + "\n", + "**Rappel :** la méthode `.append()` permet d’ajouter un élément à la fin d’une liste." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "43fb2212-4d18-4e52-84f1-77ed36f6f47c", + "metadata": {}, + "outputs": [], + "source": [ + "# your code here\n", + "\n", + "x = -2\n", + "X.append(x)\n", + "\n", + "y = b + m * x\n", + "Y.append(y)" + ] + }, + { + "cell_type": "markdown", + "id": "9c200c9b-ede1-4de7-97f9-36cb0384c482", + "metadata": {}, + "source": [ + "Il ne vous reste plus qu’à vérifier que la droite passe bien par tous les points :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "249e8103-37f2-463b-aae0-e9412bbaf7ee", + "metadata": {}, + "outputs": [], + "source": [ + "plt.xlim = [-5, 10]\n", + "plt.ylim = [-5, 10]\n", + "\n", + "sns.regplot(x=X, y=Y, ci=None)\n", + "\n", + "sns.despine()\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/machine-learning/exercises/21.straight-line-equation.ipynb b/notebooks/machine-learning/exercises/21.straight-line-equation.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..a9c44f632ded64865065de471272a3a2e297dcc4 --- /dev/null +++ b/notebooks/machine-learning/exercises/21.straight-line-equation.ipynb @@ -0,0 +1,255 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1ffc41af-64bc-4816-9712-7e1c309ce303", + "metadata": {}, + "source": [ + "# L’équation réduite d’une droite" + ] + }, + { + "cell_type": "markdown", + "id": "96863e53-700d-4eb3-87a6-5ab659eb391a", + "metadata": {}, + "source": [ + "L’objectif de cet exercice est de simplement calculer l’équation réduite d’une droite à partir de deux points connus." + ] + }, + { + "cell_type": "markdown", + "id": "8ee244f7-e0ae-493c-88b4-c35b9edc200a", + "metadata": {}, + "source": [ + "## Les formules à connaître" + ] + }, + { + "cell_type": "markdown", + "id": "70d4797a-53c7-4e19-9560-4f89723a1721", + "metadata": {}, + "source": [ + "**L’équation réduite d’une droite :**\n", + "$$y = b + mx$$\n", + "\n", + "**Le calcul du coefficient directeur :**\n", + "$$m = \\frac{\\Delta y}{\\Delta x}$$\n", + "\n", + "**Le calcul de l’ordonnée à l’origine :**\n", + "$$b = y - mx$$" + ] + }, + { + "cell_type": "markdown", + "id": "aaba8c55-4864-4034-9eff-5a35662975dc", + "metadata": {}, + "source": [ + "## Visualisation du problème" + ] + }, + { + "cell_type": "markdown", + "id": "284863a0-9d22-405e-b6d9-42f0fa0b6d10", + "metadata": {}, + "source": [ + "Avant de commencer, chargez les librairies nécessaires :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "312ef59e-94fc-4149-a672-ee52b165b8ce", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "markdown", + "id": "9ada3d82-9e66-4fa3-8623-944f7ce8a4ab", + "metadata": {}, + "source": [ + "Soient deux points $P$ et $P'$ de coordonnées $(9;-2)$ et $(-4;5)$. Définissez-les dans deux variables `X` et `Y` :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2b76a11-633b-494d-8829-4635c03768ce", + "metadata": {}, + "outputs": [], + "source": [ + "# your code here" + ] + }, + { + "cell_type": "markdown", + "id": "c6b252e9-6119-4d32-9782-3b59c5bf3ad0", + "metadata": {}, + "source": [ + "Affichons-les dans un repère puis traçons une droite pour les relier :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a274f99-5dc2-4951-aafe-ffd9458f0890", + "metadata": {}, + "outputs": [], + "source": [ + "# two plots\n", + "fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12,5))\n", + "\n", + "# spines first ax\n", + "ax1.set_xlim([-5, 10])\n", + "ax1.set_ylim([-5, 10])\n", + "\n", + "# spines second ax\n", + "ax2.set_xlim([-5, 10])\n", + "ax2.set_ylim([-5, 10])\n", + "\n", + "# plots\n", + "sns.scatterplot(x=X, y=Y, ax=ax1)\n", + "sns.lineplot(x=X, y=Y, ax=ax2)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "b5d6f4ec-d5a9-4e22-975e-d17ec23cd63d", + "metadata": {}, + "source": [ + "## Calcul de l’équation" + ] + }, + { + "cell_type": "markdown", + "id": "6d1d450f-315e-4088-8424-bf236f6caf29", + "metadata": {}, + "source": [ + "### Le coefficient directeur" + ] + }, + { + "cell_type": "markdown", + "id": "2dcc2b3e-51e5-4898-9656-dfcd9f6ec849", + "metadata": {}, + "source": [ + "Instanciez une variable `m` à laquelle vous affecterez le coefficient directeur de la droite :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b64a7eb5-336e-48fe-8352-dd6b0ffa9268", + "metadata": {}, + "outputs": [], + "source": [ + "# your code here" + ] + }, + { + "cell_type": "markdown", + "id": "b3a2d31a-5fcf-41a4-96d1-05b750a59327", + "metadata": {}, + "source": [ + "### L’ordonnée à l’origine" + ] + }, + { + "cell_type": "markdown", + "id": "eaf041d3-8361-4142-bfda-00991abaed73", + "metadata": {}, + "source": [ + "Procédez de la même manière pour l’ordonnée à l’origine avec une variable `b` :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4afad24b-1f63-49e8-9918-f1196cf2bd01", + "metadata": {}, + "outputs": [], + "source": [ + "# your code here" + ] + }, + { + "cell_type": "markdown", + "id": "8a920f84-31a9-46b4-9937-8dc8b0e638ec", + "metadata": {}, + "source": [ + "## Vérification de la solution" + ] + }, + { + "cell_type": "markdown", + "id": "cbe2d953-ae80-4b28-b89c-0f98afd67e9b", + "metadata": {}, + "source": [ + "Prenez maintenant une valeur de $x$ dans un intervalle $[-3;8]$ et ajoutez-la à la liste `X`. Calculez ensuite $y$ pour cette valeur de $x$ et ajoutez-la à la liste `Y`.\n", + "\n", + "**Rappel :** la méthode `.append()` permet d’ajouter un élément à la fin d’une liste." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "43fb2212-4d18-4e52-84f1-77ed36f6f47c", + "metadata": {}, + "outputs": [], + "source": [ + "# your code here" + ] + }, + { + "cell_type": "markdown", + "id": "9c200c9b-ede1-4de7-97f9-36cb0384c482", + "metadata": {}, + "source": [ + "Il ne vous reste plus qu’à vérifier que la droite passe bien par tous les points :" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "249e8103-37f2-463b-aae0-e9412bbaf7ee", + "metadata": {}, + "outputs": [], + "source": [ + "plt.xlim = [-5, 10]\n", + "plt.ylim = [-5, 10]\n", + "\n", + "sns.regplot(x=X, y=Y, ci=None)\n", + "\n", + "sns.despine()\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}