Notas do curso Alura - Curso Classificação Classificação com SKLearn

Uso do SKLearn para treino, exemplo:

from sklearn.svm import LinearSVC
 
# 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, 1]
cachorro2 = [1, 0, 1]
cachorro3 = [1, 1, 1]
 
# 1 => porco, 0 => cachorro
dados = [porco1, porco2, porco3, cachorro1, cachorro2, cachorro3]
classes = [1,1,1,0,0,0]
 
model = LinearSVC()
model.fit(dados, classes)
 
animal_misterioso = [1,1,1]
model.predict([animal_misterioso])

Nomes / Terminologia

Ao invés de usar dados e classes como variáveis para o treinamento eu posso usar treino_x ou treino_y, respectivamente.

Para os testes, eu posso simplesmente usar o termo testes

Taxa de acerto

É importante medir a taxa de acerto do meu modelo. Que é basicamente um % de quantas vezes o modelo acertou o resultado, onde 100% é “Acertou tudo” e 0% é “Não acertou nenhum”. Exemplo: O modelo conseguiu prever com uma taxa de acerto do 75% que uma pessoa usuaria iria comprar aquele produto.

Para isso, geralmente dividimos o dataset que temos em treino e teste, uma boa medida é usar 75% da base para treino e o restante para teste.

Seguindo o exemplo anterior:

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)
 
# Dessa forma
 
corretos = (previsoes == teste_y).sum()
total = len(teste_x)
taxa_de_acerto = corretos/total 
print("Taxa de acerto: ", taxa_de_acerto * 100)

Para facilitar, o SKLearn tem uma função pra isso, a accuracy_score:

from sklearn.metrics import accuracy_score
 
taxa_de_acerto = accuracy_score(teste_y, previsoes)
print("Taxa de acerto", taxa_de_acerto * 100)