def _get_npi(times): X, y = load_gbsg2() grade = X.loc[:, "tgrade"].map({"I": 1, "II": 2, "III": 3}).astype(int) NPI = 0.2 * X.loc[:, "tsize"] / 10 + 1 + grade NPI[NPI < 3.4] = 1.0 NPI[(NPI >= 3.4) & (NPI <= 5.4)] = 2.0 NPI[NPI > 5.4] = 3.0 preds = numpy.empty((X.shape[0], len(times)), dtype=float) for j, ts in enumerate(times): survs = {} for i in NPI.unique(): idx = numpy.flatnonzero(NPI == i) yi = y[idx] t, s = kaplan_meier_estimator(yi["cens"], yi["time"]) if t[-1] < ts and s[-1] == 0.0: survs[i] = 0.0 else: fn = StepFunction(t, s) survs[i] = fn(ts) preds[:, j] = NPI.map(survs).values return preds, y
def test_brier_coxph(): X, y = load_gbsg2() X.loc[:, "tgrade"] = X.loc[:, "tgrade"].map(len).astype(int) Xt = OneHotEncoder().fit_transform(X) est = CoxPHSurvivalAnalysis(ties="efron").fit(Xt, y) survs = est.predict_survival_function(Xt) preds = [fn(1825) for fn in survs] _, score = brier_score(y, y, preds, 1825) assert round(abs(score[0] - 0.208817407492645), 5) == 0
def gbsg2(): x, y = load_gbsg2() x = encode_categorical(x) return x.values, y
def test_load_gbsg2(): x, y = sdata.load_gbsg2() assert x.shape == (686, 8) assert y.shape == (686,) assert_structured_array_dtype(y, 'cens', 'time', 299)
@author: petch """ import pandas as pd import matplotlib.pyplot as plt import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import OrdinalEncoder from sksurv.datasets import load_gbsg2 from sksurv.preprocessing import OneHotEncoder from sksurv.ensemble import RandomSurvivalForest X, y = load_gbsg2() grade_str = X.loc[:, "tgrade"].astype(object).values[:, np.newaxis] grade_num = OrdinalEncoder( categories=[["I", "II", "III"]]).fit_transform(grade_str) X_no_grade = X.drop("tgrade", axis=1) Xt = OneHotEncoder().fit_transform(X_no_grade) Xt = np.column_stack((Xt.values, grade_num)) feature_names = X_no_grade.columns.tolist() + ["tgrade"] random_state = 20 X_train, X_test, y_train, y_test = train_test_split(Xt, y,
def setUp(self): x, y = load_gbsg2() self.x = encode_categorical(x) self.y = y