@@ -296,7 +296,7 @@ impl<F: Float + Lapack + Scalar> GaussianMixtureModel<F> {
296
296
let n_samples = observations. nrows ( ) ;
297
297
let ( weights, means, covariances) = Self :: estimate_gaussian_parameters (
298
298
& observations,
299
- & log_resp. mapv ( |v| v . exp ( ) ) ,
299
+ & log_resp. mapv ( |v| Scalar :: exp ( v ) ) ,
300
300
& self . covar_type ,
301
301
reg_covar,
302
302
) ?;
@@ -325,9 +325,9 @@ impl<F: Float + Lapack + Scalar> GaussianMixtureModel<F> {
325
325
) -> ( Array1 < F > , Array2 < F > ) {
326
326
let weighted_log_prob = self . estimate_weighted_log_prob ( & observations) ;
327
327
let log_prob_norm = weighted_log_prob
328
- . mapv ( |v| v . exp ( ) )
328
+ . mapv ( |v| Scalar :: exp ( v ) )
329
329
. sum_axis ( Axis ( 1 ) )
330
- . mapv ( |v| v . ln ( ) ) ;
330
+ . mapv ( |v| Scalar :: ln ( v ) ) ;
331
331
let log_resp = weighted_log_prob - log_prob_norm. to_owned ( ) . insert_axis ( Axis ( 1 ) ) ;
332
332
( log_prob_norm, log_resp)
333
333
}
@@ -384,12 +384,12 @@ impl<F: Float + Lapack + Scalar> GaussianMixtureModel<F> {
384
384
. unwrap ( )
385
385
. slice ( s ! [ .., ..; n_features+1 ] )
386
386
. to_owned ( )
387
- . mapv ( |v| v . ln ( ) ) ;
387
+ . mapv ( |v| Scalar :: ln ( v ) ) ;
388
388
log_diags. sum_axis ( Axis ( 1 ) )
389
389
}
390
390
391
391
fn estimate_log_weights ( & self ) -> Array1 < F > {
392
- self . weights ( ) . mapv ( |v| v . ln ( ) )
392
+ self . weights ( ) . mapv ( |v| Scalar :: ln ( v ) )
393
393
}
394
394
}
395
395
@@ -420,7 +420,7 @@ impl<'a, F: Float + Lapack + Scalar, R: Rng + SeedableRng + Clone, D: Data<Elem
420
420
lower_bound =
421
421
GaussianMixtureModel :: < F > :: compute_lower_bound ( & log_resp, log_prob_norm) ;
422
422
let change = lower_bound - prev_lower_bound;
423
- if change . abs ( ) < self . tolerance ( ) {
423
+ if ndarray_rand :: rand_distr :: num_traits :: Float :: abs ( change ) < self . tolerance ( ) {
424
424
converged_iter = Some ( n_iter) ;
425
425
break ;
426
426
}
@@ -456,7 +456,7 @@ impl<F: Float + Lapack + Scalar, D: Data<Elem = F>> PredictRef<ArrayBase<D, Ix2>
456
456
fn predict_ref < ' a > ( & ' a self , observations : & ArrayBase < D , Ix2 > ) -> Array1 < usize > {
457
457
let ( _, log_resp) = self . estimate_log_prob_resp ( & observations) ;
458
458
log_resp
459
- . mapv ( |v| v . exp ( ) )
459
+ . mapv ( |v| Scalar :: exp ( v ) )
460
460
. map_axis ( Axis ( 1 ) , |row| row. argmax ( ) . unwrap ( ) )
461
461
}
462
462
}
@@ -466,7 +466,8 @@ mod tests {
466
466
use super :: * ;
467
467
use crate :: generate_blobs;
468
468
use approx:: { abs_diff_eq, assert_abs_diff_eq} ;
469
- use ndarray:: { array, stack, ArrayView1 , ArrayView2 , Axis } ;
469
+ use lax:: error:: Error ;
470
+ use ndarray:: { array, concatenate, ArrayView1 , ArrayView2 , Axis } ;
470
471
use ndarray_linalg:: error:: LinalgError ;
471
472
use ndarray_linalg:: error:: Result as LAResult ;
472
473
use ndarray_rand:: rand:: SeedableRng ;
@@ -560,7 +561,7 @@ mod tests {
560
561
let mut rng = Isaac64Rng :: seed_from_u64 ( 42 ) ;
561
562
let xt = Array2 :: random_using ( ( 50 , 1 ) , Uniform :: new ( 0. , 1. ) , & mut rng) ;
562
563
let yt = function_test_1d ( & xt) ;
563
- let data = stack ( Axis ( 1 ) , & [ xt. view ( ) , yt. view ( ) ] ) . unwrap ( ) ;
564
+ let data = concatenate ( Axis ( 1 ) , & [ xt. view ( ) , yt. view ( ) ] ) . unwrap ( ) ;
564
565
let dataset = DatasetBase :: from ( data) ;
565
566
566
567
// Test that cholesky decomposition fails when reg_covariance is zero
@@ -571,7 +572,8 @@ mod tests {
571
572
assert ! (
572
573
match gmm. expect_err( "should generate an error with reg_covar being nul" ) {
573
574
GmmError :: LinalgError ( e) => match e {
574
- LinalgError :: Lapack { return_code: 2 } => true ,
575
+ LinalgError :: Lapack ( Error :: LapackComputationalFailure { return_code: 2 } ) =>
576
+ true ,
575
577
_ => panic!( "should be a lapack error 2" ) ,
576
578
} ,
577
579
_ => panic!( "should be a linear algebra error" ) ,
@@ -588,7 +590,7 @@ mod tests {
588
590
fn test_zeroed_reg_covar_const_failure ( ) {
589
591
// repeat values such that covariance is zero
590
592
let xt = Array2 :: ones ( ( 50 , 1 ) ) ;
591
- let data = stack ( Axis ( 1 ) , & [ xt. view ( ) , xt. view ( ) ] ) . unwrap ( ) ;
593
+ let data = concatenate ( Axis ( 1 ) , & [ xt. view ( ) , xt. view ( ) ] ) . unwrap ( ) ;
592
594
let dataset = DatasetBase :: from ( data) ;
593
595
594
596
// Test that cholesky decomposition fails when reg_covariance is zero
@@ -599,7 +601,8 @@ mod tests {
599
601
assert ! (
600
602
match gmm. expect_err( "should generate an error with reg_covar being nul" ) {
601
603
GmmError :: LinalgError ( e) => match e {
602
- LinalgError :: Lapack { return_code: 1 } => true ,
604
+ LinalgError :: Lapack ( Error :: LapackComputationalFailure { return_code: 1 } ) =>
605
+ true ,
603
606
_ => panic!( "should be a lapack error 1" ) ,
604
607
} ,
605
608
_ => panic!( "should be a linear algebra error" ) ,
0 commit comments