pub struct MaximumEntropyMarkovModel<S = Untrained> { /* private fields */ }Expand description
Maximum Entropy Markov Model (MEMM) for Sequence Labeling
MEMM is a discriminative model for sequence labeling that combines the advantages of maximum entropy models with Markov assumptions. Unlike CRF, MEMM models the conditional probability of each label given the previous label and observed features.
The model uses logistic regression at each position to predict the next label based on features extracted from the current observation and previous label.
§Examples
use sklears_multioutput::MaximumEntropyMarkovModel;
use sklears_core::traits::{Predict, Fit};
// Use SciRS2-Core for arrays and random number generation (SciRS2 Policy)
use scirs2_core::ndarray::array;
// Sequence data: each row is a sequence element with features
let X = vec![
array![[1.0, 2.0], [2.0, 3.0], [3.0, 1.0]], // sequence 1
array![[4.0, 1.0], [1.0, 4.0]] // sequence 2
];
// Label sequences
let y = vec![
vec![0, 1, 0], // labels for sequence 1
vec![1, 0] // labels for sequence 2
];
let memm = MaximumEntropyMarkovModel::new()
.max_iter(50)
.learning_rate(0.01);
let trained_memm = memm.fit(&X, &y).unwrap();
let predictions = trained_memm.predict(&X).unwrap();Implementations§
Source§impl MaximumEntropyMarkovModel<Untrained>
impl MaximumEntropyMarkovModel<Untrained>
Sourcepub fn learning_rate(self, learning_rate: Float) -> Self
pub fn learning_rate(self, learning_rate: Float) -> Self
Set learning rate
Sourcepub fn l2_regularization(self, l2_reg: Float) -> Self
pub fn l2_regularization(self, l2_reg: Float) -> Self
Set L2 regularization strength
Sourcepub fn random_state(self, random_state: u64) -> Self
pub fn random_state(self, random_state: u64) -> Self
Set random state for reproducible results
Trait Implementations§
Source§impl<S: Clone> Clone for MaximumEntropyMarkovModel<S>
impl<S: Clone> Clone for MaximumEntropyMarkovModel<S>
Source§fn clone(&self) -> MaximumEntropyMarkovModel<S>
fn clone(&self) -> MaximumEntropyMarkovModel<S>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<S: Debug> Debug for MaximumEntropyMarkovModel<S>
impl<S: Debug> Debug for MaximumEntropyMarkovModel<S>
Source§impl Default for MaximumEntropyMarkovModel<Untrained>
impl Default for MaximumEntropyMarkovModel<Untrained>
Source§impl Estimator for MaximumEntropyMarkovModel<Untrained>
impl Estimator for MaximumEntropyMarkovModel<Untrained>
Source§type Error = SklearsError
type Error = SklearsError
Error type for the estimator
Source§fn validate_config(&self) -> Result<(), SklearsError>
fn validate_config(&self) -> Result<(), SklearsError>
Validate estimator configuration with detailed error context
Source§fn check_compatibility(
&self,
n_samples: usize,
n_features: usize,
) -> Result<(), SklearsError>
fn check_compatibility( &self, n_samples: usize, n_features: usize, ) -> Result<(), SklearsError>
Check if estimator is compatible with given data dimensions
Source§fn metadata(&self) -> EstimatorMetadata
fn metadata(&self) -> EstimatorMetadata
Get estimator metadata
Source§impl Fit<Vec<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, Vec<Vec<i32>>> for MaximumEntropyMarkovModel<Untrained>
impl Fit<Vec<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, Vec<Vec<i32>>> for MaximumEntropyMarkovModel<Untrained>
Source§type Fitted = MaximumEntropyMarkovModel<MaximumEntropyMarkovModelTrained>
type Fitted = MaximumEntropyMarkovModel<MaximumEntropyMarkovModelTrained>
The fitted model type
Source§fn fit(
self,
X: &Vec<Array2<Float>>,
y: &Vec<Vec<i32>>,
) -> SklResult<Self::Fitted>
fn fit( self, X: &Vec<Array2<Float>>, y: &Vec<Vec<i32>>, ) -> SklResult<Self::Fitted>
Fit the model to the provided data with validation
Source§fn fit_with_validation(
self,
x: &X,
y: &Y,
_x_val: Option<&X>,
_y_val: Option<&Y>,
) -> Result<(Self::Fitted, FitMetrics), SklearsError>where
Self: Sized,
fn fit_with_validation(
self,
x: &X,
y: &Y,
_x_val: Option<&X>,
_y_val: Option<&Y>,
) -> Result<(Self::Fitted, FitMetrics), SklearsError>where
Self: Sized,
Fit with custom validation and early stopping
Auto Trait Implementations§
impl<S> Freeze for MaximumEntropyMarkovModel<S>where
S: Freeze,
impl<S> RefUnwindSafe for MaximumEntropyMarkovModel<S>where
S: RefUnwindSafe,
impl<S> Send for MaximumEntropyMarkovModel<S>where
S: Send,
impl<S> Sync for MaximumEntropyMarkovModel<S>where
S: Sync,
impl<S> Unpin for MaximumEntropyMarkovModel<S>where
S: Unpin,
impl<S> UnwindSafe for MaximumEntropyMarkovModel<S>where
S: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> StableApi for Twhere
T: Estimator,
impl<T> StableApi for Twhere
T: Estimator,
Source§const STABLE_SINCE: &'static str = "0.1.0"
const STABLE_SINCE: &'static str = "0.1.0"
API version this type was stabilized in
Source§const HAS_EXPERIMENTAL_FEATURES: bool = false
const HAS_EXPERIMENTAL_FEATURES: bool = false
Whether this API has any experimental features