Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

resultados de eixo_x e eixo_y com numpy.arange

É ponto secundário no vídeo mas os eixo_x e eixo_y gerados não deveriam incluir os valores máximos de x e y - mas que, ao se utilizar numpy.arange (que trabalha, como frequente em python, com intervalos abertos à direita) acabaram excluídos?

Talvez trabalhar com numpy.linspace (que trabalha com intervalos fechados)?

eixo_x = np.linspace(x_min, x_max, pixels)
eixo_y = np.linspace(y_min, y_max, pixels)

Obrigado!

1 resposta
solução!

Oii Vinicius, tudo certinho por aí?

Primeiramente, desculpe a demora em te dar um retorno por aqui! Quanto a sua dúvida, acredito que essa mudança não afeta os resultados finais em si, testei no código da aula e ele mudou pouca coisa no eixo. Um problema que pode acontecer em utilizarmos um intervalo fechado nesse caso é que se tivermos um ponto naquela extremidade, ele pode acabar passando despercebido por conta de estar muito próximo da borda da imagem.

Vou deixar aqui as imagens com intervalo aberto e fechado, nessa ordem, para comparação. O código que usei é do Decision Boundary, que o instrutor trata na aula.

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

#Eixos usando intervalo aberto
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)

#Eixos usando intervalo fechado
#eixo_x = np.linspace(x_min, x_max, pixels)
#eixo_y = np.linspace(y_min, y_max, 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.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)

Imagem com intervalo aberto, com np.arange:

Gráfico de classificação de duas classes, com um limite de decisão -fundo da imagem - em amarelo e roxo, onde a coloração amarela é predominante e a roxa está bem abaixo do valor de 5000, em relação ao eixo y. Entre as bordas superior e lateral direita do gráfico e as cores amarelo e roxo, existe uma faixa branca, que representa o intervalo aberto que utilizamos na função, e os pontos da distribuição estão em formato de curva em jota. A escala do gráfico é de 0 à 30000 no eixo y e no eixo x é de 0 à 100.

Imagem com intervalo fechado, com np.linspace:

Gráfico de classificação de duas classes, com um limite de decisão -fundo da imagem - em amarelo e roxo, onde a coloração amarela é predominante e a roxa está bem abaixo do valor de 5000, em relação ao eixo y. Entre as bordas superior e lateral direita do gráfico e as cores amarelo e roxo não existe nenhum espaço, que representa o intervalo fechado que utilizamos na função, e os pontos da distribuição estão em formato de curva em jota. A escala do gráfico é de 0 à 30000, separado em intervalos de 5000, no eixo y e no eixo x é de 0 à 100, separado a cada 20.

Como pode ver, nas imagens o que altera é a borda superior e da lateral direita, mas quando usamos um intervalo fechado, alguns pontos que estão um pouco além não aparecem, o que pode prejudicar a análise dependendo do problema que está sendo tratado.

Caso você tenha mais alguma dúvida, pode me chamar por aqui, tudo bem?

Bons estudos ^^

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