Skip to main content

Crate dataset_ml

Crate dataset_ml 

Source
Expand description

Built-in dataset implementations for machine learning.

dataset-ml provides ready-to-use loaders for classic ML datasets, built on top of dataset_core::Dataset. Each module is a worked example that shows how to wrap Dataset<T, E> for one data source. The steps are the same each time:

  1. Download from a URL.
  2. Verify a SHA-256 hash.
  3. Parse CSV records, or extract raw documents from an archive.
  4. Expose typed accessors backed by ndarray.

§Datasets

ModuleSamplesFeaturesTask Type
abalone4,1778Regression
adult32,56114Classification
bank_marketing45,21116Classification
banknote_authentication1,3724Classification
iris1504Classification
breast_cancer56930Classification
boston_housing50613Regression
california_housing20,6408Regression
car_evaluation1,7286Classification
covtype581,01254Classification
diabetes44210Regression
digits1,79764Classification
heart_disease30313Classification
ionosphere35134Classification
kddcup99494,021 / 4,898,43141Classification
letter_recognition20,00016Classification (26 classes)
linnerud203Regression (multi-output)
mushroom8,12422Classification
spambase4,60157Classification
titanic89111Classification
palmer_penguins3447Classification
sms_spam5,574textClassification
wine_recognition17813Classification
wine_quality::red_wine_quality1,59911Regression
wine_quality::white_wine_quality4,89811Regression
youtube_spam1,956textClassification
sentiment_sentences3,000textClassification
newsgroups2011,314 / 18,846textClassification
movie_review_polarity2,000textClassification

§Example

use dataset_ml::iris::Iris;

let iris = Iris::new("./data");
let (features, labels) = iris.data().unwrap();
assert_eq!(features.shape(), &[150, 4]);

All loaders are lazy: the first call downloads and parses the file, every subsequent call returns a cached reference. See the individual module docs for features, target, sample count, and source.

§Beyond the loaders

Two modules apply to every dataset here rather than to one of them:

  • preprocessing: seeded train/test and k-fold splits (plain or class-stratified), feature scaling, one-hot encoding, and label encoding. You can feed the arrays a loader returns straight to a model, without writing that glue code by hand.
  • traits: the MlDataset trait every loader implements. It lets you write code generically over “some dataset”: cache inspection and invalidation, plus a uniform n_samples().
use dataset_ml::preprocessing::{stratified_split, standardize};
use dataset_ml::traits::MlDataset;
use dataset_ml::Iris;
use ndarray::Axis;

let iris = Iris::new("./data");
let (features, labels) = iris.data().unwrap();

// Split with each species proportionally represented on both sides.
let (train, test) = stratified_split(labels.as_slice().unwrap(), 0.2, 42).unwrap();
let (scaled_train, scaler) = standardize(&features.select(Axis(0), &train)).unwrap();

assert_eq!(scaled_train.nrows(), 120);
assert_eq!(iris.n_samples().unwrap(), 150); // from the `MlDataset` trait

Re-exports§

pub use abalone::Abalone;
pub use adult::Adult;
pub use bank_marketing::BankMarketing;
pub use banknote_authentication::BanknoteAuthentication;
pub use boston_housing::BostonHousing;
pub use breast_cancer::BreastCancer;
pub use california_housing::CaliforniaHousing;
pub use car_evaluation::CarEvaluation;
pub use covtype::Covtype;
pub use diabetes::Diabetes;
pub use digits::Digits;
pub use heart_disease::HeartDisease;
pub use ionosphere::Ionosphere;
pub use iris::Iris;
pub use kddcup99::Kddcup99;
pub use letter_recognition::LetterRecognition;
pub use linnerud::Linnerud;
pub use movie_review_polarity::MovieReviewPolarity;
pub use mushroom::Mushroom;
pub use newsgroups20::Newsgroups20;
pub use palmer_penguins::PalmerPenguins;
pub use sentiment_sentences::SentimentSentences;
pub use sms_spam::SmsSpam;
pub use spambase::Spambase;
pub use titanic::Titanic;
pub use traits::MlDataset;
pub use traits::NumSamples;
pub use wine_quality::red_wine_quality::RedWineQuality;
pub use wine_quality::white_wine_quality::WhiteWineQuality;
pub use wine_recognition::WineRecognition;
pub use youtube_spam::YoutubeSpam;

Modules§

abalone
Abalone dataset module.
adult
Adult / Census Income dataset module.
bank_marketing
Bank Marketing dataset module.
banknote_authentication
Banknote Authentication dataset module.
boston_housing
Boston Housing dataset module.
breast_cancer
Breast Cancer Wisconsin (Diagnostic) dataset module.
california_housing
California Housing dataset module.
car_evaluation
Car Evaluation dataset module.
covtype
Forest Cover Type dataset module.
diabetes
Diabetes dataset module.
digits
Optical Recognition of Handwritten Digits dataset module.
heart_disease
Heart Disease (Cleveland) dataset module.
ionosphere
Ionosphere dataset module.
iris
Iris flower dataset module.
kddcup99
KDD Cup 1999 network-intrusion dataset module.
letter_recognition
Letter Recognition dataset module.
linnerud
Linnerud dataset module.
movie_review_polarity
Movie Review Polarity dataset module.
mushroom
Mushroom dataset module.
newsgroups20
20 Newsgroups dataset module.
palmer_penguins
Palmer Penguins dataset module.
preprocessing
Preprocessing helpers.
sentiment_sentences
Sentiment Labelled Sentences dataset module.
sms_spam
SMS Spam Collection dataset module.
spambase
Spambase dataset module.
titanic
Titanic dataset module.
traits
The traits::MlDataset trait implemented by every loader in this crate.
wine_quality
Wine Quality dataset module.
wine_recognition
Wine Recognition dataset module.
youtube_spam
YouTube Spam Collection dataset module.

Constants§

DOWNLOAD_RETRIES
How many extra download attempts every loader in this crate makes before it stops retrying.