{"id":46765510,"url":"https://github.com/fidelity/jurity","last_synced_at":"2026-03-09T22:30:12.042Z","repository":{"id":44525785,"uuid":"322389419","full_name":"fidelity/jurity","owner":"fidelity","description":"[ACM 2024] Jurity: Fairness \u0026 Evaluation Library","archived":false,"fork":false,"pushed_at":"2024-10-11T16:23:42.000Z","size":8229,"stargazers_count":56,"open_issues_count":0,"forks_count":9,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-09-28T08:22:39.869Z","etag":null,"topics":["evaluation","fairness-ai","machine-learning","metrics","recommenders"],"latest_commit_sha":null,"homepage":"https://fidelity.github.io/jurity/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fidelity.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.txt","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-17T19:14:35.000Z","updated_at":"2025-05-18T21:27:30.000Z","dependencies_parsed_at":"2024-09-17T05:37:47.828Z","dependency_job_id":"279350ac-3781-451d-8d37-d2eb47e037e4","html_url":"https://github.com/fidelity/jurity","commit_stats":{"total_commits":83,"total_committers":10,"mean_commits":8.3,"dds":0.6746987951807228,"last_synced_commit":"71c5ad0b49392a2f53b7cc78b42fc3390c6ce0f9"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/fidelity/jurity","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidelity%2Fjurity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidelity%2Fjurity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidelity%2Fjurity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidelity%2Fjurity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fidelity","download_url":"https://codeload.github.com/fidelity/jurity/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fidelity%2Fjurity/sbom","scorecard":{"id":399016,"data":{"date":"2025-08-11","repo":{"name":"github.com/fidelity/jurity","commit":"3407b6b86ca8c5884713003ed94757f25da96e35"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.2,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml: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":"Code-Review","score":5,"reason":"Found 5/9 approved changesets -- score normalized to 5","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":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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/ci.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/fidelity/jurity/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/fidelity/jurity/ci.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/ci.yml:31","Info:   0 out of   2 GitHub-owned 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":"Vulnerabilities","score":0,"reason":"11 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2018-34 / GHSA-2fc2-6r4j-p65h","Warn: Project is vulnerable to: PYSEC-2021-856 / GHSA-5545-2q6w-2gh6","Warn: Project is vulnerable to: PYSEC-2019-108 / GHSA-9fq2-x9r6-wfmf","Warn: Project is vulnerable to: PYSEC-2018-33 / GHSA-cw6w-4rcx-xphc","Warn: Project is vulnerable to: PYSEC-2021-857 / GHSA-f7c7-j99h-c22f","Warn: Project is vulnerable to: GHSA-fpfv-jqm9-f5jm","Warn: Project is vulnerable to: PYSEC-2017-1 / GHSA-frgw-fgh6-9g52","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108"],"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":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/fidelity/.github/SECURITY.md:1","Info: Found linked content: github.com/fidelity/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/fidelity/.github/SECURITY.md:1","Info: Found text in security policy: github.com/fidelity/.github/SECURITY.md:1"],"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":"SAST","score":4,"reason":"SAST tool is not run on all commits -- score normalized to 4","details":["Warn: 14 commits out of 30 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-18T19:42:00.218Z","repository_id":44525785,"created_at":"2025-08-18T19:42:00.218Z","updated_at":"2025-08-18T19:42:00.218Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30314624,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T20:05:46.299Z","status":"ssl_error","status_checked_at":"2026-03-09T19:57:04.425Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["evaluation","fairness-ai","machine-learning","metrics","recommenders"],"created_at":"2026-03-09T22:30:10.642Z","updated_at":"2026-03-09T22:30:11.953Z","avatar_url":"https://github.com/fidelity.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![ci](https://github.com/fidelity/jurity/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/fidelity/jurity/actions/workflows/ci.yml) [![PyPI version fury.io](https://badge.fury.io/py/jurity.svg)](https://pypi.python.org/pypi/jurity/) [![PyPI license](https://img.shields.io/pypi/l/jurity.svg)](https://pypi.python.org/pypi/jurity/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![Downloads](https://static.pepy.tech/personalized-badge/jurity?period=total\u0026units=international_system\u0026left_color=grey\u0026right_color=orange\u0026left_text=Downloads)](https://pepy.tech/project/jurity)\n\n\n# Jurity: Fairness \u0026 Evaluation Library\n\nJurity ([ACM'24](https://dl.acm.org/doi/pdf/10.1145/3700145), [ArXiv'24](https://arxiv.org/pdf/2403.12069),  [LION'23](https://link.springer.com/chapter/10.1007/978-3-031-44505-7_29), [ICMLA'21](https://ieeexplore.ieee.org/document/9680169)) is a research library \nthat provides fairness metrics, recommender system evaluations, classification metrics and bias mitigation techniques. \nThe library adheres to PEP-8 standards and is tested heavily.\n\nJurity is developed by the Artificial Intelligence Center of Excellence at Fidelity Investments. \nDocumentation is available at [fidelity.github.io/jurity](https://fidelity.github.io/jurity).\n\n## Fairness Metrics\n* [Average Odds](https://fidelity.github.io/jurity/about_fairness.html#average-odds)\n* [Disparate Impact](https://fidelity.github.io/jurity/about_fairness.html#disparate-impact)\n* [Equal Opportunity](https://fidelity.github.io/jurity/about_fairness.html#equal-opportunity)\n* [False Negative Rate (FNR) Difference](https://fidelity.github.io/jurity/about_fairness.html#fnr-difference)\n* [False Omission Rate (FOR) Difference](https://fidelity.github.io/jurity/about_fairness.html#for-difference)\n* [Generalized Entropy Index](https://fidelity.github.io/jurity/about_fairness.html#generalized-entropy-index)\n* [Predictive Equality](https://fidelity.github.io/jurity/about_fairness.html#predictive-equality)\n* [Statistical Parity](https://fidelity.github.io/jurity/about_fairness.html#statistical-parity)\n* [Theil Index](https://fidelity.github.io/jurity/about_fairness.html#theil-index)\n\n## Binary Bias Mitigation Techniques\n* [Equalized Odds](https://fidelity.github.io/jurity/about_fairness.html#equalized-odds)\n\n## Recommenders Metrics\n* [AUC: Area Under the Curve](https://fidelity.github.io/jurity/about_reco.html#auc-area-under-the-curve)\n* [CTR: Click-through rate](https://fidelity.github.io/jurity/about_reco.html#ctr-click-through-rate)\n* [DR: Doubly robust estimation](https://fidelity.github.io/jurity/about_reco.html#ctr-click-through-rate)\n* [IPS: Inverse propensity scoring](https://fidelity.github.io/jurity/about_reco.html#ctr-click-through-rate)\n* [MAP@K: Mean Average Precision](https://fidelity.github.io/jurity/about_reco.html#map-mean-average-precision)\n* [NDCG: Normalized discounted cumulative gain](https://fidelity.github.io/jurity/about_reco.html#ndcg-normalized-discounted-cumulative-gain)\n* [Precision@K](https://fidelity.github.io/jurity/about_reco.html#precision)\n* [Recall@K](https://fidelity.github.io/jurity/about_reco.html#recall)\n* [Inter-List Diversity@K](https://fidelity.github.io/jurity/about_reco.html#inter-list-diversity)\n* [Intra-List Diversity@K](https://fidelity.github.io/jurity/about_reco.html#intra-list-diversity)\n\n## Classification Metrics\n* [Accuracy](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html)\n* [AUC](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html#sklearn.metrics.roc_auc_score)\n* [F1 Score](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html)\n* [Precision](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_score.html)\n* [Recall](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.recall_score.html)\n\n\n## Quick Start: Fairness Evaluation\n\n```python\n# Import binary and multi-class fairness metrics\nfrom jurity.fairness import BinaryFairnessMetrics, MultiClassFairnessMetrics\n\n# Data\nbinary_predictions = [1, 1, 0, 1, 0, 0]\nmulti_class_predictions = [\"a\", \"b\", \"c\", \"b\", \"a\", \"a\"]\nmulti_class_multi_label_predictions = [[\"a\", \"b\"], [\"b\", \"c\"], [\"b\"], [\"a\", \"b\"], [\"c\", \"a\"], [\"c\"]]\nmemberships = [0, 0, 0, 1, 1, 1]\nclasses = [\"a\", \"b\", \"c\"]\n\n# Metrics (see also other available metrics)\nmetric = BinaryFairnessMetrics.StatisticalParity()\nmulti_metric = MultiClassFairnessMetrics.StatisticalParity(classes)\n\n# Scores\nprint(\"Metric:\", metric.description)\nprint(\"Lower Bound: \", metric.lower_bound)\nprint(\"Upper Bound: \", metric.upper_bound)\nprint(\"Ideal Value: \", metric.ideal_value)\nprint(\"Binary Fairness score: \", metric.get_score(binary_predictions, memberships))\nprint(\"Multi-class Fairness scores: \", multi_metric.get_scores(multi_class_predictions, memberships))\nprint(\"Multi-class multi-label Fairness scores: \", multi_metric.get_scores(multi_class_multi_label_predictions, memberships))\n```\n\n## Quick Start: Probabilistic Fairness Evaluation\n\nWhat if we do not know the protected membership attribute of each sample? This is a practical scenario that we refer to as _probabilistic_ fairness evaluation.  \n\nAt a high-level, instead of strict 0/1 deterministic membership at individual level, consider the probability of membership to protected classes for each sample.\n\nAn easy baseline is to convert these probabilities back to the deterministic setting by taking the maximum likelihood as the protected membership. This is problematic as the goal is not to predict membership but to evaluate fairness.\n\nTaking this a step further, while we do not have membership information at the individual level, consider access to _surrogate membership_ at _group level_. We can then infer the fairness metrics directly.   \n\nJurity offers both options to address the case where membership data is missing. We provide an in-depth study and formal treatment in [ACM'24](https://dl.acm.org/doi/pdf/10.1145/3700145) and [LION'23](https://link.springer.com/chapter/10.1007/978-3-031-44505-7_29). For the analogous scenario of the lack of ground truth data, see [ArXiv'24](https://arxiv.org/pdf/2403.12069) and [ICMLA'21](https://ieeexplore.ieee.org/document/9680169).\n\n```python\nfrom jurity.fairness import BinaryFairnessMetrics\n\n# Instead of 0/1 deterministic membership at individual level \n# consider likelihoods of membership to protected classes for each sample \nbinary_predictions = [1, 1, 0, 1]\nmemberships = [[0.2, 0.8], [0.4, 0.6], [0.2, 0.8], [0.9, 0.1]]\n\n# Metric\nmetric = BinaryFairnessMetrics.StatisticalParity()\nprint(\"Binary Fairness score: \", metric.get_score(binary_predictions, memberships))\n\n# Surrogate membership: consider access to surrogate membership at the group level. \nsurrogates = [0, 2, 0, 1]\nprint(\"Binary Fairness score: \", metric.get_score(binary_predictions, memberships, surrogates))\n```\n\n\n## Quick Start: Bias Mitigation\n\n```python\n# Import binary fairness and binary bias mitigation\nfrom jurity.mitigation import BinaryMitigation\nfrom jurity.fairness import BinaryFairnessMetrics\n\n# Data\nlabels = [1, 1, 0, 1, 0, 0, 1, 0]\npredictions = [0, 0, 0, 1, 1, 1, 1, 0]\nlikelihoods = [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.1]\nis_member = [0, 0, 0, 0, 1, 1, 1, 1]\n\n# Bias Mitigation\nmitigation = BinaryMitigation.EqualizedOdds()\n\n# Training: Learn mixing rates from the labeled data\nmitigation.fit(labels, predictions, likelihoods, is_member)\n\n# Testing: Mitigate bias in predictions\nfair_predictions, fair_likelihoods = mitigation.transform(predictions, likelihoods, is_member)\n\n# Scores: Fairness before and after\nprint(\"Fairness Metrics Before:\", BinaryFairnessMetrics().get_all_scores(labels, predictions, is_member), '\\n'+30*'-')\nprint(\"Fairness Metrics After:\", BinaryFairnessMetrics().get_all_scores(labels, fair_predictions, is_member))\n```\n\n## Quick Start: Recommenders Evaluation\n\n```python\n# Import recommenders metrics\nfrom jurity.recommenders import BinaryRecoMetrics, RankingRecoMetrics, DiversityRecoMetrics\nimport pandas as pd\n\n# Data\nactual = pd.DataFrame({\"user_id\": [1, 2, 3, 4], \"item_id\": [1, 2, 0, 3], \"clicks\": [0, 1, 0, 0]})\npredicted = pd.DataFrame({\"user_id\": [1, 2, 3, 4], \"item_id\": [1, 2, 2, 3], \"clicks\": [0.8, 0.7, 0.8, 0.7]})\nitem_features = pd.DataFrame({\"item_id\": [0, 1, 2, 3], \"feature1\": [1, 2, 2, 1], \"feature2\": [0.8, 0.7, 0.8, 0.7]})\n\n# Metrics\nauc = BinaryRecoMetrics.AUC(click_column=\"clicks\")\nctr = BinaryRecoMetrics.CTR(click_column=\"clicks\")\ndr = BinaryRecoMetrics.CTR(click_column=\"clicks\", estimation='dr')\nips = BinaryRecoMetrics.CTR(click_column=\"clicks\", estimation='ips')\nmap_k = RankingRecoMetrics.MAP(click_column=\"clicks\", k=2)\nncdg_k = RankingRecoMetrics.NDCG(click_column=\"clicks\", k=3)\nprecision_k = RankingRecoMetrics.Precision(click_column=\"clicks\", k=2)\nrecall_k = RankingRecoMetrics.Recall(click_column=\"clicks\", k=2)\ninterlist_diversity_k = DiversityRecoMetrics.InterListDiversity(click_column=\"clicks\", k=2)\nintralist_diversity_k = DiversityRecoMetrics.IntraListDiversity(item_features, click_column=\"clicks\", k=2)\n\n# Scores\nprint(\"AUC:\", auc.get_score(actual, predicted))\nprint(\"CTR:\", ctr.get_score(actual, predicted))\nprint(\"Doubly Robust:\", dr.get_score(actual, predicted))\nprint(\"IPS:\", ips.get_score(actual, predicted))\nprint(\"MAP@K:\", map_k.get_score(actual, predicted))\nprint(\"NCDG:\", ncdg_k.get_score(actual, predicted))\nprint(\"Precision@K:\", precision_k.get_score(actual, predicted))\nprint(\"Recall@K:\", recall_k.get_score(actual, predicted))\nprint(\"Inter-List Diversity@K:\", interlist_diversity_k.get_score(actual, predicted))\nprint(\"Intra-List Diversity@K:\", intralist_diversity_k.get_score(actual, predicted))\n\n```\n\n## Quick Start: Classification Evaluation\n\n```python\n# Import classification metrics\nfrom jurity.classification import BinaryClassificationMetrics\n\n# Data\nlabels = [1, 1, 0, 1, 0, 0, 1, 0]\npredictions = [0, 0, 0, 1, 1, 1, 1, 0]\n\n# Available: Accuracy, F1, Precision, Recall, and AUC\nf1_score = BinaryClassificationMetrics.F1()\n\nprint('F1 score is', f1_score.get_score(predictions, labels))\n```\n\n\n## Installation\n\nJurity requires **Python 3.8+** and can be installed from PyPI using ``pip install jurity`` or by building from source as shown in [installation instructions](https://fidelity.github.io/jurity/install.html).\n\n## Citation\n\nIf you use Jurity in a publication, please cite it as:\n\n```bibtex\n    @article{10.1145/3700145,\n    author = {Kad\\i{}o\\u{g}lu, Serdar and Thielbar, Melinda},\n    title = {Surrogate Modeling to Address the Absence of Protected Membership Attributes in Fairness Evaluation},\n    year = {2024},\n    publisher = {Association for Computing Machinery},\n    address = {New York, NY, USA},\n    url = {https://doi.org/10.1145/3700145},\n    doi = {10.1145/3700145},\n    journal = {ACM Trans. Evol. Learn. Optim.},\n    }\n\n    @article{DBLP:conf/lion/Melinda23,\n      author    = {Melinda Thielbar, Serdar Kadioglu, Chenhui Zhang, Rick Pack, and Lukas Dannull},\n      title     = {Surrogate Membership for Inferred Metrics in Fairness Evaluation},\n      booktitle = {The 17th Learning and Intelligent Optimization Conference (LION)},\n      publisher = {{LION}},\n      year      = {2023}\n    }\n\n    @inproceedings{DBLP:conf/icmla/MichalskyK21,\n    author       = {Filip Michalsk{\\'{y}} and Serdar Kadioglu},\n    title        = {Surrogate Ground Truth Generation to Enhance Binary Fairness Evaluation in Uplift Modeling},\n    booktitle    = {20th {IEEE} International Conference on Machine Learning and Applications, \n    {ICMLA} 2021, Pasadena, CA, USA, December 13-16, 2021},\n    pages        = {1654--1659},\n    publisher    = {{IEEE}},\n    year         = {2021},\n    url          = {https://doi.org/10.1109/ICMLA52953.2021.00264},\n    doi          = {10.1109/ICMLA52953.2021.00264},\n}\n```\n\n## Support\nPlease submit bug reports and feature requests as [Issues](https://github.com/fidelity/jurity/issues).\n\n## License\nJurity is licensed under the [Apache License 2.0.](https://github.com/fidelity/jurity/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffidelity%2Fjurity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffidelity%2Fjurity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffidelity%2Fjurity/lists"}