目前,我正在做一个模拟来比较多个模型,我的研究不需要
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'