Skip to content

Commit f7b2869

Browse files
committed
Publish version 1.0.0 of mlrose-ky to pypi
1 parent 4bf6841 commit f7b2869

File tree

8 files changed

+329
-67
lines changed

8 files changed

+329
-67
lines changed

mlrose_ky/mlrose_ky.egg-info/PKG-INFO

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
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+
```
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
LICENSE
2+
README.md
3+
pyproject.toml
4+
mlrose_ky/algorithms/__init__.py
5+
mlrose_ky/algorithms/ga.py
6+
mlrose_ky/algorithms/gd.py
7+
mlrose_ky/algorithms/hc.py
8+
mlrose_ky/algorithms/mimic.py
9+
mlrose_ky/algorithms/rhc.py
10+
mlrose_ky/algorithms/sa.py
11+
mlrose_ky/algorithms/crossovers/__init__.py
12+
mlrose_ky/algorithms/crossovers/_crossover_base.py
13+
mlrose_ky/algorithms/crossovers/one_point_crossover.py
14+
mlrose_ky/algorithms/crossovers/tsp_crossover.py
15+
mlrose_ky/algorithms/crossovers/uniform_crossover.py
16+
mlrose_ky/algorithms/decay/__init__.py
17+
mlrose_ky/algorithms/decay/arithmetic_decay.py
18+
mlrose_ky/algorithms/decay/custom_decay.py
19+
mlrose_ky/algorithms/decay/exponential_decay.py
20+
mlrose_ky/algorithms/decay/geometric_decay.py
21+
mlrose_ky/algorithms/mutators/__init__.py
22+
mlrose_ky/algorithms/mutators/_mutator_base.py
23+
mlrose_ky/algorithms/mutators/discrete_mutator.py
24+
mlrose_ky/algorithms/mutators/gene_swap_mutator.py
25+
mlrose_ky/algorithms/mutators/single_gene_mutator.py
26+
mlrose_ky/algorithms/mutators/single_shift_mutator.py
27+
mlrose_ky/decorators/__init__.py
28+
mlrose_ky/decorators/short_name_decorator.py
29+
mlrose_ky/fitness/__init__.py
30+
mlrose_ky/fitness/_discrete_peaks_base.py
31+
mlrose_ky/fitness/continuous_peaks.py
32+
mlrose_ky/fitness/custom_fitness.py
33+
mlrose_ky/fitness/flip_flop.py
34+
mlrose_ky/fitness/four_peaks.py
35+
mlrose_ky/fitness/knapsack.py
36+
mlrose_ky/fitness/max_k_color.py
37+
mlrose_ky/fitness/one_max.py
38+
mlrose_ky/fitness/queens.py
39+
mlrose_ky/fitness/six_peaks.py
40+
mlrose_ky/fitness/travelling_salesperson.py
41+
mlrose_ky/generators/__init__.py
42+
mlrose_ky/generators/continuous_peaks_generator.py
43+
mlrose_ky/generators/flip_flop_generator.py
44+
mlrose_ky/generators/four_peaks_generator.py
45+
mlrose_ky/generators/knapsack_generator.py
46+
mlrose_ky/generators/max_k_color_generator.py
47+
mlrose_ky/generators/one_max_generator.py
48+
mlrose_ky/generators/queens_generator.py
49+
mlrose_ky/generators/six_peaks_generator.py
50+
mlrose_ky/generators/tsp_generator.py
51+
mlrose_ky/gridsearch/__init__.py
52+
mlrose_ky/gridsearch/grid_search_mixin.py
53+
mlrose_ky/mlrose_ky.egg-info/PKG-INFO
54+
mlrose_ky/mlrose_ky.egg-info/SOURCES.txt
55+
mlrose_ky/mlrose_ky.egg-info/dependency_links.txt
56+
mlrose_ky/mlrose_ky.egg-info/requires.txt
57+
mlrose_ky/mlrose_ky.egg-info/top_level.txt
58+
mlrose_ky/neural/__init__.py
59+
mlrose_ky/neural/_nn_base.py
60+
mlrose_ky/neural/linear_regression.py
61+
mlrose_ky/neural/logistic_regression.py
62+
mlrose_ky/neural/neural_network.py
63+
mlrose_ky/neural/nn_classifier.py
64+
mlrose_ky/neural/nn_core.py
65+
mlrose_ky/neural/activation/__init__.py
66+
mlrose_ky/neural/activation/identity.py
67+
mlrose_ky/neural/activation/leaky_relu.py
68+
mlrose_ky/neural/activation/relu.py
69+
mlrose_ky/neural/activation/sigmoid.py
70+
mlrose_ky/neural/activation/softmax.py
71+
mlrose_ky/neural/activation/tanh.py
72+
mlrose_ky/neural/fitness/__init__.py
73+
mlrose_ky/neural/fitness/network_weights.py
74+
mlrose_ky/neural/utils/__init__.py
75+
mlrose_ky/neural/utils/weights.py
76+
mlrose_ky/opt_probs/__init__.py
77+
mlrose_ky/opt_probs/continuous_opt.py
78+
mlrose_ky/opt_probs/discrete_opt.py
79+
mlrose_ky/opt_probs/flip_flop_opt.py
80+
mlrose_ky/opt_probs/knapsack_opt.py
81+
mlrose_ky/opt_probs/max_k_color_opt.py
82+
mlrose_ky/opt_probs/opt_prob.py
83+
mlrose_ky/opt_probs/queens_opt.py
84+
mlrose_ky/opt_probs/tsp_opt.py
85+
mlrose_ky/runners/__init__.py
86+
mlrose_ky/runners/_nn_runner_base.py
87+
mlrose_ky/runners/_runner_base.py
88+
mlrose_ky/runners/ga_runner.py
89+
mlrose_ky/runners/mimic_runner.py
90+
mlrose_ky/runners/nngs_runner.py
91+
mlrose_ky/runners/rhc_runner.py
92+
mlrose_ky/runners/sa_runner.py
93+
mlrose_ky/runners/skmlp_runner.py
94+
mlrose_ky/runners/utils.py
95+
mlrose_ky/samples/__init__.py
96+
mlrose_ky/samples/synthetic_data.py
97+
tests/test_activation.py
98+
tests/test_algorithms.py
99+
tests/test_decay.py
100+
tests/test_decorators.py
101+
tests/test_fitness.py
102+
tests/test_generators.py
103+
tests/test_gridsearch.py
104+
tests/test_neural.py
105+
tests/test_opt_probs.py
106+
tests/test_runners.py
107+
tests/test_samples.py
108+
tests/tests.py
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
joblib
2+
networkx
3+
numpy
4+
pandas
5+
scikit-learn
6+
scipy
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
algorithms
2+
decorators
3+
fitness
4+
generators
5+
gridsearch
6+
neural
7+
opt_probs
8+
runners
9+
samples

pyproject.toml

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,66 @@
1+
[build-system]
2+
requires = ["setuptools>=42", "wheel"]
3+
build-backend = "setuptools.build_meta"
4+
5+
[project]
6+
name = "mlrose_ky"
7+
version = "1.0.0"
8+
description = "MLROSe-ky: Machine Learning, Randomized Optimization and Search"
9+
readme = "README.md"
10+
requires-python = ">=3.10"
11+
license = {text = "BSD-3-Clause"}
12+
authors = [
13+
{name = "Kyle Nakamura", email = "knakamura13dev@gmail.com"},
14+
{name = "Genevieve Hayes"},
15+
{name = "Andrew Rollings"}
16+
]
17+
maintainers = [
18+
{name = "Kyle Nakamura", email = "knakamura13dev@gmail.com"}
19+
]
20+
classifiers = [
21+
"Intended Audience :: Education",
22+
"Intended Audience :: Science/Research",
23+
"Natural Language :: English",
24+
"License :: OSI Approved :: BSD License",
25+
"Programming Language :: Python",
26+
"Programming Language :: Python :: 3",
27+
"Topic :: Scientific/Engineering",
28+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
29+
"Topic :: Scientific/Engineering :: Mathematics",
30+
"Topic :: Software Development :: Libraries",
31+
"Topic :: Software Development :: Libraries :: Python Modules",
32+
]
33+
dependencies = [
34+
"joblib",
35+
"networkx",
36+
"numpy",
37+
"pandas",
38+
"scikit-learn",
39+
"scipy"
40+
]
41+
keywords = [
42+
"machine learning",
43+
"randomized optimization",
44+
"search algorithms",
45+
"neural networks",
46+
"genetic algorithm",
47+
"simulated annealing",
48+
"hill climbing",
49+
"MIMIC",
50+
"Python",
51+
"OMSCS",
52+
"CS",
53+
"7641",
54+
"mlrose-hiive"
55+
]
56+
[project.urls]
57+
"Homepage" = "https://github.com/knakamura13/mlrose-ky"
58+
"Documentation" = "https://nkapila6.github.io/mlrose-ky/"
59+
160
[tool.black]
261
line-length = 140
362
target-version = ['py310', 'py311', 'py312']
4-
skip_magic_trailing_comma = true
63+
skip_magic_trailing_comma = true
64+
65+
[tool.setuptools.packages.find]
66+
where = ["mlrose_ky"]

setup.cfg

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)