Мой фрейм данных выглядит как
+---------------------+-------------+---------+---------+---------+---------+
| Date | pre_close | open | high | low | close |
|---------------------+-------------+---------+---------+---------+---------+
| 1992-04-27 00:00:00 | 0.93152 | 0.93152 | 1.12912 | 0.93152 | 1.08677 |
| 1992-04-28 00:00:00 | 1.08677 | 1.07266 | 1.12912 | 1.07266 | 1.10512 |
| 1992-04-29 00:00:00 | 1.10512 | 1.10512 | 1.12347 | 1.08677 | 1.11077 |
| 1992-04-30 00:00:00 | 1.11077 | 1.11077 | 1.14323 | 1.10089 | 1.1277 |
| 1992-05-04 00:00:00 | 1.1277 | 1.17146 | 1.19969 | 1.17146 | 1.19686 |
+---------------------+-------------+---------+---------+---------+---------+
Я хочу использовать столбцы: pre_close, close, high, low для вычисления метри c TR с помощью конвейера sklearn, вот как я написал свой трансформатор
class TR(BaseEstimator, TransformerMixin):
def fit(self, X, y=None):
return self
def transform(self, X, y=None):
return np.max([X['high']-X['low'],
np.abs(X['pre_close']-X['high']),
np.abs(X['pre_close']-X['low'])], axis=1)
вот как я использую его в конвейере
pipeline = Pipeline([("tr", TR()])
full_pipeline = ColumnTransformer([("num", pipeline, ['pre_close', 'close', 'high', 'low'])], remainder="passthrough")
data = full_pipeline.fit_transform(df)
Но я получаю эту ошибку:
TypeError: Last step of Pipeline should implement fit or be the string 'passthrough'. '<function TR at 0x1a181d2170>' (type <class 'function'>) doesn't