use linfa::prelude::*;
use linfa_datasets::generate;
use linfa_reduction::Pca;
use ndarray::array;
use ndarray_npy::write_npy;
use rand::{rngs::SmallRng, SeedableRng};
fn main() {
let mut rng = SmallRng::seed_from_u64(42);
let expected_centroids = array![[10., 10.], [1., 12.], [20., 30.], [-20., 30.],];
let n = 10;
let dataset = Dataset::from(generate::blobs(n, &expected_centroids, &mut rng));
let embedding: Pca<f64> = Pca::params(1).fit(&dataset).unwrap();
let embedding = embedding.predict(&dataset);
dbg!(&embedding);
write_npy("pca_dataset.npy", &dataset.records().view()).expect("Failed to write .npy file");
write_npy("pca_embedding.npy", &embedding).expect("Failed to write .npy file");
}