writing: ecf8f553c010fa00f0a86e86bc28f038c71ddf55

     1: #!/usr/bin/env python3
     2: 
     3: from os     import getenv
     4: from pandas import read_csv
     5: with open(getenv('csv'), 'r') as f:
     6:     times = read_csv(f, header=0, index_col=0)
     7: 
     8: label = getenv('label')
     9: 
    10: del(getenv)
    11: del(read_csv)
    12: 
    13: from lifelines import KaplanMeierFitter
    14: import matplotlib.pyplot as plt
    15: 
    16: def save(name, axes):
    17:     axes.get_figure().savefig(name + label + '.pdf')
    18:     axes.get_figure().savefig(name + label + '.pgf')
    19: 
    20: axes = plt.subplot(111, label="stepped")
    21: kmf  = KaplanMeierFitter()
    22: for s, grouped_df in times.groupby('size'):
    23:     if s not in [1, 5, 10, 15, 20]:
    24:         continue
    25:     kmf.fit(grouped_df['time'], grouped_df['success'], label=str(s))
    26:     axes = kmf.plot(ax=axes)
    27: save('stepped', axes)
    28: 
    29: def crossValidate(name, fitter):
    30:     from lifelines.utils import k_fold_cross_validation
    31:     import numpy as np
    32:     print("Cross Validating " + name)
    33:     print(np.mean(k_fold_cross_validation(fitter,
    34:                                           times,
    35:                                           duration_col='time',
    36:                                           event_col='success')))
    37:     print("End cross-validation of " + name)
    38: 
    39: from lifelines import CoxPHFitter
    40: cph = CoxPHFitter()
    41: cph.fit(times, duration_col='time', event_col='success', show_progress=True)
    42: 
    43: cph.print_summary()
    44: 
    45: save('coxph', cph.plot())
    46: #cph.check_assumptions(times, show_plots=True)
    47: 
    48: crossValidate('cox', cph)
    49: 
    50: fitters = {'cox':cph}
    51: 
    52: from lifelines import WeibullAFTFitter, LogNormalAFTFitter, LogLogisticAFTFitter
    53: for (name, fitter) in [("weibull"    , WeibullAFTFitter    ),
    54:                        ("lognormal"  , LogNormalAFTFitter  ),
    55:                        ("loglogistic", LogLogisticAFTFitter)]:
    56:     print("BEGIN " + name)
    57:     aft = fitter()
    58:     aft.fit(times, duration_col='time', event_col='success')
    59:     aft.print_summary(3)
    60: 
    61:     #aft = WeibullAFTFitter().fit(times, 'time', 'success', ancillary_df=True)
    62:     save(name + 'aft', aft.plot())
    63:     fitters[name] = aft
    64:     crossValidate(name, aft)
    65:     print("END " + name)
    66: 
    67: print('EXAMPLE DATA FOLLOWS')
    68: from lifelines import AalenAdditiveFitter, CoxPHFitter
    69: from lifelines.datasets import load_regression_dataset
    70: from lifelines.utils import k_fold_cross_validation
    71: import numpy as np
    72: 
    73: df = load_regression_dataset()
    74: 
    75: #create the three models we'd like to compare.
    76: aaf_1 = AalenAdditiveFitter(coef_penalizer=0.5)
    77: aaf_2 = AalenAdditiveFitter(coef_penalizer=10)
    78: cph = CoxPHFitter()
    79: 
    80: 
    81: print(np.mean(k_fold_cross_validation(cph, df, duration_col='T', event_col='E')))
    82: print(np.mean(k_fold_cross_validation(aaf_1, df, duration_col='T', event_col='E')))
    83: print(np.mean(k_fold_cross_validation(aaf_2, df, duration_col='T', event_col='E')))

Generated by git2html.