Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Datasets

Classic toy datasets for examples, tests, and onboarding. Live in datarust::datasets. Enable with the datasets feature:

[dependencies]
datarust = { version = "*", features = ["datasets"] }

The data is compiled into the binary as const arrays — no file I/O, no network access, no external dependencies. Each loader returns a Dataset struct with features(), targets(), feature_names(), and target_names().

Available datasets

DatasetSamplesFeaturesClassesTask
Iris15043 (50 each)Classification
Breast Cancer569302 (357 / 212)Binary classification
Wine178133Multiclass classification
Diabetes44210—Regression

Usage

#![allow(unused)]
fn main() {
use datarust::datasets;

let iris = datasets::iris::load();

let x = iris.features();           // Matrix 150×4
let y = iris.targets();            // &[f64], values {0, 1, 2}
let names = iris.feature_names();  // &["sepal_length", "sepal_width", ...]
let classes = iris.target_names(); // &["setosa", "versicolor", "virginica"]

assert_eq!(iris.n_samples(), 150);
assert_eq!(iris.n_features(), 4);
assert_eq!(iris.n_classes(), 3);
}

Feed directly into a model:

#![allow(unused)]
fn main() {
use datarust::datasets::iris;
use datarust::linear_model::LogisticRegression;
use datarust::traits::Predictor;

let data = iris::load();
let x = data.features();
let y = data.targets().to_vec();

let mut model = LogisticRegression::new().with_max_iter(200);
model.fit(&x, &y)?;
let accuracy = model.score(&x, &y)?;
println!("Iris accuracy: {:.1}%", accuracy * 100.0);
}

Normalized Diabetes

diabetes::load() returns the raw feature values. Since v0.7, diabetes::load_normalized() returns the layout sklearn’s load_diabetes(scaled=True) produces — each feature centered by its column mean and divided by its population standard deviation (and by sqrt(442)), so the columns have zero mean and unit-ish scale:

#![allow(unused)]
fn main() {
use datarust::datasets::diabetes;

let raw = diabetes::load();               // original units
let scaled = diabetes::load_normalized(); // sklearn scaled=True layout
}

The raw literals were re-precisioned in v0.7 to sklearn’s exact f64 values, so load() output matches sklearn bit-for-bit (previously it could differ at the last-ULP level).

Choosing a dataset

GoalDataset
Quick multiclass classification demoIris — small, fast, well-separated
Binary classification benchmarkBreast Cancer — 30 features, imbalanced
Multiclass with more featuresWine — 13 chemical features
Regression baselineDiabetes — continuous target, 10 features