python - 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
不是?
我对运行良好的预测没有问题,只有分数。
我错过了什么?
谢谢你=)
解决方案
通常,您应该对模型在预测其原始范围或规模的实际值时的表现(或得分)感兴趣。然而,这是您使用score_1
而不是使用score_0
测量的内容。
score_0
表示当目标变量为对数尺度时模型的性能,这在大多数情况下不是很有用。
score_1
然而,使用在计算任何性能指标之前确保目标变量处于其原始规模的score
方法。TransformedTargetRegressor
因此,应根据score_1
.
推荐阅读
- ruby-on-rails - 在 Ruby on Rails 中,如何保存许多引用同一类的其他实例的 ActiveRecord 对象?
- css - 如何将 flexbox 项目对齐到最左边、最右边和中心?
- python - 等待 BlockingScheduler 直到前一个作业完成执行
- javascript - 如何通过代理服务器发出 http 请求(Google App Script / JavaScript)
- c++ - 不调用复制赋值运算符=
- apache-kafka - Camel-Kafka 安全协议 SASL_SASL 不起作用
- javascript - 如何在当悬停在上面时
- tsql - SQL case 表达式中未选取小数
- python - 在使用 NumPy 时了解 randn 的最小值和最大值
- php - PHP 无法使用不是来自 C 文件的 shell 文件调用命令 (Prokka)