{"id":24767556,"url":"https://github.com/varir/scikit-hubness","last_synced_at":"2025-08-17T13:13:06.231Z","repository":{"id":35018589,"uuid":"193863864","full_name":"VarIr/scikit-hubness","owner":"VarIr","description":"A Python package for hubness analysis and high-dimensional data mining ","archived":false,"fork":false,"pushed_at":"2024-05-31T11:56:22.000Z","size":4034,"stargazers_count":45,"open_issues_count":15,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-13T10:42:47.613Z","etag":null,"topics":["approximate-nearest-neighbor-search","data-mining","data-science","high-dimensional-data","hubness","machine-learning","nearest-neighbor-search"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VarIr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-26T08:33:14.000Z","updated_at":"2025-07-09T03:21:25.000Z","dependencies_parsed_at":"2025-04-14T17:04:01.376Z","dependency_job_id":"eff5e705-774d-4514-9902-16c863eaab04","html_url":"https://github.com/VarIr/scikit-hubness","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/VarIr/scikit-hubness","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VarIr%2Fscikit-hubness","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VarIr%2Fscikit-hubness/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VarIr%2Fscikit-hubness/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VarIr%2Fscikit-hubness/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VarIr","download_url":"https://codeload.github.com/VarIr/scikit-hubness/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VarIr%2Fscikit-hubness/sbom","scorecard":{"id":147313,"data":{"date":"2025-08-11","repo":{"name":"github.com/VarIr/scikit-hubness","commit":"c36a058e67c34696182d3b8c5da089e287eb60bf"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"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":"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":"Code-Review","score":0,"reason":"Found 0/15 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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/scikit-hubness_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":"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":"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":"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/scikit-hubness_ci.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/VarIr/scikit-hubness/scikit-hubness_ci.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scikit-hubness_ci.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/VarIr/scikit-hubness/scikit-hubness_ci.yml/main?enable=pin","Warn: pipCommand not pinned by hash: scripts/install-ngt.sh:29","Warn: pipCommand not pinned by hash: scripts/install-ngt.sh:51","Warn: pipCommand not pinned by hash: scripts/install-puffinn.sh:13","Warn: pipCommand not pinned by hash: scripts/install-puffinn.sh:30","Warn: pipCommand not pinned by hash: .github/workflows/scikit-hubness_ci.yml:35","Warn: pipCommand not pinned by hash: .github/workflows/scikit-hubness_ci.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/scikit-hubness_ci.yml:44","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.txt: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":"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":"Vulnerabilities","score":0,"reason":"16 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-238 / GHSA-h3qr-fjhm-jphw","Warn: Project is vulnerable to: PYSEC-2022-288 / GHSA-6hrg-qmvc-2xh8","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","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2017-74"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 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-16T09:38:39.804Z","repository_id":35018589,"created_at":"2025-08-16T09:38:39.804Z","updated_at":"2025-08-16T09:38:39.804Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270851970,"owners_count":24656788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"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":["approximate-nearest-neighbor-search","data-mining","data-science","high-dimensional-data","hubness","machine-learning","nearest-neighbor-search"],"created_at":"2025-01-29T00:55:30.262Z","updated_at":"2025-08-17T13:13:06.222Z","avatar_url":"https://github.com/VarIr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PyPI](https://img.shields.io/pypi/v/scikit-hubness.svg)](\nhttps://pypi.org/project/scikit-hubness)\n[![Docs](https://readthedocs.org/projects/scikit-hubness/badge/?version=latest)](\nhttps://scikit-hubness.readthedocs.io/en/latest/?badge=latest)\n[![Actions](https://github.com/VarIr/scikit-hubness/actions/workflows/scikit-hubness_ci.yml/badge.svg?branch=main)](\nhttps://github.com/VarIr/scikit-hubness/actions/workflows/scikit-hubness_ci.yml)\n[![Coverage](https://codecov.io/gh/VarIr/scikit-hubness/branch/master/graph/badge.svg?branch=master)](\nhttps://codecov.io/gh/VarIr/scikit-hubness)\n[![Quality](https://img.shields.io/lgtm/grade/python/g/VarIr/scikit-hubness.svg?logo=lgtm\u0026logoWidth=18)](\nhttps://lgtm.com/projects/g/VarIr/scikit-hubness/context:python)\n[![License](https://img.shields.io/github/license/VarIr/scikit-hubness.svg)](\nhttps://github.com/VarIr/scikit-hubness/blob/master/LICENSE.txt)\n[![DOI](https://zenodo.org/badge/193863864.svg)](\nhttps://zenodo.org/badge/latestdoi/193863864)\n[![arXiv](https://img.shields.io/badge/cs.LG-arXiv%3A1912.00706-B31B1B)](\nhttps://arxiv.org/abs/1912.00706)\n[![status](https://joss.theoj.org/papers/b9b56c7c109ff2a8a0c7c216cb3f8c39/status.svg)](\nhttps://joss.theoj.org/papers/b9b56c7c109ff2a8a0c7c216cb3f8c39)\n\n# scikit-hubness\n\n`scikit-hubness` provides tools for the analysis and\nreduction of hubness in high-dimensional data.\nHubness is an aspect of the _curse of dimensionality_\nand is detrimental to many machine learning and data mining tasks.\n\nThe `skhubness.analysis` and `skhubness.reduction` packages allow to\n\n- analyze, whether your data sets show hubness\n- reduce hubness via a variety of different techniques\n- perform downstream analysis (performance assessment) with `scikit-learn`\n  due to compatible data structures\n\nThe `skhubness.neighbors` package provides approximate nearest neighbor (ANN)\nsearch. This is compatible with scikit-learn classes and functions relying\non neighbors graphs due to compliance with [KNeighborsTransformer](\nhttps://scikit-learn.org/stable/modules/neighbors.html#neighbors-transformer) APIs\nand data structures. Using ANN can speed up many scikit-learn classification,\nclustering, embedding and other methods, including:\n- [KNeighborsClassifier](https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html#sklearn.neighbors.KNeighborsClassifier)\n- [DBSCAN](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html#sklearn.cluster.DBSCAN)\n- [TSNE](https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html#sklearn.manifold.TSNE)\n- and many more.\n\n`scikit-hubness` thus provides\n- _approximate nearest neighbor_ search\n- hubness reduction\n- and combinations,\n\nwhich allows for fast hubness-reduced neighbor search in large datasets\n(tested with \u003e1M objects).\n\n\n## Installation\n\nMake sure you have a working Python3 environment (at least 3.8).\n\nUse pip to install the latest stable version of `scikit-hubness` from PyPI:\n\n```bash\npip install scikit-hubness\n```\n\nNOTE: v0.30 is currently under development and not yet available on PyPI.\nInstall from sources to obtain the bleeding edge version.\n\nDependencies are installed automatically, if necessary.\n`scikit-hubness` is based on the SciPy-stack, including `numpy`, `scipy` and `scikit-learn`.\nApproximate nearest neighbor search and approximate hubness reduction\nadditionally require at least one of the following packages:\n* [`nmslib`](https://github.com/nmslib/nmslib)\n    for hierachical navigable small-world graphs in `skhubness.neighbors.NMSlibTransformer`\n* [`ngtpy`](https://github.com/yahoojapan/NGT/)\n    for nearest neighbor graphs (ANNG, ONNG) in `skhubness.neighbors.NGTTransformer`\n* [`puffinn`](https://github.com/puffinn/puffinn)\n    for locality-sensitive hashing in `skhubness.neighbors.PuffinnTransformer`\n* [`annoy`](https://github.com/spotify/annoy)\n    for random projection forests in `skhubness.neighobrs.AnnoyTransformer`\n* Additional ANN libraries might be added in future releases. Please reach out to us in a Github Issue,\n  if you think a specific library is missing (pull requests welcome).\n\nFor more details and alternatives, please see the [Installation instructions](\nhttp://scikit-hubness.readthedocs.io/en/latest/user_guide/installation.html).\n\n## Documentation\n\nAdditional documentation is available online: \nhttp://scikit-hubness.readthedocs.io/en/latest/index.html\n\n\n## What's new\n\nSee the [changelog](docs/changelog.md) to find what's new in the latest package version.\n\n \n## Quickstart\n\nUsers of `scikit-hubness` may want to \n\n1. analyse, whether their data show hubness\n2. reduce hubness\n3. perform learning (classification, regression, ...)\n\nThe following example shows all these steps for an example dataset\nfrom the text domain (dexter). (Please make sure you have installed `scikit-hubness`).\n\n```python\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.neighbors import KNeighborsClassifier, KNeighborsTransformer\n\nfrom skhubness import Hubness\nfrom skhubness.data import load_dexter\nfrom skhubness.neighbors import NMSlibTransformer\nfrom skhubness.reduction import MutualProximity\n\n\n# load the example dataset 'dexter' that is embedded in a\n# high-dimensional space, and could, thus, be prone to hubness.\nX, y = load_dexter()\nprint(f'X.shape = {X.shape}, y.shape = {y.shape}')\n\n# assess the actual degree of hubness in dexter\nhub = Hubness(k=10, metric='cosine')\nhub.fit(X)\nk_skew = hub.score()\nprint(f'Skewness = {k_skew:.3f}')\n\n# additional hubness indices are available, for example:\nhub = Hubness(k=10, return_value=\"all\", metric='cosine')\nscores = hub.fit(X).score()\nprint(f'Robin hood index:   {scores.get(\"robinhood\"):.3f}')\nprint(f'Antihub occurrence: {scores.get(\"antihub_occurrence\"):.3f}')\nprint(f'Hub occurrence:     {scores.get(\"hub_occurrence\"):.3f}')\n\n# There is considerable hubness in dexter. Let's see, whether \n# hubness reduction can improve kNN classification performance.\n# We first create a kNN graph:\nknn = KNeighborsTransformer(n_neighbors=50, metric=\"cosine\")\n# Alternatively, create an approximate KNeighborsTransformer, e.g.,\n# knn = NMSlibTransformer(n_neighbors=50, metric=\"cosine\")\nkneighbors_graph = knn.fit_transform(X, y)\n\n# vanilla kNN without hubness reduction\nclf = KNeighborsClassifier(n_neighbors=5, metric='precomputed')\nacc_standard = cross_val_score(clf, kneighbors_graph, y, cv=5)\n\n# kNN with hubness reduction (mutual proximity) reuses the\n# precomputed graph and works in sklearn workflows:\nmp = MutualProximity(method=\"normal\")\nmp_graph = mp.fit_transform(kneighbors_graph)\nacc_mp = cross_val_score(clf, mp_graph, y, cv=5)\n\nprint(f'Accuracy (vanilla kNN): {acc_standard.mean():.3f}')\nprint(f'Accuracy (kNN with hubness reduction): {acc_mp.mean():.3f}')\n\n# Accuracy was considerably improved by mutual proximity.\n# Did it actually reduce hubness?\nmp_scores = hub.fit(mp_graph).score()\nprint(f'k-skewness after MP: {mp_scores.get(\"k_skewness\"):.3f} '\n      f'(reduction of {scores.get(\"k_skewness\") - mp_scores.get(\"k_skewness\"):.3f})')\nprint(f'Robinhood after MP:  {mp_scores.get(\"robinhood\"):.3f} '\n      f'(reduction of {scores.get(\"robinhood\") - mp_scores.get(\"robinhood\"):.3f})')\n```\n\nCheck the [User Guide](http://scikit-hubness.readthedocs.io/en/latest/user_guide.html)\nfor additional example usage. \n\n\n## Development\n\nThe developers of `scikit-hubness` welcome all kinds of contributions!\nGet in touch with us if you have comments,\nwould like to see an additional feature implemented,\nwould like to contribute code or have any other kind of issue.\nDon't hesitate to file an [issue](https://github.com/VarIr/scikit-hubness/issues)\nhere on GitHub.\n\nFor more information about contributing, please have a look at the\n[contributors guidelines](CONTRIBUTING.rst).\n\n    (c) 2018-2022, Roman Feldbauer\n    -2018: Austrian Research Institute for Artificial Intelligence (OFAI) and\n    -2021: University of Vienna, Division of Computational Systems Biology (CUBE)\n    2021-: Independent researcher\n    Contact: \u003csci@feldbauer.org\u003e\n\n## Citation\n\nIf you use `scikit-hubness` in your scientific publication, please cite:\n\n    @Article{Feldbauer2020,\n      author  = {Roman Feldbauer and Thomas Rattei and Arthur Flexer},\n      title   = {scikit-hubness: Hubness Reduction and Approximate Neighbor Search},\n      journal = {Journal of Open Source Software},\n      year    = {2020},\n      volume  = {5},\n      number  = {45},\n      pages   = {1957},\n      issn    = {2475-9066},\n      doi     = {10.21105/joss.01957},\n    }\n\nTo specifically acknowledge *approximate hubness reduction*, please cite:\n\n    @INPROCEEDINGS{8588814,\n    author={R. {Feldbauer} and M. {Leodolter} and C. {Plant} and A. {Flexer}},\n    booktitle={2018 IEEE International Conference on Big Knowledge (ICBK)},\n    title={Fast Approximate Hubness Reduction for Large High-Dimensional Data},\n    year={2018},\n    volume={},\n    number={},\n    pages={358-367},\n    keywords={computational complexity;data analysis;data mining;mobile computing;public domain software;software packages;mobile device;open source software package;high-dimensional data mining;fast approximate hubness reduction;massive mobility data;linear complexity;quadratic algorithmic complexity;dimensionality curse;Complexity theory;Indexes;Estimation;Data mining;Approximation algorithms;Time measurement;curse of dimensionality;high-dimensional data mining;hubness;linear complexity;interpretability;smartphones;transport mode detection},\n    doi={10.1109/ICBK.2018.00055},\n    ISSN={},\n    month={Nov},}\n\nThe technical report `Fast approximate hubness reduction for large high-dimensional data`\nis available at [OFAI](http://www.ofai.at/cgi-bin/tr-online?number+2018-02).\n\n### Additional reading\n\n`Local and Global Scaling Reduce Hubs in Space`, Journal of Machine Learning Research 2012,\n[Link](http://www.jmlr.org/papers/v13/schnitzer12a.html).\n\n`A comprehensive empirical comparison of hubness reduction in high-dimensional spaces`,\nKnowledge and Information Systems 2018, [DOI](https://doi.org/10.1007/s10115-018-1205-y).\n\nLicense\n-------\n`scikit-hubness` is licensed under the terms of the BSD-3-Clause [license](LICENSE.txt).\n\n------------------------------------------------------------------------------\nNote:\nIndividual files contain the following tag instead of the full license text.\n\n        SPDX-License-Identifier: BSD-3-Clause\n\nThis enables machine processing of license information based on the SPDX\nLicense Identifiers that are here available: https://spdx.org/licenses/\n\nAcknowledgements\n----------------\nParts of `scikit-hubness` adapt code from `scikit-learn`.\nWe thank all the authors and contributors of this project\nfor the tremendous work they have done.\n\nPyVmMonitor is being used to support the development of this free open source \nsoftware package. For more information go to http://www.pyvmmonitor.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarir%2Fscikit-hubness","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvarir%2Fscikit-hubness","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarir%2Fscikit-hubness/lists"}