{ "info": { "author": "Cameron Shand", "author_email": "cameron.shand@manchester.ac.uk", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Artificial Intelligence" ], "description": "# HAWKS Data Generator\n\n![HAWKS Animation](examples/hawks_animation.gif)\n\nHAWKS is a tool for generating controllably difficult synthetic data, used primarily for clustering. This repo is associated with the following paper:\n\n1. Shand, C, Allmendinger, R, Handl, J, Webb, A & Keane, J 2019, Evolving Controllably Difficult Datasets for Clustering. in Proceedings of the Annual Conference on Genetic and Evolutionary Computation (GECCO '19) . The Genetic and Evolutionary Computation Conference, Prague, Czech Republic, 13/07/19. [https://doi.org/10.1145/3321707.3321761](https://doi.org/10.1145/3321707.3321761) **(Nominated for best paper on the evolutionary machine learning track at GECCO'19)**\n\nThe academic/technical details can be found there. What follows here is a practical guide to using this tool to generate synthetic data.\n\nIf you use this tool to generate data that forms part of a paper, please consider either linking to this work or citing the paper above.\n\n## Installation\nInstallation is available through pip by:\n```\npip install hawks\n```\nor by cloning this repo (and installing locally using `pip install .`). \n\n## Running HAWKS\nLike any other package, you need to `import hawks` in order to use it. The parameters of hawks are configured via a config file system. Details of the parameters are found in the [user guide](https://github.com/sea-shunned/hawks/blob/master/user_guide.md). For any parameters that are not specified, default values will be used (as defined in `hawks/defaults.json`).\n\nThe example below illustrates how to run `hawks`. Either a dictionary or a path to a JSON config can be provided to override any of the default values.\n\n```python\nfrom pathlib import Path\n\nimport numpy as np\nfrom sklearn.cluster import KMeans\nfrom sklearn.metrics import adjusted_rand_score\nimport hawks\n\n# Fix the seed number\nconfig = {\n \"hawks\": {\n \"seed_num\": 42\n }\n}\n# Any missing parameters will take the default seen in configs/defaults.json\ngenerator = hawks.create_generator(config)\n# Run the generator\ngenerator.run()\n# Get the best dataset found and it's labels\ndata, labels = generator.get_best_dataset()\n# # Plot the best dataset to see how it looks\n# generator.plot_best_indiv()\n# Run KMeans on the data\nkm = KMeans(\n n_clusters=len(np.unique(labels)), random_state=42\n).fit(data)\n# Get the Adjusted Rand Index for KMeans on the data\nari = adjusted_rand_score(labels, km.labels_)\nprint(f\"ARI: {ari}\")\n```\n\n## User Guide\nFor a more detailed explanation of the parameters and how to use HAWKS, please read the [user guide](https://github.com/sea-shunned/hawks/blob/master/user_guide.md).\n\n## Issues\nAs this work is still in development, plain sailing is not guaranteed. If you encounter an issue, first ensure that `hawks` is running as intended by navigating to the tests directory, and running `python tests.py`. If any test fails, please add details of this alongside your original problem to an issue on the [GitHub repo](https://github.com/sea-shunned/hawks/issues).\n\n## Feature Requests\nAt present, this is primarily academic work, so future developments will be released here after they have been published. If you have any suggestions or simple feature requests for HAWKS as a tool to use, please raise that on the [GitHub repo](https://github.com/sea-shunned/hawks/issues).\n\nIf you are interested in extending this work or collaborating, please email cameron(dot)shand(at)manchester(dot)ac(dot)uk.\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sea-shunned/hawks", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "hawks", "package_url": "https://pypi.org/project/hawks/", "platform": "", "project_url": "https://pypi.org/project/hawks/", "project_urls": { "Homepage": "https://github.com/sea-shunned/hawks" }, "release_url": "https://pypi.org/project/hawks/0.1.0/", "requires_dist": [ "deap (==1.2.2)", "matplotlib (>=3.0)", "numpy (>=1.15)", "pandas (>=0.23)", "scikit-learn (>=0.20)", "scipy (>=1.1)", "seaborn (>=0.9.0)", "tqdm (>=4.15)" ], "requires_python": ">=3.6", "summary": "A package for generating synthetic clusters, with parameters to customize different aspects of the complexity of the cluster structure", "version": "0.1.0" }, "last_serial": 5743689, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "2aa729f6ad1bf6847c44f5a19349f192", "sha256": "6557746e16b6b30bef7fdf17f3b8711160914d01f5b2f18c33a8b6d2de5a4048" }, "downloads": -1, "filename": "hawks-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2aa729f6ad1bf6847c44f5a19349f192", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 25652, "upload_time": "2019-06-25T15:28:12", "url": "https://files.pythonhosted.org/packages/9e/20/3a058d57b4bf977f5bf6236157cefd65e566d81d7bd349d6f3d52f2337e6/hawks-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5367862b8be0f446264ffa0498d782b5", "sha256": "b168a83928c50105a3e6f8487ec56519ce02587890bcd663bb6f07c9ec83d66d" }, "downloads": -1, "filename": "hawks-0.0.1.tar.gz", "has_sig": false, "md5_digest": "5367862b8be0f446264ffa0498d782b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22376, "upload_time": "2019-06-25T15:28:15", "url": "https://files.pythonhosted.org/packages/88/58/df1f7a5fa68093558eed681d7a932900b4b949a7e4cde23581e94e611686/hawks-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "f7a64f372bda36398b2df94d5dac92d0", "sha256": "38d5f4a03d286c4e6251729738ada526dd0b7e2da14ceda3de524f5c422c83d3" }, "downloads": -1, "filename": "hawks-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f7a64f372bda36398b2df94d5dac92d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 27163, "upload_time": "2019-06-29T11:37:41", "url": "https://files.pythonhosted.org/packages/4a/16/e7be7b8d7183177d56ea9bebc3517641ef36f60b2ffd993c1ff28588ad7b/hawks-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8cf0887b3ed1e4729c8b66437864601c", "sha256": "d0845dd4bed55c970c228469c335de2c77ce9960da584fb6fd38764d26721087" }, "downloads": -1, "filename": "hawks-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8cf0887b3ed1e4729c8b66437864601c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 24398, "upload_time": "2019-06-29T11:37:42", "url": "https://files.pythonhosted.org/packages/19/54/645e32da60788b194ce176e414be379168921a0f6bd6516f056cee415901/hawks-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "8d3cf907d821eae1e0deed18a6511705", "sha256": "797e8636a6b19b864bf9f263fe6e3a24981b3da92f111f35ae3c055c583f603b" }, "downloads": -1, "filename": "hawks-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8d3cf907d821eae1e0deed18a6511705", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45825, "upload_time": "2019-08-28T16:29:36", "url": "https://files.pythonhosted.org/packages/70/1b/74c03989496c8e014619b5767dbc15f5d20f0ec976551f6e2130f8fde7d8/hawks-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f2f59bd30b68effb3b4f5a4d7724bd7f", "sha256": "bb14f6dae50a1c880bd36165a11fba652f93135d375a8460a07c74db3ea7a8e8" }, "downloads": -1, "filename": "hawks-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f2f59bd30b68effb3b4f5a4d7724bd7f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 31995, "upload_time": "2019-08-28T16:29:38", "url": "https://files.pythonhosted.org/packages/98/98/355c70bc55072b7836ffd66b38835d747be8f4b55ed33e00ba76828c884c/hawks-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8d3cf907d821eae1e0deed18a6511705", "sha256": "797e8636a6b19b864bf9f263fe6e3a24981b3da92f111f35ae3c055c583f603b" }, "downloads": -1, "filename": "hawks-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8d3cf907d821eae1e0deed18a6511705", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45825, "upload_time": "2019-08-28T16:29:36", "url": "https://files.pythonhosted.org/packages/70/1b/74c03989496c8e014619b5767dbc15f5d20f0ec976551f6e2130f8fde7d8/hawks-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f2f59bd30b68effb3b4f5a4d7724bd7f", "sha256": "bb14f6dae50a1c880bd36165a11fba652f93135d375a8460a07c74db3ea7a8e8" }, "downloads": -1, "filename": "hawks-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f2f59bd30b68effb3b4f5a4d7724bd7f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 31995, "upload_time": "2019-08-28T16:29:38", "url": "https://files.pythonhosted.org/packages/98/98/355c70bc55072b7836ffd66b38835d747be8f4b55ed33e00ba76828c884c/hawks-0.1.0.tar.gz" } ] }