.predict
çıktısını scikit-survival'ta takılı CoxnetSurvivalAnalysis
modelinden nasıl yorumlayacağım konusunda kafam karıştı. Intro to Survival Analysis in scikit-survival not defterinden ve API referansından okudum, ancak bir açıklama bulamıyorum.Python'da takılan scikit-survival modelinden .predict() çıktısı nasıl yorumlanır?
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
... uydurma modeline geçmeden ve üreten tahminler:
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))
işte modele girmeden X bulunuyor: Aşağıda benim karışıklığa yol açar ne minimal bir örnektir
# Fit Model
coxnet = CoxnetSurvivalAnalysis()
coxnet.fit(X, data_y)
# What are these predictions?
preds = coxnet.predict(X)
preds
,
X
ile aynı sayıda kayda sahiptir, ancak değerleri, tahmin edildiği zaman bile
data_y
'daki değerlerden farklıdır. n aynı verilere uyuyorlardı.
print(preds.mean())
print(data_y['Survival_in_days'].mean())
çıkışı:
-0.044114643249153422
121.62773722627738
Peki tam
preds
nelerdir? Açıkça
.predict
, scikit-öğrenmesinden çok farklı bir şey ifade ediyor, ama ne olduğunu anlayamıyorum.
API Reference, "Tahmin edilen karar işlevi" ni döndürdüğünü söylüyor, ancak bunun anlamı nedir? Ve belirli bir
X
için
yhat
aylarında tahmini tahmini nasıl elde edebilirim? Hayatta kalma analizinde yeniyim, bu yüzden bir şeyleri özlüyorum.
def predict(self, X, alpha=None):
"""The linear predictor of the model.
Parameters
----------
X : array-like, shape = (n_samples, n_features)
Test data of which to calculate log-likelihood from
alpha : float, optional
Constant that multiplies the penalty terms. If the same alpha was used during training, exact
coefficients are used, otherwise coefficients are interpolated from the closest alpha values that
were used during training. If set to ``None``, the last alpha in the solution path is used.
Returns
-------
T : array, shape = (n_samples,)
The predicted decision function
"""
X = check_array(X)
coef = self._get_coef(alpha)
return numpy.dot(X, coef)
tanım check_array başka library geliyor: X girişi ile
Bunu hiç anladın mı? – francium87d
@ francium87d, – jeremycg
@ francium87d türünde tehlike oranına benziyor. Bu soruyu github (https: // github.com/sebp/scikit-survival/issues/15) ve kütüphane yazarı, 'tahminlerin rasgele bir ölçekte risk puanları olduğunu belirtmiştir, bu da genellikle yalnızca olayların sırasını belirleyebileceğiniz anlamına gelir, fakat tam olarak değil. ' sanırım "bunu nasıl yorumluyorum" sorusunu sanırım, ama gerçekten istediğim şeye gerçekten yaklaşmadım, bu da muhtemelen hayatta kalma süresinin bir tahminiydi. Bunu elde etmek için, görünüşte "estimator.predict_survival_function" ifadesini kullanmam gerekiyor bir şekilde. –