Skip to content
Skillpedia
Machine learning51k · #1977

scikit-survival

Helps your agent build and evaluate survival workflows with censored data. It's useful for predicting outcomes in clinical or reliability studies.

What it does

This tool helps analyze survival data, like the time until an event occurs (e.g., patient recovery or part failure). It allows building and evaluating models to predict these times, accounting for incomplete (censored) data.

When to use it

  • ✓Predicting how long a patient might live after a diagnosis.
  • ✓Estimating the lifespan of a mechanical component before failure.
  • ✓Analyzing the time until disease recurrence after treatment.

Example of what to ask your AI

“Analyze survival data to predict patient survival times based on their medical histories.”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/skills/scikit-survival/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/skills/scikit-survival/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

It uses advanced statistical techniques to model the time until an event, even when the exact event time is unknown for all participants (censoring). The tool also ensures data preparation doesn't 'leak' future information into the model.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add K-Dense-AI/scientific-agent-skills --skill scikit-survival

Or download just the file:

curl -L https://raw.githubusercontent.com/K-Dense-AI/scientific-agent-skills/main/skills/scikit-survival/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

scikit-survival

Scope

Use this skill for scikit-survival 0.28.0 workflows involving:

  • right-censored structured outcomes;
  • Cox PH, Coxnet, IPC ridge, survival trees, forests, boosting, and SVMs;
  • discrimination, prediction error, calibration-oriented checks, and time-dependent prediction;
  • nonparametric cumulative incidence with competing risks;
  • scikit-learn pipelines, nested model selection, and reproducible reports.

scikit-survival primarily models right-censored outcomes. Its built-in competing-risk support is nonparametric cumulative incidence; it does not provide Fine-Gray regression. Do not present model output as clinical advice, causal evidence, or proof of clinical utility.

Python snippets using study-defined variables such as X_train, y_train, frame, or times are illustrative integration templates. The native regression tests and local CLI smoke runs use small synthetic fixtures; they do not validate an unprovided study, clinical dataset, or every optional dataframe backend.

Current release and installation

Verified 2026-10-01:

  • Latest stable: scikit-survival 0.28.0, released 2026-07-05.
  • Python: 3.11 or later; PyPI wheels cover CPython 3.11-3.14 on Linux x86-64, macOS x86-64/ARM64, and Windows x86-64.
  • Runtime bounds: NumPy >=2.0.0, pandas >=2.2.0, SciPy >=1.13.0, scikit-learn >=1.9.0,<1.10, OSQP >=1.0.2, narwhals >=2.0.1.
  • 0.28 adds pandas/Polars estimator support through narwhals and removes criterion from GradientBoostingSurvivalAnalysis.

The native refresh tests used Python 3.13 and the following snapshot (NumPy 2.5.1 was cached; this is a tested snapshot, not a claim that every pin is newest). Create an isolated environment:

uv venv .venv-survival --python 3.13
source .venv-survival/bin/activate
uv pip install \
  "scikit-survival==0.28.0" \
  "scikit-learn==1.9.1" \
  "numpy==2.5.1" \
  "pandas==3.0.6" \
  "scipy==1.18.1" \
  "ecos==2.0.14" \
  "osqp==1.1.3" \
  "joblib==1.6.0" \
  "numexpr==2.14.2" \
  "narwhals==2.26.0"

Binary wheels are preferred. A source build requires a C/C++ compiler; OSQP may also require CMake. This skill is MIT-licensed; the upstream scikit-survival package is GPL-3.0-or-later, so review upstream licensing before redistribution.

Non-negotiable workflow

  1. Define the estimand and event coding. Decide whether the target is all-event survival, cause-specific hazard, or cause-specific cumulative incidence.
  2. Validate outcomes. Standard estimators need a two-field structured array: boolean event first, observed time second. Competing-risk CIF instead needs a separate integer event vector: 0=censored, 1..K=causes.
  3. Split before learned preprocessing. Never fit imputers, encoders, scalers, feature selectors, or alpha choices on all rows before splitting.
  4. Fit preprocessing inside a pipeline. Unknown categories and missingness must be handled using training-fold state only.
  5. Tune without reusing evaluation data. Use nested CV when reporting cross-validated tuned performance, or reserve a truly untouched final holdout.
  6. Fit censoring distributions on training data. IPCW concordance, dynamic AUC, and Brier metrics receive survival_train, never a pooled train+test outcome.
  7. Restrict evaluation times. Use a strictly increasing grid inside test follow-up and below the end of training support where the estimated censoring survival remains positive.
  8. Match predictions to metrics. Concordance/dynamic AUC consume higher-is-riskier scores. Brier metrics consume survival probabilities with shape (n_test, n_times), not risk scores or unevaluated step functions.
  9. Handle competing causes explicitly. Standard survival probabilities and CIFs answer different questions. Never estimate event-specific probability with 1 - Kaplan-Meier while censoring competing events.
  10. Report limits. Separate discrimination, calibration, prediction error, and cumulative incidence. None alone establishes decision or clinical utility.

Outcome construction

from sksurv.util import Surv

y = Surv.from_arrays(event=event_bool, time=observed_time)
# Equivalent for pandas or Polars:
y = Surv.from_dataframe("event", "time", frame)

The first field is boolean (True=event, False=right-censored); the second is floating-point time. Field names may vary, but field order and meaning may not.

…

FAQ

What does 'censored data' mean?

Censored data occurs when we don't know the exact event time for a participant. For example, if a patient leaves the study before experiencing the event, or if the study ends before the event happens.

What types of models does this tool use?

It supports various models, including Cox PH, Coxnet, survival trees, forests, and SVMs, which are suitable for analyzing time-to-event data.

Can I use this for medical advice?

No. The results are for analysis and prediction and should not be used as direct medical advice or proof of clinical utility.

Details

Original description by the author

Builds, evaluates, and audits right-censored or competing-risk survival workflows with scikit-survival, including leakage-safe preprocessing, model selection, probability prediction, and censoring-aware metrics.

repo: K-Dense-AI/scientific-agent-skills

Popularity

GitHub stars
51k
Ranking position
#1977
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills