Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no parâmetro p do método choice()

Eu não entendi muito bem como funciona o parâmetro p no choice(). Na documentação oficial está escrito o seguinte: 'The probabilities associated with each entry in a. If not given the sample assumes a uniform distribution over all entries in a.'

Significa que se eu passar uma lista com as probabilidades de cada elemento sair, todos eles eles terão chances distintas serem escolhidos? E se eu não passar nada, o que seria o valor Default, todos eles teriam a mesma chance?

Por exemplo, veja o código abaixo em que eu passei uma lista com as probabilidades:

>>> import numpy as np
>>> a = [14, 78, 23, 41, 44]
>>> np.random.choice(a, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([23, 41, 41])
>>> np.random.choice(a, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([41, 23, 41])
np.random.choice(a, 3, p=[0.1, 0, 0.3, 0.6, 0])
array([14, 23, 41])

Pelo que entendi, para os cinco elementos de (a) as probabilidades são: [14 = 0.1; 78 = 0; 23 = 0.3; 41 = 0.6; 44 = 0], e como para os números 78 e 44 as probabilidades são zero eles nunca irão aparecer, isto está correto?

Por fim, eu fiz o meu código sem passar o parâmetro p, ficou da seguinte maneira:

todas_matriculas = []
for index, row in nomes.iterrows():
  id = row.ID_alunos
  matriculas = row.Matricula
  for i in range(matriculas):
    mat = [id, np.random.choice(cursos.index)]
    todas_matriculas.append(mat)
matriculas = pd.DataFrame(todas_matriculas, columns = ['ID Aluno', 'ID Curso'])
matriculas
ID Aluno    ID Curso
0    133    9
1    310    12
2    310    2
3    310    15
4    310    7
...    ...    ...
815    193    13
816    193    7
817    118    18
818    48    18
819    173    4
820 rows × 2 columns

Ou seja, a única diferença entre o meu código e o do instrutor será que para os vinte cursos existentes, cada curso vai ter a mesma probabilidade de ser escolhido para cada matrícula?

2 respostas
solução!

Olá Janderson como você está??

Eu respondi uma dúvida parecida aqui nesse POST

Verifica se ele te atende, caso após ver ainda exista alguma dúvida, daí a gente discute e encontra uma solução, beleza?

Perfeito, obrigado!!!