Menu
CoddyTech

A curva normal

Parte da seção Estatística para ML do Journey de Machine Learning da Coddy. Lição 9 de 64.

Alturas, notas de exames, sacos de arroz: muitas medições se acumulam em uma distribuição normal, a curva em forma de sino. 500 sacos de uma máquina:

Um histograma de densidade dos pesos de 500 sacos de arroz com uma curva em forma de sino laranja sobre ele. Uma linha tracejada marca a média, 1000 g, no pico, e uma seta de 8 g de comprimento marca o desvio padrão, a largura

Dois números a definem: a média determina o pico, o desvio padrão define a largura. SciPy, a biblioteca científica, conhece a fórmula:

from scipy import stats

ax.hist(bags, bins=16, density=True)
xs = np.linspace(bags.min(), bags.max(), 100)
ax.plot(xs, stats.norm.pdf(xs, bags.mean(), bags.std()))

stats.norm.pdf(x, mean, std) é a altura da curva em x, um valor ou um array. Sua área é 1, como a de um histograma de densidade, então ambos podem compartilhar um gráfico.

Alguns modelos preferem recursos aproximadamente normais. Este gráfico verifica isso.

challenge icon

Desafio

Fácil

Os parafusos devem ter 50 mm de comprimento. O código inicial armazena 240 comprimentos medidos em lengths e configura o gráfico. Compare-os com uma curva normal:

  1. Imprima a média e o desvio padrão (np.std), arredondados para 2 casas decimais, como abaixo.
  2. Desenhe um histograma de densidade com bins=15.
  3. Desenhe a curva ajustada sobre ele: 100 pontos do parafuso mais curto ao mais longo.
  4. Exiba o gráfico.

Para outro lote:

Fitted curve: mean 49.99 mm, std 0.42 mm

e o gráfico:

Um histograma de densidade de 180 comprimentos de parafusos entre cerca de 49 e 51 mm, com uma curva suave em forma de sino sobreposta, atingindo o pico perto de 50

Experimente você mesmo

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# Não altere as linhas abaixo
rng = np.random.default_rng(31)
lengths = np.round(rng.normal(50, 0.4, size=240), 2)

fig, ax = plt.subplots()
ax.set_title("Bolt Lengths")
ax.set_xlabel("Length (mm)")
ax.set_ylabel("Density")

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Estatística para ML

Pratique por conta própria: Compilador de Python online