【发布时间】:2019-11-20 15:20:19
【问题描述】:
在最后一个线性回归估计器拟合之前,我尝试使用“y”列中的值转换“X”列(这是一个玩具示例,只是为了展示使用y 进行转换)。但是为什么df['y']没有传递给MyTransformer呢?
from sklearn.base import TransformerMixin
class MyTransformer(TransformerMixin):
def __init__(self):
pass
def fit(self, X, y=None):
return self
def transform(self, X, y=None):
print(y)
return X + np.sum(y)
df = pd.DataFrame(np.array([[2, 3], [1, 5], [1, 1], [5, 6], [1, 2]]), columns=['X', 'y'])
pip = Pipeline([('my_transformer', MyTransformer()),
('sqrt', FunctionTransformer(np.sqrt, validate=False)),
('lr', LinearRegression())])
pip.fit(df[['X']], df['y'])
运行此脚本将在return X + np.sum(y) 行引发错误,看起来y 是None。
【问题讨论】:
标签: python machine-learning scikit-learn pipeline