1
resposta

Dummy stratified, mostfrequent e LinearSVC dando o mesmo resultado na acurácia

Na aula 5 do curso machine learning introdução a classificacao com sklearn, a acurácia do LinearSVC foi igual ao DummyClassifier. Devo incluir algum parâmetro adicional devido as versões de imports diferentes das utilizadas no vídeo?


from sklearn.dummy import DummyClassifier

dummy_stratified = DummyClassifier()
dummy_stratified.fit(treino_x, treino_y)
predicts = dummy_stratified.predict(teste_x)

accuracy = accuracy_score(teste_y, predicts)*100
print('A accuracy foi de %.2f%%' % accuracy)

A accuracy foi de 58.00%

from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
from sklearn.metrics import accuracy_score
import numpy as np

SEED = 5
np.random.seed(SEED)
treino_x, teste_x, treino_y, teste_y = train_test_split(x, y, test_size = 0.25,
                                                       stratify = y)
print('Treinaremos com um total de %d itens e testaremos com um total de %d itens' % (len(treino_x), len(teste_y)))
model = LinearSVC()
model.fit(treino_x, treino_y)
predicts = model.predict(teste_x)
accuracy = accuracy_score(teste_y, predicts)*100

print('A accuracy foi de %.2f%%' % accuracy)

A accuracy foi de 58.00%

1 resposta

Olá, William! Tudo bem com você?

A diferença entre as acurácias está acontecendo pois a estratégia que o professor está utilizando é diferente da usada por você.

Quando olhamos a documentação do DummyClassifier vemos o seguinte aviso:

"Changed in version 0.24: The default value of strategy has changed to 'prior' in version 0.24."

A versão do sklearn utilizada no curso é a 0.20.0, como mostrado nessa aula aos 02:37, e nessa versão o valor padrão do parâmetro strategy era stratified. Atualmente o sklearn está em sua versão 1.0.1 e o valor padrão de strategy é prior, conforme aviso acima.

Para consertar basta garantir que você esteja utilizando o mesmo valor do parâmetro strategy:

from sklearn.dummy import DummyClassifier

dummy_stratified = DummyClassifier(strategy='stratified')
dummy_stratified.fit(treino_x, treino_y)
previsoes = dummy_stratified.predict(teste_x)

acuracia = accuracy_score(teste_y, previsoes) * 100
print("A acurácia do dummy foi %.2f%%" % acuracia)

Saída:

A acurácia do dummy foi 52.44%

Em relação ao most_frequent gostaria de que você desse uma olhada nessa resposta e veja se te ajuda a entender.

Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.

:)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!