[sklearn][standardscaler] can I inverse the standardscaler for the model output?
Question:
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'])
run regression model,
check score,
!! check predicted t’ with real time value(inverse StandardScaler) <- possible?
Answers:
Yeah, and it’s conveniently called inverse_transform
.
The documentation provides examples of its use.
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)
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]])
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'])
run regression model,
check score,
!! check predicted t’ with real time value(inverse StandardScaler) <- possible?
Yeah, and it’s conveniently called inverse_transform
.
The documentation provides examples of its use.
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)
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]])