From fc4c721fa557fa46823756291517299fb2529db4 Mon Sep 17 00:00:00 2001 From: alexander kozhikhov Date: Mon, 11 Feb 2019 01:07:47 +0300 Subject: [PATCH] some review fixes --- .../AggregateFunctionMLMethod.h | 81 ++++++++++--------- dbms/src/Columns/ColumnAggregateFunction.cpp | 6 +- .../tests/queries/0_stateless/00900_stest.sql | 48 ----------- 3 files changed, 48 insertions(+), 87 deletions(-) delete mode 100644 dbms/tests/queries/0_stateless/00900_stest.sql diff --git a/dbms/src/AggregateFunctions/AggregateFunctionMLMethod.h b/dbms/src/AggregateFunctions/AggregateFunctionMLMethod.h index 4c85d5cff76..545b278cce5 100644 --- a/dbms/src/AggregateFunctions/AggregateFunctionMLMethod.h +++ b/dbms/src/AggregateFunctions/AggregateFunctionMLMethod.h @@ -78,14 +78,14 @@ public: Float64 derivative = (target - bias); for (size_t i = 0; i < weights.size(); ++i) { - derivative -= weights[i] * static_cast &>(*columns[i + 1]).getData()[row_num]; + derivative -= weights[i] * static_cast &>(*columns[i]).getData()[row_num]; } derivative *= (2 * learning_rate); batch_gradient[weights.size()] += derivative; for (size_t i = 0; i < weights.size(); ++i) { - batch_gradient[i] += derivative * static_cast &>(*columns[i + 1]).getData()[row_num];; + batch_gradient[i] += derivative * static_cast &>(*columns[i]).getData()[row_num];; } } Float64 predict(const std::vector & predict_feature, const std::vector & weights, Float64 bias) const override @@ -107,6 +107,7 @@ public: return res; } }; + class LogisticRegression : public IGradientComputer { public: @@ -120,7 +121,7 @@ public: Float64 derivative = bias; for (size_t i = 0; i < weights.size(); ++i) { - derivative += weights[i] * static_cast &>(*columns[i + 1]).getData()[row_num];; + derivative += weights[i] * static_cast &>(*columns[i]).getData()[row_num];; } derivative *= target; derivative = learning_rate * exp(derivative); @@ -128,7 +129,7 @@ public: batch_gradient[weights.size()] += target / (derivative + 1);; for (size_t i = 0; i < weights.size(); ++i) { - batch_gradient[i] += target / (derivative + 1) * static_cast &>(*columns[i + 1]).getData()[row_num]; + batch_gradient[i] += target / (derivative + 1) * static_cast &>(*columns[i]).getData()[row_num]; } } Float64 predict(const std::vector & predict_feature, const std::vector & weights, Float64 bias) const override @@ -156,27 +157,32 @@ class IWeightsUpdater public: virtual ~IWeightsUpdater() = default; - virtual void update(UInt32 cur_batch, std::vector & weights, Float64 & bias, const std::vector & gradient) = 0; - virtual void merge(const std::shared_ptr, Float64, Float64) {} + virtual void update(UInt32 batch_size, std::vector & weights, Float64 & bias, const std::vector & gradient) = 0; + virtual void merge(const IWeightsUpdater &, Float64, Float64) {} }; class StochasticGradientDescent : public IWeightsUpdater { public: - void update(UInt32 cur_batch, std::vector & weights, Float64 & bias, const std::vector & batch_gradient) override { + void update(UInt32 batch_size, std::vector & weights, Float64 & bias, const std::vector & batch_gradient) override { + /// batch_size is already checked to be greater than 0 + for (size_t i = 0; i < weights.size(); ++i) { - weights[i] += batch_gradient[i] / cur_batch; + weights[i] += batch_gradient[i] / batch_size; } - bias += batch_gradient[weights.size()] / cur_batch; + bias += batch_gradient[weights.size()] / batch_size; } }; + class Momentum : public IWeightsUpdater { public: Momentum() {} Momentum (Float64 alpha) : alpha_(alpha) {} - void update(UInt32 cur_batch, std::vector & weights, Float64 & bias, const std::vector & batch_gradient) override { + void update(UInt32 batch_size, std::vector & weights, Float64 & bias, const std::vector & batch_gradient) override { + /// batch_size is already checked to be greater than 0 + if (hk_.size() == 0) { hk_.resize(batch_gradient.size(), Float64{0.0}); @@ -187,21 +193,23 @@ public: } for (size_t i = 0; i < weights.size(); ++i) { - weights[i] += hk_[i] / cur_batch; + weights[i] += hk_[i] / batch_size; } - bias += hk_[weights.size()] / cur_batch; + bias += hk_[weights.size()] / batch_size; } - virtual void merge(const std::shared_ptr rhs, Float64 frac, Float64 rhs_frac) override { - auto momentum_rhs = std::dynamic_pointer_cast(rhs); + virtual void merge(const IWeightsUpdater & rhs, Float64 frac, Float64 rhs_frac) override { + const auto & momentum_rhs = dynamic_cast(rhs); for (size_t i = 0; i < hk_.size(); ++i) { - hk_[i] = hk_[i] * frac + momentum_rhs->hk_[i] * rhs_frac; + hk_[i] = hk_[i] * frac + momentum_rhs.hk_[i] * rhs_frac; } } -Float64 alpha_{0.1}; -std::vector hk_; +private: + Float64 alpha_{0.1}; + std::vector hk_; }; + class LinearModelData { public: @@ -210,25 +218,26 @@ public: LinearModelData(Float64 learning_rate, UInt32 param_num, - UInt32 batch_size, + UInt32 batch_capacity, std::shared_ptr gc, std::shared_ptr wu) : learning_rate(learning_rate), - batch_size(batch_size), + batch_capacity(batch_capacity), gradient_computer(std::move(gc)), weights_updater(std::move(wu)) { weights.resize(param_num, Float64{0.0}); - cur_batch = 0; + batch_size = 0; } - - - void add(Float64 target, const IColumn ** columns, size_t row_num) + void add(const IColumn ** columns, size_t row_num) { - gradient_computer->compute(weights, bias, learning_rate, target, columns, row_num); - ++cur_batch; - if (cur_batch == batch_size) + /// first column stores target; features start from (columns + 1) + const auto & target = static_cast &>(*columns[0]).getData()[row_num]; + + gradient_computer->compute(weights, bias, learning_rate, target, columns + 1, row_num); + ++batch_size; + if (batch_size == batch_capacity) { update_state(); } @@ -253,7 +262,7 @@ public: bias = bias * frac + rhs.bias * rhs_frac; iter_num += rhs.iter_num; - weights_updater->merge(rhs.weights_updater, frac, rhs_frac); + weights_updater->merge(*rhs.weights_updater, frac, rhs_frac); } void write(WriteBuffer & buf) const @@ -261,7 +270,7 @@ public: writeBinary(bias, buf); writeBinary(weights, buf); writeBinary(iter_num, buf); - writeBinary(cur_batch, buf); + writeBinary(batch_size, buf); gradient_computer->write(buf); } @@ -270,7 +279,7 @@ public: readBinary(bias, buf); readBinary(weights, buf); readBinary(iter_num, buf); - readBinary(cur_batch, buf); + readBinary(batch_size, buf); gradient_computer->read(buf); } @@ -289,20 +298,20 @@ public: private: std::vector weights; Float64 learning_rate; - UInt32 batch_size; + UInt32 batch_capacity; Float64 bias{0.0}; UInt32 iter_num = 0; - UInt32 cur_batch; + UInt32 batch_size; std::shared_ptr gradient_computer; std::shared_ptr weights_updater; void update_state() { - if (cur_batch == 0) + if (batch_size == 0) return; - weights_updater->update(cur_batch, weights, bias, gradient_computer->get()); - cur_batch = 0; + weights_updater->update(batch_size, weights, bias, gradient_computer->get()); + batch_size = 0; ++iter_num; gradient_computer->reset(); } @@ -343,9 +352,7 @@ public: void add(AggregateDataPtr place, const IColumn ** columns, size_t row_num, Arena *) const override { - const auto & target = static_cast &>(*columns[0]); - - this->data(place).add(target.getData()[row_num], columns, row_num); + this->data(place).add(columns, row_num); } /// хочется не константный rhs diff --git a/dbms/src/Columns/ColumnAggregateFunction.cpp b/dbms/src/Columns/ColumnAggregateFunction.cpp index b9fa94f1956..2afb75ee4b1 100644 --- a/dbms/src/Columns/ColumnAggregateFunction.cpp +++ b/dbms/src/Columns/ColumnAggregateFunction.cpp @@ -128,14 +128,16 @@ MutableColumnPtr ColumnAggregateFunction::predictValues(Block & block, const Col if (ML_function_Linear) { size_t row_num = 0; - for (auto val : data) { + for (auto val : data) + { ML_function_Linear->predictResultInto(val, *res, block, row_num, arguments); ++row_num; } } else if (ML_function_Logistic) { size_t row_num = 0; - for (auto val : data) { + for (auto val : data) + { ML_function_Logistic->predictResultInto(val, *res, block, row_num, arguments); ++row_num; } diff --git a/dbms/tests/queries/0_stateless/00900_stest.sql b/dbms/tests/queries/0_stateless/00900_stest.sql deleted file mode 100644 index 0a0acfdee11..00000000000 --- a/dbms/tests/queries/0_stateless/00900_stest.sql +++ /dev/null @@ -1,48 +0,0 @@ -CREATE DATABASE IF NOT EXISTS test; -DROP TABLE IF EXISTS test.defaults; -CREATE TABLE IF NOT EXISTS test.defaults -( - param1 Float64, - param2 Float64, - target Float64, - predict1 Float64, - predict2 Float64 -) ENGINE = Memory; --- -- insert into test.defaults values (2.533, 0.543, 3.181), (1.999, 1.765, 0.470), (0.631, 2.580, -1.845), (-1.164, 0.889, 0.640), (2.110, 0.768, 2.519), (1.251, 0.483, 2.659), (-3.958, 1.299, -1.576), (-2.152, -1.316, 4.556), (3.269, 1.441, 1.753), (4.206, -1.635, 8.373), (-3.479, -0.544, 2.349), (4.006, 0.167, 4.670), (-4.478, 2.400, -4.039), (1.856, 0.256, 3.417), (1.470, 1.685, 0.366), (-4.052, 2.326, -3.678), (-0.971, -0.969, 4.453), (0.881, -1.848, 7.137), (-1.551, -1.766, 5.756), (-0.988, -0.945, 4.395), (-4.636, 1.074, -1.466), (-4.074, -1.486, 3.934), (0.754, 2.627, -1.877), (1.035, 0.889, 1.738), (3.707, -1.281, 7.415), (-2.215, 1.110, -0.327), (-2.965, -1.316, 4.150), (-3.581, 1.063, -0.917), (0.548, 0.343, 2.588), (3.023, -0.870, 6.251), (4.053, -1.441, 7.909), (-0.750, 0.639, 1.348), (-4.411, 1.636, -2.477), (1.786, 0.398, 3.096), (-2.514, 0.033, 1.676), (4.935, -0.840, 7.148), (1.075, -0.921, 5.380), (-3.418, 2.177, -3.063), (3.122, 1.883, 0.795), (-2.254, -1.389, 4.650), (-4.603, 2.909, -5.119), (-1.886, -1.220, 4.497), (-0.509, -1.498, 5.741), (2.192, 1.882, 0.332), (4.056, -1.108, 7.244), (-1.918, 0.230, 1.581), (4.867, 1.516, 2.401), (-0.993, -0.011, 2.526), (-0.757, -1.192, 5.006), (-4.161, 2.059, -3.198), (2.258, 1.157, 1.814), (-3.878, -0.052, 1.165), (1.915, 2.998, -2.038), (-2.164, 2.379, -2.841), (-0.114, -1.914, 6.772), (3.812, 2.138, 0.630), (-1.863, 1.508, -0.947), (-2.964, 0.398, 0.722), (-2.046, -0.193, 2.363), (-1.525, -0.836, 3.910), (-4.557, -0.582, 1.886), (1.031, -0.461, 4.437), (-0.802, 0.699, 1.201), (3.982, 2.084, 0.824), (-2.243, 2.726, -3.573), (-3.989, -0.803, 2.611), (4.900, 0.253, 4.944), (-1.208, -1.587, 5.571), (0.370, 2.579, -1.972), (2.824, 0.964, 2.484), (-1.290, -0.128, 2.611), (0.190, 2.058, -1.021), (4.058, 2.122, 0.784), (4.879, 0.945, 3.549), (1.119, 1.992, -0.424), (4.050, 2.005, 1.015), (-0.064, 1.485, -0.002), (-2.496, 0.456, 0.840), (-1.835, 1.586, -1.090), (0.603, 1.856, -0.411), (-3.062, -0.966, 3.401), (-3.351, 0.430, 0.465), (-2.724, -1.331, 4.299), (3.291, -1.027, 6.699), (-4.263, 0.785, -0.701), (-3.289, -0.886, 3.128), (4.627, 1.331, 2.651), (-0.618, 0.602, 1.486), (0.056, 1.778, -0.528), (4.823, 1.154, 3.103), (-3.983, 0.509, -0.010), (-4.474, -1.400, 3.563), (-3.782, 2.996, -4.883), (4.515, -0.656, 6.569), (1.269, 2.592, -1.549), (-1.710, -0.241, 2.627), (2.171, 1.453, 1.180), (-1.931, -1.845, 5.726), (1.767, -1.798, 7.480), (4.352, 2.369, 0.438), (-4.498, 2.611, -4.472), (0.067, 0.517, 2.000), (4.151, 0.624, 3.827), (0.409, -0.969, 5.142), (0.193, -1.713, 6.522), (-2.487, 2.827, -3.898), (-4.363, 2.011, -3.203), (-2.383, 2.554, -3.299), (-4.457, -0.958, 2.687), (3.342, -0.360, 5.392), (0.902, 2.978, -2.505), (4.073, -1.524, 8.084), (3.036, 1.672, 1.173), (2.169, -0.564, 5.213), (-4.780, 0.962, -1.313), (-1.815, 2.096, -2.100), (-1.445, 0.458, 1.362), (1.891, -1.437, 6.820), (1.942, -1.761, 7.493), (-4.613, -1.551, 3.795), (-3.472, -1.110, 3.485), (-2.026, 1.961, -1.935), (0.091, -0.961, 4.967), (3.902, -1.336, 7.622), (-3.483, -0.769, 2.796), (-0.066, -1.233, 5.433), (2.597, 2.789, -1.280), (-1.657, -1.842, 5.856), (0.232, -1.420, 5.957), (-3.321, 1.609, -1.879), (2.673, 2.781, -1.226), (0.869, 0.072, 3.291), (1.444, -1.271, 6.264), (1.190, 1.460, 0.675), (3.497, 0.870, 3.008), (-2.884, -1.303, 4.163), (3.620, 0.381, 4.047), (2.594, 0.247, 3.803), (-3.902, -1.315, 3.678), (-4.753, -1.005, 2.634), (0.881, 0.675, 2.091), (0.414, 2.071, -0.935), (3.458, -0.920, 6.568), (-2.986, -0.411, 2.329), (3.076, -1.960, 8.458), (2.951, 2.988, -1.501), (2.408, 1.301, 1.603), (4.725, 0.366, 4.631), (4.924, -1.762, 8.985), (3.719, 0.970, 2.920), (-0.295, 0.257, 2.340), (-4.607, 2.548, -4.400), (0.288, 1.953, -0.761), (-3.311, 0.844, -0.344), (3.679, -0.642, 6.123), (-2.310, -0.838, 3.522), (-4.397, -0.226, 1.254), (-4.366, -0.024, 0.864), (2.405, 1.458, 1.286), (-4.296, -1.071, 2.994), (0.452, -1.901, 7.028), (-0.214, -0.467, 3.827), (2.559, 1.547, 1.185), (0.990, 1.539, 0.417), (0.478, -0.089, 3.417), (-2.734, -1.007, 3.646), (3.483, 0.247, 4.247), (3.507, 2.727, -0.701), (-4.399, 2.437, -4.073), (3.785, 0.036, 4.820), (-0.824, 2.417, -2.245), (-2.588, 0.369, 0.968), (-3.037, -1.639, 4.759), (4.531, -0.499, 6.264), (4.742, -1.161, 7.693), (-0.063, -0.595, 4.159), (0.697, 2.281, -1.212), (0.413, 0.607, 1.992), (-4.081, 0.383, 0.194), (0.712, 2.638, -1.920), (-1.620, 1.092, 0.006), (-3.425, -0.911, 3.109), (-0.124, 1.711, -0.484), (4.347, 1.387, 2.399), (-3.237, -0.900, 3.182), (-3.961, 0.358, 0.304), (4.326, -0.068, 5.298), (3.846, 1.725, 1.473), (-2.089, 0.953, 0.049), (-1.025, -1.470, 5.428), (2.061, -0.156, 4.343), (1.547, -1.827, 7.427), (2.786, 0.460, 3.473), (0.076, 0.659, 1.720), (3.597, 1.966, 0.866), (-0.933, -1.180, 4.894), (4.647, 1.190, 2.943), (-0.032, 0.544, 1.896), (4.461, -1.806, 8.843), (-0.586, 1.821, -0.934), (3.725, 1.715, 1.432), (-2.091, 2.714, -3.474), (4.494, -1.494, 8.236), (3.766, -0.209, 5.301), (-1.991, 1.776, -1.548), (-4.992, -0.742, 1.989), (-2.400, 1.828, -1.855), (-1.329, 0.143, 2.050), (1.954, 1.759, 0.459), (-4.422, 1.507, -2.224), (-2.243, -1.126, 4.131), (4.417, -1.080, 7.368), (1.737, -1.144, 6.157), (2.661, -1.084, 6.498), (-3.198, 0.443, 0.515), (4.191, -1.250, 7.596), (-2.419, -0.163, 2.116), (1.910, -1.173, 6.301), (-0.241, 1.902, -0.925), (-4.415, 2.479, -4.165), (3.307, -0.465, 5.583), (-2.382, 1.364, -0.920), (-3.154, 2.953, -4.483), (-2.562, 2.803, -3.888), (3.076, 0.195, 4.149), (-0.101, 0.896, 1.157), (-2.067, 1.120, -0.273), (-4.680, 2.756, -4.851), (-4.283, -0.607, 2.072), (4.013, -1.072, 7.150), (-4.401, -0.896, 2.591), (4.544, 2.498, 0.276), (4.075, -1.204, 7.445), (-3.463, 1.242, -1.216), (3.992, 2.782, -0.568), (-4.503, 0.239, 0.270), (-3.095, 1.161, -0.870), (0.768, -0.904, 5.192), (1.255, 2.870, -2.112), (-1.537, -0.049, 2.330), (2.851, -1.182, 6.789), (1.974, -0.922, 5.832), (4.447, 2.719, -0.214), (-3.413, 0.555, 0.184), (4.943, 2.120, 1.231), (3.645, -0.413, 5.648), (-4.776, 0.079, 0.453), (1.991, 1.565, 0.866), (2.413, 1.793, 0.620), (4.245, 2.663, -0.205), (-2.022, -1.180, 4.350), (-2.285, -1.246, 4.350), (2.276, 0.488, 3.162), (2.582, -0.037, 4.365), (-4.875, 1.468, -2.374), (-2.492, 2.730, -3.706), (2.696, -1.833, 8.013), (4.618, -1.127, 7.563), (-4.156, 0.987, -1.053), (1.873, -1.566, 7.068), (1.699, 0.794, 2.262), (-3.181, 1.640, -1.871), (-3.225, 1.526, -1.664), (-2.679, -1.811, 5.281), (3.717, 1.532, 1.794), (1.288, -0.999, 5.642), (-1.057, 0.044, 2.384), (-0.147, 1.108, 0.711), (-3.827, -1.139, 3.365), (0.872, -1.482, 6.399), (1.982, 0.286, 3.418), (-1.381, 2.374, -2.439), (-1.091, 2.010, -1.565), (-1.192, 2.751, -3.097), (1.468, -0.992, 5.718), (2.249, 0.949, 2.228), (3.064, 0.911, 2.711), (-1.576, -1.584, 5.380), (2.130, -1.489, 7.043), (4.386, -1.284, 7.761), (1.662, -1.645, 7.121), (-3.395, 1.784, -2.265), (4.618, 1.951, 1.406), (-0.299, 0.378, 2.095), (-2.911, 2.131, -2.717), (0.876, 2.869, -2.301), (-1.785, 0.961, 0.186), (-4.188, 2.442, -3.977), (-1.128, 0.127, 2.181), (1.755, -1.215, 6.307), (-2.276, 0.596, 0.669), (-4.630, 1.978, -3.272), (-0.454, 0.275, 2.224), (-1.950, -1.385, 4.794), (-0.889, 2.696, -2.837), (-4.832, -0.038, 0.661), (3.738, 0.604, 3.662), (-0.224, -0.465, 3.819); -insert into test.defaults values (-3.273, -1.452, 4.267, 20.0, 40.0), (0.121, -0.615, 4.290, 20.0, 40.0), (-1.099, 2.755, -3.060, 20.0, 40.0), (1.090, 2.945, -2.346, 20.0, 40.0), (0.305, 2.179, -1.205, 20.0, 40.0), (-0.925, 0.702, 1.134, 20.0, 40.0), (3.178, -1.316, 7.221, 20.0, 40.0), (-2.756, -0.473, 2.569, 20.0, 40.0), (3.665, 2.303, 0.226, 20.0, 40.0), (1.662, 1.951, -0.070, 20.0, 40.0), (2.869, 0.593, 3.249, 20.0, 40.0), (0.818, -0.593, 4.594, 20.0, 40.0), (-1.917, 0.916, 0.209, 20.0, 40.0), (2.706, 1.523, 1.307, 20.0, 40.0), (0.219, 2.162, -1.214, 20.0, 40.0), (-4.510, 1.376, -2.007, 20.0, 40.0), (4.284, -0.515, 6.173, 20.0, 40.0), (-1.101, 2.810, -3.170, 20.0, 40.0), (-1.810, -1.117, 4.329, 20.0, 40.0), (0.055, 1.115, 0.797, 20.0, 40.0), (-2.178, 2.904, -3.898, 20.0, 40.0), (-3.494, -1.814, 4.882, 20.0, 40.0), (3.027, 0.476, 3.562, 20.0, 40.0), (-1.434, 1.151, -0.018, 20.0, 40.0), (1.180, 0.992, 1.606, 20.0, 40.0), (0.015, 0.971, 1.067, 20.0, 40.0), (-0.511, -0.875, 4.495, 20.0, 40.0), (0.961, 2.348, -1.216, 20.0, 40.0), (-2.279, 0.038, 1.785, 20.0, 40.0), (-1.568, -0.248, 2.712, 20.0, 40.0), (-0.496, 0.366, 2.020, 20.0, 40.0), (1.177, -1.401, 6.390, 20.0, 40.0), (2.882, -1.442, 7.325, 20.0, 40.0), (-1.066, 1.817, -1.167, 20.0, 40.0), (-2.144, 2.791, -3.655, 20.0, 40.0), (-4.370, 2.228, -3.642, 20.0, 40.0), (3.996, 2.775, -0.553, 20.0, 40.0), (0.289, 2.055, -0.965, 20.0, 40.0), (-0.588, -1.601, 5.908, 20.0, 40.0), (-1.801, 0.417, 1.265, 20.0, 40.0), (4.375, -1.499, 8.186, 20.0, 40.0), (-2.618, 0.038, 1.615, 20.0, 40.0), (3.616, -0.833, 6.475, 20.0, 40.0), (-4.045, -1.558, 4.094, 20.0, 40.0), (-3.962, 0.636, -0.253, 20.0, 40.0), (3.505, 2.625, -0.497, 20.0, 40.0), (3.029, -0.523, 5.560, 20.0, 40.0), (-3.520, -0.474, 2.188, 20.0, 40.0), (2.430, -1.469, 7.154, 20.0, 40.0), (1.547, -1.654, 7.082, 20.0, 40.0), (-1.370, 0.575, 1.165, 20.0, 40.0), (-1.869, -1.555, 5.176, 20.0, 40.0), (3.536, 2.841, -0.913, 20.0, 40.0), (-3.810, 1.220, -1.344, 20.0, 40.0), (-1.971, 1.462, -0.910, 20.0, 40.0), (-0.243, 0.167, 2.545, 20.0, 40.0), (-1.403, 2.645, -2.991, 20.0, 40.0), (0.532, -0.114, 3.494, 20.0, 40.0), (-1.678, 0.975, 0.212, 20.0, 40.0), (-0.656, 2.140, -1.609, 20.0, 40.0), (1.743, 2.631, -1.390, 20.0, 40.0), (2.586, 2.943, -1.593, 20.0, 40.0), (-0.512, 2.969, -3.195, 20.0, 40.0), (2.283, -0.100, 4.342, 20.0, 40.0), (-4.293, 0.872, -0.890, 20.0, 40.0), (3.411, 1.300, 2.106, 20.0, 40.0), (-0.281, 2.951, -3.042, 20.0, 40.0), (-4.442, 0.384, 0.012, 20.0, 40.0), (1.194, 1.746, 0.104, 20.0, 40.0), (-1.152, 1.862, -1.300, 20.0, 40.0), (1.362, -1.341, 6.363, 20.0, 40.0), (-4.488, 2.618, -4.481, 20.0, 40.0), (3.419, -0.564, 5.837, 20.0, 40.0), (-3.392, 0.396, 0.512, 20.0, 40.0), (-1.629, -0.909, 4.003, 20.0, 40.0), (4.447, -1.088, 7.399, 20.0, 40.0), (-1.232, 1.699, -1.014, 20.0, 40.0), (-1.286, -0.609, 3.575, 20.0, 40.0), (2.437, 2.796, -1.374, 20.0, 40.0), (-4.864, 1.989, -3.410, 20.0, 40.0), (-1.716, -1.399, 4.940, 20.0, 40.0), (-3.084, 1.858, -2.259, 20.0, 40.0), (2.828, -0.319, 5.053, 20.0, 40.0), (-1.226, 2.586, -2.786, 20.0, 40.0), (2.456, 0.092, 4.044, 20.0, 40.0), (-0.989, 2.375, -2.245, 20.0, 40.0), (3.268, 0.935, 2.765, 20.0, 40.0), (-4.128, -1.995, 4.927, 20.0, 40.0), (-1.083, 2.197, -1.935, 20.0, 40.0), (-3.471, -1.198, 3.660, 20.0, 40.0), (4.617, -1.136, 7.579, 20.0, 40.0), (2.054, -1.675, 7.378, 20.0, 40.0), (4.106, 2.326, 0.402, 20.0, 40.0), (1.558, 0.310, 3.158, 20.0, 40.0), (0.792, 0.900, 1.596, 20.0, 40.0), (-3.229, 0.300, 0.785, 20.0, 40.0), (3.787, -0.793, 6.479, 20.0, 40.0), (1.786, 2.288, -0.684, 20.0, 40.0), (2.643, 0.223, 3.875, 20.0, 40.0), (-3.592, 2.122, -3.040, 20.0, 40.0), (4.519, -1.760, 8.779, 20.0, 40.0), (3.221, 2.255, 0.101, 20.0, 40.0), (4.151, 1.788, 1.500, 20.0, 40.0), (-1.033, -1.195, 4.874, 20.0, 40.0), (-1.636, -1.037, 4.257, 20.0, 40.0), (-3.548, 1.911, -2.596, 20.0, 40.0), (4.829, -0.293, 6.001, 20.0, 40.0), (-4.684, -1.664, 3.986, 20.0, 40.0), (4.531, -0.503, 6.271, 20.0, 40.0), (-3.503, -1.606, 4.460, 20.0, 40.0), (-2.036, -1.522, 5.027, 20.0, 40.0), (-0.473, -0.617, 3.997, 20.0, 40.0), (-1.554, -1.630, 5.483, 20.0, 40.0), (-3.567, -1.043, 3.302, 20.0, 40.0), (-2.038, 0.579, 0.823, 20.0, 40.0), (-3.040, 0.857, -0.233, 20.0, 40.0), (4.610, 0.562, 4.181, 20.0, 40.0), (-3.323, -1.938, 5.215, 20.0, 40.0), (4.314, 1.720, 1.717, 20.0, 40.0), (-1.220, 0.615, 1.161, 20.0, 40.0), (-2.556, 1.120, -0.519, 20.0, 40.0), (-3.717, -0.108, 1.358, 20.0, 40.0), (4.689, -1.826, 8.996, 20.0, 40.0), (3.452, 0.506, 3.713, 20.0, 40.0), (2.472, 0.612, 3.012, 20.0, 40.0), (3.452, 0.450, 3.826, 20.0, 40.0), (1.207, 2.585, -1.567, 20.0, 40.0), (-4.826, 1.090, -1.593, 20.0, 40.0), (3.116, -1.118, 6.794, 20.0, 40.0), (0.448, 2.732, -2.240, 20.0, 40.0), (-1.096, -0.525, 3.503, 20.0, 40.0), (-4.680, -0.238, 1.137, 20.0, 40.0), (2.552, -1.403, 7.082, 20.0, 40.0), (0.719, 2.997, -2.635, 20.0, 40.0), (0.347, -1.966, 7.105, 20.0, 40.0), (2.958, -0.404, 5.288, 20.0, 40.0), (0.722, -1.950, 7.261, 20.0, 40.0), (-2.851, -0.986, 3.546, 20.0, 40.0), (-4.316, -0.439, 1.721, 20.0, 40.0), (-1.685, -0.201, 2.560, 20.0, 40.0), (1.856, 0.190, 3.549, 20.0, 40.0), (-2.052, 0.206, 1.562, 20.0, 40.0), (-2.504, -0.646, 3.041, 20.0, 40.0), (3.235, 0.882, 2.854, 20.0, 40.0), (-1.366, -1.573, 5.463, 20.0, 40.0), (-3.447, 2.419, -3.562, 20.0, 40.0), (4.155, 2.092, 0.893, 20.0, 40.0), (-0.935, 0.209, 2.116, 20.0, 40.0), (3.117, -1.821, 8.201, 20.0, 40.0), (3.759, 0.577, 3.725, 20.0, 40.0), (-0.938, 2.992, -3.453, 20.0, 40.0), (-0.525, 2.341, -1.945, 20.0, 40.0), (4.540, 2.625, 0.019, 20.0, 40.0), (-2.097, 1.190, -0.429, 20.0, 40.0), (-2.672, 1.983, -2.302, 20.0, 40.0), (-3.038, -1.490, 4.460, 20.0, 40.0), (-0.943, 2.149, -1.770, 20.0, 40.0), (0.739, 1.598, 0.174, 20.0, 40.0), (1.828, 1.853, 0.208, 20.0, 40.0), (4.856, 0.137, 5.153, 20.0, 40.0), (-1.617, 0.468, 1.255, 20.0, 40.0), (-1.972, 2.053, -2.092, 20.0, 40.0), (-4.633, 1.389, -2.094, 20.0, 40.0), (-3.628, -1.156, 3.498, 20.0, 40.0), (3.597, 1.034, 2.731, 20.0, 40.0), (-1.488, -0.002, 2.261, 20.0, 40.0), (0.749, 1.921, -0.468, 20.0, 40.0), (1.304, -1.371, 6.394, 20.0, 40.0), (4.587, 2.936, -0.579, 20.0, 40.0), (-2.241, 1.791, -1.703, 20.0, 40.0), (-2.945, 1.372, -1.216, 20.0, 40.0), (1.375, 0.395, 2.898, 20.0, 40.0), (-1.281, -0.641, 3.642, 20.0, 40.0), (2.178, 0.895, 2.299, 20.0, 40.0), (3.031, -0.786, 6.087, 20.0, 40.0), (-1.385, -0.375, 3.058, 20.0, 40.0), (4.041, -0.431, 5.882, 20.0, 40.0), (0.480, -0.507, 4.254, 20.0, 40.0), (-3.797, 0.140, 0.822, 20.0, 40.0), (2.355, 2.502, -0.827, 20.0, 40.0), (1.376, -1.583, 6.854, 20.0, 40.0), (0.164, 1.405, 0.273, 20.0, 40.0), (-1.273, 1.471, -0.579, 20.0, 40.0), (0.770, 2.246, -1.107, 20.0, 40.0), (4.552, 2.904, -0.533, 20.0, 40.0), (4.259, -1.772, 8.674, 20.0, 40.0), (-0.309, 1.159, 0.528, 20.0, 40.0), (3.581, 2.700, -0.610, 20.0, 40.0), (-3.202, 0.346, 0.707, 20.0, 40.0), (-1.575, 1.242, -0.271, 20.0, 40.0), (-1.584, -0.493, 3.194, 20.0, 40.0), (-3.778, 0.150, 0.810, 20.0, 40.0), (-4.675, 1.749, -2.835, 20.0, 40.0), (3.567, -0.792, 6.367, 20.0, 40.0), (-0.417, 1.399, -0.006, 20.0, 40.0), (-4.672, 2.007, -3.349, 20.0, 40.0), (-1.034, 0.196, 2.090, 20.0, 40.0), (-3.796, 2.496, -3.890, 20.0, 40.0), (3.532, -0.497, 5.759, 20.0, 40.0), (4.868, -1.359, 8.151, 20.0, 40.0), (-0.769, 0.302, 2.011, 20.0, 40.0), (4.475, 2.612, 0.014, 20.0, 40.0), (-3.532, -0.395, 2.024, 20.0, 40.0), (0.322, 0.675, 1.812, 20.0, 40.0), (-2.028, -1.942, 5.870, 20.0, 40.0), (1.810, -1.244, 6.392, 20.0, 40.0), (-0.783, 1.242, 0.124, 20.0, 40.0), (-4.745, -1.300, 3.227, 20.0, 40.0), (1.902, 1.973, 0.005, 20.0, 40.0), (-3.453, -1.429, 4.132, 20.0, 40.0), (1.559, 0.986, 1.808, 20.0, 40.0), (0.128, 2.754, -2.443, 20.0, 40.0), (2.759, 1.727, 0.926, 20.0, 40.0), (-4.468, 1.690, -2.614, 20.0, 40.0), (-2.368, -1.922, 5.659, 20.0, 40.0), (-2.766, 2.128, -2.640, 20.0, 40.0), (0.967, -1.825, 7.133, 20.0, 40.0), (-2.854, 2.855, -4.136, 20.0, 40.0), (-2.944, 1.875, -2.222, 20.0, 40.0), (-2.632, -0.983, 3.649, 20.0, 40.0), (2.427, 2.239, -0.266, 20.0, 40.0), (-1.726, -0.838, 3.812, 20.0, 40.0), (0.007, -0.903, 4.809, 20.0, 40.0), (-2.013, 1.092, -0.191, 20.0, 40.0), (-0.449, 0.970, 0.836, 20.0, 40.0), (1.396, 0.411, 2.876, 20.0, 40.0), (-1.115, -1.790, 6.023, 20.0, 40.0), (3.748, 1.917, 1.039, 20.0, 40.0), (2.978, 1.043, 2.404, 20.0, 40.0), (-3.969, 2.514, -4.013, 20.0, 40.0), (4.455, -0.050, 5.328, 20.0, 40.0), (-3.065, -0.846, 3.160, 20.0, 40.0), (-1.069, 2.167, -1.869, 20.0, 40.0), (3.016, -1.393, 7.294, 20.0, 40.0), (0.045, -1.928, 6.879, 20.0, 40.0), (-2.555, -0.984, 3.690, 20.0, 40.0), (-1.995, -0.054, 2.111, 20.0, 40.0), (4.600, -0.509, 6.318, 20.0, 40.0), (-1.942, 1.215, -0.402, 20.0, 40.0), (1.262, 2.765, -1.899, 20.0, 40.0), (2.617, -1.106, 6.521, 20.0, 40.0), (1.737, 0.554, 2.761, 20.0, 40.0), (-2.197, 0.632, 0.638, 20.0, 40.0), (4.768, 2.618, 0.147, 20.0, 40.0), (-3.737, -0.939, 3.010, 20.0, 40.0), (-2.623, 0.595, 0.499, 20.0, 40.0), (4.752, -0.340, 6.057, 20.0, 40.0), (2.333, -1.037, 6.240, 20.0, 40.0), (4.234, -1.882, 8.881, 20.0, 40.0), (-3.393, -0.812, 2.927, 20.0, 40.0), (0.885, 1.383, 0.678, 20.0, 40.0), (0.123, 2.937, -2.812, 20.0, 40.0), (2.969, 0.760, 2.964, 20.0, 40.0), (-4.929, 1.251, -1.967, 20.0, 40.0), (1.916, 2.223, -0.488, 20.0, 40.0), (-0.020, -1.740, 6.469, 20.0, 40.0), (0.702, -1.272, 5.895, 20.0, 40.0), (2.496, 2.648, -1.048, 20.0, 40.0), (4.067, -1.475, 7.984, 20.0, 40.0), (-3.717, 1.851, -2.561, 20.0, 40.0), (1.678, -0.624, 5.088, 20.0, 40.0), (1.073, 0.695, 2.146, 20.0, 40.0), (1.842, -0.749, 5.419, 20.0, 40.0), (-3.518, 1.909, -2.578, 20.0, 40.0), (2.229, 1.189, 1.737, 20.0, 40.0), (4.987, 2.893, -0.292, 20.0, 40.0), (-4.809, 1.043, -1.490, 20.0, 40.0), (-0.241, -0.728, 4.334, 20.0, 40.0), (-3.331, 0.590, 0.156, 20.0, 40.0), (-0.455, 2.621, -2.470, 20.0, 40.0), (1.492, 1.223, 1.301, 20.0, 40.0), (3.948, 2.841, -0.709, 20.0, 40.0), (0.732, 0.446, 2.475, 20.0, 40.0), (2.400, 2.390, -0.579, 20.0, 40.0), (-2.718, 1.427, -1.213, 20.0, 40.0), (-1.826, 1.451, -0.815, 20.0, 40.0), (1.125, 0.438, 2.686, 20.0, 40.0), (-4.918, 1.880, -3.219, 20.0, 40.0), (3.068, -0.442, 5.418, 20.0, 40.0), (1.982, 1.201, 1.589, 20.0, 40.0), (0.701, -1.709, 6.768, 20.0, 40.0), (-1.496, 2.564, -2.877, 20.0, 40.0), (-3.812, 0.974, -0.853, 20.0, 40.0), (-3.405, 2.018, -2.739, 20.0, 40.0), (2.211, 2.889, -1.674, 20.0, 40.0), (-2.481, 2.931, -4.103, 20.0, 40.0), (-3.721, 2.765, -4.391, 20.0, 40.0), (-1.768, -1.292, 4.699, 20.0, 40.0), (-4.462, 1.058, -1.347, 20.0, 40.0), (-3.516, -1.942, 5.126, 20.0, 40.0), (0.485, 2.420, -1.597, 20.0, 40.0), (-0.492, 0.242, 2.270, 20.0, 40.0), (4.245, 1.689, 1.744, 20.0, 40.0), (2.234, 0.364, 3.389, 20.0, 40.0), (2.629, 2.224, -0.134, 20.0, 40.0), (-4.375, 1.221, -1.630, 20.0, 40.0), (-0.618, 1.374, -0.057, 20.0, 40.0), (-2.580, -1.604, 4.918, 20.0, 40.0), (0.159, 1.104, 0.871, 20.0, 40.0), (-3.597, 0.975, -0.749, 20.0, 40.0); --- insert into test.defaults values (-3.273, -1.452, 4.267, 20.0, 40.0), (0.121, -0.615, 4.290, 20.0, 40.0), (-1.099, 2.755, -3.060, 20.0, 40.0), (1.090, 2.945, -2.346, 20.0, 40.0), (0.305, 2.179, -1.205, 20.0, 40.0), (-0.925, 0.702, 1.134, 20.0, 40.0), (3.178, -1.316, 7.221, 20.0, 40.0), (-2.756, -0.473, 2.569, 20.0, 40.0), (3.665, 2.303, 0.226, 20.0, 40.0), (1.662, 1.951, -0.070, 20.0, 40.0), (2.869, 0.593, 3.249, 20.0, 40.0), (0.818, -0.593, 4.594, 20.0, 40.0), (-1.917, 0.916, 0.209, 20.0, 40.0), (2.706, 1.523, 1.307, 20.0, 40.0), (0.219, 2.162, -1.214, 20.0, 40.0), (-4.510, 1.376, -2.007, 20.0, 40.0), (4.284, -0.515, 6.173, 20.0, 40.0), (-1.101, 2.810, -3.170, 20.0, 40.0), (-1.810, -1.117, 4.329, 20.0, 40.0), (0.055, 1.115, 0.797, 20.0, 40.0), (-2.178, 2.904, -3.898, 20.0, 40.0), (-3.494, -1.814, 4.882, 20.0, 40.0), (3.027, 0.476, 3.562, 20.0, 40.0), (-1.434, 1.151, -0.018, 20.0, 40.0), (1.180, 0.992, 1.606, 20.0, 40.0), (0.015, 0.971, 1.067, 20.0, 40.0), (-0.511, -0.875, 4.495, 20.0, 40.0), (0.961, 2.348, -1.216, 20.0, 40.0), (-2.279, 0.038, 1.785, 20.0, 40.0), (-1.568, -0.248, 2.712, 20.0, 40.0), (-0.496, 0.366, 2.020, 20.0, 40.0), (1.177, -1.401, 6.390, 20.0, 40.0), (2.882, -1.442, 7.325, 20.0, 40.0), (-1.066, 1.817, -1.167, 20.0, 40.0), (-2.144, 2.791, -3.655, 20.0, 40.0), (-4.370, 2.228, -3.642, 20.0, 40.0), (3.996, 2.775, -0.553, 20.0, 40.0), (0.289, 2.055, -0.965, 20.0, 40.0), (-0.588, -1.601, 5.908, 20.0, 40.0), (-1.801, 0.417, 1.265, 20.0, 40.0), (4.375, -1.499, 8.186, 20.0, 40.0), (-2.618, 0.038, 1.615, 20.0, 40.0), (3.616, -0.833, 6.475, 20.0, 40.0), (-4.045, -1.558, 4.094, 20.0, 40.0), (-3.962, 0.636, -0.253, 20.0, 40.0), (3.505, 2.625, -0.497, 20.0, 40.0), (3.029, -0.523, 5.560, 20.0, 40.0), (-3.520, -0.474, 2.188, 20.0, 40.0), (2.430, -1.469, 7.154, 20.0, 40.0), (1.547, -1.654, 7.082, 20.0, 40.0), (-1.370, 0.575, 1.165, 20.0, 40.0), (-1.869, -1.555, 5.176, 20.0, 40.0), (3.536, 2.841, -0.913, 20.0, 40.0), (-3.810, 1.220, -1.344, 20.0, 40.0), (-1.971, 1.462, -0.910, 20.0, 40.0), (-0.243, 0.167, 2.545, 20.0, 40.0), (-1.403, 2.645, -2.991, 20.0, 40.0), (0.532, -0.114, 3.494, 20.0, 40.0), (-1.678, 0.975, 0.212, 20.0, 40.0), (-0.656, 2.140, -1.609, 20.0, 40.0), (1.743, 2.631, -1.390, 20.0, 40.0), (2.586, 2.943, -1.593, 20.0, 40.0), (-0.512, 2.969, -3.195, 20.0, 40.0), (2.283, -0.100, 4.342, 20.0, 40.0), (-4.293, 0.872, -0.890, 20.0, 40.0), (3.411, 1.300, 2.106, 20.0, 40.0), (-0.281, 2.951, -3.042, 20.0, 40.0), (-4.442, 0.384, 0.012, 20.0, 40.0), (1.194, 1.746, 0.104, 20.0, 40.0), (-1.152, 1.862, -1.300, 20.0, 40.0), (1.362, -1.341, 6.363, 20.0, 40.0), (-4.488, 2.618, -4.481, 20.0, 40.0), (3.419, -0.564, 5.837, 20.0, 40.0), (-3.392, 0.396, 0.512, 20.0, 40.0), (-1.629, -0.909, 4.003, 20.0, 40.0), (4.447, -1.088, 7.399, 20.0, 40.0), (-1.232, 1.699, -1.014, 20.0, 40.0), (-1.286, -0.609, 3.575, 20.0, 40.0), (2.437, 2.796, -1.374, 20.0, 40.0), (-4.864, 1.989, -3.410, 20.0, 40.0), (-1.716, -1.399, 4.940, 20.0, 40.0), (-3.084, 1.858, -2.259, 20.0, 40.0), (2.828, -0.319, 5.053, 20.0, 40.0), (-1.226, 2.586, -2.786, 20.0, 40.0), (2.456, 0.092, 4.044, 20.0, 40.0), (-0.989, 2.375, -2.245, 20.0, 40.0), (3.268, 0.935, 2.765, 20.0, 40.0), (-4.128, -1.995, 4.927, 20.0, 40.0), (-1.083, 2.197, -1.935, 20.0, 40.0), (-3.471, -1.198, 3.660, 20.0, 40.0), (4.617, -1.136, 7.579, 20.0, 40.0), (2.054, -1.675, 7.378, 20.0, 40.0), (4.106, 2.326, 0.402, 20.0, 40.0), (1.558, 0.310, 3.158, 20.0, 40.0), (0.792, 0.900, 1.596, 20.0, 40.0), (-3.229, 0.300, 0.785, 20.0, 40.0), (3.787, -0.793, 6.479, 20.0, 40.0), (1.786, 2.288, -0.684, 20.0, 40.0), (2.643, 0.223, 3.875, 20.0, 40.0), (-3.592, 2.122, -3.040, 20.0, 40.0), (4.519, -1.760, 8.779, 20.0, 40.0), (3.221, 2.255, 0.101, 20.0, 40.0), (4.151, 1.788, 1.500, 20.0, 40.0), (-1.033, -1.195, 4.874, 20.0, 40.0), (-1.636, -1.037, 4.257, 20.0, 40.0), (-3.548, 1.911, -2.596, 20.0, 40.0), (4.829, -0.293, 6.001, 20.0, 40.0), (-4.684, -1.664, 3.986, 20.0, 40.0), (4.531, -0.503, 6.271, 20.0, 40.0), (-3.503, -1.606, 4.460, 20.0, 40.0), (-2.036, -1.522, 5.027, 20.0, 40.0), (-0.473, -0.617, 3.997, 20.0, 40.0), (-1.554, -1.630, 5.483, 20.0, 40.0), (-3.567, -1.043, 3.302, 20.0, 40.0), (-2.038, 0.579, 0.823, 20.0, 40.0), (-3.040, 0.857, -0.233, 20.0, 40.0), (4.610, 0.562, 4.181, 20.0, 40.0), (-3.323, -1.938, 5.215, 20.0, 40.0), (4.314, 1.720, 1.717, 20.0, 40.0), (-1.220, 0.615, 1.161, 20.0, 40.0), (-2.556, 1.120, -0.519, 20.0, 40.0), (-3.717, -0.108, 1.358, 20.0, 40.0), (4.689, -1.826, 8.996, 20.0, 40.0), (3.452, 0.506, 3.713, 20.0, 40.0), (2.472, 0.612, 3.012, 20.0, 40.0), (3.452, 0.450, 3.826, 20.0, 40.0), (1.207, 2.585, -1.567, 20.0, 40.0), (-4.826, 1.090, -1.593, 20.0, 40.0), (3.116, -1.118, 6.794, 20.0, 40.0), (0.448, 2.732, -2.240, 20.0, 40.0), (-1.096, -0.525, 3.503, 20.0, 40.0), (-4.680, -0.238, 1.137, 20.0, 40.0), (2.552, -1.403, 7.082, 20.0, 40.0), (0.719, 2.997, -2.635, 20.0, 40.0), (0.347, -1.966, 7.105, 20.0, 40.0), (2.958, -0.404, 5.288, 20.0, 40.0), (0.722, -1.950, 7.261, 20.0, 40.0), (-2.851, -0.986, 3.546, 20.0, 40.0), (-4.316, -0.439, 1.721, 20.0, 40.0), (-1.685, -0.201, 2.560, 20.0, 40.0), (1.856, 0.190, 3.549, 20.0, 40.0), (-2.052, 0.206, 1.562, 20.0, 40.0), (-2.504, -0.646, 3.041, 20.0, 40.0), (3.235, 0.882, 2.854, 20.0, 40.0), (-1.366, -1.573, 5.463, 20.0, 40.0), (-3.447, 2.419, -3.562, 20.0, 40.0), (4.155, 2.092, 0.893, 20.0, 40.0), (-0.935, 0.209, 2.116, 20.0, 40.0), (3.117, -1.821, 8.201, 20.0, 40.0), (3.759, 0.577, 3.725, 20.0, 40.0), (-0.938, 2.992, -3.453, 20.0, 40.0), (-0.525, 2.341, -1.945, 20.0, 40.0), (4.540, 2.625, 0.019, 20.0, 40.0), (-2.097, 1.190, -0.429, 20.0, 40.0), (-2.672, 1.983, -2.302, 20.0, 40.0), (-3.038, -1.490, 4.460, 20.0, 40.0), (-0.943, 2.149, -1.770, 20.0, 40.0), (0.739, 1.598, 0.174, 20.0, 40.0), (1.828, 1.853, 0.208, 20.0, 40.0), (4.856, 0.137, 5.153, 20.0, 40.0), (-1.617, 0.468, 1.255, 20.0, 40.0), (-1.972, 2.053, -2.092, 20.0, 40.0), (-4.633, 1.389, -2.094, 20.0, 40.0), (-3.628, -1.156, 3.498, 20.0, 40.0), (3.597, 1.034, 2.731, 20.0, 40.0), (-1.488, -0.002, 2.261, 20.0, 40.0), (0.749, 1.921, -0.468, 20.0, 40.0), (1.304, -1.371, 6.394, 20.0, 40.0), (4.587, 2.936, -0.579, 20.0, 40.0), (-2.241, 1.791, -1.703, 20.0, 40.0), (-2.945, 1.372, -1.216, 20.0, 40.0), (1.375, 0.395, 2.898, 20.0, 40.0), (-1.281, -0.641, 3.642, 20.0, 40.0), (2.178, 0.895, 2.299, 20.0, 40.0), (3.031, -0.786, 6.087, 20.0, 40.0), (-1.385, -0.375, 3.058, 20.0, 40.0), (4.041, -0.431, 5.882, 20.0, 40.0), (0.480, -0.507, 4.254, 20.0, 40.0), (-3.797, 0.140, 0.822, 20.0, 40.0), (2.355, 2.502, -0.827, 20.0, 40.0), (1.376, -1.583, 6.854, 20.0, 40.0), (0.164, 1.405, 0.273, 20.0, 40.0), (-1.273, 1.471, -0.579, 20.0, 40.0), (0.770, 2.246, -1.107, 20.0, 40.0), (4.552, 2.904, -0.533, 20.0, 40.0), (4.259, -1.772, 8.674, 20.0, 40.0), (-0.309, 1.159, 0.528, 20.0, 40.0), (3.581, 2.700, -0.610, 20.0, 40.0), (-3.202, 0.346, 0.707, 20.0, 40.0), (-1.575, 1.242, -0.271, 20.0, 40.0), (-1.584, -0.493, 3.194, 20.0, 40.0), (-3.778, 0.150, 0.810, 20.0, 40.0), (-4.675, 1.749, -2.835, 20.0, 40.0), (3.567, -0.792, 6.367, 20.0, 40.0), (-0.417, 1.399, -0.006, 20.0, 40.0), (-4.672, 2.007, -3.349, 20.0, 40.0), (-1.034, 0.196, 2.090, 20.0, 40.0), (-3.796, 2.496, -3.890, 20.0, 40.0), (3.532, -0.497, 5.759, 20.0, 40.0), (4.868, -1.359, 8.151, 20.0, 40.0), (-0.769, 0.302, 2.011, 20.0, 40.0), (4.475, 2.612, 0.014, 20.0, 40.0), (-3.532, -0.395, 2.024, 20.0, 40.0), (0.322, 0.675, 1.812, 20.0, 40.0), (-2.028, -1.942, 5.870, 20.0, 40.0), (1.810, -1.244, 6.392, 20.0, 40.0), (-0.783, 1.242, 0.124, 20.0, 40.0), (-4.745, -1.300, 3.227, 20.0, 40.0), (1.902, 1.973, 0.005, 20.0, 40.0), (-3.453, -1.429, 4.132, 20.0, 40.0), (1.559, 0.986, 1.808, 20.0, 40.0), (0.128, 2.754, -2.443, 20.0, 40.0), (2.759, 1.727, 0.926, 20.0, 40.0), (-4.468, 1.690, -2.614, 20.0, 40.0), (-2.368, -1.922, 5.659, 20.0, 40.0), (-2.766, 2.128, -2.640, 20.0, 40.0), (0.967, -1.825, 7.133, 20.0, 40.0), (-2.854, 2.855, -4.136, 20.0, 40.0), (-2.944, 1.875, -2.222, 20.0, 40.0), (-2.632, -0.983, 3.649, 20.0, 40.0), (2.427, 2.239, -0.266, 20.0, 40.0), (-1.726, -0.838, 3.812, 20.0, 40.0), (0.007, -0.903, 4.809, 20.0, 40.0), (-2.013, 1.092, -0.191, 20.0, 40.0), (-0.449, 0.970, 0.836, 20.0, 40.0), (1.396, 0.411, 2.876, 20.0, 40.0), (-1.115, -1.790, 6.023, 20.0, 40.0), (3.748, 1.917, 1.039, 20.0, 40.0), (2.978, 1.043, 2.404, 20.0, 40.0), (-3.969, 2.514, -4.013, 20.0, 40.0), (4.455, -0.050, 5.328, 20.0, 40.0), (-3.065, -0.846, 3.160, 20.0, 40.0), (-1.069, 2.167, -1.869, 20.0, 40.0), (3.016, -1.393, 7.294, 20.0, 40.0), (0.045, -1.928, 6.879, 20.0, 40.0), (-2.555, -0.984, 3.690, 20.0, 40.0), (-1.995, -0.054, 2.111, 20.0, 40.0), (4.600, -0.509, 6.318, 20.0, 40.0), (-1.942, 1.215, -0.402, 20.0, 40.0), (1.262, 2.765, -1.899, 20.0, 40.0), (2.617, -1.106, 6.521, 20.0, 40.0), (1.737, 0.554, 2.761, 20.0, 40.0), (-2.197, 0.632, 0.638, 20.0, 40.0), (4.768, 2.618, 0.147, 20.0, 40.0), (-3.737, -0.939, 3.010, 20.0, 40.0), (-2.623, 0.595, 0.499, 20.0, 40.0), (4.752, -0.340, 6.057, 20.0, 40.0), (2.333, -1.037, 6.240, 20.0, 40.0), (4.234, -1.882, 8.881, 20.0, 40.0), (-3.393, -0.812, 2.927, 20.0, 40.0), (0.885, 1.383, 0.678, 20.0, 40.0), (0.123, 2.937, -2.812, 20.0, 40.0), (2.969, 0.760, 2.964, 20.0, 40.0), (-4.929, 1.251, -1.967, 20.0, 40.0), (1.916, 2.223, -0.488, 20.0, 40.0), (-0.020, -1.740, 6.469, 20.0, 40.0), (0.702, -1.272, 5.895, 20.0, 40.0), (2.496, 2.648, -1.048, 20.0, 40.0), (4.067, -1.475, 7.984, 20.0, 40.0), (-3.717, 1.851, -2.561, 20.0, 40.0), (1.678, -0.624, 5.088, 20.0, 40.0), (1.073, 0.695, 2.146, 20.0, 40.0), (1.842, -0.749, 5.419, 20.0, 40.0), (-3.518, 1.909, -2.578, 20.0, 40.0), (2.229, 1.189, 1.737, 20.0, 40.0), (4.987, 2.893, -0.292, 20.0, 40.0), (-4.809, 1.043, -1.490, 20.0, 40.0), (-0.241, -0.728, 4.334, 20.0, 40.0), (-3.331, 0.590, 0.156, 20.0, 40.0), (-0.455, 2.621, -2.470, 20.0, 40.0), (1.492, 1.223, 1.301, 20.0, 40.0), (3.948, 2.841, -0.709, 20.0, 40.0), (0.732, 0.446, 2.475, 20.0, 40.0), (2.400, 2.390, -0.579, 20.0, 40.0), (-2.718, 1.427, -1.213, 20.0, 40.0), (-1.826, 1.451, -0.815, 20.0, 40.0), (1.125, 0.438, 2.686, 20.0, 40.0), (-4.918, 1.880, -3.219, 20.0, 40.0), (3.068, -0.442, 5.418, 20.0, 40.0), (1.982, 1.201, 1.589, 20.0, 40.0), (0.701, -1.709, 6.768, 20.0, 40.0), (-1.496, 2.564, -2.877, 20.0, 40.0), (-3.812, 0.974, -0.853, 20.0, 40.0), (-3.405, 2.018, -2.739, 20.0, 40.0), (2.211, 2.889, -1.674, 20.0, 40.0), (-2.481, 2.931, -4.103, 20.0, 40.0), (-3.721, 2.765, -4.391, 20.0, 40.0), (-1.768, -1.292, 4.699, 20.0, 40.0), (-4.462, 1.058, -1.347, 20.0, 40.0), (-3.516, -1.942, 5.126, 20.0, 40.0), (0.485, 2.420, -1.597, 20.0, 40.0), (-0.492, 0.242, 2.270, 20.0, 40.0), (4.245, 1.689, 1.744, 20.0, 40.0), (2.234, 0.364, 3.389, 20.0, 40.0), (2.629, 2.224, -0.134, 20.0, 40.0), (-4.375, 1.221, -1.630, 20.0, 40.0), (-0.618, 1.374, -0.057, 20.0, 40.0), (-2.580, -1.604, 4.918, 20.0, 40.0), (0.159, 1.104, 0.871, 20.0, 40.0), (-3.597, 0.975, -0.749, 20.0, 40.0); --- -DROP TABLE IF EXISTS test.model; -create table test.model engine = Memory as select LinearRegressionState(0.1, 5, 2.0)(target, param1, param2) as state from test.defaults; --- -- select toTypeName(state) from test.model; --- -- --- -- DROP TABLE IF EXISTS test.tests; --- -- CREATE TABLE IF NOT EXISTS test.tests --- -- ( --- -- predict1 Float64, --- -- predict2 Float64, --- -- state1 AggregateFunction(LinReg(0.01), Float64, Float64, Float64) --- -- ) ENGINE = Memory; --- -- insert into test.tests select 20.0, 40.0, LinRegState(0.01)(target, param1, param2) from test.defaults; --- -- select evalLinReg(state1, predict1, predict2) from test.tests; --- --- --- --- -- DROP TABLE IF EXISTS test.prediction; --- -- CREATE TABLE IF NOT EXISTS test.prediction --- -- ( --- -- predict1 Float64, --- -- predict2 Float64 --- -- ) ENGINE = Memory; --- --- --- -- insert into test.prediction values (20.0, 40.0); --- --- -- select multiply(param1, param2) from test.defaults; --- --- -- select evalLinReg(LinRegState(0.01)(target, param1, param2), 20.0, 40.0) from test.defaults; -select evalMLMethod(state, predict1, predict2) from test.model cross join test.defaults; --- -- select evalLinReg(state, predict1, predict2) from test.model inner join (select * from test.tests) using state; --- -- select evalLinReg(state1, predict1, predict2) from test.tests; --- --- -- select negate(target) from test.defaults;