Seaborn
Carregando, aguarde alguns segundos.

1 - Distribuições com Seaborn

Visualize Distribuições com o módulo Seaborn.

Seaborn é uma biblioteca que usa o Matplotlib para plotar gráficos. Ele será usado para visualizar distribuições aleatórias.

Autores

Roberto Teixeira

Betobyte

Cientista de Dados

CIEDA

cieda.com.br

roberto@cieda.com.br

Autor

Carlos Delfino

Arduino

Cientista de Dados

Basicão da Eletrônica

www.carlosdelfino.eti.br

consultoria@carlosdelfino.eti.br

Coautor

1.1 - Instale o Seaborn.

Se você já tiver o Python e o PIP instalados em um sistema, instale-o usando este comando:

pip install seaborn

Se você usa o Jupyter, instale o Seaborn usando este comando:

!pip install seaborn

1.2 - Distplots

Distplot significa diagrama de distribuição, toma como entrada uma matriz e traça uma curva correspondente à distribuição de pontos na matriz.

1.3 - Importar Matplotlib

Importe o objeto pyplot do módulo Matplotlib.

import matplotlib.pyplot as plt

Você pode aprender sobre o módulo Matplotlib no curso Python Matplotlib .

1.3.1 - Importar Seaborn

Importe o módulo Seaborn em seu código usando a seguinte instrução:

import seaborn as sns

1.3.2 - Plotando um Distplot

Exemplo:

import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot([0, 1, 2, 3, 4, 5])
plt.show()

1.3.3 - Plotando um Distplot sem o Histograma

Exemplo:

import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot([0, 1, 2, 3, 4, 5], hist=False)

plt.show()

Nota: Usaremos: sns.distplot(arr, hist=False)para visualizar distribuições aleatórias neste tutorial.

1.4 - Distribuição Normal (Gaussiana)

A Distribuição Normal é uma das distribuições mais importantes, sendo também chamada de Distribuição Gaussiana em homenagem ao matemático alemão Carl Friedrich Gauss.

Ele se ajusta à distribuição de probabilidade de muitos eventos, por exemplo. Pontuações de QI, batimentos cardíacos etc.

Use o método random.normal() para obter uma distribuição de dados normal.

Possui três parâmetros:

  • loc - (Média) onde existe o pico do sino.
  • scale - (Desvio Padrão) quão plana deve ser a distribuição do gráfico.
  • size - A forma da matriz retornada.

Exemplo:

Gere uma distribuição normal aleatória de tamanho 2x3:

from numpy import random
x = random.normal(size=(2, 3))
print(x)

Exemplo:

Gere uma distribuição normal aleatória de tamanho 2x3 com média em 1 e desvio padrão de 2:

from numpy import random
x = random.normal(loc=1, scale=2, size=(2,3))
print(x)

1.4.1 - Visualização da Distribuição Normal

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.normal(size=1000), hist=False)
plt.show()

1.5 - Distribuição binomial

A Distribuição Binomial é uma Distribuição Discreta, que descreve o resultado de cenários binários, por exemplo, lançamento de uma moeda, será cara ou coroa.

Possui três parâmetros:

  • n - número de tentativas.
  • p - probabilidade de ocorrência de cada tentativa (por exemplo, para lançamento de uma moeda 0,5 cada).
  • size - A forma da matriz retornada.

Distribuição Discreta: A distribuição é definida em um conjunto separado de eventos, por exemplo, o resultado de um sorteio é discreto, pois pode ser apenas cara ou coroa, enquanto a altura das pessoas é contínua, pois pode ser 170, 170,1, 170,11 e assim por diante.

Exemplo:

Dadas 10 tentativas de lançamento de moedas, gere 10 pontos de dados:

from numpy import random
x = random.binomial(n=10, p=0.5, size=10)
print(x)

1.6 - Visualização da Distribuição Binomial

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.binomial(n=10, p=0.5, size=1000), hist=True, kde=False)
plt.show()

1.7 - Diferença entre distribuição normal e binomial

A principal diferença é que a distribuição normal é contínua, enquanto a binomial é discreta, mas se houver pontos de dados suficientes, será bastante semelhante à distribuição normal com certos loc e escala.

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.normal(loc=50, scale=5, size=1000), hist=False, label='normal')
sns.distplot(random.binomial(n=100, p=0.5, size=1000), hist=False, label='binomial')
plt.show()

1.8 - Distribuição de Poisson

A Distribuição de Poisson é uma Distribuição Discreta .

Ele estima quantas vezes um evento pode acontecer em um determinado tempo. Por exemplo, se alguém come duas vezes por dia, qual é a probabilidade de comer três vezes?

Tem dois parâmetros:

  • lam - taxa ou número conhecido de ocorrências, por exemplo, 2 para o problema acima.
  • size - A forma da matriz retornada.

Exemplo:

Gere uma distribuição aleatória 1x10 para a ocorrência 2:

from numpy import random
x = random.poisson(lam=2, size=10)
print(x)

1.8.1 - Visualização da Distribuição de Poisson

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.poisson(lam=2,size=1000),kde=False)
plt.show()

1.8.2 - Diferença entre distribuição normal e de Poisson

A distribuição normal é contínua enquanto Poisson é discreta.

Mas podemos ver que semelhante ao binomial para uma distribuição de Poisson grande o suficiente, ela se tornará semelhante à distribuição normal com certos std dev e média.

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.normal(loc=50, scale=7, size=1000), hist=False, label='normal')
sns.distplot(random.poisson(lam=50, size=1000), hist=False, label='poisson')

plt.show()

1.8.3 - Diferença entre Poisson e Distribuição Binomial

A diferença é muito sutil, pois a distribuição binomial é para tentativas discretas, enquanto a distribuição de Poisson é para tentativas contínuas.

Mas para uma distribuição binomial muito grande ne próxima de zero pé quase idêntica à distribuição de Poisson, tal que n * pé quase igual a lam.

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.binomial(n=1000, p=0.01, size=1000), hist=False, label='binomial')
sns.distplot(random.poisson(lam=10, size=1000), hist=False, label='poisson')
plt.show()

1.9 - Distribuição uniforme

Usado para descrever a probabilidade em que cada evento tem chances iguais de ocorrer.

Por exemplo, geração de números aleatórios.

Possui três parâmetros:

  • a - limite inferior - padrão 0,0
  • b - limite superior - padrão 1,0
  • size - a forma da matriz retornada

Exemplo:

Crie uma amostra de distribuição uniforme 2x3:

from numpy import random
x = random.uniform(size=(2, 3))
print(x)

1.9.1 - Visualização da Distribuição Uniforme

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.uniform(size=1000), hist=False)
plt.show()

1.10 - Distribuição Logística

A Distribuição Logística é usada para descrever o crescimento.

Usado extensivamente em aprendizado de máquina em regressão logística, redes neurais etc.

Possui três parâmetros:

  • loc - média, onde está o pico. Padrão 0.
  • scale - desvio padrão, o nivelamento da distribuição. Padrão 1.
  • size - A forma da matriz retornada.

Exemplo:

Desenhe amostras 2x3 de uma distribuição logística com média em 1 e stddev 2.0:

from numpy import random

x = random.logistic(loc=1, scale=2, size=(2, 3))

print(x)

1.10.1 - Visualização da Distribuição Logística

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.logistic(size=1000), hist=False)

plt.show()

1.10.2 - Diferença entre Distribuição Logística e Normal

Ambas as distribuições são quase idênticas, mas a distribuição logística tem mais área sob as caudas, o que significa que representa mais possibilidade de ocorrência de um evento mais distante da média.

Para valores de escala mais altos (desvio padrão), as distribuições normal e logística são quase idênticas, exceto pelo pico.

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.normal(scale=2, size=1000), hist=False, label='normal')
sns.distplot(random.logistic(size=1000), hist=False, label='logistic')

plt.show()

1.11 - Distribuição Multinomial

A distribuição multinomial é uma generalização da distribuição binomial.

Ele descreve os resultados de cenários multinomiais, diferentemente dos binomiais, onde os cenários devem ser apenas um de dois. Por exemplo, tipo sanguíneo de uma população, resultado da rolagem de dados.

Possui três parâmetros:

  • n - número de resultados possíveis (por exemplo, 6 para lançamento de dados).
  • pvals - lista de probabilidades de resultados (por exemplo, [1/6, 1/6, 1/6, 1/6, 1/6, 1/6] para lançamento de dados).
  • size- A forma da matriz retornada.

Exemplo:

Extraia uma amostra para o lançamento de dados:

from numpy import random

x = random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6])

print(x)

Nota: Amostras multinomiais NÃO produzirão um único valor! Eles produzirão um valor para cada pval.

Nota: Como são generalizações da distribuição binomial, sua representação visual e similaridade da distribuição normal é a mesma das distribuições binomiais múltiplas.

1.12 - Distribuição Exponencial

A distribuição exponencial é usada para descrever o tempo até o próximo evento, por exemplo, falha/sucesso, etc.

Tem dois parâmetros:

  • scale- inverso da taxa ( veja lam na distribuição de poisson ) padrão para 1,0.
  • size- A forma da matriz retornada.

Exemplo:

Desenhe uma amostra para distribuição exponencial com escala 2.0 com tamanho 2x3:

from numpy import random
x = random.exponential(scale=2, size=(2, 3))
print(x)

1.12.1 - Visualização da Distribuição Exponencial

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.exponential(size=1000), hist=False)
plt.show()

Relação entre Poisson e Distribuição Exponencial

A distribuição de Poisson lida com o número de ocorrências de um evento em um período de tempo, enquanto a distribuição exponencial lida com o tempo entre esses eventos.

1.13 - Distribuição do Quiquadrado

A distribuição do Quiquadrado é usada como base para verificar a hipótese.

Tem dois parâmetros:

  • df - (grau de liberdade).
  • size- A forma da matriz retornada.

Exemplo:

Desenhe uma amostra para distribuição qui-quadrado com grau de liberdade 2 com tamanho 2x3:

from numpy import random
x = random.chisquare(df=2, size=(2, 3))
print(x)

1.13.1 - Visualização da distribuição do Chi Square

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.chisquare(df=1, size=1000), hist=False)
plt.show()

1.14 - Distribuição Rayleigh

A distribuição de Rayleigh é usada no processamento de sinais.

Tem dois parâmetros:

  • scale- (desvio padrão) decide quão plana a distribuição será o padrão 1.0).
  • size- A forma da matriz retornada.

Exemplo:

Extraia uma amostra para distribuição rayleigh com escala de 2 com tamanho 2x3:

from numpy import random

x = random.rayleigh(scale=2, size=(2, 3))

print(x)

1.14.1 - Visualização da Distribuição Rayleigh

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns

sns.distplot(random.rayleigh(size=1000), hist=False)

plt.show()

1.14.2 - Semelhança entre distribuição de Rayleigh e Quiqrado

Na unidade stddev e 2 graus de liberdade rayleigh e chi quadrado representam as mesmas distribuições.

1.15 - Distribuição de Pareto

Uma distribuição seguindo a lei de Pareto, ou seja, distribuição 80-20 (20% de fatores causam 80% de resultado).

Tem dois parâmetros:

  • a - parâmetro de forma.
  • size - A forma da matriz retornada.

Exemplo:

Extraia uma amostra para distribuição de Pareto com forma de 2 com tamanho 2x3:

from numpy import random
x = random.pareto(a=2, size=(2, 3))
print(x)

1.15.1 - Visualização da distribuição de Pareto

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
sns.distplot(random.pareto(a=2, size=1000), kde=False)
plt.show()

1.16 - Distribuição Zipf

As distribuições Zipf são usadas para amostrar dados com base na lei de Zipf.

Lei de Zipf: Em uma coleção, o enésimo termo comum é 1/n vezes o termo mais comum. Por exemplo, a 5ª palavra comum em inglês ocorre quase 1/5 da palavra mais usada.

Tem dois parâmetros:

  • a- parâmetro de distribuição.
  • size- A forma da matriz retornada.

Exemplo:

Desenhe uma amostra para distribuição zipf com parâmetro de distribuição 2 com tamanho 2x3:

from numpy import random
x = random.zipf(a=2, size=(2, 3))
print(x)

1.16.1 - Visualização da Distribuição Zipf

Exemplo: de 1000 pontos, mas plotando apenas aqueles com valor < 10 para um gráfico mais significativo.

Exemplo:

from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
x = random.zipf(a=2, size=1000)
sns.distplot(x[x<10], kde=False)
plt.show()
Arduino
Coautor
Betobyte
Autor
Autores
||| Áreas ||| Estatística ||| Python ||| Projetos ||| Dicas & Truques ||| Quantum ||| Seaborn || Python para Iniciantes || Python Básico || Matplotlib || Numpy || Seaborn || Pandas || Django || Estatística para Cientistas de Dados || Python com ML Básico || Python com ML Básico || Aulas | Distribuições (Distribuições com Seaborn) |