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

[Dúvida] Eu não entendi muito bem o que está sendo feito nesse laço "for i in range(100), por que ele é feito?

No curso "NumPy análise numérica eficiente com Python", fiquei com uma dúvida quando chegou nessa parte:

norma = np.array([])
np.random.seed(84)
coef_angulares = np.random.uniform(low=0.0,high=30.0,size=100)

for i in range(100):
  norma = np.append(norma, np.linalg.norm(Y- (coef_angulares[i]*X+b)) )

Ele gerou coef_angulares aleatórios, contendo 100 elementos, conforme foi falado no curso, usando a função np.random.uniform. Porém tenho uma dúvida especifica nesse ponto: Eu não entendi muito bem o que está sendo feito nesse laço "for i in range(100)", a cada iteração, o array "norma" vai adicionando np.linalg.norm(Y- (coef_angulares[i]*X+b)), que parece estar calculando o erro e normalizando ele, e faz isso 100 vezes. Não entendi o que é isso:

PERGUNTAS:

  1. O que array "norma" após as 100 iterações desse for representa? São previsões? São erros? Não consegui entender muito bem.

  2. Por que esse laço for foi executado durante 100 iterações ?

  3. Pra que o que array "norma" é utilizado, após as 100 iterações desse for ?

  4. O "coef_angulares[i]" é um número ou um array? ou seja, ao acessar a varíavel coef_angulares no indice i, o resultado deverá ser um número ou um array?

  5. Complementando a primeira pergunta e também a quarta pergunta, Fiquei um pouco confuso nessa parte "coef_angulares[i]", tenho mais essa dúvida: (coef_angulares[i]*X+b) parece ser a aplicação da fórmula da reta. Mais não entendi muito bem uma coisa: por que acessamos **coef_angulares[i] ** ?, ele é um vetor ou um número?

2 respostas
solução!

Oi William, tudo bem?

Notei uma pequena diferença no trecho de código do curso Reprodutibilidade:

np.random.seed(84)
coef_angulares = np.random.uniform(low=0.10, high=0.90, size=100)
norma2 = np.array([])
for i in range(100):
    norma2 = np.append(norma2, np.linalg.norm(Moscow - (coef_angulares[i] * X + b)))

Esse código calcula a norma L2 para 100 coeficientes angulares aleatórios. Imagine que você quer traçar uma linha reta próxima ao ponto "Moscow". Cada coeficiente angular testado define a inclinação dessa linha. O objetivo é descobrir qual coeficiente angular faz a linha ficar mais próxima de "Moscow". Não são previsões ou erros, apenas distâncias calculadas.

O loop for é repetido 100 vezes para calcular a norma L2 de cada coeficiente angular gerado aleatoriamente e calcular a distância de cada um deles até o ponto "Moscow". O array norma2 guarda esses valores para encontrar o melhor coeficiente angular posteriormente.

O coef_angulares[i] é um número dentro do array coef_angulares, que contém 100 coeficientes angulares diferentes. Usamos coef_angulares[i] para calcular as previsões de Y com base nesse coeficiente angular específico.

Espero ter esclarecido. Qualquer dúvida, me avise!

Abraços e bons estudos!

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

Agora entendi. Muito obrigado por esclarecer isso!