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.