# TaguchiGridSearchConverter
A Python package for optimizing hyperparameter search using Taguchi array principles. Inspired by [NightHawkInLight's video on Taguchi arrays](https://www.youtube.com/watch?v=5oULEuOoRd0&pp=ygUPdGFndXNoaSBhcnJhYXlz).
## Why use TaguchiGridSearchConverter?
When tuning machine learning models, traditional grid search can require an exponentially large number of experiments. TaguchiGridSearchConverter helps reduce the number of experiments needed while still effectively exploring the parameter space.
Instead of testing every possible combination of parameters (which can be computationally expensive), this package uses Taguchi array principles to:
1. Reduce the number of experiments needed
2. Maintain good coverage of the parameter space
3. Identify significant parameters efficiently
## Getting started
### Installation
* From PyPI:
* Via uv: `uv pip install TaguchiGridSearchConverter`
* Via pip: `pip install TaguchiGridSearchConverter`
* From GitHub:
* Clone this repo then `pip install .`
### Basic Usage
```python
from sklearn.model_selection import ParameterGrid
from TaguchiGridSearchConverter import TaguchiGridSearchConverter
grid_converter = TaguchiGridSearchConverter()
sample_grid = {
'kernel': ['linear', 'rbf', 'poly'],
'C': [0.1, 1, 10],
'gamma': ['scale', 'auto'],
'verbose': [True], # also handles length 1 lists for fixed params
}
full_grid = ParameterGrid(sample_grid)
reduced_grid = grid_converter.fit_transform(sample_grid)
# Alternative way:
# reduced_grid = grid_converter.fit_transform(full_grid)
# Use the reduced grid in your experiments
for params in reduced_grid:
# Your training/evaluation code here
print(params)
```
In the above experiment, the reduced experiments list is only this:
```python
[{'C': 0.1, 'gamma': 'scale', 'kernel': 'linear', 'verbose': True},
{'C': 1, 'gamma': 'auto', 'kernel': 'rbf', 'verbose': True},
{'C': 10, 'gamma': 'scale', 'kernel': 'poly', 'verbose': True}]
```
# The full experiments list would have been that long:
```python
[{'C': 0.1, 'gamma': 'scale', 'kernel': 'linear', 'verbose': True},
{'C': 0.1, 'gamma': 'scale', 'kernel': 'rbf', 'verbose': True},
{'C': 0.1, 'gamma': 'scale', 'kernel': 'poly', 'verbose': True},
{'C': 0.1, 'gamma': 'auto', 'kernel': 'linear', 'verbose': True},
{'C': 0.1, 'gamma': 'auto', 'kernel': 'rbf', 'verbose': True},
{'C': 0.1, 'gamma': 'auto', 'kernel': 'poly', 'verbose': True},
{'C': 1, 'gamma': 'scale', 'kernel': 'linear', 'verbose': True},
{'C': 1, 'gamma': 'scale', 'kernel': 'rbf', 'verbose': True},
{'C': 1, 'gamma': 'scale', 'kernel': 'poly', 'verbose': True},
{'C': 1, 'gamma': 'auto', 'kernel': 'linear', 'verbose': True},
{'C': 1, 'gamma': 'auto', 'kernel': 'rbf', 'verbose': True},
{'C': 1, 'gamma': 'auto', 'kernel': 'poly', 'verbose': True},
{'C': 10, 'gamma': 'scale', 'kernel': 'linear', 'verbose': True},
{'C': 10, 'gamma': 'scale', 'kernel': 'rbf', 'verbose': True},
{'C': 10, 'gamma': 'scale', 'kernel': 'poly', 'verbose': True},
{'C': 10, 'gamma': 'auto', 'kernel': 'linear', 'verbose': True},
{'C': 10, 'gamma': 'auto', 'kernel': 'rbf', 'verbose': True},
{'C': 10, 'gamma': 'auto', 'kernel': 'poly', 'verbose': True}]
```
So only 3 experiments instead of 18!
## How it works
The converter takes a parameter grid (similar to scikit-learn's ParameterGrid) and:
1. Determines the number of levels for each parameter
2. Calculates the minimum number of experiments needed
3. Creates a reduced set of parameter combinations using modulo cycling
4. Ensures the reduced set is smaller than the full grid
This approach is particularly useful when:
- You have limited computational resources
- You need quick insights into parameter importance
- You want to reduce experiment time without sacrificing too much accuracy
Raw data
{
"_id": null,
"home_page": "https://github.com/thiswillbeyourgithub/TaguchiGridSearchConverter.git",
"name": "TaguchiGridSearchConverter",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "taguchi, grid-search, hyperparameter-optimization, machine-learning, experiment-design, parameter-tuning",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/fa/6e/048e3e01f0041d605159c6ad293655ea8dce16878630b0adff0dec7376e7/taguchigridsearchconverter-0.2.3.tar.gz",
"platform": null,
"description": "\n# TaguchiGridSearchConverter\n\nA Python package for optimizing hyperparameter search using Taguchi array principles. Inspired by [NightHawkInLight's video on Taguchi arrays](https://www.youtube.com/watch?v=5oULEuOoRd0&pp=ygUPdGFndXNoaSBhcnJhYXlz).\n\n## Why use TaguchiGridSearchConverter?\n\nWhen tuning machine learning models, traditional grid search can require an exponentially large number of experiments. TaguchiGridSearchConverter helps reduce the number of experiments needed while still effectively exploring the parameter space.\n\nInstead of testing every possible combination of parameters (which can be computationally expensive), this package uses Taguchi array principles to:\n1. Reduce the number of experiments needed\n2. Maintain good coverage of the parameter space\n3. Identify significant parameters efficiently\n\n## Getting started\n\n### Installation\n\n* From PyPI:\n * Via uv: `uv pip install TaguchiGridSearchConverter`\n * Via pip: `pip install TaguchiGridSearchConverter`\n* From GitHub:\n * Clone this repo then `pip install .`\n\n### Basic Usage\n\n```python\nfrom sklearn.model_selection import ParameterGrid\nfrom TaguchiGridSearchConverter import TaguchiGridSearchConverter\n\ngrid_converter = TaguchiGridSearchConverter()\n\nsample_grid = {\n 'kernel': ['linear', 'rbf', 'poly'],\n 'C': [0.1, 1, 10],\n 'gamma': ['scale', 'auto'],\n 'verbose': [True], # also handles length 1 lists for fixed params\n}\n\nfull_grid = ParameterGrid(sample_grid)\n\nreduced_grid = grid_converter.fit_transform(sample_grid)\n# Alternative way:\n# reduced_grid = grid_converter.fit_transform(full_grid)\n\n# Use the reduced grid in your experiments\nfor params in reduced_grid:\n # Your training/evaluation code here\n print(params)\n```\n\nIn the above experiment, the reduced experiments list is only this:\n```python\n[{'C': 0.1, 'gamma': 'scale', 'kernel': 'linear', 'verbose': True},\n {'C': 1, 'gamma': 'auto', 'kernel': 'rbf', 'verbose': True},\n {'C': 10, 'gamma': 'scale', 'kernel': 'poly', 'verbose': True}]\n```\n\n# The full experiments list would have been that long:\n```python\n[{'C': 0.1, 'gamma': 'scale', 'kernel': 'linear', 'verbose': True},\n {'C': 0.1, 'gamma': 'scale', 'kernel': 'rbf', 'verbose': True},\n {'C': 0.1, 'gamma': 'scale', 'kernel': 'poly', 'verbose': True},\n {'C': 0.1, 'gamma': 'auto', 'kernel': 'linear', 'verbose': True},\n {'C': 0.1, 'gamma': 'auto', 'kernel': 'rbf', 'verbose': True},\n {'C': 0.1, 'gamma': 'auto', 'kernel': 'poly', 'verbose': True},\n {'C': 1, 'gamma': 'scale', 'kernel': 'linear', 'verbose': True},\n {'C': 1, 'gamma': 'scale', 'kernel': 'rbf', 'verbose': True},\n {'C': 1, 'gamma': 'scale', 'kernel': 'poly', 'verbose': True},\n {'C': 1, 'gamma': 'auto', 'kernel': 'linear', 'verbose': True},\n {'C': 1, 'gamma': 'auto', 'kernel': 'rbf', 'verbose': True},\n {'C': 1, 'gamma': 'auto', 'kernel': 'poly', 'verbose': True},\n {'C': 10, 'gamma': 'scale', 'kernel': 'linear', 'verbose': True},\n {'C': 10, 'gamma': 'scale', 'kernel': 'rbf', 'verbose': True},\n {'C': 10, 'gamma': 'scale', 'kernel': 'poly', 'verbose': True},\n {'C': 10, 'gamma': 'auto', 'kernel': 'linear', 'verbose': True},\n {'C': 10, 'gamma': 'auto', 'kernel': 'rbf', 'verbose': True},\n {'C': 10, 'gamma': 'auto', 'kernel': 'poly', 'verbose': True}]\n```\n\nSo only 3 experiments instead of 18!\n\n\n## How it works\n\nThe converter takes a parameter grid (similar to scikit-learn's ParameterGrid) and:\n1. Determines the number of levels for each parameter\n2. Calculates the minimum number of experiments needed\n3. Creates a reduced set of parameter combinations using modulo cycling\n4. Ensures the reduced set is smaller than the full grid\n\nThis approach is particularly useful when:\n- You have limited computational resources\n- You need quick insights into parameter importance\n- You want to reduce experiment time without sacrificing too much accuracy\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "Optimize hyperparameter search using Taguchi array principles",
"version": "0.2.3",
"project_urls": {
"Homepage": "https://github.com/thiswillbeyourgithub/TaguchiGridSearchConverter.git"
},
"split_keywords": [
"taguchi",
" grid-search",
" hyperparameter-optimization",
" machine-learning",
" experiment-design",
" parameter-tuning"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a9c2ccbd1e67278f92a155088272dd6401a10f7ed70e2f0a84c6c18d65710aa6",
"md5": "e933ebe965ee8089fa4301d63c32f2c4",
"sha256": "54f2812a8c296105d0b0452e0a4db8aa31509afd55ceb82ab4da0decf3298419"
},
"downloads": -1,
"filename": "TaguchiGridSearchConverter-0.2.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e933ebe965ee8089fa4301d63c32f2c4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 17106,
"upload_time": "2025-01-11T17:06:28",
"upload_time_iso_8601": "2025-01-11T17:06:28.239642Z",
"url": "https://files.pythonhosted.org/packages/a9/c2/ccbd1e67278f92a155088272dd6401a10f7ed70e2f0a84c6c18d65710aa6/TaguchiGridSearchConverter-0.2.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fa6e048e3e01f0041d605159c6ad293655ea8dce16878630b0adff0dec7376e7",
"md5": "e2f6ccd8149dd9db36e081083c0f743a",
"sha256": "767a00839b68a92c902d52489b0d8bab0ab1d5c2f0d0bf297a4c7097b1d3193e"
},
"downloads": -1,
"filename": "taguchigridsearchconverter-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "e2f6ccd8149dd9db36e081083c0f743a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 16440,
"upload_time": "2025-01-11T17:06:31",
"upload_time_iso_8601": "2025-01-11T17:06:31.570668Z",
"url": "https://files.pythonhosted.org/packages/fa/6e/048e3e01f0041d605159c6ad293655ea8dce16878630b0adff0dec7376e7/taguchigridsearchconverter-0.2.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-11 17:06:31",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "thiswillbeyourgithub",
"github_project": "TaguchiGridSearchConverter",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "taguchigridsearchconverter"
}