feat: adds train/test split function; fixes bug in random forest
This commit is contained in:
@@ -76,6 +76,15 @@ pub trait BaseVector<T: RealNumber>: Clone + Debug {
|
||||
|
||||
/// Return a vector with the elements of the one-dimensional array.
|
||||
fn to_vec(&self) -> Vec<T>;
|
||||
|
||||
/// Create new vector with zeros of size `len`.
|
||||
fn zeros(len: usize) -> Self;
|
||||
|
||||
/// Create new vector with ones of size `len`.
|
||||
fn ones(len: usize) -> Self;
|
||||
|
||||
/// Create new vector of size `len` where each element is set to `value`.
|
||||
fn fill(len: usize, value: T) -> Self;
|
||||
}
|
||||
|
||||
/// Generic matrix type.
|
||||
|
||||
@@ -32,6 +32,18 @@ impl<T: RealNumber> BaseVector<T> for Vec<T> {
|
||||
let v = self.clone();
|
||||
v
|
||||
}
|
||||
|
||||
fn zeros(len: usize) -> Self {
|
||||
vec![T::zero(); len]
|
||||
}
|
||||
|
||||
fn ones(len: usize) -> Self {
|
||||
vec![T::one(); len]
|
||||
}
|
||||
|
||||
fn fill(len: usize, value: T) -> Self {
|
||||
vec![value; len]
|
||||
}
|
||||
}
|
||||
|
||||
/// Column-major, dense matrix. See [Simple Dense Matrix](../index.html).
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
use std::iter::Sum;
|
||||
use std::ops::{AddAssign, DivAssign, MulAssign, Range, SubAssign};
|
||||
|
||||
use nalgebra::{DMatrix, Dynamic, Matrix, MatrixMN, Scalar, VecStorage, U1};
|
||||
use nalgebra::{DMatrix, Dynamic, Matrix, MatrixMN, RowDVector, Scalar, VecStorage, U1};
|
||||
|
||||
use crate::linalg::evd::EVDDecomposableMatrix;
|
||||
use crate::linalg::lu::LUDecomposableMatrix;
|
||||
@@ -65,6 +65,20 @@ impl<T: RealNumber + 'static> BaseVector<T> for MatrixMN<T, U1, Dynamic> {
|
||||
fn to_vec(&self) -> Vec<T> {
|
||||
self.row(0).iter().map(|v| *v).collect()
|
||||
}
|
||||
|
||||
fn zeros(len: usize) -> Self {
|
||||
RowDVector::zeros(len)
|
||||
}
|
||||
|
||||
fn ones(len: usize) -> Self {
|
||||
BaseVector::fill(len, T::one())
|
||||
}
|
||||
|
||||
fn fill(len: usize, value: T) -> Self {
|
||||
let mut m = RowDVector::zeros(len);
|
||||
m.fill(value);
|
||||
m
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: RealNumber + Scalar + AddAssign + SubAssign + MulAssign + DivAssign + Sum + 'static>
|
||||
@@ -446,6 +460,16 @@ mod tests {
|
||||
assert_eq!(vec![1., 2., 3.], v.to_vec());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vec_init() {
|
||||
let zeros: RowDVector<f32> = BaseVector::zeros(3);
|
||||
let ones: RowDVector<f32> = BaseVector::ones(3);
|
||||
let twos: RowDVector<f32> = BaseVector::fill(3, 2.);
|
||||
assert_eq!(zeros, RowDVector::from_vec(vec![0., 0., 0.]));
|
||||
assert_eq!(ones, RowDVector::from_vec(vec![1., 1., 1.]));
|
||||
assert_eq!(twos, RowDVector::from_vec(vec![2., 2., 2.]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn get_set_dynamic() {
|
||||
let mut m = DMatrix::from_row_slice(2, 3, &[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]);
|
||||
|
||||
@@ -72,6 +72,18 @@ impl<T: RealNumber> BaseVector<T> for ArrayBase<OwnedRepr<T>, Ix1> {
|
||||
fn to_vec(&self) -> Vec<T> {
|
||||
self.to_owned().to_vec()
|
||||
}
|
||||
|
||||
fn zeros(len: usize) -> Self {
|
||||
Array::zeros(len)
|
||||
}
|
||||
|
||||
fn ones(len: usize) -> Self {
|
||||
Array::ones(len)
|
||||
}
|
||||
|
||||
fn fill(len: usize, value: T) -> Self {
|
||||
Array::from_elem(len, value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: RealNumber + ScalarOperand + AddAssign + SubAssign + MulAssign + DivAssign + Sum>
|
||||
|
||||
Reference in New Issue
Block a user