hyon
hyon

Reputation: 359

[sklearn][standardscaler] can I inverse the standardscaler for the model output?

I have some data structured as below, trying to predict t from the features.

train_df

t: time to predict
f1: feature1
f2: feature2 
f3:......

Can t be scaled with StandardScaler, so I instead predict t' and then inverse the StandardScaler to get back the real time?

For example:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(train_df['t'])
train_df['t']= scaler.transform(train_df['t'])

After this, I would like to:

Is this possible?

Upvotes: 30

Views: 60482

Answers (3)

JasonG
JasonG

Reputation: 11

While @Rohan's answer generally worked for me and my DataFrame column, I had to reshape the data according to the below StackOverflow answer.

Sklearn transform error: Expected 2D array, got 1D array instead

scaler = StandardScaler()
scaler.fit(df[[col_name]])
scaled = scaler.transform(df[[col_name]])

Upvotes: 1

rohan chikorde
rohan chikorde

Reputation: 526

Here is sample code. You can replace here data with train_df['colunm_name']. Hope it helps.

from sklearn.preprocessing import StandardScaler
data = [[1,1], [2,3], [3,2], [1,1]]
scaler = StandardScaler()
scaler.fit(data)
scaled = scaler.transform(data)
print(scaled)

# for inverse transformation
inversed = scaler.inverse_transform(scaled)
print(inversed)

Upvotes: 14

Arya McCarthy
Arya McCarthy

Reputation: 8829

Yeah, and it's conveniently called inverse_transform.

The documentation provides examples of its use.

Upvotes: 24

Related Questions