use crate::dataset::deserialize_data;
use crate::dataset::Dataset;
pub fn load_dataset() -> Dataset<f32, u32> {
let (x, y, num_samples, num_features) =
match deserialize_data(std::include_bytes!("breast_cancer.xy")) {
Err(why) => panic!("Can't deserialize breast_cancer.xy. {why}"),
Ok((x, y, num_samples, num_features)) => (
x,
y.into_iter().map(|x| x as u32).collect(),
num_samples,
num_features,
),
};
Dataset {
data: x,
target: y,
num_samples,
num_features,
feature_names: vec![
"mean radius", "mean texture", "mean perimeter", "mean area",
"mean smoothness", "mean compactness", "mean concavity",
"mean concave points", "mean symmetry", "mean fractal dimension",
"radius error", "texture error", "perimeter error", "area error",
"smoothness error", "compactness error", "concavity error",
"concave points error", "symmetry error",
"fractal dimension error", "worst radius", "worst texture",
"worst perimeter", "worst area", "worst smoothness",
"worst compactness", "worst concavity", "worst concave points",
"worst symmetry", "worst fractal dimension",
]
.iter()
.map(|s| s.to_string())
.collect(),
target_names: vec!["malignant or benign [0, 1]".to_string()],
description: "Breast Cancer Wisconsin (Diagnostic) Data Set: https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29"
.to_string(),
}
}
#[cfg(test)]
mod tests {
use super::*;
#[cfg_attr(
all(target_arch = "wasm32", not(target_os = "wasi")),
wasm_bindgen_test::wasm_bindgen_test
)]
#[test]
fn cancer_dataset() {
let dataset = load_dataset();
assert_eq!(
dataset.data.len(),
dataset.num_features * dataset.num_samples
);
assert_eq!(dataset.target.len(), dataset.num_samples);
assert_eq!(dataset.num_features, 30);
assert_eq!(dataset.num_samples, 569);
}
}