Skip to content

Instantly share code, notes, and snippets.

@jmcalvomartin
Created July 20, 2020 12:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jmcalvomartin/53f3493f909c65f83ecf171ad4138190 to your computer and use it in GitHub Desktop.
Save jmcalvomartin/53f3493f909c65f83ecf171ad4138190 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Funciones de coste y sus derivadas\n",
"### MSE (Error cuadratico medio)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import math, random\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline \n",
"from IPython.display import display, Math, Latex"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle MSE = \\frac{1}{n}{\\sum_{1=1}^n{(Y_i - \\hat{Y_i})}^2} $"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle 'MSE = \\sum_{i=1}^n{(Y_i - \\hat{Y_i})} $"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mse_loss= (lambda Yp,Yr: np.mean((Yp-Yr)**2), lambda Yp,Yr: (Yp-Yr))\n",
"\n",
"display(Math(r'MSE = \\frac{1}{n}{\\sum_{1=1}^n{(Y_i - \\hat{Y_i})}^2} '))\n",
"display(Math(r\"'MSE = \\sum_{i=1}^n{(Y_i - \\hat{Y_i})} \"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Cross entropy binary"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle H(y,P) = \\begin{cases}P=1, -\\log(P)\\\\P=0, -\\log(1-P)\\end{cases}$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\jorge.calvo\\AppData\\Local\\Continuum\\anaconda3\\envs\\IA\\lib\\site-packages\\ipykernel_launcher.py:1: RuntimeWarning: divide by zero encountered in log\n",
" \"\"\"Entry point for launching an IPython kernel.\n",
"C:\\Users\\jorge.calvo\\AppData\\Local\\Continuum\\anaconda3\\envs\\IA\\lib\\site-packages\\ipykernel_launcher.py:1: RuntimeWarning: invalid value encountered in log\n",
" \"\"\"Entry point for launching an IPython kernel.\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA2kAAAEmCAYAAAD4Gdg2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3xV9f3H8dcnG7IgA8JIAoGwlB0UVNBCRYYDq3XXuqBWrVqttWpr1Wpd1db10zpw1D0QF4qKoiCoBGTvHQgjrCRsknx/f5yIESMrNzn33ryfj0ceJPeenPsOtpy87/d7vl9zziEiIiIiIiLBIcLvACIiIiIiIvIDlTQREREREZEgopImIiIiIiISRFTSREREREREgohKmoiIiIiISBBRSRMREREREQkiKmkS1sxsq5nl+J2jLpnZ+Wb2sd85REQkeFV3fTSzCDN7x8wu8StXbdL1UUKJSprUKTNbbmY7Ki8O3380r63Xc84lOOeWBvq8P/NzPHqQ3zvezC4LdKbvOedecs4NPNTvM7PhZjbPzGKrPJZqZuvNbNAhnCfGzN6s/DtyZnbCoWYREalvguT6eBcwzjk38nDPq+vjAc81wMzmm9l2M/vczLIPNY/UDypp4odTKi8O338U+h3oMO37c1wViJOaWVQgznOonHNPAauAW6s8/B9gjHPuo0M83UTgAmBtgOKJiNQHvl4fnXM3OeceDsCpdH2shpmlAaOAvwEpQD7wWgCjShhRSZOgUPnO2y+rfH2bmb1Y+XmryhGZ35rZSjPbYGa3VDk20sxuNrMlZlZqZlPNLLPyOWdmbSs/TzazF8ysyMxWmNlfzSyi8rmLzGyimf3LzDab2TIzG3yYP8vPnsvM7gL6Ao9WfXexMueVZrYIWFT52HAzW2xmm8zs3arvqFYef7WZLa38+7h/35+lyrEPmVmBmZVU/t303U/84cAVZtbNzAYCA4A/HsrP75zb7Zz7j3NuIlB+KN8rIiI/putj+FwfgV8Bc5xzbzjndgK3AV3NrMMhnkfqAZU0CSXHAe3x/mG81cw6Vj5+HXAuMARIAi4Btlfz/Y8AyUAOcDxwIXBxleePBhYAacB9wDNmZoeZtdpzOeduASYAV1Xz7uKwyu/rZGb9gbuBs4BmwArg1X1e43QgD+gBnFb5c1dnCtAN7127l4E3zCyuugOdc8vx3ikcCfwXuMI5txnAzLLMbMt+Ps476L8dEREJJF0ffyxYr49HADOqnHMbsKTycZEfUUkTP4yu8g/X6EP4vtudczucczPw/pHrWvn4ZcBfnXMLnGeGc25j1W80s0jgbOAm51xp5T+2DwC/qXLYCufcU865cuB5vH/8mx7kz7HFzIbX4FwAdzvnNjnndgDnAyOdc9Occ7uAm4A+ZtaqyvH3Vh6/Em/axbnVndQ596JzbqNzrsw59wAQi3cx/zmPAnuA6c65vf99nHMrnXON9vPx8gF+PhER2T9dH6sXLtfHBKB4n3MWA4kH+PmlHvJlbq/Ue8Occ58exvdVvb9pO94/dgCZeO9E7U8aEIP3jtv3VgAtqju/c2575ZuECfy8/f0ch3ougIIqnzcHplU5x1Yz21iZd3k1x6+o/J6fMLPr8S7UzQGH925q2s+FcM45M5uHN/9eRETqjq6P1QuX6+PWyteoKgkoPczzSRjTSJoEi21AwypfZxzC9xYAbQ5wzAa8d7+qrqKUBaw+hNcJFHcQjxdSJauZxQOp/DhvZpXPsyq/50cq59ffiDctpLFzrhHeu3aHPE2lcjrH1v18nH+o5xQRkQPS9TF8ro9z+GGU8/vsbSofF/kRlTQJFtOBc8ws2szygDMP4XufBv5hZrnm6WJmqVUPqJxW8Tpwl5klmrfk7XXAi4H6AQ7BOrx5//vzMnBx5Q3KscA/gW8qp6F87wYza2zeTeDXUP0KUYlAGVAERJnZrfz0XbyDUjmdI2E/Hy99f6yZxVaZ1x9jZnE1uH9BRKQ+0/Xxx0L5+vg2cKSZnVF5jbwVmOmcm384ryvhTSVNgsXf8N5N2gzcjveP8MF6EO8C8zFQAjwDNKjmuD/gvSO5FG+J+JfxbgA+XO/t807Z2wf5fQ8BZ5q3slW1Sx0758bh/Z28BazB+7s5Z5/D3gGm4l3AP8D7ufc1FvgQWIg35WMnP54GUlsWADvwpp+Mrfxce8GIiBw6XR+rCOXro3OuCDgDbz+6zXiLoeybXQQAc+7nRpZFJFiZmQNynXOL/c4iIiISLHR9lHChkTQREREREZEgopImIiIiIiISRDTdUUREREREJIhoJE1EROQQmVmmmX1uZvPMbI6ZXVPNMSeYWbGZTa/8uNWPrCIiEnq0mbWIiMihKwOud85NM7NEYKqZfeKcm7vPcROccyf7kE9EREKYLyUtLS3NtWrVyo+XFhGROjR16tQNzrl0v3MEmnNuDd7y3zjnSs1sHt6WE/uWtEOi66OISP2xv2ukLyWtVatW5Ofn+/HSIiJSh8xshd8ZapuZtQK6A99U83QfM5sBFAJ/cs7Nqeb7RwAjALKysnR9FBGpJ/Z3jdQ9aSIiIofJzBLwNtW91jlXss/T04Bs51xX4BFgdHXncM496ZzLc87lpaeH3aCjiIgcBpU0ERGRw2Bm0XgF7SXn3Kh9n3fOlTjntlZ+PgaINrO0Oo4pIiIhSCVNRETkEJmZAc8A85xzD/7MMRmVx2FmR+FdczfWXUoREQlVWt1RRETk0B0L/AaYZWbTKx+7GcgCcM49AZwJ/N7MyoAdwDlOm5OKiMhBUEkTERE5RM65iYAd4JhHgUfrJpGIiIQTTXcUEREREREJIippIiIiIiIiQUQlTURERERE5GBVVNT6S4RkSXth8nJOfmSC3zFERERERKQ+KS2FTp3gjTdq9WVCsqTt2F3O7NUllO7c43cUERERERGpL+67DxYsgOzsWn2ZkCxpGclxAKwr2eVzEhERERERqRcKC+GBB+Dss+Goo2r1pUKypDVJ/L6k7fQ5iYiIiIiI1Au33gplZfDPf9b6S4VkSft+JG1tsUqaiIiIiIjUstmz4dln4corISen1l8uJEta06RYANaVqqSJiIiIiEgtu/FGSEyEv/61Tl4uqk5eJcAaxkSRGBfFOo2kiYiIiIhIbfrsMxgzBu69F1JT6+QlQ3IkDSAjKY61uidNRERERERqS0UF3HADZGXB1VfX2cuG5EgaePelaXVHERERERGpNa++CtOmwQsvQFxcnb1syI6kNUmM0+qOIiIiIiJSO3buhJtvhu7d4fzz6/SlQ3gkLZb1pbsor3BERpjfcUREREREJJw8+iisWAHPPAMRdTu2FbIjaRlJcZRXODZu05RHEREREREJoE2b4K67YNAgGDCgzl++xiXNzDLN7HMzm2dmc8zsmkAEO5AmSZUbWherpImIiIiISADddRcUF8N99/ny8oEYSSsDrnfOdQR6A1eaWacAnHe/MipLmlZ4FBERERGRgFm2zJvqeNFF0LmzLxFqXNKcc2ucc9MqPy8F5gEtanreA8lIVkkTEREREZEAu+UWiIyEO+7wLUJA70kzs1ZAd+Cbap4bYWb5ZpZfVFRU49dKS4glwmC9SpqIiIiIiARCfj688gr88Y/QsqVvMQJW0swsAXgLuNY5V7Lv8865J51zec65vPT09Bq/XmSEkZ4Yy9pilTQREREREakh57yNq9PS4MYbfY0SkCX4zSwar6C95JwbFYhzHoyMpDhNdxQRERERkZobMwbGj4dHHoGkJF+jBGJ1RwOeAeY55x6seaSD1zQpjvUlWt1RRERERERqoKwM/vxnyM2F3/3O7zQBme54LPAboL+ZTa/8GBKA8x5QU42kiYiIiIhITT33HMydC/fcA9HRfqep+XRH59xEwAKQ5ZBlJMdRvGMPO/eUExcd6UcEEREREREJZdu2wa23wjHHwOmn+50GCNA9aX5p+v2G1iU7yU6N9zmNiIiIiIiEnAcegDVr4M03wXwZe/qJgC7BX9eaJsUCaIVHERERERE5dOvWwX33wa9+5Y2kBYmQLmkZSdrQWkREREREDtNtt8GuXXD33X4n+ZGQLmlNk72SphUeRURERETkkMyfD0895a3m2K6d32l+JKRLWmJsFA2iIzWSJiIiIiIih+Yvf4GGDeHvf/c7yU+EdEkzMzKStQy/iIiIiIgcggkT4J13vKKWnu53mp8I6ZIG3uIh61XSRERERETkYDgHN9wALVrAtdf6naZaIb0EP3iLh0xdudnvGCIiIiIiEgrefBO++QZGjvSmOwahMBhJi2NdyS6cc35HERERERGRYLZ7N9x0E3TuDBde6HeanxXyI2lNk+LYXVbBlu17aBwf43ccEREREREJVk88AUuWwIcfQmSk32l+VsiPpGUka680ERERERE5gC1b4I47YMAAOOkkv9PsV8iXtKZJsYBKmoiIiIiI7Mc998DGjXD//WDmd5r9CoOS9v2G1ippIiIiIiJSjZUr4T//gQsugO7d/U5zQCFf0pokeiVtTbFKmoiIiIiIVONvf/P+vPNOf3McpJAvaTFREbRs3IAlRdv8jiIiIvWEmWWa2edmNs/M5pjZNdUcY2b2sJktNrOZZtbDj6wiIvXe9Onwv//BNddAdrbfaQ5KyK/uCNAhI4n5a0r8jiEiIvVHGXC9c26amSUCU83sE+fc3CrHDAZyKz+OBh6v/FNEROrSn/8MjRt7S++HiJAfSQPokJHI0g3b2FVW7ncUERGpB5xza5xz0yo/LwXmAS32Oew04AXn+RpoZGbN6jiqiEj99vHH8Mkn3nTHRo38TnPQwqOkNUukvMKxeP1Wv6OIiEg9Y2atgO7AN/s81QIoqPL1Kn5a5DCzEWaWb2b5RUVFtRVTRKT+KS+HG26A1q3h97/3O80hCY+SlpEIwPw1pT4nERGR+sTMEoC3gGudc/vOu69ufWf3kwece9I5l+ecy0tPT6+NmCIi9dOLL8LMmXD33RAb63eaQxIWJa1VajwxUREsWKeSJiIidcPMovEK2kvOuVHVHLIKyKzydUugsC6yiYjUezt2wF//Cr16wVln+Z3mkIVFSYuKjKBd0wTmafEQERGpA2ZmwDPAPOfcgz9z2LvAhZWrPPYGip1za+ospIhIffaf/8CqVSGxcXV1wmJ1R4D2TZOYsEhz+UVEpE4cC/wGmGVm0ysfuxnIAnDOPQGMAYYAi4HtwMU+5BQRqX+KirwpjqecAscf73eawxI2Ja1js0TemraKTdt2kxIf43ccEREJY865iVR/z1nVYxxwZd0kEhGRvf7xD9i+He691+8khy0spjsCtP9+8ZC1mvIoIiIiIlIvLV4Mjz8Ol10GHTv6neawhU1J65CRBGiFRxERERGReuumm7yVHG+7ze8kNRI2JS09MZbU+BiNpImIiIiI1Edffw1vvuntjZaR4XeaGgmbkgbeptYL1mokTURERESkXnEO/vQnr5xdf73faWosrEpa+6ZJLFhXSnnFT/YKFRERERGRcPXOO/DVV3D77ZCQ4HeaGgurktahWSI791SwctN2v6OIiIiIiEhd2LMHbrzRWyjkkkv8ThMQYbMEP0CH71d4XFNC67R4n9OIiIiIiEite/ppWLgQ3n0XosKj3oTVSFpuk0QiDObpvjQRERERkfBXWuqt5Hj88XDyyX6nCZjwqJqVGsRE0io1ngVa4VFEREREJPzddx+sXw/vvw9mfqcJmLAaSQPvvrT5GkkTEREREQlvhYXwwANwzjnQq5ffaQIq/EpaRhIrN22ndOcev6OIiIiIiEhtufVWKCuDu+7yO0nAhV1J65ndGOcgf/lmv6OIiIiIiEhtmD0bnn0WrroKcnL8ThNwYVfSemQ1JiYygq+XbvQ7ioiIiIiI1IYbb4TERLjlFr+T1IqwWjgEvMVDumU2UkkTEREREQlHn30GY8Z4i4akpvqdplaE3UgaQO+cFGatLtZ9aSIiIiIi4aSiAm64AbKy4A9/8DtNrQnTkpZKhYMpyzf5HUVERERERALl1Vdh2jRvsZC4OL/T1JqwLGk9sr+/L00lTUREREQkLOzcCTffDN27w3nn+Z2mVgWkpJnZSDNbb2azA3G+moqLjqRblu5LExEREREJG489BitWwP33Q0RYjjXtFaif7jlgUIDOFRC9c1KZvbqYEt2XJiIiIiIS2jZtgjvvhMGDYcAAv9PUuoCUNOfcl0BQzS3snZNChYN83ZcmIiIiIhLa7roLSkrg3nv9TlIn6myc0MxGmFm+meUXFRXV+uv1yGpMTFQEk5doyqOIiIiISMhatgwefRQuugg6d/Y7TZ2os5LmnHvSOZfnnMtLT0+v9deLi46ke2YjLR4iIiIiIhLKbrkFIiPhjjv8TlJnwvqOu945qcwpLKZ4h+5LExEREREJOfn58MorcN110KKF32nqTNiXNN2XJiIiIiISgpzzNq5OT4c//9nvNHUqUEvwvwJMBtqb2SozuzQQ562p7lmNiImK4KvFui9NRERERCSkjBkD48fD3/8OSUl+p6lTgVrd8VznXDPnXLRzrqVz7plAnLem4qIjOa5tGmPnrMU553ccERERERE5GGVl3uhZbi6MGOF3mjoX1tMdAQYdkcHqLTuYvbrE7ygiIiIiInIwHnoI5s6Fe+6B6Gi/09S5sC9pJ3ZqSmSE8dGcNX5HERERERGRA3n2WfjTn+DUU+H00/1O44uwL2mN42PonZPCh7M15VFEREREJKi9/DJceimceCK89hqY+Z3IF2Ff0gAGHdmMpUXbWLR+q99RRERERESkOm+9BRdeCP36wejREBfndyLf1IuSdlKnppjBh7PW+h1FRERERET29d57cM45cPTR8P770LCh34l8VS9KWpOkOHpmNebD2bovTUREREQkqIwdC2eeCd27e8vuJyT4nch39aKkAQw6MoP5a0tZvmGb31FERERERATgs89g2DDo1Mkra8nJficKCvWqpAF8OFtTHkVEREREfDdxIpxyCrRpA598Ao0b+50oaNSbktaycUO6tEzmozkqaSIiIiIivvrmGxgyBDIzYdw4SEvzO1FQqTclDbzRtBkFWyjYtN3vKCIiIiIi9dO0aXDSSZCe7hW0pk39ThR06lVJG9atBREGr00p8DuKiIiIiEj9M2uWtwdacrJ3P1qLFn4nCkr1qqQ1b9SA49ul83p+AWXl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\n",
"text/plain": [
"<Figure size 1080x720 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"entropy_loss_binary= (lambda Yp: -np.log(Yp), lambda Yp: -np.log(1-Yp))\n",
"\n",
"display(Math(r'H(y,P) = \\begin{cases}P=1, -\\log(P)\\\\P=0, -\\log(1-P)\\end{cases}'))\n",
"\n",
"v = np.linspace(0,10,100)\n",
"plt.figure(1,figsize=(15,10))\n",
"plt.subplot(221)\n",
"plt.plot(v,entropy_loss_binary[0](v))\n",
"plt.title(\"Funcion Entropia Y=1\")\n",
"plt.subplot(222)\n",
"plt.plot(v,entropy_loss_binary[1](v), color=\"red\")\n",
"plt.title(\"Función Entropia Y=0\")\n",
"plt.savefig('images\\sigmoide.png')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Estas dos expresiones podemos juntarlas en una sola para obetener una unica función de coste"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle H(y,P) = -\\frac{1}{n}{\\sum_{1=1}^n}(y\\log(P) + (1-y)\\log(1-P))$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\displaystyle 'H(y,P) =-(\\frac{y}{P}-\\frac{1-y}{1-P})$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cross_loss = (lambda Yp,Yr:-np.nanmean(Yr * np.log(Yp) + (1-Yr) * np.log(1-Yp)), \n",
" lambda Yp,Yr: -(np.divide(Yr,Yp)- np.divide(1-Yr, 1-Yp)))\n",
"\n",
"display(Math(r'H(y,P) = -\\frac{1}{n}{\\sum_{1=1}^n}(y\\log(P) + (1-y)\\log(1-P))'))\n",
"display(Math(r\"'H(y,P) =-(\\frac{y}{P}-\\frac{1-y}{1-P})\")) "
]
},
{
"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.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment