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....