我很困惑如何解释scikit-survival 中.predict
拟合模型的输出。CoxnetSurvivalAnalysis
我已经阅读了scikit-survival 中的笔记本 Intro to Survival Analysis和 API 参考,但找不到解释。以下是导致我困惑的一个最小示例:
import pandas as pd
from sksurv.datasets import load_veterans_lung_cancer
from sksurv.linear_model import CoxnetSurvivalAnalysis
# load data
data_X, data_y = load_veterans_lung_cancer()
# one-hot-encode categorical columns in X
categorical_cols = ['Celltype', 'Prior_therapy', 'Treatment']
X = data_X.copy()
for c in categorical_cols:
dummy_matrix = pd.get_dummies(X[c], prefix=c, drop_first=False)
X = pd.concat([X, dummy_matrix], axis=1).drop(c, axis=1)
# display final X to fit Cox Elastic Net model on
del data_X
print(X.head(3))
所以这是进入模型的X:
Age_in_years Celltype Karnofsky_score Months_from_Diagnosis \
0 69.0 squamous 60.0 7.0
1 64.0 squamous 70.0 5.0
2 38.0 squamous 60.0 3.0
Prior_therapy Treatment
0 no standard
1 yes standard
2 no standard
...继续拟合模型并生成预测:
# Fit Model
coxnet = CoxnetSurvivalAnalysis()
coxnet.fit(X, data_y)
# What are these predictions?
preds = coxnet.predict(X)
preds
具有与 相同数量的记录X
,但它们的值与 中的值完全不同data_y
,即使在它们拟合的相同数据上进行预测时也是如此。
print(preds.mean())
print(data_y['Survival_in_days'].mean())
输出:
-0.044114643249153422
121.62773722627738
那么究竟是preds
什么?显然.predict
,这里的含义与 scikit-learn 中的完全不同,但我不知道是什么。API 参考说它返回“预测的决策函数”,但这是什么意思?以及如何在yhat
给定的几个月内达到预测的估计值X
?我是生存分析的新手,所以我显然遗漏了一些东西。