@@ -36,11 +36,11 @@ public class ExactCoefficientSquareTermSampling implements
3636 * instability as well as to arithmetic overflow.
3737 */
3838 private double [][] featuresProductSums ;
39- private ExactSamplingContext context ;
39+ private final ExactSamplingContext context ;
4040
41- public ExactCoefficientSquareTermSampling (ExactSamplingContext context ) {
41+ public ExactCoefficientSquareTermSampling (final ExactSamplingContext context ) {
4242 this .context = context ;
43- int featuresCount = context .getFeaturesCount ();
43+ final int featuresCount = context .getFeaturesCount ();
4444 this .featuresProductSums = new double [featuresCount ][];
4545 for (int i = 0 ; i < featuresCount ; i ++) {
4646 this .featuresProductSums [i ] = new double [featuresCount ];
@@ -49,31 +49,31 @@ public ExactCoefficientSquareTermSampling(ExactSamplingContext context) {
4949
5050 @ Override
5151 public double [][] getCovarianceLowerTriangularMatrix () {
52- int featuresCount = this .context .getFeaturesCount ();
53- long count = this .context .getCount ();
54- double [][] covMatrix = new double [featuresCount ][];
55- double [] averages = this .context .getFeaturesMean ();
56- double [] featureSums = this .context .featureSums ;
52+ final int featuresCount = this .context .getFeaturesCount ();
53+ final long count = this .context .getCount ();
54+ final double [][] covMatrix = new double [featuresCount ][];
55+ final double [] averages = this .context .getFeaturesMean ();
56+ final double [] featureSums = this .context .featureSums ;
5757 for (int i = 0 ; i < featuresCount ; i ++) {
58- double avgI = averages [i ];
58+ final double avgI = averages [i ];
5959 covMatrix [i ] = new double [featuresCount ];
6060 // Iterate until "i" due to the covariance matrix is symmetric and
6161 // build only the lower triangle
6262 for (int j = 0 ; j <= i ; j ++) {
63- double avgJ = averages [j ];
64- covMatrix [i ][j ] =
63+ final double avgJ = averages [j ];
64+ covMatrix [i ][j ] = (
6565 this .featuresProductSums [i ][j ] - avgI * featureSums [j ] - avgJ * featureSums [i ]
66- + count * avgI * avgJ ;
66+ + count * avgI * avgJ ) / count ;
6767 }
6868 }
6969 return covMatrix ;
7070 }
7171
7272 @ Override
7373 public void sample (final double [] featureValues , final double responseValue ) {
74- int featuresCount = this .context .getFeaturesCount ();
74+ final int featuresCount = this .context .getFeaturesCount ();
7575 for (int i = 0 ; i < featuresCount ; i ++) {
76- double vi = featureValues [i ];
76+ final double vi = featureValues [i ];
7777 for (int j = 0 ; j < featuresCount ; j ++) {
7878 this .featuresProductSums [i ][j ] += vi * featureValues [j ];
7979 }
@@ -82,7 +82,7 @@ public void sample(final double[] featureValues, final double responseValue) {
8282
8383 @ Override
8484 public void merge (final ExactCoefficientSquareTermSampling fromSample ) {
85- int featuresCount = this .context .getFeaturesCount ();
85+ final int featuresCount = this .context .getFeaturesCount ();
8686 for (int i = 0 ; i < featuresCount ; i ++) {
8787 for (int j = 0 ; j < featuresCount ; j ++) {
8888 this .featuresProductSums [i ][j ] += fromSample .featuresProductSums [i ][j ];
0 commit comments