1
resposta

Duvida, resultado diferente do esperado

Após transcrever o código relacionado ao começo do curso de machine learning percebi que a taxa de acurácia ficou diferente do apresentado no curso, o meu ficou em 100%, já o do curso ficou em 66,66%, isso é normal?

# features (1 sim, 0 não)
# pelo longo?
# perna curta?
# faz auau? 

porco1 = [0, 1, 0]
porco2 = [0, 1, 1]
porco3 = [1, 1, 1]

cachorro1 = [0, 1, 1]
cachorro2 = [1, 0, 1]
cachorro3 = [1, 1, 1]

# 1 => porco, 0 => cachorro
treino_x = [porco1, porco2, porco3, cachorro1, cachorro2, cachorro3]
treino_y = [1,1,1,0,0,0]
from sklearn.svm import LinearSVC

model = LinearSVC();
model.fit(treino_x, treino_y)
misterio1 = [1,1,1]
misterio2 = [1,1,0]
misterio3 = [0,1,1]

teste_x = [misterio1, misterio2, misterio3]
teste_y = [0, 1, 1]

previsoes = model.predict(teste_x)

print(previsoes)
from sklearn.metrics import accuracy_score

taxa_de_acerto = accuracy_score(teste_y, previsoes)
print("Taxa de acerto %.2f " % (taxa_de_acerto * 100))
1 resposta

Olá Vitor tudo bem com você??

Pois é a minha também! Essa acurácia é o resultado do algoritmo com relação ao treino naquela base de dados. Então é justificado o por que o nosso resultado(a minha ficou igual a sua) foi diferente do apresentado em aula. O algoritmo vai aprendendo literalmente e como a base desse teste é bem pequena, faz sentido. Em bases maiores é praticamente impossível ter acurácia de 100% e aliás nem é esperado mesmo. Com resultados acima de 90% no primeiro teste a possibilidade de ter algo errado é bem grande.

Segue o meu note.

# Features (1 sim, 0 não)
#pelo longo?
#perna curta?
#faz auau?

porco1 = [0, 1, 0]
porco2 = [0, 1, 1]
porco3 = [1, 1, 0]

cachorro1 = [0, 1, 0]
cachorro2 = [1, 0, 1]
cachorro3 = [1, 1, 1]

# 1 => porco, 0 => cachorro
treino_x = [porco1, porco2, porco3, cachorro1, cachorro2, cachorro3]
treino_y = [1, 1, 1, 0, 0, 0]

from sklearn.svm import LinearSVC

model = LinearSVC()
model.fit(treino_x, treino_y)

LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,
          intercept_scaling=1, loss='squared_hinge', max_iter=1000,
          multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,
          verbose=0)

animal_misterioso = [1, 1, 1]
model.predict([animal_misterioso])

array([0])

misterio1 = [1, 1, 1]
misterio2 = [1, 1, 0]
misterio3 = [0, 1, 1]

teste_x = [misterio1, misterio2, misterio3]
teste_y = [0, 1, 1]

previsoes = model.predict(teste_x)

previsoes == teste_y

array([ True,  True,  True])

corretos = (previsoes == teste_y).sum()
total = len(teste_x)
taxa_de_acerto = corretos/total
print("Taxa de acerto: ", taxa_de_acerto * 100)

Taxa de acerto:  100.0

from sklearn.metrics import accuracy_score

taxa_de_acerto = accuracy_score(teste_y, previsoes)
print("Taxa de acerto", taxa_de_acerto * 100)

Taxa de acerto 100.0

Se a minha resposta te ajudou, fico muito feliz =D e peço que por favor encerre o Post marcando a dúvida como resolvida! Caso precise de ajuda é só voltar aqui e perguntar.

Obrigado

Victor Gonzalez

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software