Я пытался преобразовать столбец 'X', используя значения в столбце 'y' (это игрушечный пример, просто для демонстрации использования 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)
, похоже, что у None
.