rusty-machine 0.3.2

A machine learning library.
Documentation
use rm::linalg::matrix::Matrix;
use rm::learning::UnSupModel;
use rm::learning::k_means::KMeansClassifier;
use rm::learning::k_means::InitAlgorithm;

#[test]
fn test_model_default() {
    let mut model = KMeansClassifier::new(3);
    let inputs = Matrix::new(3, 2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);
    let targets = Matrix::new(3,2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);

    model.train(&inputs);

    let outputs = model.predict(&targets);

    assert_eq!(outputs.size(), 3);
}

#[test]
fn test_model_iter() {
    let mut model = KMeansClassifier::new(3);
    let inputs = Matrix::new(3, 2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);
    let targets = Matrix::new(3,2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);

    model.iters = 1000;
    model.train(&inputs);

    let outputs = model.predict(&targets);

    assert_eq!(outputs.size(), 3);
}

#[test]
fn test_model_forgy() {
    let mut model = KMeansClassifier::new(3);
    let inputs = Matrix::new(3, 2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);
    let targets = Matrix::new(3,2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);

    model.init_algorithm = InitAlgorithm::Forgy;
    model.train(&inputs);

    let outputs = model.predict(&targets);

    assert_eq!(outputs.size(), 3);
}

#[test]
fn test_model_ran_partition() {
    let mut model = KMeansClassifier::new(3);
    let inputs = Matrix::new(3, 2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);
    let targets = Matrix::new(3,2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);

    model.init_algorithm = InitAlgorithm::RandomPartition;
    model.train(&inputs);

    let outputs = model.predict(&targets);

    assert_eq!(outputs.size(), 3);
}

#[test]
fn test_model_kplusplus() {
    let mut model = KMeansClassifier::new(3);
    let inputs = Matrix::new(3, 2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);
    let targets = Matrix::new(3,2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);

    model.init_algorithm = InitAlgorithm::KPlusPlus;
    model.train(&inputs);

    let outputs = model.predict(&targets);

    assert_eq!(outputs.size(), 3);
}

#[test]
#[should_panic]
fn test_no_train_predict() {
    let model = KMeansClassifier::new(3);
    let inputs = Matrix::new(3, 2, vec![1.0, 2.0, 1.0, 3.0, 1.0, 4.0]);

    model.predict(&inputs);

}