Передать параметры пользовательскому преобразователю в sklearnPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Передать параметры пользовательскому преобразователю в sklearn

Сообщение Anonymous »

Я пытаюсь передать параметр DummyTransformer__feature_index_sec моему пользовательскому преобразователю sklearn через конвейер. Похоже, для этого мне нужно реализовать маршрутизацию метаданных. Однако я не могу успешно создать работающий фиктивный пример:

Код: Выделить всё

from sklearn.base import BaseEstimator, TransformerMixin
from sklearn.pipeline import Pipeline
from sklearn.utils.metadata_routing import MetadataRouter, MethodMapping
from scipy.sparse import csr_matrix
import pandas as pd
import numpy as np
from sklearn import set_config

# Enable metadata routing globally
set_config(enable_metadata_routing=True)

class DummyTransformer(BaseEstimator, TransformerMixin):
def transform(self, X, feature_index_sec=None):
if feature_index_sec is None:
raise ValueError("Missing required argument 'feature_index_sec'.")
print(f"Received feature_index_sec with shape: {feature_index_sec.shape}")
return X

def fit(self, X, y=None, feature_index_sec=None, **fit_params):
return self

def transform(self, X, feature_index_sec=None):
return X

def fit_transform(self, X, y=None, feature_index_sec=None):
# self.fit(X, y) - fit is stateless in this transformer!
return self.transform(X, feature_index_sec)

def get_metadata_routing(self):
print("Configuring metadata routing for DummyTransformer")
router = (
MetadataRouter(owner=self.__class__.__name__)
.add_self_request(self)  # Declare this transformer as a consumer
)
return router

# Declare explicitly what metadata is required for each method
def set_fit_request(self, **metadata):
self._fit_request = metadata
return self

def set_transform_request(self, **metadata):
self._transform_request = metadata
return self

def set_fit_transform_request(self, **metadata):
self._fit_transform_request = metadata
return self

# Dummy data
feature_matrix = csr_matrix(np.random.rand(10, 5))
train_idx = pd.DataFrame({'FileDate_ClosingPrice': np.random.rand(10)})

# Configure metadata requests for DummyTransformer
transformer = DummyTransformer().set_fit_transform_request(feature_index_sec=True)

# Minimal pipeline
pipe = Pipeline(steps=[('DummyTransformer', transformer)])

# Test fit_transform
pipe.fit_transform(feature_matrix, DummyTransformer__feature_index_sec=train_idx)
Приведенный выше пример приводит к ошибке Pipeline.fit_transform получил неожиданные аргументы {'DummyTransformer__feature_index_sec'}, которые не перенаправляются ни к одному объекту.

Подробнее здесь: https://stackoverflow.com/questions/793 ... in-sklearn
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Передать параметры пользовательскому преобразователю в sklearn
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Передать параметры пользовательскому преобразователю в sklearn
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Передать параметры пользовательскому преобразователю в sklearn
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Передать параметры пользовательскому преобразователю в sklearn
    Гость » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Гость
  • Реализация sklearn.ensemble.GradientBoostingRegressor с помощью sklearn.multioutput.MultiOutputRegressor и sklearn.model
    Anonymous » » в форуме Python
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»