Menu
CoddyTech

La ley de los grandes números

Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 14 de 64.

Lanza una moneda 10 veces y obtener 8 caras no es ninguna sorpresa. Sigue lanzándola y la proporción de caras se acerca lentamente a 0.5:

Gráfico lineal de la proporción de caras en 300 lanzamientos: oscila entre 0.3 y 1 en los primeros lanzamientos, y después se mantiene cerca de una línea roja discontinua en la probabilidad 0.5

Cada punto necesita la proporción hasta el momento. np.cumsum da el total acumulado; divídelo entre los lanzamientos hasta el momento:

heads = np.array([True, False, True, True])
print(np.cumsum(heads))
print(np.round(np.cumsum(heads) / np.arange(1, 5), 2))

Esto imprime:

[1 1 2 3]
[1.   0.5  0.67 0.75]

ax.axhline(y) dibuja la línea de referencia de lado a lado del gráfico:

ax.plot(np.arange(1, 301), share)
ax.axhline(0.5, color="red", linestyle="--")

Esa es la ley de los grandes números: más intentos, más cerca de la probabilidad. Un modelo que obtiene buenos resultados en 20 muestras puede haber tenido suerte; en 2000, difícilmente.

challenge icon

Desafío

Intermedio

Una marca de cereales esconde un juguete en el 20 % de las cajas. El programa lee cuántas se abren; el código inicial rellena toys (True para un juguete) y etiqueta el gráfico.

  1. Calcula la proporción acumulada de juguetes.
  2. Imprímela después de 10 cajas y después de todas, con 3 decimales.
  3. Represéntala frente a los números de las cajas desde 1, añade una línea negra de puntos (":") en 0.2 y muéstrala.

Para otras 80 cajas:

After 10 boxes: 0.1
After 80 boxes: 0.212

y dibuja este gráfico. Después, Coddy describe el tuyo.

Un gráfico titulado Juguetes en cajas de cereales: la proporción acumulada a lo largo de 80 cajas se mantiene en 0 durante 8 cajas, sube y baja, y luego se estabiliza cerca de una línea negra de puntos en 0.2

Pruébalo tú mismo

import numpy as np
import matplotlib.pyplot as plt

boxes = int(input())

# No cambies las líneas de abajo
rng = np.random.default_rng(25)
toys = rng.random(boxes) < 0.2

fig, ax = plt.subplots()
ax.set_title("Toys in Cereal Boxes")
ax.set_xlabel("Boxes opened")
ax.set_ylabel("Share with a toy")

# Escribe tu código abajo
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Estadística para ML

Practica por tu cuenta: Compilador de Python online