Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] 04_Números_Aleatórios_Faça_Como_Eu_Fiz #Padrão

# Padrão
import numpy as np
from urllib.request import urlopen
import matplotlib.pyplot as plt

# === Carregar dados ===
url = 'https://raw.githubusercontent.com/allanspadini/numpy/dados/citrus.csv'
dados = np.loadtxt(urlopen(url), delimiter=',', skiprows=1, usecols=[1, 2])

# === Interpolar NaNs se houver ===
def interpolar_nans(arr):
    for j in range(arr.shape[1]):
        col = arr[:, j]
        nans = np.isnan(col)
        if nans.any():
            idx = np.arange(len(col))
            col[nans] = np.interp(idx[nans], idx[~nans], col[~nans])
    return arr

if np.isnan(dados).any():
    dados = interpolar_nans(dados)

laranja = dados[:5000, 0]
toranja = dados[5000:, 0]

# === Gerar coeficientes aleatórios ===
def gerar_coeficientes(n, seed=None):
    if seed is not None:
        np.random.seed(seed)
    return np.random.rand(n)

coef_laranja = gerar_coeficientes(100, seed=17)
coef_toranja = gerar_coeficientes(100, seed=17)

# === Análise estatística e projeção ===
def analise_estatistica(orig, coef):
    x = np.arange(len(coef))
    a, b = np.polyfit(x, coef, 1)
    projecao = a * len(coef) + b
    return a, b, projecao

a_lar, b_lar, proj_lar = analise_estatistica(laranja, coef_laranja)
a_tor, b_tor, proj_tor = analise_estatistica(toranja, coef_toranja)

# === Selecionar 3 maiores coeficientes ===
def top3_indices(coef):
    return np.argsort(coef)[-3:]  # índices dos 3 maiores valores

top3_lar_idx = top3_indices(coef_laranja)
top3_tor_idx = top3_indices(coef_toranja)

# === Plot com dois eixos y, só 3 maiores coeficientes destacados ===
fig, ax1 = plt.subplots(figsize=(12, 7))

x_lar = np.arange(len(laranja))
x_tor = np.arange(len(toranja))
x_coef = np.arange(100)
x_proj = 100

# Eixo y primário - Dados originais
ax1.set_xlabel('Índice')
ax1.set_ylabel('Dados Originais', color='black')
ln1 = ax1.plot(x_lar, laranja, label='Laranja - Dados Originais', color='blue')
ln2 = ax1.plot(x_tor, toranja, label='Toranja - Dados Originais', color='green')
ax1.tick_params(axis='y', labelcolor='black')
ax1.grid(True)

# Eixo y secundário - Coeficientes aleatórios
ax2 = ax1.twinx()
ax2.set_ylabel('Coeficientes Aleatórios (0-1)', color='black')

# Todos coeficientes com baixa opacidade
sc1 = ax2.scatter(x_coef, coef_laranja, color='orange', alpha=0.3, label='Laranja - Coeficientes')
sc2 = ax2.scatter(x_coef, coef_toranja, color='darkgreen', alpha=0.3, label='Toranja - Coeficientes')

# Ajuste linear coeficientes
ln3 = ax2.plot(x_coef, a_lar * x_coef + b_lar, '--', color='orange', label='Laranja - Ajuste Linear')
ln4 = ax2.plot(x_coef, a_tor * x_coef + b_tor, '--', color='darkgreen', label='Toranja - Ajuste Linear')

# Projeções próximas
sc3 = ax2.scatter(x_proj, proj_lar, color='red', s=100, edgecolors='black', label='Laranja - Projeção Próxima')
sc4 = ax2.scatter(x_proj, proj_tor, color='brown', s=100, edgecolors='black', label='Toranja - Projeção Próxima')

# Destacar 3 maiores coeficientes
sc5 = ax2.scatter(top3_lar_idx, coef_laranja[top3_lar_idx], color='red', s=150, edgecolors='black', label='Laranja - Top 3 Coeficientes')
sc6 = ax2.scatter(top3_tor_idx, coef_toranja[top3_tor_idx], color='darkred', s=150, edgecolors='black', label='Toranja - Top 3 Coeficientes')

ax2.tick_params(axis='y', labelcolor='black')

# Combinar legendas
lns = ln1 + ln2 + ln3 + ln4 + [sc1, sc2, sc3, sc4, sc5, sc6]
labels = [l.get_label() for l in lns]
ax1.legend(lns, labels, loc='upper left', bbox_to_anchor=(1.05, 1))

plt.title('Dados Originais e Coeficientes Aleatórios - Destacando Top 3 Maiores')
fig.tight_layout()
plt.show()
1 resposta
solução!

Olá, Marinaldo! Como vai?

Muito bem! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Observei que você explorou o uso de NumPy para carregar e manipular dados, utilizou muito bem o Matplotlib para criar visualizações e ainda compreendeu a importância do ajuste linear (np.polyfit) para realizar previsões baseadas em padrões estatísticos.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!