1
resposta

Meu gráfico distoa muito do apresentado em aula

No gráfico da curva de decisão, minha curva não aprece. Isso acontece pq meu Z só tem 0s, não importa qual SEED eu forneça o Z só fica com valores 0. O que estou fazendo de errado?

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)  #Essa funcao determina uma SEED especifica para todo o modelo, nao precisamos repitir nas outras funcoes

treino_x, teste_x, treino_y, teste_y = train_test_split(x, y,
                                                         test_size = 0.25,
                                                         stratify = y)
print("Treinaremos com %d elementos e testaremos com %d elementos" % (len(treino_x), len(teste_x)))

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

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

x_min = teste_x.Horas_Esperadas.min()
x_max = teste_x.Horas_Esperadas.max()
y_min = teste_x.Preco.min()
y_max = teste_x.Preco.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 = modelo.predict(pontos)
Z = Z.reshape(xx.shape)

import matplotlib as plt
plt.pyplot.contourf(xx, yy, Z, alpha=0.1)
plt.pyplot.scatter(teste_x.Horas_Esperadas, teste_x.Preco, c=teste_y, s=10)
1 resposta

Olá Rodrigo tudo bem com você??

Irei te passar algumas diferenças que encontrei entre o meu note e o seu, vou fazendo comentários.

Aqui tudo igual ao seu, como pode observar.

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


SEED = 20
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 %d elementos e testaremos com %d elementos" % (len(treino_x), len(teste_x)))

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

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

Daí entra essa parte que foi importando a biblioteca Numpy e criado a baseline.

import numpy as np
np.ones(540)

Com a baseline criada começou o trabalho nas previsões:

previsoes_de_base = np.ones(540)
acuracia = accuracy_score(teste_y, previsoes_de_base) * 100
print("A acurácia do algoritmo de baseline foi %.2f%%" % acuracia)

É traçado o primeiro gráfico

sns.scatterplot(x="horas_esperadas", y="preco", hue=teste_y, data=teste_x)

E então tirado o min e max

x_min = teste_x.horas_esperadas.min()
x_max = teste_x.horas_esperadas.max()
y_min = teste_x.preco.min()
y_max = teste_x.preco.max()
print(x_min, x_max, y_min, y_max)

Definido o valor de pixels

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)

criado o array

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

Chegamos na predição

z = modelo.predict(pontos)
z = z.reshape(xx.shape)
z

e o gráfico ( acredito que seja o seu nesse ponto)

import matplotlib.pyplot as plt

plt.contourf(xx, yy, z, alpha=0.3)
plt.scatter(teste_x.horas_esperadas, teste_x.preco, c=teste_y, s=1)
#decision boundry

Espero ter te ajudado e qualquer dúvida é só perguntar aqui!