【发布时间】:2020-12-14 15:01:22
【问题描述】:
我想同时使用 Pipeline 和 TransformedTargetRegressor 来处理所有缩放(数据和目标):这可以混合 Pipeline 和 TransformedTargetRegressor 吗?如何从 TransformedTargetRegressor 中获取结果?
$ cat test_ttr.py
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from sklearn.datasets import make_regression
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn import linear_model
from sklearn.pipeline import Pipeline
from sklearn.compose import TransformedTargetRegressor
def main():
x, y = make_regression()
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
model = linear_model.Ridge(alpha=1)
pipe = Pipeline([('scale', preprocessing.StandardScaler()), ('model', model)])
treg = TransformedTargetRegressor(regressor=pipe, transformer=preprocessing.MinMaxScaler())
treg.fit(x_train, y_train)
print(pipe.get_params()['model__alpha']) # OK !
print(treg.get_params()['regressor__model__coef']) # KO ?!
if __name__ == '__main__':
main()
但无法从 TransformedTargetRegressor 中获得结果(例如 coef)
1
Traceback (most recent call last):
File ".\test_ttr.py", line 26, in <module>
main()
File ".\test_ttr.py", line 23, in main
print(treg.get_params()['regressor__model__coef']) # KO ?!
TypeError: 'TransformedTargetRegressor' object is not subscriptable
【问题讨论】:
标签: python scikit-learn