首页 > 解决方案 > scikit-learn 的 TransformedTargetRegressor 的分数是否正确?

问题描述

我制作了一个简短的Jupyter 笔记本来解决我关于 TransformedTargetRegressor 的问题。
我想在管道中放置一个变压器以使用参数网格,但分数不匹配。

...
model = linear_model.LinearRegression()
lg_tr = preprocessing.FunctionTransformer(func=np.log, inverse_func=np.exp, check_inverse=True)
y_log = lg_tr.transform(y)
score_0 = model.fit(X, y_log).score(X, y_log)
...
model = compose.TransformedTargetRegressor(func=np.log, inverse_func=np.exp, check_inverse=True,
    regressor=linear_model.LinearRegression())
score_1 = model.fit(X, y).score(X, y)

score_0值是正确的。为什么一从score_1不是?
我对运行良好的预测没有问题,只有分数。
我错过了什么?
谢谢你=)

标签: pythonmachine-learningscikit-learntransformer

解决方案


通常,您应该对模型在预测其原始范围或规模的实际值时的表现(或得分)感兴趣。然而,这是您使用score_1不是使用score_0测量的内容。

score_0表示当目标变量为对数尺度时模型的性能,这在大多数情况下不是很有用。

score_1然而,使用在计算任何性能指标之前确保目标变量处于其原始规模的score方法。TransformedTargetRegressor因此,应根据score_1.


推荐阅读