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

Acurácia não muda, mesmo alterando os valores

Segui tds os passos, porém o resultado da acurácia está sempre em 50. Poderiam verificar se não me atentei para algo ou é alguma configuração do colab? Até antes da função for está batendo certinho, pode ser q seja nesse finalzinho o problema.

Obrigado!

from sklearn.datasets import  make_classification
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(46)

X, Y = make_classification(n_features=2, n_redundant=0, n_informative=1, n_clusters_per_class=1)

print(X.shape, Y.shape)

plt.scatter(X[:,0], X[:,1], marker='o', c=Y,
            edgecolor='k')

p= X[10]
print(Y[10])
plt.plot(p[0], p[1], marker='^', markersize=20)



def plotmodel(w1,w2,b):

  plt.scatter(X[:,0], X[:,1], marker='o', c=Y,
            edgecolor='k')

  xmin, xmax = plt.gca().get_xlim()
  ymin, ymax = plt.gca().get_ylim()

  x= np.linspace(-2,4,50)
  y= (-w1*x - b)/w2

  plt.axvline(0,-1,1,color='k',linewidth=1)
  plt.axhline(0,-2,4,color='k',linewidth=1)
  plt.plot(x,y)
  plt.grid(True)

  plt.xlim(xmin, xmax)
  plt.ylim(ymin, ymax)

w1= 5
w2= 1
b = -0.4
plotmodel(w1,w2,b)

p= (-1,1)
print(w1*p[0] + w2*p[1] + b)



def classify(ponto, w1, w2, b):
  ret = w1*p[0] + w2*p[1] + b
  if ret >= 0:
    return 1, 'yellow'
  else:
    return 0, 'blue'  

p= (2,-1)
classe, cor = classify(p, w1, w2, b)
print(classe, cor)

plotmodel(w1, w2, b)
plt.plot(p[0], p[1], marker='^', color=cor, markersize=20)


acertos = 0
for k in range(len(X)):
  categ, _ = classify(X[k], w1, w2, b)
  if categ == Y[k]:
    acertos += 1

print('Acurácia: {0}'.format(100 * acertos / len(X)))
1 resposta
solução!

Encontrei o erro!

na função classify eu coloquei:

ret = w1*p[0] + w2*p[1] + b

quando deveria ser:

ret = w1*ponto[0] + w2*ponto[1] + b