This is an educational repository for learning about ART algorithms, mainly through writing up a basic FuzzyART module and testing how it works on the Iris dataset.
First, get a good Python setup going.
I highly recommend using a virtual environment manager, such as mamba.
For example, download the miniforge distribution for your OS.
Next, create a virtual environment like so:
mamba create -n audeyart python=3.12Activate that environment with
mamba activate audeyartand install the python dependencies once you're inside that environment with
pip install -r requirements.txtNote
Read through the Requirements Description to get an understanding of what each dependency is used for and get links to their respective documentations.
This section outlines the location and meaning of the files in this repo:
data/iris/: a download of the Iris flower dataset from UCI machine learning data repository.bezdekIris.data: a version of the data that presumably Jim Bezdek.Index: some timestamps of versions of the dataset.iris.data: the dataset itself as a comma-separated values (CSV) file.iris.names: citations and descriptions of the elements of the dataset.
- notebooks
audeyart.ipynb: an IPython notebook (a.k.a. jupyter notebook) containing the main pedagogical material. This includes:audeyart-original.ipynb: the original notebook used as an exercise for implementing FuzzyART (without added documentation).supervised.ipynb: an implementation of a simple FuzzyARTMAP (i.e., a simple supervised variant of FuzzyART).
.flake8: some custom Python Flake8 linting preferences, such as the config to makeflake8stop yelling if lines are longer than a meager 80 characters..gitignore: a file with patterns that are ignored by git tracking.LICENSE: a text file containing the MIT license for the repo, indicating that this software is free for anyone to use in anyway with no liability attributable to the authors. This is a common license for open-source software that allows other people to use and even profit from your work without being able to blame you when they break stuff.README.md: this file. Readme's are the most common top-level description of software repositories, and they are the best first place to describe your work to someone who would actually use it.requirements.txt: the pip requirements file containing all of the Python dependencies for the project.
The pip requirements under the requirements.txt file are listed below.
For convenience, the documentation for each is linked.
torch: this is the pip name for PyTorch, one of the biggest libraries for working with tensor data and subsequently neural networks.torchvision: PyTorch's separate library for handling vision dataset pipelines, transformations, etc. This wasn't used in the written example, but it is included because almost everything else we will write includes its functionality when working with bigger datasets.jupyterlab: an all-in-one dependency for installing an IPython kernel and the notebook environment.matplotlib: the most comprehensive plotting library in Python.pandas: provides theDataFramedatatype for Python and all of the utilities therein to load, parse, and handle tabular data.scikit-learn: the traditional machine learning toolset for Python. Most of the de facto machine learning techniques that aren't deep learning are already implemented here.