{"id":13473381,"url":"https://github.com/sebp/scikit-survival","last_synced_at":"2026-10-19T14:08:45.029Z","repository":{"id":14994696,"uuid":"77409504","full_name":"sebp/scikit-survival","owner":"sebp","description":"Survival analysis built on top of scikit-learn","archived":false,"fork":false,"pushed_at":"2026-10-12T18:10:17.000Z","size":8555,"stargazers_count":1325,"open_issues_count":31,"forks_count":233,"subscribers_count":19,"default_branch":"main","last_synced_at":"2026-10-17T12:16:29.796Z","etag":null,"topics":["machine-learning","python","scikit-learn","survival-analysis"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sebp.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":".zenodo.json","notice":null,"maintainers":null,"copyright":null,"agents":null,"claude":null,"gemini":null,"cursor":null,"copilot":null,"dco":null,"cla":null,"disclosure":null}},"created_at":"2016-12-26T22:15:53.000Z","updated_at":"2026-10-17T10:36:50.000Z","dependencies_parsed_at":"2026-09-13T13:06:32.082Z","dependency_job_id":"e631793b-654a-49de-b786-6f173950131a","html_url":"https://github.com/sebp/scikit-survival","commit_stats":{"total_commits":1047,"total_committers":23,"mean_commits":45.52173913043478,"dds":0.08787010506208215,"last_synced_commit":"f6aea43b9a80083f07569d91b23d7ba41c2fcbee"},"previous_names":[],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/sebp/scikit-survival","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebp%2Fscikit-survival","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebp%2Fscikit-survival/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebp%2Fscikit-survival/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebp%2Fscikit-survival/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sebp","download_url":"https://codeload.github.com/sebp/scikit-survival/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebp%2Fscikit-survival/sbom","scorecard":{"id":372129,"data":{"date":"2025-08-11","repo":{"name":"github.com/sebp/scikit-survival","commit":"8327db84d8c40c9287bcd3431848fcd788a4b2a1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.2,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/8 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/pre-commit.yaml:1","Warn: no topLevel permission defined: .github/workflows/tests-workflow.yaml:1","Warn: no topLevel permission defined: .github/workflows/tox-workflow.yaml:1","Warn: no topLevel permission defined: .github/workflows/wheels-workflow.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: COPYING:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit.yaml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/pre-commit.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pre-commit.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/pre-commit.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pre-commit.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/pre-commit.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests-workflow.yaml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tests-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests-workflow.yaml:115: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tests-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests-workflow.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tests-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests-workflow.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tests-workflow.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests-workflow.yaml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tests-workflow.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tests-workflow.yaml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tests-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tox-workflow.yaml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tox-workflow.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tox-workflow.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tox-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tox-workflow.yaml:34: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/tox-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:65: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:101: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:111: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:116: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:140: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:150: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/wheels-workflow.yaml:155: update your workflow using https://app.stepsecurity.io/secureworkflow/sebp/scikit-survival/wheels-workflow.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/tests-workflow.yaml:60","Warn: pipCommand not pinned by hash: .github/workflows/tests-workflow.yaml:135","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/wheels-workflow.yaml:82"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T13:12:58.737Z","repository_id":14994696,"created_at":"2025-08-18T13:12:58.737Z","updated_at":"2025-08-18T13:12:58.737Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38357901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-19T02:00:06.414Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["machine-learning","python","scikit-learn","survival-analysis"],"created_at":"2024-07-31T16:01:03.131Z","updated_at":"2026-10-19T14:08:45.024Z","avatar_url":"https://github.com/sebp.png","language":"Python","funding_links":[],"categories":["Python","生存预测与预后","Time Series","\u003cspan id=\"head8\"\u003e2.3. Survival Analysis\u003c/span\u003e","Survival Analysis","Machine Learning Frameworks","🎲 Statistics \u0026 Probability"],"sub_categories":["其他特征工具","General-Purpose Machine Learning","Tools"],"readme":"|License| |Docs| |DOI|\n\n|build-tests| |Codecov| |Codacy|\n\n***************\nscikit-survival\n***************\n\nscikit-survival is a Python module for `survival analysis`_\nbuilt on top of `scikit-learn \u003chttps://scikit-learn.org/\u003e`_. It allows doing survival analysis\nwhile utilizing the power of scikit-learn, e.g., for pre-processing or doing cross-validation.\n\n=======================\nAbout Survival Analysis\n=======================\n\nThe objective in `survival analysis`_ (also referred to as time-to-event or reliability analysis)\nis to establish a connection between covariates and the time of an event.\nWhat makes survival analysis differ from traditional machine learning is the fact that\nparts of the training data can only be partially observed – they are *censored*.\n\nFor instance, in a clinical study, patients are often monitored for a particular time period,\nand events occurring in this particular period are recorded.\nIf a patient experiences an event, the exact time of the event can\nbe recorded – the patient’s record is uncensored. In contrast, right censored records\nrefer to patients that remained event-free during the study period and\nit is unknown whether an event has or has not occurred after the study ended.\nConsequently, survival analysis demands for models that take\nthis unique characteristic of such a dataset into account.\n\n============\nRequirements\n============\n\n- Python 3.11 or later\n- clarabel\n- ecos\n- joblib\n- numexpr\n- numpy 2.0.0 or later\n- osqp\n- pandas 2.2.0 or later\n- scikit-learn 1.9\n- scipy\n- narwhals 2.0.1 or later\n- C/C++ compiler\n\n============\nInstallation\n============\n\nThe easiest way to install scikit-survival is to use\n`conda-forge \u003chttps://conda-forge.org/docs/user/introduction/\u003e`_ by running::\n\n  conda install -c conda-forge scikit-survival\n\nAlternatively, you can install scikit-survival `from PyPI \u003chttps://scikit-survival.readthedocs.io/en/stable/install.html#pip\u003e`_\nor `from source \u003chttps://scikit-survival.readthedocs.io/en/stable/install.html#from-source\u003e`_.\n\n========\nExamples\n========\n\nThe `user guide \u003chttps://scikit-survival.readthedocs.io/en/stable/user_guide/index.html\u003e`_ provides\nin-depth information on the key concepts of scikit-survival, an overview of available survival models,\nand hands-on examples in the form of `Jupyter notebooks \u003chttps://jupyter.org/\u003e`_.\n\n================\nHelp and Support\n================\n\n**Documentation**\n\n- HTML documentation for the latest release: https://scikit-survival.readthedocs.io/en/stable/\n- HTML documentation for the development version (main branch): https://scikit-survival.readthedocs.io/en/latest/\n- For a list of notable changes, see the `release notes \u003chttps://scikit-survival.readthedocs.io/en/stable/release_notes.html\u003e`_.\n\n**Bug reports**\n\n- If you encountered a problem, please submit a\n  `bug report \u003chttps://github.com/sebp/scikit-survival/issues/new?template=bug_report.md\u003e`_.\n\n**Questions**\n\n- If you have a question on how to use scikit-survival, please use `GitHub Discussions \u003chttps://github.com/sebp/scikit-survival/discussions\u003e`_.\n- For general theoretical or methodological questions on survival analysis, please use\n  `Cross Validated \u003chttps://stats.stackexchange.com/questions/tagged/survival\u003e`_.\n\n============\nContributing\n============\n\nNew contributors are always welcome. Please have a look at the\n`contributing guidelines \u003chttps://scikit-survival.readthedocs.io/en/latest/contributing.html\u003e`_\non how to get started and to make sure your code complies with our guidelines.\n\n==========\nReferences\n==========\n\nPlease cite the following paper if you are using **scikit-survival**.\n\n  S. Pölsterl, \"scikit-survival: A Library for Time-to-Event Analysis Built on Top of scikit-learn,\"\n  Journal of Machine Learning Research, vol. 21, no. 212, pp. 1–6, 2020.\n\n.. code::\n\n  @article{sksurv,\n    author  = {Sebastian P{\\\"o}lsterl},\n    title   = {scikit-survival: A Library for Time-to-Event Analysis Built on Top of scikit-learn},\n    journal = {Journal of Machine Learning Research},\n    year    = {2020},\n    volume  = {21},\n    number  = {212},\n    pages   = {1-6},\n    url     = {http://jmlr.org/papers/v21/20-729.html}\n  }\n\n.. |License| image:: https://img.shields.io/badge/license-GPLv3-blue.svg\n  :target: COPYING\n  :alt: License\n\n.. |Codecov| image:: https://codecov.io/gh/sebp/scikit-survival/branch/main/graph/badge.svg\n  :target: https://codecov.io/gh/sebp/scikit-survival\n  :alt: codecov\n\n.. |Codacy| image:: https://api.codacy.com/project/badge/Grade/17242004cdf6422c9a1052bf1ec63104\n   :target: https://app.codacy.com/gh/sebp/scikit-survival/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade\n   :alt: Codacy Badge\n\n.. |Docs| image:: https://readthedocs.org/projects/scikit-survival/badge/?version=latest\n  :target: https://scikit-survival.readthedocs.io/en/latest/\n  :alt: readthedocs.org\n\n.. |DOI| image:: https://zenodo.org/badge/77409504.svg\n   :target: https://zenodo.org/badge/latestdoi/77409504\n   :alt: Digital Object Identifier (DOI)\n\n.. |build-tests| image:: https://github.com/sebp/scikit-survival/actions/workflows/tests-workflow.yaml/badge.svg?branch=main\n  :target: https://github.com/sebp/scikit-survival/actions?query=workflow%3Atests+branch%3Amain\n  :alt: GitHub Actions Tests Status\n\n.. _survival analysis: https://en.wikipedia.org/wiki/Survival_analysis\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebp%2Fscikit-survival","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebp%2Fscikit-survival","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebp%2Fscikit-survival/lists"}