{ "info": { "author": "Leland McInnes", "author_email": "leland.mcinnes@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Scientific/Engineering", "Topic :: Software Development" ], "description": ".. image:: https://travis-ci.org/lmcinnes/pynndescent.svg\n :target: https://travis-ci.org/lmcinnes/pynndescent\n :alt: Travis Build Status\n.. image:: https://ci.appveyor.com/api/projects/status/github/lmcinnes/pynndescent?branch=master&svg=true\n :target: https://ci.appveyor.com/project/lmcinnes/pynndescent\n :alt: AppVeyor Build Status\n.. image:: https://coveralls.io/repos/github/lmcinnes/pynndescent/badge.svg\n :target: https://coveralls.io/github/lmcinnes/pynndescent\n :alt: Test Coverage Status\n.. image:: https://img.shields.io/lgtm/alerts/g/lmcinnes/pynndescent.svg\n :target: https://lgtm.com/projects/g/lmcinnes/pynndescent/alerts\n :alt: LGTM Alerts\n.. image:: https://img.shields.io/lgtm/grade/python/g/lmcinnes/pynndescent.svg\n :target: https://lgtm.com/projects/g/lmcinnes/pynndescent/context:python\n :alt: LGTM Grade\n\n===========\nPyNNDescent\n===========\n\nA Python nearest neighbor descent for approximate nearest neighbors. This is\na relatively straightforward python implementation of Nearest Neighbor\nDescent for k-neighbor-graph construction and approximate nearest neighbor\nsearch, as per the paper:\n\nDong, Wei, Charikar Moses, and Kai Li.\n*\"Efficient k-nearest neighbor graph construction for generic similarity\nmeasures.\"*\nProceedings of the 20th international conference on World wide web. ACM, 2011.\n\nThis library supplements that approach with the use of random projection\ntrees for initialisation. This can be particularly useful for the metrics\nthat are amenable to such approaches (euclidean, minkowski, angular, cosine,\netc.).\n\nCurrently this library targets relatively high accuracy \n(90%-99% accuracy rate) approximate nearest neighbor searches.\n\n--------------------\nWhy use PyNNDescent?\n--------------------\n\nPyNNDescent provides fast approximate nearest neighbor queries. The\n`ann-benchmarks `_ system puts it\nsolidly in the mix of top performing ANN libraries:\n\n**GIST-960 Euclidean**\n\n.. image:: https://camo.githubusercontent.com/142a48c992ba689b8ea9e62636b5281a97322f74/68747470733a2f2f7261772e6769746875622e636f6d2f6572696b6265726e2f616e6e2d62656e63686d61726b732f6d61737465722f726573756c74732f676973742d3936302d6575636c696465616e2e706e67\n :alt: ANN benchmark performance for GIST 960 dataset\n\n**NYTimes-256 Angular**\n\n.. image:: https://camo.githubusercontent.com/6120a35a9db64104eaa1c95cb4803c2fc4cd2679/68747470733a2f2f7261772e6769746875622e636f6d2f6572696b6265726e2f616e6e2d62656e63686d61726b732f6d61737465722f726573756c74732f6e7974696d65732d3235362d616e67756c61722e706e67\n :alt: ANN benchmark performance for NYTimes 256 dataset\n\nWhile PyNNDescent is not the fastest ANN library, it is both easy to install (pip installable)\nwith no platform or compilation issues, and very flexible, supporting a wide variety of\ndistance metrics by default:\n\n**Minkowski style metrics**\n\n- euclidean\n- manhattan\n- chebyshev\n- minkowski\n\n**Miscellaneous spatial metrics**\n\n- canberra\n- braycurtis\n- haversine\n\n**Normalized spatial metrics**\n\n- mahalanobis\n- wminkowski\n- seuclidean\n\n**Angular and correlation metrics**\n\n- cosine\n- correlation\n\n**Metrics for binary data**\n\n- hamming\n- jaccard\n- dice\n- russelrao\n- kulsinski\n- rogerstanimoto\n- sokalmichener\n- sokalsneath\n- yule\n\nand also custom user defined distance metrics while still retaining performance.\n\nPyNNDescent also integrates well with Scikit-learn, including providing support\nfor the upcoming KNeighborTransformer as a drop in replacement for algorithms\nthat make use of nearest neighbor computations.\n\n----------------------\nHow to use PyNNDescent\n----------------------\n\nPyNNDescent aims to have a very simple interface. It is similar to (but more\nlimited than) KDTrees and BallTrees in ``sklearn``. In practice there are\nonly two operations -- index construction, and querying an index for nearest\nneighbors.\n\nTo build a new search index on some training data ``data`` you can do something\nlike\n\n.. code:: python\n\n from pynndescent import NNDescent\n index = NNDescent(data)\n\nYou can then use the index for searching (and can pickle it to disk if you\nwish). To search a pynndescent index for the 15 nearest neighbors of a test data\nset ``query_data`` you can do something like\n\n.. code:: python\n\n index.query(query_data, k=15)\n\nand that is pretty much all there is to it.\n\n----------\nInstalling\n----------\n\nPyNNDescent is designed to be easy to install being a pure python module with\nrelatively light requirements:\n\n* numpy\n* scipy\n* scikit-learn >= 0.18\n* numba >= 0.37\n\nall of which should be pip installable. The easiest way to install should be\n\n.. code:: bash\n\n pip install pynndescent\n\nTo manually install this package:\n\n.. code:: bash\n\n wget https://github.com/lmcinnes/pynndescent/archive/master.zip\n unzip master.zip\n rm master.zip\n cd pynndescent-master\n python setup.py install\n\n----------------\nHelp and Support\n----------------\n\nThis project is still very young. I am currently trying to get example\nnotebooks and documentation prepared, but it may be a while before those are\navailable. In the meantime please `open an issue `_\nand I will try to provide any help and guidance that I can. Please also check\nthe docstrings on the code, which provide some descriptions of the parameters.\n\n-------\nLicense\n-------\n\nThe pynndescent package is 2-clause BSD licensed. Enjoy.\n\n------------\nContributing\n------------\n\nContributions are more than welcome! There are lots of opportunities\nfor potential projects, so please get in touch if you would like to\nhelp out. Everything from code to notebooks to\nexamples and documentation are all *equally valuable* so please don't feel\nyou can't contribute. To contribute please `fork the project `_ make your changes and\nsubmit a pull request. We will do our best to work through any issues with\nyou and get your code merged into the main branch.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/lmcinnes/pynndescent", "keywords": "nearest neighbor", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "pynndescent", "package_url": "https://pypi.org/project/pynndescent/", "platform": "", "project_url": "https://pypi.org/project/pynndescent/", "project_urls": { "Homepage": "http://github.com/lmcinnes/pynndescent" }, "release_url": "https://pypi.org/project/pynndescent/0.3.3/", "requires_dist": null, "requires_python": "", "summary": "Nearest Neighbor Descent", "version": "0.3.3" }, "last_serial": 5804956, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "10cb30d198f9ef3205852c47e246f189", "sha256": "7f5c7b7c5fec9517b84e76b65ef657b3ee8124a537965bcf00c15de61bc41617" }, "downloads": -1, "filename": "pynndescent-0.1.0.tar.gz", "has_sig": false, "md5_digest": "10cb30d198f9ef3205852c47e246f189", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15651, "upload_time": "2018-03-03T02:44:04", "url": "https://files.pythonhosted.org/packages/90/48/8fa64b0413d86d7e93d0f5120ca86dba625cf57220487aed08a63bc1efc7/pynndescent-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "195f308972eddadda82570cf71c7ab76", "sha256": "45c0c42593f6d41d7cc5abf96a812a9095724ab8a4ff200682afac479818c44f" }, "downloads": -1, "filename": "pynndescent-0.1.1.tar.gz", "has_sig": false, "md5_digest": "195f308972eddadda82570cf71c7ab76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15753, "upload_time": "2018-03-05T01:36:54", "url": "https://files.pythonhosted.org/packages/a0/81/fecca3d2c60b7bf02ee6e41de71f699f4d2fb6a94c50576869a06d0163f0/pynndescent-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "04f9396d51411ad18870d4dc992b46a3", "sha256": "e6c9b83f1e02bb964b621e80c12323e209d994f189b731d94ac0f0a5229c22a4" }, "downloads": -1, "filename": "pynndescent-0.1.2.tar.gz", "has_sig": false, "md5_digest": "04f9396d51411ad18870d4dc992b46a3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15762, "upload_time": "2018-03-05T01:51:44", "url": "https://files.pythonhosted.org/packages/0d/06/a32a7822cc3ae908927471981273427da52a71996d75af93275c58556282/pynndescent-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "0307819f00fbfb077806a7513a920332", "sha256": "66a0ce96d1df6e8ac5af6c02345851cda91639c8ae7c72ff0904560878eedfab" }, "downloads": -1, "filename": "pynndescent-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0307819f00fbfb077806a7513a920332", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16625, "upload_time": "2018-04-29T16:24:45", "url": "https://files.pythonhosted.org/packages/8f/d3/ace632bc76cfa058533d6304ff637352a6e2980c79bd62e666a3fc5e1a57/pynndescent-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "af4c3eb509901828f6e917bb289cc620", "sha256": "45d969dcd0b6d34bfbc33ad1d5cbfa92a6fd55c8a0cb33e314f69531d83f7b63" }, "downloads": -1, "filename": "pynndescent-0.2.1.tar.gz", "has_sig": false, "md5_digest": "af4c3eb509901828f6e917bb289cc620", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19383, "upload_time": "2018-07-13T19:08:22", "url": "https://files.pythonhosted.org/packages/ed/8d/2a847d83a34e7cf4d49796cf7eb83f511c1126e955b2bfa96e42acbe0bef/pynndescent-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "15f801e42a7a1360ce90b3548bf74556", "sha256": "b58832a8f56d6d89018c5d2e9fce866ec7a5fa7b1a5aa02363d6ef2015929b31" }, "downloads": -1, "filename": "pynndescent-0.3.0.tar.gz", "has_sig": false, "md5_digest": "15f801e42a7a1360ce90b3548bf74556", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26486, "upload_time": "2019-05-21T02:30:34", "url": "https://files.pythonhosted.org/packages/53/68/df2d03d13ae2ff36bbc840ae1181ef2151e67ce9b135ec59b0c28090889f/pynndescent-0.3.0.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "6e6e5c15bfc60f2c3a0fc7a8de57d5c1", "sha256": "00fbe48771933141de5954970f81177f7478aaa0cf5b39f5f9d49ad05eaf5e84" }, "downloads": -1, "filename": "pynndescent-0.3.2.tar.gz", "has_sig": false, "md5_digest": "6e6e5c15bfc60f2c3a0fc7a8de57d5c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32103, "upload_time": "2019-09-07T18:32:47", "url": "https://files.pythonhosted.org/packages/80/34/900ffc25ba896412459cb86558582fc1a3a18df31c891eb2f1633899ee22/pynndescent-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "1dba29a28a058a6a9705e9ed2a9daaff", "sha256": "ac02f1cbb2ac0df2f554dee2518fa3b7bb9b9bbe6f27a3bf3794d8a8d9f2f4ae" }, "downloads": -1, "filename": "pynndescent-0.3.3.tar.gz", "has_sig": false, "md5_digest": "1dba29a28a058a6a9705e9ed2a9daaff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31110, "upload_time": "2019-09-09T18:47:30", "url": "https://files.pythonhosted.org/packages/5f/c6/5673b77e06ec01c4bbe96e3ef792e590fb0a3089e61e4691edfe0a2cbc5b/pynndescent-0.3.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1dba29a28a058a6a9705e9ed2a9daaff", "sha256": "ac02f1cbb2ac0df2f554dee2518fa3b7bb9b9bbe6f27a3bf3794d8a8d9f2f4ae" }, "downloads": -1, "filename": "pynndescent-0.3.3.tar.gz", "has_sig": false, "md5_digest": "1dba29a28a058a6a9705e9ed2a9daaff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31110, "upload_time": "2019-09-09T18:47:30", "url": "https://files.pythonhosted.org/packages/5f/c6/5673b77e06ec01c4bbe96e3ef792e590fb0a3089e61e4691edfe0a2cbc5b/pynndescent-0.3.3.tar.gz" } ] }