Как передать параметры этой модели Sklearn Cox в конвейере?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как передать параметры этой модели Sklearn Cox в конвейере?

Сообщение Anonymous »

Если я запускаю следующий код Python, он работает хорошо:

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

target = 'churn'
tranOH = ColumnTransformer([ ('one', OneHotEncoder(drop='first', dtype='int'),
make_column_selector(dtype_include='category', pattern=f"^(?!{target}).*")
) ], remainder='passthrough')

dftrain2 = tranOH.fit_transform(dftrain)
cph = CoxPHFitter(penalizer=0.1)
cph.fit(dftrain2, 'months', 'churn')
Но если я попытаюсь сделать это с помощью конвейера, я получу ошибку:

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

mcox = Pipeline(steps=[
("onehot", tranOH),
('modelo', CoxPHFitter(penalizer=0.1))
])

mcox.fit(dftrain, modelo__duration_col="months", modelo__event_col='churn')
Там написано:

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

TypeError                                 Traceback (most recent call last)
Cell In[88], line 6
1 mcox = Pipeline(steps=[
2     ("onehot", tranOH),
3     ('modelo', CoxPHFitter(penalizer=0.1))
4     ])
----> 6 mcox.fit(dftrain, modelo__duration_col="months", modelo__event_col=target)

File ~\AppData\Roaming\Python\Python310\site-packages\sklearn\base.py:1473, in _fit_context..decorator..wrapper(estimator, *args, **kwargs)
1466     estimator._validate_params()
1468 with config_context(
1469     skip_parameter_validation=(
1470         prefer_skip_nested_validation or global_skip_validation
1471     )
1472 ):
-> 1473     return fit_method(estimator, *args, **kwargs)

File ~\AppData\Roaming\Python\Python310\site-packages\sklearn\pipeline.py:473, in Pipeline.fit(self, X, y, **params)
471     if self._final_estimator != "passthrough":
472         last_step_params = routed_params[self.steps[-1][0]]
--> 473         self._final_estimator.fit(Xt, y, **last_step_params["fit"])
475 return self

File ~\AppData\Roaming\Python\Python310\site-packages\lifelines\utils\__init__.py:56, in CensoringType.right_censoring..f(model, *args, **kwargs)
53 @wraps(function)
54 def f(model, *args, **kwargs):
55     cls.set_censoring_type(model, cls.RIGHT)
---> 56     return function(model, *args, **kwargs)

TypeError: CoxPHFitter.fit() got multiple values for argument 'duration_col'
tranOH — это преобразователь столбцов, который onehot кодирует все категориальные столбцы, кроме «оттока».
Я также пробовал использовать col="months" и event_col=target непосредственно внутри CoxPHitter(), но я получаю ту же ошибку.
Позже я хочу использовать его для выполнения GridSearchCV для точной настройки пенализатора параметр, оптимизирующий показатель точности для прогнозирования оттока в заданное время = "месяцы".
У меня нет такой же проблемы с другими моделями, например, если я заменю CoxPHFitter на LogisticRegrade. работает хорошо.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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