使用 scikit-survival 评估单个 GridSearchCV 中的多个指标

问题描述 投票:0回答:0

目前,我正在做一个模拟来比较多个模型,我的研究不需要

best_estimator_
只需要
cv_results_
的结果。我遇到的问题是每个超参数组合都需要
integrated_brier_score
cumulative_dynamic_auc
。据我所知,我不能同时使用
sksurv.metrics.as_cumulative_dynamic_auc_scorer
sksurv.metrics.as_integrated_brier_score_scorer
来获得相同的配合。

from sklearn.model_selection import GridSearchCV, KFold
from sklearn.feature_selection import SelectKBest
from sklearn.pipeline import Pipeline
from sksurv.datasets import load_veterans_lung_cancer
from sksurv.preprocessing import OneHotEncoder
from sksurv.linear_model import CoxnetSurvivalAnalysis
from sksurv.metrics import integrated_brier_score, cumulative_dynamic_auc
from sklearn.metrics import make_scorer

import pandas as pd

data_x, data_y = load_veterans_lung_cancer()

pipe = Pipeline([('encode', OneHotEncoder()),
                 ('model', CoxnetSurvivalAnalysis(fit_baseline_model=True))])

param_grid = {'model__l1_ratio': [i/10 for i in range(1, 11)]}
cv = KFold(n_splits=3, random_state=1, shuffle=True)
gcv = GridSearchCV(pipe, param_grid, return_train_score=True, cv=cv, 
                   refit = False,
                   scoring={"integrated_brier_score": make_scorer(integrated_brier_score), 
                            "cumulative_dynamic_auc": make_scorer(cumulative_dynamic_auc)})
gcv.fit(data_x, data_y)

results = pd.DataFrame(gcv.cv_results_)

当我运行之前的代码时,我得到了这个错误。

return self._sign * self._score_func(y_true, y_pred, **self._kwargs)
TypeError: integrated_brier_score() missing 2 required positional arguments: 'estimate' and 'times'
python scikit-learn cross-validation survival-analysis scikit-survival
© www.soinside.com 2019 - 2024. All rights reserved.