use crate::{f32s, f64s, sparse::SparseMatrix};
use simd_aligned::{MatrixD, Rows};
#[derive(Clone, Debug)]
#[doc(hidden)]
pub(crate) struct Class<M32> {
pub(crate) label: i32,
pub(crate) num_support_vectors: usize,
pub(crate) coefficients: MatrixD<f64s, Rows>,
pub(crate) support_vectors: M32,
}
impl Class<MatrixD<f32s, Rows>> {
pub fn with_parameters(classes: usize, support_vectors: usize, attributes: usize, label: i32) -> Self {
Self {
label,
num_support_vectors: support_vectors,
coefficients: MatrixD::with_dimension(classes - 1, support_vectors),
support_vectors: MatrixD::with_dimension(support_vectors, attributes),
}
}
}
impl Class<SparseMatrix<f32>> {
pub fn with_parameters(classes: usize, support_vectors: usize, _attributes: usize, label: i32) -> Self {
Self {
label,
num_support_vectors: support_vectors,
coefficients: MatrixD::with_dimension(classes - 1, support_vectors),
support_vectors: SparseMatrix::with(support_vectors),
}
}
}