1
resposta

gráfico não mostrando curva após uso do StandardScaler

Na parte final do vídeo da aula 4.2 (Estimadores não lineares e support vector machine), do curso "Machine Learning: Introdução a classificação com SKLearn", eu não obtive um gráfico com uma curva, como o professor mostrou. O meu gráfico continuava ficando todo azul, como se todos os resultados do teste tivessem sido 1 e como se a adição do StandardScaler não tivesse feito diferença nenhuma.

Será que há algo de errado no meu código? Há uma outra explicação para essa diferença? Agradeço a ajuda.

obs: recebi o mesmo resultado usando seed = 5 e seed = 20. Trabalhei no google Colaboratory

link para o arquivo: https://colab.research.google.com/drive/1EE65BEdEGuC7Vz6zQjiI3MzbIvcxTGr5

código abaixo:

from sklearn.preprocessing import StandardScaler # nova linha
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

SEED = 5
np.random.seed(SEED)

raw_treino_x, raw_teste_x, treino_y, teste_y = train_test_split(x, y, test_size=0.25, stratify = y)

print(f'Treinaremos com {len(treino_x)} classificações e testaremos com {len(teste_x)} classificações')

scaler = StandardScaler()
scaler.fit(raw_treino_x)
treino_x = scaler.transform(raw_treino_x)
teste_x = scaler.transform(raw_teste_x)

modelo = SVC()
modelo.fit(treino_x, treino_y)
previsoes = modelo.predict(teste_x)

precisao = accuracy_score(teste_y, previsoes)*100
print(f'A precisão do modelo foi de {precisao:.2f}%')

data_x = teste_x[:,0] 
data_y = teste_x[:,1] 

x_min = data_x.min()
x_max = data_x.max()
y_min = data_y.min()
y_max = data_y.max()

pixels = 100
eixo_x = np.arange(x_min, x_max, (x_max - x_min) / pixels)

eixo_y = np.arange(y_min, y_max, (y_max - y_min) / pixels)

xx, yy = np.meshgrid(eixo_x, eixo_y)

pontos = np.c_[xx.ravel(), yy.ravel()]

Z = model.predict(pontos)
Z = Z.reshape(xx.shape) 

import matplotlib.pyplot as plt

plt.contourf(xx, yy, Z, alpha=0.3)
plt.scatter(data_x, data_y, c=teste_y, s=1)
1 resposta

Bom dia Fabricio,

Tem um typo no modelo usado, repara que você treinou o modelo mas plotou com o model.

[]s