|
| 1 | +Metadata-Version: 2.1 |
| 2 | +Name: mlrose_ky |
| 3 | +Version: 1.0.0 |
| 4 | +Summary: MLROSe-ky: Machine Learning, Randomized Optimization and Search |
| 5 | +Author: Genevieve Hayes, Andrew Rollings |
| 6 | +Author-email: Kyle Nakamura <knakamura13dev@gmail.com> |
| 7 | +Maintainer-email: Kyle Nakamura <knakamura13dev@gmail.com> |
| 8 | +License: BSD-3-Clause |
| 9 | +Project-URL: Homepage, https://github.com/knakamura13/mlrose-ky |
| 10 | +Project-URL: Documentation, https://nkapila6.github.io/mlrose-ky/ |
| 11 | +Keywords: machine learning,randomized optimization,search algorithms,neural networks,genetic algorithm,simulated annealing,hill climbing,MIMIC,Python,OMSCS,CS,7641,mlrose-hiive |
| 12 | +Classifier: Intended Audience :: Education |
| 13 | +Classifier: Intended Audience :: Science/Research |
| 14 | +Classifier: Natural Language :: English |
| 15 | +Classifier: License :: OSI Approved :: BSD License |
| 16 | +Classifier: Programming Language :: Python |
| 17 | +Classifier: Programming Language :: Python :: 3 |
| 18 | +Classifier: Topic :: Scientific/Engineering |
| 19 | +Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence |
| 20 | +Classifier: Topic :: Scientific/Engineering :: Mathematics |
| 21 | +Classifier: Topic :: Software Development :: Libraries |
| 22 | +Classifier: Topic :: Software Development :: Libraries :: Python Modules |
| 23 | +Requires-Python: >=3.10 |
| 24 | +Description-Content-Type: text/markdown |
| 25 | +License-File: LICENSE |
| 26 | +Requires-Dist: joblib |
| 27 | +Requires-Dist: networkx |
| 28 | +Requires-Dist: numpy |
| 29 | +Requires-Dist: pandas |
| 30 | +Requires-Dist: scikit-learn |
| 31 | +Requires-Dist: scipy |
| 32 | + |
| 33 | +# mlrose-ky: Machine Learning, Randomized Optimization, and SEarch |
| 34 | + |
| 35 | +mlrose-ky is a Python package for applying some of the most common randomized optimization and search algorithms to a range of different optimization problems, over both discrete- and continuous-valued parameter spaces. |
| 36 | + |
| 37 | +## Project Background |
| 38 | + |
| 39 | +mlrose-ky is a fork of the `mlrose-hiive` repository, which itself was a fork of the original `mlrose` repository. The original mlrose package was developed to support students of Georgia Tech's OMSCS/OMSA offering of CS 7641: Machine Learning. |
| 40 | + |
| 41 | +This repository includes implementations of all randomized optimization algorithms taught in the course, as well as functionality to apply these algorithms to integer-string optimization problems, such as N-Queens and the Knapsack problem; continuous-valued optimization problems, such as the neural network weight problem; and tour optimization problems, such as the Travelling Salesperson problem. It also has the flexibility to solve user-defined optimization problems. |
| 42 | + |
| 43 | +## Main Features |
| 44 | + |
| 45 | +#### *Randomized Optimization Algorithms* |
| 46 | +- Implementations of: hill climbing, randomized hill climbing, simulated annealing, genetic algorithm, and (discrete) MIMIC; |
| 47 | +- Solve both maximization and minimization problems; |
| 48 | +- Define the algorithm's initial state or start from a random state; |
| 49 | +- Define your own simulated annealing decay schedule or use one of three pre-defined, customizable decay schedules: geometric decay, arithmetic decay, or exponential decay. |
| 50 | + |
| 51 | +#### *Problem Types* |
| 52 | +- Solve discrete-value (bit-string and integer-string), continuous-value, and tour optimization (travelling salesperson) problems; |
| 53 | +- Define your own fitness function for optimization or use a pre-defined function. |
| 54 | +- Pre-defined fitness functions exist for solving the: One Max, Flip Flop, Four Peaks, Six Peaks, Continuous Peaks, Knapsack, Travelling Salesperson, N-Queens, and Max-K Color optimization problems. |
| 55 | + |
| 56 | +#### *Machine Learning Weight Optimization* |
| 57 | +- Optimize the weights of neural networks, linear regression models, and logistic regression models using randomized hill climbing, simulated annealing, the genetic algorithm, or gradient descent; |
| 58 | +- Supports classification and regression neural networks. |
| 59 | + |
| 60 | +## Project Improvements and Updates |
| 61 | + |
| 62 | +The `mlrose-ky` project is undergoing significant improvements to enhance code quality, documentation, and testing. Below is a list of tasks that have been completed or are in progress: |
| 63 | + |
| 64 | +1. **Fix Python Warnings and Errors**: All Python warnings and errors have been addressed, except for a few unavoidable ones like "duplicate code." ✅ |
| 65 | + |
| 66 | +2. **Add Python 3.10 Type Hints**: Type hints are being added to all function and method definitions, as well as method properties (e.g., `self.foo: str = 'bar'`), to improve code clarity and maintainability. |
| 67 | + |
| 68 | +3. **Enhance Documentation**: NumPy-style docstrings are being added to all functions and methods, with at least a one-line docstring at the top of every file summarizing its contents. This will make the codebase more understandable and easier to use for others. |
| 69 | + |
| 70 | +4. **Increase Test Coverage**: Tests are being added using Pytest, with a goal of achieving 100% code coverage to ensure the robustness of the codebase. |
| 71 | + |
| 72 | +5. **Resolve TODO/FIXME Comments**: A thorough search is being conducted for any TODO, FIXME, or similar comments, and their respective issues are being resolved. |
| 73 | + |
| 74 | +6. **Optimize Code**: Vanilla Python loops are being optimized where possible by vectorizing them with NumPy to enhance performance. |
| 75 | + |
| 76 | +7. **Improve Code Quality**: Any other sub-optimal code, bugs, or code quality issues are being addressed to ensure a high standard of coding practices. |
| 77 | + |
| 78 | +8. **Clean Up Codebase**: All commented-out code is being removed to keep the codebase clean and maintainable. |
| 79 | + |
| 80 | +## Installation |
| 81 | + |
| 82 | +mlrose-ky was written in Python 3 and requires NumPy, SciPy, and Scikit-Learn (sklearn). |
| 83 | + |
| 84 | +The latest version can be installed using `pip`: |
| 85 | + |
| 86 | +```bash |
| 87 | +pip install mlrose-ky |
| 88 | +``` |
| 89 | + |
| 90 | +Once it is installed, simply import it like so: |
| 91 | + |
| 92 | +```python |
| 93 | +import mlrose_ky |
| 94 | +``` |
| 95 | + |
| 96 | +## Documentation |
| 97 | + |
| 98 | +The official mlrose-ky documentation can be found [here](https://mlrose.readthedocs.io/). |
| 99 | + |
| 100 | +A Jupyter notebook containing the examples used in the documentation is also available [here](https://github.com/gkhayes/mlrose/blob/master/tutorial_examples.ipynb). |
| 101 | + |
| 102 | +## Licensing, Authors, Acknowledgements |
| 103 | + |
| 104 | +mlrose-ky was forked from the `mlrose-hiive` repository, which was a fork of the original `mlrose` repository. |
| 105 | + |
| 106 | +The original `mlrose` was written by Genevieve Hayes and is distributed under the [3-Clause BSD license](https://github.com/gkhayes/mlrose/blob/master/LICENSE). |
| 107 | + |
| 108 | +You can cite mlrose-ky in research publications and reports as follows: |
| 109 | +* Nakamura, K. (2024). ***mlrose-ky: Machine Learning, Randomized Optimization, and SEarch package for Python***. https://github.com/your-repo-url. Accessed: *day month year*. |
| 110 | + |
| 111 | +Please also keep the original authors' citations: |
| 112 | +* Rollings, A. (2020). ***mlrose: Machine Learning, Randomized Optimization and SEarch package for Python, hiive extended remix***. https://github.com/hiive/mlrose. Accessed: *day month year*. |
| 113 | +* Hayes, G. (2019). ***mlrose: Machine Learning, Randomized Optimization and SEarch package for Python***. https://github.com/gkhayes/mlrose. Accessed: *day month year*. |
| 114 | + |
| 115 | +Thanks to David S. Park for the MIMIC enhancements (from https://github.com/parkds/mlrose). |
| 116 | + |
| 117 | +BibTeX entry: |
| 118 | +```bibtex |
| 119 | +@misc{Nakamura24, |
| 120 | + author = {Nakamura, K.}, |
| 121 | + title = {{mlrose-ky: Machine Learning, Randomized Optimization and SEarch package for Python}}, |
| 122 | + year = 2024, |
| 123 | + howpublished = {\url{https://github.com/your-repo-url}}, |
| 124 | + note = {Accessed: day month year} |
| 125 | +} |
| 126 | + |
| 127 | +@misc{Rollings20, |
| 128 | + author = {Rollings, A.}, |
| 129 | + title = {{mlrose: Machine Learning, Randomized Optimization and SEarch package for Python, hiive extended remix}}, |
| 130 | + year = 2020, |
| 131 | + howpublished = {\url{https://github.com/hiive/mlrose}}, |
| 132 | + note = {Accessed: day month year} |
| 133 | +} |
| 134 | + |
| 135 | +@misc{Hayes19, |
| 136 | + author = {Hayes, G.}, |
| 137 | + title = {{mlrose: Machine Learning, Randomized Optimization and SEarch package for Python}}, |
| 138 | + year = 2019, |
| 139 | + howpublished = {\url{https://github.com/gkhayes/mlrose}}, |
| 140 | + note = {Accessed: day month year} |
| 141 | +} |
| 142 | +``` |
0 commit comments