scikit-learn中的TransformedTargetRegressor
得分没有我期望或期望的高。据我所知,在对回归器的输出进行逆变换之后,它会在原始y
和预测的y_pred
上调用r2score函数。我宁愿知道估计的分数在转换后的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)