Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução - Faça como eu fiz - Aula 03

Boa noite!

Lembrando que as variáveis aqui definidas continuam com a nomeação já feita na resolução do exercício prático da aula anterior (02), para o qual peço também um retorno de algum professor.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Estudante. Como vai?

Parabéns pela excelente implementação! Você aplicou com maestria os conceitos de regressão linear simples utilizando as fórmulas matemáticas nativas traduzidas perfeitamente para as operações vetorizadas do NumPy. Os seus dois gráficos mostram que as retas de ajuste laranjas conseguiram capturar com precisão a tendência de crescimento de peso em relação ao diâmetro tanto para as laranjas quanto para as toranjas.

Como você solicitou um retorno sobre as resoluções, separei alguns pontos técnicos importantes para validar o seu código e enriquecer ainda mais o seu aprendizado com o NumPy:

1. Validação Matemática dos Coeficientes

A forma como você traduziu as equações dos mínimos quadrados para o código está impecável:

  • O cálculo do coeficiente angular a utilizando os métodos np.sum() combinados com as operações elemento a elemento (X*Y e X2) demonstra que você compreendeu o poder da vetorização do NumPy, evitando o uso de laços for lentos.
  • O cálculo do coeficiente linear b utilizando np.mean() também foi aplicado de forma perfeita e limpa.

2. Dica de Visualização de Dados (Scatter Plot)

Nos seus dois scripts, você utilizou o método plt.plot() para renderizar tanto os dados reais (linha azul) quanto a reta de regressão (linha laranja).

  • Sugestão de Boa Prática: Como os dados de diâmetro e peso representam observações de amostras individuais, a convenção em Ciência de Dados é exibir os dados brutos reais como pontos isolados em um gráfico de dispersão (scatter plot), e a reta de ajuste como uma linha contínua.
  • Para ajustar isso e deixar o seu visual ainda mais profissional, você pode substituir a primeira linha de plotagem usando o plt.scatter():
# Substitua isso:
# plt.plot(orange_diameter, orange_weight)

# Por isso:
plt.scatter(orange_diameter, orange_weight, alpha=0.5, label='Dados Reais')
plt.plot(X, fx, color='orange', label='Reta de Ajuste')
plt.legend()

O parâmetro alpha=0.5 ajuda a enxergar a densidade de pontos onde os dados se sobrepõem.

3. Calculando a Distância Normada (Métrica de Erro)

Notei que no primeiro script você deixou comentada a linha que calcula a norma da diferença: #np.linalg.norm(orange_weight - fx).

Essa função np.linalg.norm() calcula a norma L2 (distância euclidiana). Ela é excelente para resumir o erro total do seu modelo em um único número real. Quanto menor for o valor retornado por essa função, mais próxima a sua reta laranja estará dos dados azuis. É uma ótima métrica para comparar o ajuste de diferentes modelos!

Continue mantendo essa excelente consistência na organização das variáveis entre as aulas e nas suas plotagens. O seu fluxo de análise de regressão com NumPy está correto e muito bem estruturado.

Espero que possa ter lhe ajudado!