Skip to content

Commit 036f379

Browse files
committed
Cover toString()
1 parent 270d359 commit 036f379

File tree

5 files changed

+90
-50
lines changed

5 files changed

+90
-50
lines changed

src/main/java/org/scaleborn/elasticsearch/linreg/aggregation/stats/StatsAggregator.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ public void collect(int doc, long bucket) throws IOException {
100100
}
101101
LOGGER.info("Sampling for bucket={}, fields={}", bucket, fieldVals);
102102
sampling.sample(fieldVals, fieldVals[fieldVals.length - 1]);
103+
} else {
104+
LOGGER.warn("Skipped bucket={}, fields={}", bucket, fieldVals);
103105
}
104106
}
105107

src/main/java/org/scaleborn/linereg/evaluation/SlopeCoefficientsSampling.java

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,51 +48,60 @@ public SlopeCoefficientsSamplingProxy(final SamplingContext<?> samplingContext,
4848

4949
@Override
5050
public void saveState(final StateOutputStream destination) throws IOException {
51-
samplingContext.saveState(destination);
52-
coefficientLinearTermSampling.saveState(destination);
53-
coefficientSquareTermSampling.saveState(destination);
51+
this.samplingContext.saveState(destination);
52+
this.coefficientLinearTermSampling.saveState(destination);
53+
this.coefficientSquareTermSampling.saveState(destination);
5454
}
5555

5656
@Override
5757
public void sample(final double[] featureValues, final double responseValue) {
58-
samplingContext.sample(featureValues, responseValue);
59-
coefficientLinearTermSampling.sample(featureValues, responseValue);
60-
coefficientSquareTermSampling.sample(featureValues, responseValue);
58+
this.samplingContext.sample(featureValues, responseValue);
59+
this.coefficientLinearTermSampling.sample(featureValues, responseValue);
60+
this.coefficientSquareTermSampling.sample(featureValues, responseValue);
6161
}
6262

6363
@Override
6464
public void loadState(final StateInputStream source) throws IOException {
65-
samplingContext.loadState(source);
66-
coefficientLinearTermSampling.loadState(source);
67-
coefficientSquareTermSampling.loadState(source);
65+
this.samplingContext.loadState(source);
66+
this.coefficientLinearTermSampling.loadState(source);
67+
this.coefficientSquareTermSampling.loadState(source);
6868
}
6969

7070
@SuppressWarnings("unchecked")
7171
@Override
7272
public void merge(final SlopeCoefficientsSamplingProxy fromSample) {
73-
samplingContext.merge(fromSample.samplingContext);
74-
coefficientLinearTermSampling.merge(fromSample.coefficientLinearTermSampling);
75-
coefficientSquareTermSampling.merge(fromSample.coefficientSquareTermSampling);
73+
this.samplingContext.merge(fromSample.samplingContext);
74+
this.coefficientLinearTermSampling.merge(fromSample.coefficientLinearTermSampling);
75+
this.coefficientSquareTermSampling.merge(fromSample.coefficientSquareTermSampling);
7676
}
7777

7878
@Override
7979
public double[] getFeaturesResponseCovariance() {
80-
return coefficientLinearTermSampling.getFeaturesResponseCovariance();
80+
return this.coefficientLinearTermSampling.getFeaturesResponseCovariance();
8181
}
8282

8383
@Override
8484
public double[][] getCovarianceLowerTriangularMatrix() {
85-
return coefficientSquareTermSampling.getCovarianceLowerTriangularMatrix();
85+
return this.coefficientSquareTermSampling.getCovarianceLowerTriangularMatrix();
8686
}
8787

8888
@Override
8989
public long getCount() {
90-
return samplingContext.getCount();
90+
return this.samplingContext.getCount();
9191
}
9292

9393
@Override
9494
public int getFeaturesCount() {
95-
return samplingContext.getFeaturesCount();
95+
return this.samplingContext.getFeaturesCount();
96+
}
97+
98+
@Override
99+
public String toString() {
100+
return "SlopeCoefficientsSamplingProxy{" +
101+
"samplingContext=" + this.samplingContext +
102+
", coefficientLinearTermSampling=" + this.coefficientLinearTermSampling +
103+
", coefficientSquareTermSampling=" + this.coefficientSquareTermSampling +
104+
'}';
96105
}
97106
}
98107

src/main/java/org/scaleborn/linereg/sampling/exact/ExactCoefficientSquareTermSampling.java

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.scaleborn.linereg.sampling.exact;
1818

1919
import java.io.IOException;
20+
import java.util.Arrays;
2021
import org.scaleborn.linereg.sampling.Sampling.CoefficientSquareTermSampling;
2122
import org.scaleborn.linereg.sampling.io.StateInputStream;
2223
import org.scaleborn.linereg.sampling.io.StateOutputStream;
@@ -40,61 +41,69 @@ public class ExactCoefficientSquareTermSampling implements
4041
public ExactCoefficientSquareTermSampling(ExactSamplingContext context) {
4142
this.context = context;
4243
int featuresCount = context.getFeaturesCount();
43-
featuresProductSums = new double[featuresCount][];
44+
this.featuresProductSums = new double[featuresCount][];
4445
for (int i = 0; i < featuresCount; i++) {
45-
featuresProductSums[i] = new double[featuresCount];
46+
this.featuresProductSums[i] = new double[featuresCount];
4647
}
4748
}
4849

4950
@Override
5051
public double[][] getCovarianceLowerTriangularMatrix() {
51-
int featuresCount = context.getFeaturesCount();
52-
long count = context.getCount();
52+
int featuresCount = this.context.getFeaturesCount();
53+
long count = this.context.getCount();
5354
double[][] covMatrix = new double[featuresCount][];
54-
double[] averages = context.getFeaturesMean();
55-
double[] featureSums = context.featureSums;
55+
double[] averages = this.context.getFeaturesMean();
56+
double[] featureSums = this.context.featureSums;
5657
for (int i = 0; i < featuresCount; i++) {
5758
double avgI = averages[i];
5859
covMatrix[i] = new double[featuresCount];
5960
// Iterate until "i" due to the covariance matrix is symmetric and
6061
// build only the lower triangle
6162
for (int j = 0; j <= i; j++) {
6263
double avgJ = averages[j];
63-
covMatrix[i][j] = featuresProductSums[i][j] - avgI * featureSums[j] - avgJ * featureSums[i]
64-
+ count * avgI * avgJ;
64+
covMatrix[i][j] =
65+
this.featuresProductSums[i][j] - avgI * featureSums[j] - avgJ * featureSums[i]
66+
+ count * avgI * avgJ;
6567
}
6668
}
6769
return covMatrix;
6870
}
6971

7072
@Override
7173
public void sample(final double[] featureValues, final double responseValue) {
72-
int featuresCount = context.getFeaturesCount();
74+
int featuresCount = this.context.getFeaturesCount();
7375
for (int i = 0; i < featuresCount; i++) {
7476
double vi = featureValues[i];
7577
for (int j = 0; j < featuresCount; j++) {
76-
featuresProductSums[i][j] += vi * featureValues[j];
78+
this.featuresProductSums[i][j] += vi * featureValues[j];
7779
}
7880
}
7981
}
8082

8183
@Override
8284
public void merge(final ExactCoefficientSquareTermSampling fromSample) {
83-
int featuresCount = context.getFeaturesCount();
85+
int featuresCount = this.context.getFeaturesCount();
8486
for (int i = 0; i < featuresCount; i++) {
8587
for (int j = 0; j < featuresCount; j++) {
86-
featuresProductSums[i][j] += fromSample.featuresProductSums[i][j];
88+
this.featuresProductSums[i][j] += fromSample.featuresProductSums[i][j];
8789
}
8890
}
8991
}
9092

9193
@Override
9294
public void saveState(final StateOutputStream stream) throws IOException {
93-
stream.writeDoubleMatrix(featuresProductSums);
95+
stream.writeDoubleMatrix(this.featuresProductSums);
9496
}
9597

9698
@Override
9799
public void loadState(final StateInputStream stream) throws IOException {
98-
featuresProductSums = stream.readDoubleMatrix();
100+
this.featuresProductSums = stream.readDoubleMatrix();
101+
}
102+
103+
@Override
104+
public String toString() {
105+
return "ExactCoefficientSquareTermSampling{" +
106+
"featuresProductSums=" + Arrays.deepToString(this.featuresProductSums) +
107+
'}';
99108
}
100109
}

src/main/java/org/scaleborn/linereg/sampling/exact/ExactSamplingContext.java

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.scaleborn.linereg.sampling.exact;
1818

1919
import java.io.IOException;
20+
import java.util.Arrays;
2021
import org.scaleborn.linereg.sampling.io.StateInputStream;
2122
import org.scaleborn.linereg.sampling.io.StateOutputStream;
2223
import org.scaleborn.linereg.sampling.support.BaseSamplingContext;
@@ -35,63 +36,75 @@ public class ExactSamplingContext extends BaseSamplingContext<ExactSamplingConte
3536

3637
public ExactSamplingContext(final int featuresCount) {
3738
super(featuresCount);
38-
featureSums = new double[featuresCount];
39-
featuresResponseProductSum = new double[featuresCount];
39+
this.featureSums = new double[featuresCount];
40+
this.featuresResponseProductSum = new double[featuresCount];
4041
}
4142

4243
@Override
4344
public void sample(double[] featureValues, double targetValue) {
4445
super.sample(featureValues, targetValue);
4546
for (int i = 0; i < featuresCount; i++) {
4647
double v = featureValues[i];
47-
featureSums[i] += v;
48-
featuresResponseProductSum[i] += v * targetValue;
48+
this.featureSums[i] += v;
49+
this.featuresResponseProductSum[i] += v * targetValue;
4950
}
50-
responseSum += targetValue;
51-
responseSquareSum += targetValue * targetValue;
51+
this.responseSum += targetValue;
52+
this.responseSquareSum += targetValue * targetValue;
5253
}
5354

5455
@Override
5556
public void merge(ExactSamplingContext from) {
5657
super.merge(from);
5758
for (int i = 0; i < featuresCount; i++) {
58-
featureSums[i] += from.featureSums[i];
59-
featuresResponseProductSum[i] += from.featuresResponseProductSum[i];
59+
this.featureSums[i] += from.featureSums[i];
60+
this.featuresResponseProductSum[i] += from.featuresResponseProductSum[i];
6061
}
61-
responseSum += from.responseSum;
62-
responseSquareSum += from.responseSquareSum;
62+
this.responseSum += from.responseSum;
63+
this.responseSquareSum += from.responseSquareSum;
6364
}
6465

6566
double[] getFeaturesMean() {
6667
double[] avgs = new double[featuresCount];
6768
if (count > 0) {
6869
for (int i = 0; i < featuresCount; i++) {
69-
avgs[i] = featureSums[i] / count;
70+
avgs[i] = this.featureSums[i] / count;
7071
}
7172
}
7273
return avgs;
7374
}
7475

7576
double getResponseMean() {
7677
if (count > 0) {
77-
return responseSum / count;
78+
return this.responseSum / count;
7879
}
7980
return 0;
8081
}
8182

8283
@Override
8384
public void saveState(final StateOutputStream stream) throws IOException {
84-
stream.writeDouble(responseSum);
85-
stream.writeDouble(responseSquareSum);
86-
stream.writeDoubleArray(featureSums);
87-
stream.writeDoubleArray(featuresResponseProductSum);
85+
super.saveState(stream);
86+
stream.writeDouble(this.responseSum);
87+
stream.writeDouble(this.responseSquareSum);
88+
stream.writeDoubleArray(this.featureSums);
89+
stream.writeDoubleArray(this.featuresResponseProductSum);
8890
}
8991

9092
@Override
9193
public void loadState(final StateInputStream stream) throws IOException {
92-
responseSum = stream.readDouble();
93-
responseSquareSum = stream.readDouble();
94-
featureSums = stream.readDoubleArray();
95-
featuresResponseProductSum = stream.readDoubleArray();
94+
super.loadState(stream);
95+
this.responseSum = stream.readDouble();
96+
this.responseSquareSum = stream.readDouble();
97+
this.featureSums = stream.readDoubleArray();
98+
this.featuresResponseProductSum = stream.readDoubleArray();
99+
}
100+
101+
@Override
102+
public String toString() {
103+
return "ExactSamplingContext{" +
104+
"featureSums=" + Arrays.toString(this.featureSums) +
105+
", responseSum=" + this.responseSum +
106+
", featuresResponseProductSum=" + Arrays.toString(this.featuresResponseProductSum) +
107+
", responseSquareSum=" + this.responseSquareSum +
108+
"} " + super.toString();
96109
}
97110
}

src/main/java/org/scaleborn/linereg/statistics/StatsSampling.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,12 @@ public void merge(final StatsSamplingProxy fromSample) {
7171
public double getResponseVariance() {
7272
return responseVarianceTermSampling.getResponseVariance();
7373
}
74+
75+
@Override
76+
public String toString() {
77+
return "StatsSamplingProxy{" +
78+
"responseVarianceTermSampling=" + responseVarianceTermSampling +
79+
"} " + super.toString();
80+
}
7481
}
7582
}

0 commit comments

Comments
 (0)