Quando usamos a função separa_dados, o método ensinado para voltar os dados para a escala original não funciona mais.
Quando usamos a função separa_dados, o método ensinado para voltar os dados para a escala original não funciona mais.
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_novo | ytreino_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_novo | ytreino_novo | |
---|---|---|
0 | 1950.08 | 118 |
1 | 1950.26 | 132 |
2 | 1950.66 | 129 |
3 | 1950.57 | 121 |
4 | 1950.34 | 135 |
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..
:)