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

Após alterar a forma como os dados são passados, como voltar o resultado para a escala original do problema?

Quando usamos a função separa_dados, o método ensinado para voltar os dados para a escala original não funciona mais.

1 resposta
solução!

Olá, Gustavo! Tudo bem com você?

Creio que o método a que você esteja se referindo seja o .inverse_transform() da classe StandardScaler. Você não consegue passar diretamente os arrays xtreino_novo e ytreino_novo por causa das formas (shape) desses vetores. Para realizar essa transformação inversa, ou seja retornar para a escola original, o seu array ou DataFrame deve possuir a forma (número_de_amostras, número_features), como nos mostra a documentação, porém se conferirmos a forma dos dois arrays teríamos as seguintes resultados:

print(xtreino_novo.shape)
print(ytreino_novo.shape)

Saída:

(128, 1)
(128,)

Mas quando fizemos a transformação com o StandardScaler tínhamos 2 features tempo e passageiros, logo quando passamos os vetores diretamente nos é retornada uma mensagem de erro justamente por causa dessa incompatibilidade.

Para resolver esse problema basta transformar esses dois vetores para a forma (número_amostras, 2), combinando-os, como o instrutor faz nessa aula. Abaixo você pode conferir uma das formas para retornar para a escala original:

xtreino_novo, ytreino_novo = separa_dados(vetor, 1)
novo = {'xtreino_novo':xtreino_novo.reshape(128,), 'ytreino_novo':ytreino_novo}
novo_df = pd.DataFrame(data=novo)
print(novo_df.shape)
novo_df.head()

No código acima utilizei o método .reshape() pois o array xtreino_novo possui dimensão 2 e para gerar uma coluna do DataFrame com esse array ele precisa ser de uma dimensão.

Saída:

(128, 2)  # Forma do DataFrame de saída
xtreino_novoytreino_novo
0-1.40778-1.35759
1-1.35759-1.24048
2-1.24048-1.26558
3-1.26558-1.3325
4-1.3325-1.21539
# Realizando a transformação inversa.

pd.DataFrame(data=sc.inverse_transform(novo_df), columns=novo_df.columns)

Saída:

xtreino_novoytreino_novo
01950.08118
11950.26132
21950.66129
31950.57121
41950.34135

Agora você tem os vetores xtreino_novo e ytreino_novo em sua escala original.

Espero ter ajudado, mas se ainda persistir alguma dúvida pode me retornar por aqui que estou à disposição..

:)

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software