@@ -293,7 +293,7 @@ impl<F: Float + Lapack + Scalar> GaussianMixtureModel<F> {
293
293
let n_samples = observations. nrows ( ) ;
294
294
let ( weights, means, covariances) = Self :: estimate_gaussian_parameters (
295
295
& observations,
296
- & log_resp. mapv ( |v| v . exp ( ) ) ,
296
+ & log_resp. mapv ( |v| Scalar :: exp ( v ) ) ,
297
297
& self . covar_type ,
298
298
reg_covar,
299
299
) ?;
@@ -322,9 +322,9 @@ impl<F: Float + Lapack + Scalar> GaussianMixtureModel<F> {
322
322
) -> ( Array1 < F > , Array2 < F > ) {
323
323
let weighted_log_prob = self . estimate_weighted_log_prob ( & observations) ;
324
324
let log_prob_norm = weighted_log_prob
325
- . mapv ( |v| v . exp ( ) )
325
+ . mapv ( |v| Scalar :: exp ( v ) )
326
326
. sum_axis ( Axis ( 1 ) )
327
- . mapv ( |v| v . ln ( ) ) ;
327
+ . mapv ( |v| Scalar :: ln ( v ) ) ;
328
328
let log_resp = weighted_log_prob - log_prob_norm. to_owned ( ) . insert_axis ( Axis ( 1 ) ) ;
329
329
( log_prob_norm, log_resp)
330
330
}
@@ -381,12 +381,12 @@ impl<F: Float + Lapack + Scalar> GaussianMixtureModel<F> {
381
381
. unwrap ( )
382
382
. slice ( s ! [ .., ..; n_features+1 ] )
383
383
. to_owned ( )
384
- . mapv ( |v| v . ln ( ) ) ;
384
+ . mapv ( |v| Scalar :: ln ( v ) ) ;
385
385
log_diags. sum_axis ( Axis ( 1 ) )
386
386
}
387
387
388
388
fn estimate_log_weights ( & self ) -> Array1 < F > {
389
- self . weights ( ) . mapv ( |v| v . ln ( ) )
389
+ self . weights ( ) . mapv ( |v| Scalar :: ln ( v ) )
390
390
}
391
391
}
392
392
@@ -417,7 +417,7 @@ impl<'a, F: Float + Lapack + Scalar, R: Rng + Clone, D: Data<Elem = F>, T>
417
417
lower_bound =
418
418
GaussianMixtureModel :: < F > :: compute_lower_bound ( & log_resp, log_prob_norm) ;
419
419
let change = lower_bound - prev_lower_bound;
420
- if change . abs ( ) < self . tolerance ( ) {
420
+ if ndarray_rand :: rand_distr :: num_traits :: Float :: abs ( change ) < self . tolerance ( ) {
421
421
converged_iter = Some ( n_iter) ;
422
422
break ;
423
423
}
@@ -453,7 +453,7 @@ impl<F: Float + Lapack + Scalar, D: Data<Elem = F>> PredictRef<ArrayBase<D, Ix2>
453
453
fn predict_ref < ' a > ( & ' a self , observations : & ArrayBase < D , Ix2 > ) -> Array1 < usize > {
454
454
let ( _, log_resp) = self . estimate_log_prob_resp ( & observations) ;
455
455
log_resp
456
- . mapv ( |v| v . exp ( ) )
456
+ . mapv ( |v| Scalar :: exp ( v ) )
457
457
. map_axis ( Axis ( 1 ) , |row| row. argmax ( ) . unwrap ( ) )
458
458
}
459
459
}
@@ -463,7 +463,7 @@ mod tests {
463
463
use super :: * ;
464
464
use crate :: generate_blobs;
465
465
use approx:: { abs_diff_eq, assert_abs_diff_eq} ;
466
- use ndarray:: { array, stack , ArrayView1 , ArrayView2 , Axis } ;
466
+ use ndarray:: { array, concatenate , ArrayView1 , ArrayView2 , Axis } ;
467
467
use ndarray_linalg:: error:: LinalgError ;
468
468
use ndarray_linalg:: error:: Result as LAResult ;
469
469
use ndarray_rand:: rand:: SeedableRng ;
@@ -557,7 +557,7 @@ mod tests {
557
557
let mut rng = Isaac64Rng :: seed_from_u64 ( 42 ) ;
558
558
let xt = Array2 :: random_using ( ( 50 , 1 ) , Uniform :: new ( 0. , 1. ) , & mut rng) ;
559
559
let yt = function_test_1d ( & xt) ;
560
- let data = stack ( Axis ( 1 ) , & [ xt. view ( ) , yt. view ( ) ] ) . unwrap ( ) ;
560
+ let data = concatenate ( Axis ( 1 ) , & [ xt. view ( ) , yt. view ( ) ] ) . unwrap ( ) ;
561
561
let dataset = DatasetBase :: from ( data) ;
562
562
563
563
// Test that cholesky decomposition fails when reg_covariance is zero
@@ -568,7 +568,7 @@ mod tests {
568
568
assert ! (
569
569
match gmm. expect_err( "should generate an error with reg_covar being nul" ) {
570
570
GmmError :: LinalgError ( e) => match e {
571
- LinalgError :: Lapack { return_code : 2 } => true ,
571
+ LinalgError :: Lapack ( _ ) => true ,
572
572
_ => panic!( "should be a lapack error 2" ) ,
573
573
} ,
574
574
_ => panic!( "should be a linear algebra error" ) ,
@@ -585,7 +585,7 @@ mod tests {
585
585
fn test_zeroed_reg_covar_const_failure ( ) {
586
586
// repeat values such that covariance is zero
587
587
let xt = Array2 :: ones ( ( 50 , 1 ) ) ;
588
- let data = stack ( Axis ( 1 ) , & [ xt. view ( ) , xt. view ( ) ] ) . unwrap ( ) ;
588
+ let data = concatenate ( Axis ( 1 ) , & [ xt. view ( ) , xt. view ( ) ] ) . unwrap ( ) ;
589
589
let dataset = DatasetBase :: from ( data) ;
590
590
591
591
// Test that cholesky decomposition fails when reg_covariance is zero
@@ -596,7 +596,7 @@ mod tests {
596
596
assert ! (
597
597
match gmm. expect_err( "should generate an error with reg_covar being nul" ) {
598
598
GmmError :: LinalgError ( e) => match e {
599
- LinalgError :: Lapack { return_code : 1 } => true ,
599
+ LinalgError :: Lapack ( _ ) => true ,
600
600
_ => panic!( "should be a lapack error 1" ) ,
601
601
} ,
602
602
_ => panic!( "should be a linear algebra error" ) ,
0 commit comments