Random Survival Forest
The Random Survival Forest package provides a python implementation of the survival prediction method originally published by Ishwaran et al. (2008).
Reference: Ishwaran, H., Kogalur, U. B., Blackstone, E. H., & Lauer, M. S. (2008). Random survival forests. The annals of applied statistics, 2(3), 841-860.
Requirements
Python >= 3.13.
Installation
pip install random-survival-forest
Contribute
Development
Dependencies and environment are managed with uv:
uv sync --group dev # install the package and dev dependencies
uv run pytest # run the test suite
uv run ruff check . # lint
uv run pip-audit # check dependencies for known vulnerabilities
Performance
The log-rank split search is vectorized with numpy, so training scales well with sample size and number of trees. For very large datasets, n_jobs lets you parallelize tree construction across cores.
Getting Started
import time
from lifelines import datasets
from sklearn.model_selection import train_test_split
from random_survival_forest.models import RandomSurvivalForest
from random_survival_forest.scoring import concordance_index
# Rossi recidivism dataset: "arrest" (1 = rearrested, 0 = censored), "week" = time in weeks.
rossi = datasets.load_rossi()
# y needs the event column first, then time: event before duration.
y = rossi.loc[:, ["arrest", "week"]]
X = rossi.drop(["arrest", "week"], axis=1)
X, X_test, y, y_test = train_test_split(X, y, test_size=0.33, random_state=10)
print("Start training...")
start_time = time.time()
# n_jobs=-1 uses all CPU cores, random_state makes the run reproducible.
rsf = RandomSurvivalForest(n_estimators=50, n_jobs=-1, random_state=42)
rsf = rsf.fit(X, y)
print(f'--- {round(time.time() - start_time, 3)} seconds ---')
# Predicted cumulative hazard function per test sample.
y_pred = rsf.predict(X_test)
# C-index: fraction of comparable pairs ranked correctly (0.5 random, 1.0 perfect).
c_val = concordance_index(y_time=y_test["week"], y_pred=y_pred, y_event=y_test["arrest"])
print(f'C-index {round(c_val, 3)}')
Feedback
If you are having issues or feedback, please let me know. I am happy to fix some bug or implement feature requests.
License
MIT
Metadata
Release files for random_survival_forest 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| random_survival_forest-1.0.0.tar.gz | 12.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| random_survival_forest-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.9 kB
Release files / random_survival_forest-1.0.0.tar.gz
| Download URL | random_survival_forest-1.0.0.tar.gz |
|---|---|
| Size | 12.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e0bea209a9b01ef2172e368d529d643c48cbd7641542356bacaca510da6a03aa
|
|
BLAKE2b-256 checksum How to use checksums |
f68c9cbecf24f9ee09efe4a27932c13b4393a93427ac9bafcda7d7e66118e890
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / random_survival_forest-1.0.0-py3-none-any.whl
| Download URL | random_survival_forest-1.0.0-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9fc2243b00a0adfb4ccc5772ffb73afb8d9d60a7a2914390fbc656d737103f44
|
|
BLAKE2b-256 checksum How to use checksums |
30bbe6f23655947f88e297c8787886d7601c57ad5c38f95e02f6e3dbe6529c67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|