3
respostas

Dúvida com relação ao SEED e a Variável TEMP

Senhores, envio abaixo o código estudado na aula e após o código descrevo melhor minha dúvida.

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(75243)
temp = nota_media_por_filme_com_pelo_menos_10_votos.sample(frac=1)

medias = [temp[0:i].mean() for i in range(1, len(temp))]

plt.plot(medias)

Nesse código acima disposto, ficou claro no meu entendimento o funcionamento isolado da SEED(75243) bem como o .sample(frac=1), MAS não ficou claro pra mim a relação que existe entre as duas linhas, a fixação do seed bem como o "embaralhamento" aleatório na linha do sample. Como essas duas linhas se correlacionam? Como o SEED codificado na linha anterior fixou ou alterou a extração do sample na sequencia?

Atenciosamente

3 respostas

Olá, Tobias! Tudo bom?

A função sample(frac=1) te traz 100% do DataFrame escolhido, então independente do SEED, os elementos não mudem, talvez a ordem entre eles.

Agora se nós tivessemos usado frac=0.1, nós traríamos apenas 10% dos elementos do DataFrame, e essa função em particular de particionar o DataFrame escolhe os elementos de forma "aleatória". E tudo que envolve aleatoriedade no Python nós podemos fazer um controle para que possamos reproduzir o mesmo experimento com os mesmos números aleatórios.

O parâmetro SEED faz com que a lista de números pseudo-aleatórios utilizados na hora da seleção das funções aleatórias sejam os mesmos.

Nesse outro tópico eu comento um pouco mais sobre como funcionam os números aleatórios no Python e o que é o SEED.

E a função também acessa esse parâmetro global para funcionar.

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado pela Sua atenção Marcus.

Entendo a questão da aleatoriedade no python, bem como o funcionamento do SEED.

Minha duvida vem de que, até o momento de estudo, todas as vezes que utilizei um SEED de aleatóriedade este era inserido diretamente num método, como por exemplo o Random State no método sklearn.model_selection.train_test_split(arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None) . Então no caso apresentado acima, não entendo acontece a correlação entre a linha 5 (temp) com a linha 3 (np.random.seed). Aparentemente não vejo como as linhas "se conversam" com relação a aleatoriedade.

Não sei se fui Claro. Mas desde já agradeço demais a sua atenção.

Olá, Tobias!

A função pd.DataFrame.sample() é do pacote Pandas. Ela também possui o parâmetro random_state na sua construção, mas este é opcional e possui o valor padrão. Valor padrão este que é extraido da SEED que foi definida dentro do escopo do Numpy, assim como comenta a documentação da função:

"(...) If np.random.RandomState or np.random.Generator, use as given."

Se nós definirmos a SEED dentro do escopo do Numpy, a função já o aproveita por padrão, sem precisarmos indicar diretamente no código. Mas podemos também indicar e utilizar outros generators.

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!