Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
262 changes: 228 additions & 34 deletions your-code/main.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -31,10 +31,43 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": []
"source": [
"def bayes(priori, verosimilitud): \n",
" marginal=sum(np.multiply(priori, verosimilitud))\n",
" posteriori=np.divide(np.multiply(priori, verosimilitud), marginal)\n",
" return posteriori"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"prioris=[1/2, 1/2] # bolws de galletas\n",
"v_vainilla=[3/4, 2/4] # verosimilitud vainilla\n",
"v_chocolate=[1/4, 2/4] # verosimilitud chocolate"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Probabilidad de que venga del cuenco de galletas 1: 0.6\n"
]
}
],
"source": [
"print ('Probabilidad de que venga del cuenco de galletas 1: ',bayes(prioris, v_vainilla)[0])\n"
]
},
{
"cell_type": "markdown",
Expand All @@ -45,10 +78,23 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.4\n",
"0.4\n"
]
}
],
"source": [
"print (bayes(prioris, v_vainilla)[1])\n",
"print (1-bayes(prioris, v_vainilla)[0])\n",
"#probabilidad de que venga del cuenco de galletas 2."
]
},
{
"cell_type": "markdown",
Expand All @@ -59,10 +105,22 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Probabilidad de que venga del cuenco de galletas 1: 0.3333333333333333\n",
"Probabilidad de que venga del cuenco de galletas 2: 0.6666666666666666\n"
]
}
],
"source": [
"print ('Probabilidad de que venga del cuenco de galletas 1:',bayes(prioris, v_chocolate)[0])\n",
"print ('Probabilidad de que venga del cuenco de galletas 2:',bayes(prioris, v_chocolate)[1])"
]
},
{
"cell_type": "markdown",
Expand Down Expand Up @@ -95,10 +153,34 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"data": {
"text/plain": [
"0.5882352941176471"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"prioris=[1/2, 1/2] # bags\n",
"\n",
"#verosimilitud\n",
"v_marron=[0.3, 0.13] \n",
"v_amarillo=[0.2, 0.14] \n",
"v_rojo=[0.2, 0.13] \n",
"v_verde=[0.1, 0.2] \n",
"v_naranja=[0.1, 0.16] \n",
"v_mandarina=[0.1, 0] \n",
"v_azul=[0, 0.24] \n",
"\n",
"v_amarillo[0]*prioris[0]/(v_verde[1]*prioris[1] + v_amarillo[1]*prioris[1])\n"
]
},
{
"cell_type": "markdown",
Expand All @@ -109,10 +191,23 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"data": {
"text/plain": [
"0.411764705882353"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v_amarillo[1]*prioris[1]/(v_verde[1]*prioris[1] + v_amarillo[1]*prioris[1])\n"
]
},
{
"cell_type": "markdown",
Expand All @@ -123,10 +218,23 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"data": {
"text/plain": [
"0.3333333333333333"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v_verde[0]*(1/2)/(v_verde[0]*(1/2) + v_verde[1]*(1/2))"
]
},
{
"cell_type": "markdown",
Expand All @@ -141,10 +249,25 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Si se queda en puerta A, probabilidad: 0.3333333333333333\n",
"Si se cambia a puerta C, probabilidad: 0.6666666666666666\n"
]
}
],
"source": [
"prioris=[1/3, 1/3, 1/3] # puertas\n",
"v_premio=[0, 1/2, 1] # verosimilitud premio\n",
"\n",
"print ('Si se queda en puerta A, probabilidad:',bayes(prioris, v_premio)[1])\n",
"print ('Si se cambia a puerta C, probabilidad: ',bayes(prioris, v_premio)[2]) \n"
]
},
{
"cell_type": "markdown",
Expand All @@ -157,10 +280,38 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"priori=pd.Series(np.random.uniform(0, 1, size=10000)) # distribucion a priori uniforme\n",
"sign_up=14 # 14 personas piden servicio\n",
"\n",
"\n",
"def modelo(param): # modelo binomial random\n",
" res=np.random.binomial(100, param) # se suponen 100 visitas\n",
" return res\n",
"\n",
"\n",
"datos=[modelo(p) for p in priori]\n",
"\n",
"posteriori=priori[list(map(lambda x: x==sign_up, datos))] # se genera el a posteriori\n",
"posteriori.hist()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
Expand All @@ -171,10 +322,30 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Se describe el a posteriori:\n",
"count 98.000000\n",
"mean 0.146408\n",
"std 0.035133\n",
"min 0.081052\n",
"25% 0.122832\n",
"50% 0.143073\n",
"75% 0.166139\n",
"max 0.271698\n",
"dtype: float64\n"
]
}
],
"source": [
"print ('Se describe el a posteriori:')\n",
"print (posteriori.describe())"
]
},
{
"cell_type": "markdown",
Expand All @@ -185,10 +356,21 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Rango intercuantil: 0.09785696449580149 | 0.20233792671069697\n"
]
}
],
"source": [
"print('Rango intercuantil: ', posteriori.quantile(.05), '|', posteriori.quantile(.95)) \n",
"# rango intercuantil (90% de confianza)"
]
},
{
"cell_type": "markdown",
Expand All @@ -199,10 +381,22 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Estimación máximo-verosímil: 0.14 | 0.15306122448979592\n"
]
}
],
"source": [
"modo=posteriori.round(2).mode()[0] #redondeo para maxima verosimilitud proporcion de visitantes...\n",
"prob=list(posteriori.round(2)).count(modo)/len(posteriori.round(2)) # ....con probabilidad \n",
"print('Estimación máximo-verosímil: ', modo, '|',prob)"
]
}
],
"metadata": {
Expand All @@ -221,7 +415,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.2"
"version": "3.8.8"
}
},
"nbformat": 4,
Expand Down