Rather than transforming the estimate of the generalization error, you're better off using a model which transforms the training data and then is capable of predicting back on the original scale.
This is done with sklearn.compose.TransformTargetRegressor
as shown below.
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.compose import TransformedTargetRegressor
from sklearn.pipeline import Pipeline
from sklearn.model_selection import cross_val_score
N = 1000
x = np.random.normal(size = (N, 1))
y = 10 + x + np.random.normal(size = (N, 1))
y = y.ravel()
model = Pipeline([
('ttr', TransformedTargetRegressor(regressor=LinearRegression(), func = np.log1p, inverse_func = lambda x: np.exp(x)-1))
])
cross_val_score(model, x, y, cv=5, scoring = 'neg_mean_squared_error').mean()
>>>-0.997... #Depending on the data used.
Note that our cross validated error is very close to the true standard deviation of the noise (which is 1 in this case) despite the model mispecification (the true conditional mean is linear whereas the model is exponential)