<jupyter_start><jupyter_text>Estatística para Machine Learning   3. Distribuição de frequência  3.1. Importação das bibliotecas e dados originais<jupyter_code>import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
dados = np.array([160, 165, 167, 164, 160, 166, 160, 161, 150, 152, 173, 160, 155,
                  164, 168, 162, 161, 168, 163, 156, 155, 169, 151, 170, 164,
                  155, 152, 163, 160, 155, 157, 156, 158, 158, 161, 154, 161, 156, 172, 153])<jupyter_output><empty_output><jupyter_text>3.2. Ordenação<jupyter_code>dados = np.sort(dados)
dados
minimo = dados.min()
minimo
maximo = dados.max()
maximo
np.unique(dados, return_counts = True)
plt.bar(dados, dados)<jupyter_output><empty_output><jupyter_text>3.3. Número de classes i = 1 + 3.3 log n<jupyter_code>n = len(dados)
n
i = 1 + 3.3 * np.log10(n)
i
i = round(i)
i<jupyter_output><empty_output><jupyter_text>3.4. Amplitude do intervalo - h = AA / i- AA = Xmax - Xmin<jupyter_code>AA = maximo - minimo
AA
h = AA / i
h
import math
h = math.ceil(h)
h<jupyter_output><empty_output><jupyter_text>Construção da distribuição de frequência<jupyter_code>intervalos = np.arange(minimo, maximo + 2, step = h)
intervalos
intervalo1, intervalo2, intervalo3, intervalo4, intervalo5, intervalo6 = 0,0,0,0,0,0
for i in range(n):
  if dados[i] >= intervalos[0] and dados[i] < intervalos[1]:
    intervalo1 += 1
  elif dados[i] >= intervalos[1] and dados[i] < intervalos[2]:
    intervalo2 += 1
  elif dados[i] >= intervalos[2] and dados[i] < intervalos[3]:
    intervalo3 += 1
  elif dados[i] >= intervalos[3] and dados[i] < intervalos[4]:
    intervalo4 += 1
  elif dados[i] >= intervalos[4] and dados[i] < intervalos[5]:
    intervalo5 += 1
  elif dados[i] >= intervalos[5] and dados[i] < intervalos[6]:
    intervalo6 += 1
lista_intervalos = []
lista_intervalos.append(intervalo1)
lista_intervalos.append(intervalo2)
lista_intervalos.append(intervalo3)
lista_intervalos.append(intervalo4)
lista_intervalos.append(intervalo5)
lista_intervalos.append(intervalo6)
lista_intervalos
lista_classes = []
for i in range(len(lista_intervalos)):
  lista_classes.append(str(intervalos[i]) + '-' + str(intervalos[i + 1]))
lista_classes
plt.bar(lista_classes, lista_intervalos)
plt.title('Distribuição de frequência - histograma')
plt.xlabel('intervalos')
plt.ylabel('valores');<jupyter_output><empty_output><jupyter_text>3.4. Distribuição de frequência e histograma com numpy e matplotlib- https://numpy.org/doc/stable/reference/generated/numpy.histogram.html- https://numpy.org/doc/stable/reference/generated/numpy.histogram_bin_edges.htmlnumpy.histogram_bin_edges<jupyter_code>dados = np.array([160, 165, 167, 164, 160, 166, 160, 161, 150, 152, 173, 160, 155,
                  164, 168, 162, 161, 168, 163, 156, 155, 169, 151, 170, 164,
                  155, 152, 163, 160, 155, 157, 156, 158, 158, 161, 154, 161, 156, 172, 153])
frequencia, classes = np.histogram(dados)
frequencia, classes, len(classes)
plt.hist(dados, bins = classes);
frequencia, classes = np.histogram(dados, bins=5)
frequencia, classes
plt.hist(dados, classes);
frequencia, classes = np.histogram(dados, bins = 'sturges')
frequencia, classes
plt.hist(dados, classes);<jupyter_output><empty_output><jupyter_text>3.5. Distribuição de frequência e histograma com pandas e seaborn<jupyter_code>type(dados)
dataset = pd.DataFrame({'dados':dados})
dataset.head()
dataset.plot.hist();
sns.distplot(dados, hist = True, kde = True);<jupyter_output>C:\Users\Libania\anaconda3\lib\site-packages\seaborn\distributions.py:2557: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).
  warnings.warn(msg, FutureWarning)
{'fraction_non_alphanumeric': 0.1320559295701709, 'fraction_numerical': 0.08052822371828068, 'mean_word_length': 5.230645161290322, 'pattern_counts': {'":': 0, '<': 34, '<?xml version=': 0, '>': 34, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 8, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '126028', 'license': 'MIT', 'n_tokens_mistral': 1711, 'n_tokens_neox': 1451, 'n_words': 350, 'path': '2_Estatistica-para-Ciencia-de-Dados/3_Distribuicao-de-frequencia.ipynb', 'repo_name': 'libaniaraujo/Python-IA-Expert-Academy', 'size': '3862'}