1
resposta

Solução usando um loop para automatizar

np.random.seed(199)
X, Y = make_classification(n_features=2, n_redundant=0, n_informative=1, n_clusters_per_class=1)

W1 = 0.06198
W2 = 0.88229
bias = 0.10751
parametros_otimo = [0,0,0]
acerto_otimo = 0
loops = 100000
i=0
while i<loops:
  acerto_teste = precisao(X, Y, W1, W2, bias)
  if (acerto_teste>acerto_otimo):
    acerto_otimo=acerto_teste
    parametros_otimo = [W1, W2, bias]
    print('W1: %.5f, W2: %.5f, bias: %.5f, acertos: %.0f%%' % (parametros_otimo[0], parametros_otimo[1], parametros_otimo[2], acerto_otimo*100))
  W1, W2, bias = np.random.rand(3)
  i += 1
plotModel(parametros_otimo[0], parametros_otimo[1], parametros_otimo[2])
print('W1: %.5f, W2: %.5f, bias: %.5f, acertos: %.0f%%' % (parametros_otimo[0], parametros_otimo[1], parametros_otimo[2], acerto_otimo*100))

Pra não precisar ficar "chutando" valores, coloquei um loop testando valores aleatórios.... Com apenas 10 ciclos, ele chega em 84% de precisão. Com 100 ciclos, ele chega em 85% de precisão. Com 1000 ciclos, ele chega em 86% de precisão. Precisa de 100000 ciclos, pra chegar em 87% de precisão.

Pra chegar nos 89% conforme solução do exercício, precisaria muito processamento e paciência....

1 resposta

Olá, Christoffer.

Tudo bem?

Entendo sua preocupação com a eficiência do processamento. No entanto, o objetivo do exercício não é encontrar a precisão mais alta possível, mas sim praticar o ajuste manual dos parâmetros do modelo.

O loop que você implementou é uma abordagem de força bruta para otimizar os parâmetros, que, como você observou, pode ser muito ineficiente. Em um cenário real, geralmente usamos algoritmos de otimização, como o gradiente descendente, para ajustar os parâmetros de um modelo de aprendizado de máquina.

No gradiente descendente, por exemplo, nós inicializamos os parâmetros com valores aleatórios e então iterativamente ajustamos esses parâmetros na direção que minimiza a função de perda. Este processo é muito mais eficiente do que testar aleatoriamente muitos conjuntos diferentes de parâmetros.

Espero ter entendido, e ajudado de alguma forma. Bons estudos!