我想使用Pipeline和TransformedTargetGressor来处理所有的缩放(在数据和目标上):这可以混合Pipeline和TransformedTargetGressor吗?如何从转换的目标整合器中获得结果
$ 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获得结果(例如coefs)
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
错误发生在您的行中
因为
TransformedTargetRegressor
没有参数'regressor__model__coef'
您可以通过执行
treg.get_params()
查看所有可用参数,然后返回:您可以通过使用获得结果,例如R2分数
返回
要预测,可以使用
该文档非常有用,您可以仔细阅读here和here
我找到的最佳解决方案(不确定直接访问成员是否很好):
如果可能的话,请随时改进这个答案
相关问题 更多 >
编程相关推荐