Continuação da resposta.
É possível plotar a curva de decisão mostrada no SAS Graphics Accelerator, mas vai precisar adicionar um pouquinho mais de código. O SAS plota um gráfico a partir de coordenadas no eixo X e no eixo Y que podem ser enviadas por meio de um documento cvs, por exemplo. Então o que precisamos fazer é coletar as coordenadas X e Y utilizadas para definir a curva de decisão dessa aula e transformá-las em um arquivo csv. Primeiro, seguindo a lógica de que a curva de decisão é a reta entre a troca de 0 por 1 da matriz Z, podemos catalogar todos os pontos dessa matriz que há a troca de 0 para 1, primeiro, definimos nas variáveis nlinhas
e ncolunas
a quantidade de linhas e colunas da matriz Z:
# início de código
# matriz Z criada pelo professor
Z = modelo.predict(pontos)
Z = Z.reshape(xx.shape)
#
nlinhas, ncolunas = len(Z),len(Z[0])
# fim de código
Com essas variáveis, é possível percorrer toda a matriz Z, linha a linha de todas as colunas, criando dois laços de repetição for
. E dentro desses laços comparamos se o elemento da matriz passou de 0 para 1, caso tenha ocorrido essa troca, salvamos os índices em uma lista, como se segue:
# início de código
indices_limite = []
for c in range(0,ncolunas):
for l in range(1,nlinhas):
if (Z[l][c]!=Z[l-1][c]):
indices_limite.append([l,c])
# fim de código
Os índices de Z correspondem aos mesmos índices das variáveis xx e yy, que são as variáveis de coordenadas do eixo X (horas_esperadas) e Y(preco) do gráfico. Então, a partir desses índices, definimos as coordenadas X e Y da curva de decisão. Como nosso objetivo é transformar esses dados em um arquivo csv, já podemos estruturá-los como um DataFrame por meio de um dicionário, sabendo que a primeira coluna se refere a variável xx e a segunda a variável yy. Temos a seguinte construção:
# início de código
curva = {'horas_esperadas':[],'preco':[]}
for l in range(1,len(indices_limite)):
curva['horas_esperadas'].append(xx[indices_limite[l][0]][indices_limite[l][1]])
curva['preco'].append(yy[indices_limite[l][0]][indices_limite[l][1]])
# fim de código
Por fim, transformamos o dicionário curva
em um DataFrame e criamos o arquivo csv:
# início de código
curva = pd.DataFrame(curva)
curva.to_csv('curva.csv', index=True)
# fim de código
Você pode ativar a extensão SAS e clicar na opção “Laboratory”, depois clicar em “Tables” (ou "Tabelas", em português) e importar o arquivo curva.csv como tabela para gerar a curva lá. Essa extensão é toda em inglês, se você tiver dificuldade com essa língua você pode utilizar o tradutor do próprio navegador, só lembre de desativar a tradução antes de submeter o gráfico, pois pode gerar um bug. E se você precisar de ajuda com o SAS, manda mensagem aqui que eu te ajudo!
Eu espero ter conseguido te ajudar! Se surgir outra dúvida estarei à disposição ;-)
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!