Written and maintained byCASRAI Editorial Board
- <a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fcasrai.org%2Fguides%2Fuci-machine-learning-repository&text=UCI%20Machine%20Learning%20Repository%3A%20What%20It%20Is%2C%20How%20to%20Search%20and%20Cite%20It&via=YourCASRAI” rel=”nofollow noopener” target=”_blank”>X
The UCI Machine Learning Repository is a public archive of datasets for machine learning, hosted at archive.ics.uci.edu by the University of California, Irvine. Researchers use it to find benchmark datasets, filter them by task and size, import them into Python, and cite them. This guide covers what the archive is, how to search it, and what a reproducible workflow adds on top of a download: citing the repository and the individual dataset correctly, checking each dataset’s licence, and recording provenance. Facts below were read from the repository’s own pages and its Python package documentation on 2026-11-07.
What the UCI Machine Learning Repository is
It is a collection of datasets that researchers and students use for empirical work with learning algorithms. Each dataset has its own page with a description, variable information and a Cite button. The repository’s About page says the archive was created as an ftp archive in 1987 by UCI PhD student David Aha. It is a dataset catalogue, not a journal, a preprint server or a general-purpose research data repository.
Who runs it and what it covers
The repository is run from the University of California, Irvine, and its About page names the current librarians. It accepts donated datasets (a Donate a Dataset route) and can link to datasets hosted elsewhere (a Link an external Dataset route). On 2026-11-07 the Datasets page showed a count of 690 datasets; treat that as a snapshot, since the catalogue changes.
The Datasets page lets you narrow the list by these filters:
- Task: Classification, Regression, Clustering
- Data Type: Tabular, Multivariate, Sequential, Time-Series
- Keywords, Attributes, Subject Area, number of instances, number of features, feature type, and a Python filter
The UCI KDD Archive at kdd.ics.uci.edu is a separate site from the main repository; do not confuse the two when citing.
How to search and use it
- Open the Datasets page on archive.ics.uci.edu.
- Choose a Task (Classification, Regression or Clustering) and a Data Type that match your method.
- Narrow by Subject Area, # Instances and # Features to fit your compute and question.
- Sort by # Views (the default), Name, # Instances, # Features, Date Donated or Relevance. Use Expand All or Collapse All and change Rows per page (5 to 25) as needed.
- Open a dataset page and read the description and variable information before downloading.
- Download the files from the dataset page, or import from Python with the official
ucimlrepopackage (see below). - Use the dataset’s Cite button to get its citation.
How to download a dataset from Python
The repository’s GitHub organisation publishes ucimlrepo. Install it with pip install -U ucimlrepo, then call fetch_ucirepo(id=45) or fetch_ucirepo(name='Heart Disease'). The function accepts an id or a name, not both. It returns an object with three parts:
- data: ids, features, targets, original and headers, as pandas DataFrames
- metadata: fields such as uci_id, num_instances and additional_info
- variables: each variable’s name, role, type, demographic, description, units and missing values
Citing and documenting what you use
Most top results explain how to find and load data; fewer explain what to record so another researcher can reproduce your work.
- Cite the dataset, not just the archive. The repository’s Citation page says to use the Cite button on each dataset page for a particular dataset. For the repository itself it gives: Markelle Kelly, Rachel Longjohn, Kolby Nottingham, The UCI Machine Learning Repository, https://archive.ics.uci.edu.
- Check the licence on the dataset page. The Datasets page and About page do not state a single licence for the whole archive, so read the terms on each dataset you reuse. See repository citation for the general concept.
- Keep the provenance record. Save the dataset id, the metadata and variables returned by
fetch_ucirepo, and the date you retrieved it, alongside your code. Thevariablestable (role, type, missing values) documents which column was the target and how missing values were flagged. - Read the donor documentation. Variable information on the dataset page is written by the donor, so use it to confirm how features were collected before treating them as ground truth.
These practices line up with the FAIR data principles on findability and reuse, and with the idea of a data repository as the place where documentation travels with data.
Strengths and limits
Strengths
- Filters by task, data type, size and subject area make it quick to find a dataset of suitable shape.
- Per-dataset pages with a Cite button and a maintained Python package support citation and scripted import.
- Long-standing, widely used datasets (for example Iris) make results comparable with earlier work.
Limits
- The task and data-type vocabulary on the Datasets page is tabular- and classic-ML-oriented; check the filters against your problem before assuming coverage.
- Because many papers reuse the same well-known datasets, results on them say less about generalisation than results on new data. This is an editorial point, not a repository claim.
- Licences and documentation quality vary by dataset, so each needs its own check.
Alternatives
| Option | How it relates |
|---|---|
| UCI KDD Archive (kdd.ics.uci.edu) | A separate UCI-hosted site that appears alongside the main repository in search results; cite it separately. |
| Hugging Face Datasets | A different platform; see the CASRAI guide to Hugging Face Datasets. |
| Kaggle | A separate platform that often turns up in searches next to UCI; read the licence and source on each Kaggle dataset page, since a copy there may not match the original. |
For benchmarks tied to published results, see Papers with Code; for working in R, see machine learning in R.
Frequently asked questions
How do I download a dataset from the UCI Machine Learning Repository?
Open the dataset’s page on archive.ics.uci.edu and download the files, or in Python run pip install -U ucimlrepo and call fetch_ucirepo with the dataset id or name.
How do I cite a UCI dataset?
Use the Cite button on that dataset’s page. To cite the repository itself, the Citation page gives Kelly, Longjohn and Nottingham, The UCI Machine Learning Repository, https://archive.ics.uci.edu.
Is the UCI Machine Learning Repository on GitHub?
The repository’s Python package, ucimlrepo, is published on GitHub under the uci-ml-repo organisation. The datasets themselves are served from archive.ics.uci.edu.
Where is the Iris dataset, or datasets like Student Performance?
Use the Datasets page search and filters to find them by name, then check each dataset page for its description, variables and licence.
Is it the same as Kaggle?
No. They are separate platforms; some datasets appear on both, so cite the
Sources
- UCI Machine Learning Repository, About: https://archive.ics.uci.edu/about (read 2026-11-07)
- UCI Machine Learning Repository, Datasets: https://archive.ics.uci.edu/datasets (read 2026-11-07)
- UCI Machine Learning Repository, Citation: https://archive.ics.uci.edu/citation (read 2026-11-07)
- ucimlrepo package documentation: https://github.com/uci-ml-repo/ucimlrepo (read 2026-11-07)
Research-administration guidance, standards updates and independent tool reviews.