============================================================
1) Importar bibliotecas
============================================================
import numpy as np
import matplotlib.pyplot as plt
============================================================
2) Fixar a nova semente (ALTERAÇÃO PEDIDA)
============================================================
np.random.seed(199)
============================================================
3) Gerar dados de classificação (exemplo similar à aula)
============================================================
Classe 0
x1_class0 = np.random.randn(50) - 2
x2_class0 = np.random.randn(50)
Classe 1
x1_class1 = np.random.randn(50) + 2
x2_class1 = np.random.randn(50)
Concatenar dados
X1 = np.concatenate([x1_class0, x1_class1])
X2 = np.concatenate([x2_class0, x2_class1])
Labels
y = np.array([0]*50 + [1]*50)
============================================================
4) Função para plotar o modelo linear
============================================================
def plotmodel(w1, w2, b):
plt.figure(figsize=(6,6))
# Plot das classes
plt.scatter(X1[y==0], X2[y==0], color='red', label='Classe 0')
plt.scatter(X1[y==1], X2[y==1], color='blue', label='Classe 1')
# Criar linha de decisão
x_vals = np.linspace(min(X1), max(X1), 100)
# Equação da reta: w1*x1 + w2*x2 + b = 0
# => x2 = -(w1*x1 + b)/w2
x2_vals = -(w1 * x_vals + b) / w2
plt.plot(x_vals, x2_vals, color='black', label='Fronteira de decisão')
plt.legend()
plt.title(f"Modelo linear: w1={w1}, w2={w2}, b={b}")
plt.xlabel("X1")
plt.ylabel("X2")
plt.grid(True)
plt.show()
============================================================
5) Ajuste manual dos pesos (SOLUÇÃO)
============================================================
Valores sugeridos pelo instrutor
w1 = -1
w2 = 6
b = 0
Plot do modelo
plotmodel(w1, w2, b)