TransformedTargetRegressor
в scikit-learn не оценивает прогнозы, как я ожидал или хотел бы. Насколько я понимаю, он вызывает функцию r2score для исходного y
и прогнозируемого y_pred
после обратного преобразования выхода регрессора. Я бы предпочел знать оценку оценщика на преобразованном y
и выходе регрессора. Ниже не показано для простоты, но я хотел бы сохранить все это в Pipeline
, поэтому я надеюсь, что есть способ обернуть TransformedTargetRegressor
или передать пользовательский метод score
.
В качестве установки для моего конкретного вопроса, возьмите следующую линейную регрессию:
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.arange(10).reshape(-1, 1)
y = (2 * X).ravel() + np.random.normal(size=10)
estimator = LinearRegression()
estimator.fit(X, y)
estimator.score(X, y)
Буду признателен за предложения по изменению или переносу оценки tt
, приведенной ниже, чтобы получить идентичную оценку каквыше.
from sklearn.compose import TransformedTargetRegressor
ey = np.exp(y)
tt = TransformedTargetRegressor(regressor=estimator, func=np.log, inverse_func=np.exp)
tt.fit(X, ey)
tt.score(X, ey)